@cogitator-ai/swarms 0.4.20 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +245 -897
  2. package/dist/agents.d.ts +13 -0
  3. package/dist/agents.d.ts.map +1 -0
  4. package/dist/agents.js +70 -0
  5. package/dist/agents.js.map +1 -0
  6. package/dist/assessor/assessor.d.ts +9 -2
  7. package/dist/assessor/assessor.d.ts.map +1 -1
  8. package/dist/assessor/assessor.js +71 -52
  9. package/dist/assessor/assessor.js.map +1 -1
  10. package/dist/assessor/role-matcher.d.ts +6 -24
  11. package/dist/assessor/role-matcher.d.ts.map +1 -1
  12. package/dist/assessor/role-matcher.js +9 -37
  13. package/dist/assessor/role-matcher.js.map +1 -1
  14. package/dist/base-coordinator.d.ts +117 -0
  15. package/dist/base-coordinator.d.ts.map +1 -0
  16. package/dist/base-coordinator.js +455 -0
  17. package/dist/base-coordinator.js.map +1 -0
  18. package/dist/communication/blackboard.d.ts +34 -4
  19. package/dist/communication/blackboard.d.ts.map +1 -1
  20. package/dist/communication/blackboard.js +81 -46
  21. package/dist/communication/blackboard.js.map +1 -1
  22. package/dist/communication/event-emitter.d.ts.map +1 -1
  23. package/dist/communication/event-emitter.js +6 -17
  24. package/dist/communication/event-emitter.js.map +1 -1
  25. package/dist/communication/index.d.ts +2 -2
  26. package/dist/communication/index.d.ts.map +1 -1
  27. package/dist/communication/index.js +2 -2
  28. package/dist/communication/index.js.map +1 -1
  29. package/dist/communication/message-bus.d.ts +48 -5
  30. package/dist/communication/message-bus.d.ts.map +1 -1
  31. package/dist/communication/message-bus.js +135 -50
  32. package/dist/communication/message-bus.js.map +1 -1
  33. package/dist/communication/redis-blackboard.d.ts +11 -5
  34. package/dist/communication/redis-blackboard.d.ts.map +1 -1
  35. package/dist/communication/redis-blackboard.js +159 -116
  36. package/dist/communication/redis-blackboard.js.map +1 -1
  37. package/dist/communication/redis-event-emitter.d.ts +12 -0
  38. package/dist/communication/redis-event-emitter.d.ts.map +1 -1
  39. package/dist/communication/redis-event-emitter.js +96 -54
  40. package/dist/communication/redis-event-emitter.js.map +1 -1
  41. package/dist/communication/redis-message-bus.d.ts +11 -6
  42. package/dist/communication/redis-message-bus.d.ts.map +1 -1
  43. package/dist/communication/redis-message-bus.js +88 -77
  44. package/dist/communication/redis-message-bus.js.map +1 -1
  45. package/dist/coordinator.d.ts +7 -41
  46. package/dist/coordinator.d.ts.map +1 -1
  47. package/dist/coordinator.js +17 -340
  48. package/dist/coordinator.js.map +1 -1
  49. package/dist/distributed/distributed-coordinator.d.ts +54 -51
  50. package/dist/distributed/distributed-coordinator.d.ts.map +1 -1
  51. package/dist/distributed/distributed-coordinator.js +166 -284
  52. package/dist/distributed/distributed-coordinator.js.map +1 -1
  53. package/dist/distributed/index.d.ts +1 -1
  54. package/dist/distributed/index.d.ts.map +1 -1
  55. package/dist/distributed/index.js +1 -1
  56. package/dist/distributed/index.js.map +1 -1
  57. package/dist/index.d.ts +4 -3
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +4 -3
  60. package/dist/index.js.map +1 -1
  61. package/dist/resources/circuit-breaker.d.ts.map +1 -1
  62. package/dist/resources/circuit-breaker.js +3 -4
  63. package/dist/resources/circuit-breaker.js.map +1 -1
  64. package/dist/shared/hierarchy.d.ts +21 -0
  65. package/dist/shared/hierarchy.d.ts.map +1 -0
  66. package/dist/shared/hierarchy.js +27 -0
  67. package/dist/shared/hierarchy.js.map +1 -0
  68. package/dist/shared/negotiation.d.ts +27 -0
  69. package/dist/shared/negotiation.d.ts.map +1 -0
  70. package/dist/shared/negotiation.js +55 -0
  71. package/dist/shared/negotiation.js.map +1 -0
  72. package/dist/shared/voting.d.ts +6 -0
  73. package/dist/shared/voting.d.ts.map +1 -0
  74. package/dist/shared/voting.js +13 -0
  75. package/dist/shared/voting.js.map +1 -0
  76. package/dist/strategies/consensus.d.ts +12 -0
  77. package/dist/strategies/consensus.d.ts.map +1 -1
  78. package/dist/strategies/consensus.js +75 -47
  79. package/dist/strategies/consensus.js.map +1 -1
  80. package/dist/strategies/debate.d.ts.map +1 -1
  81. package/dist/strategies/debate.js +18 -8
  82. package/dist/strategies/debate.js.map +1 -1
  83. package/dist/strategies/hierarchical.d.ts.map +1 -1
  84. package/dist/strategies/hierarchical.js +29 -14
  85. package/dist/strategies/hierarchical.js.map +1 -1
  86. package/dist/strategies/negotiation/approval.d.ts.map +1 -1
  87. package/dist/strategies/negotiation/approval.js +22 -19
  88. package/dist/strategies/negotiation/approval.js.map +1 -1
  89. package/dist/strategies/negotiation-strategy.d.ts +24 -2
  90. package/dist/strategies/negotiation-strategy.d.ts.map +1 -1
  91. package/dist/strategies/negotiation-strategy.js +276 -141
  92. package/dist/strategies/negotiation-strategy.js.map +1 -1
  93. package/dist/strategies/pipeline.js +6 -6
  94. package/dist/strategies/pipeline.js.map +1 -1
  95. package/dist/swarm.d.ts +25 -11
  96. package/dist/swarm.d.ts.map +1 -1
  97. package/dist/swarm.js +195 -121
  98. package/dist/swarm.js.map +1 -1
  99. package/dist/tools/blackboard.d.ts +1 -1
  100. package/dist/tools/blackboard.d.ts.map +1 -1
  101. package/dist/tools/blackboard.js +26 -12
  102. package/dist/tools/blackboard.js.map +1 -1
  103. package/dist/tools/delegation.d.ts +17 -4
  104. package/dist/tools/delegation.d.ts.map +1 -1
  105. package/dist/tools/delegation.js +95 -88
  106. package/dist/tools/delegation.js.map +1 -1
  107. package/dist/tools/index.d.ts +3 -1
  108. package/dist/tools/index.d.ts.map +1 -1
  109. package/dist/tools/index.js +9 -4
  110. package/dist/tools/index.js.map +1 -1
  111. package/dist/tools/messaging.d.ts +38 -6
  112. package/dist/tools/messaging.d.ts.map +1 -1
  113. package/dist/tools/messaging.js +118 -41
  114. package/dist/tools/messaging.js.map +1 -1
  115. package/dist/tools/negotiation.d.ts +8 -4
  116. package/dist/tools/negotiation.d.ts.map +1 -1
  117. package/dist/tools/negotiation.js +138 -115
  118. package/dist/tools/negotiation.js.map +1 -1
  119. package/dist/tools/voting.d.ts +3 -0
  120. package/dist/tools/voting.d.ts.map +1 -1
  121. package/dist/tools/voting.js +13 -12
  122. package/dist/tools/voting.js.map +1 -1
  123. package/dist/utils/concurrency.d.ts +10 -0
  124. package/dist/utils/concurrency.d.ts.map +1 -0
  125. package/dist/utils/concurrency.js +28 -0
  126. package/dist/utils/concurrency.js.map +1 -0
  127. package/dist/utils/invoke.d.ts +2 -0
  128. package/dist/utils/invoke.d.ts.map +1 -0
  129. package/dist/utils/invoke.js +19 -0
  130. package/dist/utils/invoke.js.map +1 -0
  131. package/dist/workflow/swarm-node.d.ts.map +1 -1
  132. package/dist/workflow/swarm-node.js +55 -98
  133. package/dist/workflow/swarm-node.js.map +1 -1
  134. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"message-bus.js","sourceRoot":"","sources":["../../src/communication/message-bus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-bus.js","sourceRoot":"","sources":["../../src/communication/message-bus.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,43 @@
1
- import type { Blackboard, BlackboardConfig, BlackboardSection, BlackboardHistoryEntry } from '@cogitator-ai/types';
1
+ import type { BlackboardConfig, BlackboardSection, BlackboardHistoryEntry } from '@cogitator-ai/types';
2
2
  import type { Redis } from 'ioredis';
3
+ import { type BlackboardSectionHandler, type BlackboardWriteListener, type ObservableBlackboard } from './blackboard.js';
3
4
  export interface RedisBlackboardOptions {
4
5
  redis: Redis;
5
6
  swarmId: string;
6
7
  keyPrefix?: string;
7
8
  }
8
- export declare class RedisBlackboard implements Blackboard {
9
+ export declare class RedisBlackboard implements ObservableBlackboard {
9
10
  private redis;
10
11
  private subscriber;
11
12
  private swarmId;
12
13
  private keyPrefix;
13
14
  private config;
14
- private subscriptions;
15
+ private listeners;
15
16
  private localCache;
16
17
  private historyCache;
17
18
  private readonly instanceId;
19
+ private initialized;
18
20
  constructor(config: BlackboardConfig, options: RedisBlackboardOptions);
19
21
  private sectionKey;
20
22
  private historyKey;
21
23
  private channelKey;
24
+ private readonly handleRemoteChange;
22
25
  initialize(): Promise<void>;
23
26
  read<T = unknown>(section: string): T;
24
27
  write<T>(section: string, data: T, agentName: string): void;
25
28
  append<T>(section: string, item: T, agentName: string): void;
26
29
  has(section: string): boolean;
27
30
  delete(section: string): void;
28
- subscribe(section: string, handler: (data: unknown, agentName: string) => void): () => void;
31
+ subscribe(section: string, handler: BlackboardSectionHandler): () => void;
32
+ onWrite(listener: BlackboardWriteListener): () => void;
29
33
  getSections(): string[];
30
34
  getSection<T = unknown>(section: string): BlackboardSection<T> | undefined;
31
35
  getHistory(section: string): BlackboardHistoryEntry[];
32
36
  clear(): void;
33
37
  close(): Promise<void>;
34
38
  syncFromRedis(): Promise<void>;
35
- private notifySubscribers;
39
+ private pushHistory;
40
+ private removeFromRedis;
41
+ private assertEnabled;
36
42
  }
37
43
  //# sourceMappingURL=redis-blackboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis-blackboard.d.ts","sourceRoot":"","sources":["../../src/communication/redis-blackboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+CD,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAsE;IAC3F,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB;IAQrE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAIZ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+EjC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;IAQrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAwD3D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgB5D,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAqB7B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAiB3F,WAAW,IAAI,MAAM,EAAE;IAIvB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS;IAY1E,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAIrD,KAAK,IAAI,IAAI;IAuBP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBpC,OAAO,CAAC,iBAAiB;CAU1B"}
1
+ {"version":3,"file":"redis-blackboard.d.ts","sourceRoot":"","sources":["../../src/communication/redis-blackboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAC1B,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmED,qBAAa,eAAgB,YAAW,oBAAoB;IAC1D,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB;IAQrE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CA8CjC;IAEI,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6CjC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;IASrC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAkD3D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgB5D,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAiB7B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM,IAAI;IAIzE,OAAO,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI;IAItD,WAAW,IAAI,MAAM,EAAE;IAIvB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS;IAY1E,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAIrD,KAAK,IAAI,IAAI;IAUP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBpC,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,aAAa;CAKtB"}
@@ -1,4 +1,5 @@
1
1
  import { nanoid } from 'nanoid';
2
+ import { BlackboardListeners, } from './blackboard.js';
2
3
  const MAX_HISTORY = 1000;
3
4
  const ATOMIC_WRITE_SCRIPT = `
4
5
  local sectionKey = KEYS[1]
@@ -34,16 +35,28 @@ redis.call('PUBLISH', channel, cjson.encode(notification))
34
35
 
35
36
  return version
36
37
  `;
38
+ function parseStoredSection(raw) {
39
+ try {
40
+ const parsed = JSON.parse(raw);
41
+ if (typeof parsed.name !== 'string' || typeof parsed.version !== 'number')
42
+ return null;
43
+ return parsed;
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
37
49
  export class RedisBlackboard {
38
50
  redis;
39
51
  subscriber;
40
52
  swarmId;
41
53
  keyPrefix;
42
54
  config;
43
- subscriptions = new Map();
55
+ listeners = new BlackboardListeners('[RedisBlackboard]');
44
56
  localCache = new Map();
45
57
  historyCache = new Map();
46
58
  instanceId = nanoid(12);
59
+ initialized = false;
47
60
  constructor(config, options) {
48
61
  this.config = config;
49
62
  this.redis = options.redis;
@@ -60,65 +73,93 @@ export class RedisBlackboard {
60
73
  channelKey() {
61
74
  return `${this.keyPrefix}:${this.swarmId}:blackboard:changes`;
62
75
  }
63
- async initialize() {
64
- for (const [name, initialData] of Object.entries(this.config.sections)) {
65
- const section = {
66
- name,
67
- data: initialData,
68
- lastModified: Date.now(),
69
- modifiedBy: 'system',
70
- version: 1,
71
- };
72
- this.localCache.set(name, section);
73
- const wasSet = await this.redis.set(this.sectionKey(name), JSON.stringify(section), 'NX');
74
- if (wasSet === 'OK') {
75
- if (this.config.trackHistory) {
76
- const entry = {
77
- value: initialData,
78
- writtenBy: 'system',
79
- timestamp: Date.now(),
80
- version: 1,
81
- };
82
- await this.redis.rpush(this.historyKey(name), JSON.stringify(entry));
83
- this.historyCache.set(name, [entry]);
84
- }
85
- }
86
- else {
87
- const existing = await this.redis.get(this.sectionKey(name));
76
+ handleRemoteChange = (_channel, messageJson) => {
77
+ try {
78
+ const parsed = JSON.parse(messageJson);
79
+ if (parsed._sid === this.instanceId)
80
+ return;
81
+ if (parsed.deleted) {
82
+ const existing = this.localCache.get(parsed.section);
83
+ this.localCache.delete(parsed.section);
84
+ this.historyCache.delete(parsed.section);
88
85
  if (existing) {
89
- const stored = JSON.parse(existing);
90
- this.localCache.set(name, stored);
86
+ this.listeners.notify({
87
+ section: parsed.section,
88
+ data: undefined,
89
+ agentName: parsed.agentName ?? 'system',
90
+ version: existing.version,
91
+ deleted: true,
92
+ });
91
93
  }
94
+ return;
92
95
  }
93
- }
94
- await this.subscriber.subscribe(this.channelKey());
95
- this.subscriber.on('message', (_channel, messageJson) => {
96
- try {
97
- const parsed = JSON.parse(messageJson);
98
- if (parsed._sid === this.instanceId)
99
- return;
100
- if (parsed.deleted) {
101
- this.localCache.delete(parsed.section);
102
- this.historyCache.delete(parsed.section);
103
- return;
104
- }
105
- const { section, data, agentName, version, timestamp } = parsed;
106
- const stored = {
107
- name: section,
108
- data,
109
- lastModified: timestamp,
110
- modifiedBy: agentName,
96
+ const agentName = parsed.agentName ?? 'unknown';
97
+ const version = parsed.version ?? (this.localCache.get(parsed.section)?.version ?? 0) + 1;
98
+ const timestamp = parsed.timestamp ?? Date.now();
99
+ this.localCache.set(parsed.section, {
100
+ name: parsed.section,
101
+ data: parsed.data,
102
+ lastModified: timestamp,
103
+ modifiedBy: agentName,
104
+ version,
105
+ });
106
+ if (this.config.trackHistory) {
107
+ this.pushHistory(parsed.section, {
108
+ value: parsed.data,
109
+ writtenBy: agentName,
110
+ timestamp,
111
111
  version,
112
- };
113
- this.localCache.set(section, stored);
114
- this.notifySubscribers(section, data, agentName);
112
+ });
115
113
  }
116
- catch (error) {
117
- console.warn('[RedisBlackboard] Failed to parse message:', error);
114
+ this.listeners.notify({ section: parsed.section, data: parsed.data, agentName, version });
115
+ }
116
+ catch (error) {
117
+ console.warn('[RedisBlackboard] Failed to parse message:', error);
118
+ }
119
+ };
120
+ async initialize() {
121
+ if (this.initialized)
122
+ return;
123
+ this.initialized = true;
124
+ try {
125
+ for (const [name, initialData] of Object.entries(this.config.sections)) {
126
+ const section = {
127
+ name,
128
+ data: initialData,
129
+ lastModified: Date.now(),
130
+ modifiedBy: 'system',
131
+ version: 1,
132
+ };
133
+ const wasSet = await this.redis.set(this.sectionKey(name), JSON.stringify(section), 'NX');
134
+ if (wasSet === 'OK') {
135
+ this.localCache.set(name, section);
136
+ if (this.config.trackHistory) {
137
+ const entry = {
138
+ value: initialData,
139
+ writtenBy: 'system',
140
+ timestamp: section.lastModified,
141
+ version: 1,
142
+ };
143
+ await this.redis.rpush(this.historyKey(name), JSON.stringify(entry));
144
+ this.historyCache.set(name, [entry]);
145
+ }
146
+ continue;
147
+ }
148
+ const existing = await this.redis.get(this.sectionKey(name));
149
+ const stored = existing ? parseStoredSection(existing) : null;
150
+ this.localCache.set(name, stored ?? section);
118
151
  }
119
- });
152
+ this.subscriber.on('message', this.handleRemoteChange);
153
+ await this.subscriber.subscribe(this.channelKey());
154
+ }
155
+ catch (error) {
156
+ this.subscriber.off('message', this.handleRemoteChange);
157
+ this.initialized = false;
158
+ throw error;
159
+ }
120
160
  }
121
161
  read(section) {
162
+ this.assertEnabled();
122
163
  const cached = this.localCache.get(section);
123
164
  if (!cached) {
124
165
  throw new Error(`Blackboard section '${section}' not found`);
@@ -126,9 +167,7 @@ export class RedisBlackboard {
126
167
  return cached.data;
127
168
  }
128
169
  write(section, data, agentName) {
129
- if (!this.config.enabled) {
130
- throw new Error('Blackboard is not enabled');
131
- }
170
+ this.assertEnabled();
132
171
  const existing = this.localCache.get(section);
133
172
  const version = existing ? existing.version + 1 : 1;
134
173
  const timestamp = Date.now();
@@ -141,28 +180,25 @@ export class RedisBlackboard {
141
180
  };
142
181
  this.localCache.set(section, newSection);
143
182
  if (this.config.trackHistory) {
144
- const entry = {
145
- value: data,
146
- writtenBy: agentName,
147
- timestamp,
148
- version,
149
- };
150
- if (!this.historyCache.has(section)) {
151
- this.historyCache.set(section, []);
152
- }
153
- this.historyCache.get(section).push(entry);
183
+ this.pushHistory(section, { value: data, writtenBy: agentName, timestamp, version });
154
184
  }
155
185
  const historyEntryJson = this.config.trackHistory
156
186
  ? JSON.stringify({ value: data, writtenBy: agentName, timestamp })
157
187
  : '';
158
188
  void this.redis
159
189
  .eval(ATOMIC_WRITE_SCRIPT, 3, this.sectionKey(section), this.historyKey(section), this.channelKey(), JSON.stringify(newSection), JSON.stringify({ section, data, agentName, timestamp }), historyEntryJson, String(MAX_HISTORY), this.instanceId)
190
+ .then((storedVersion) => {
191
+ if (typeof storedVersion === 'number' && this.localCache.get(section) === newSection) {
192
+ newSection.version = storedVersion;
193
+ }
194
+ })
160
195
  .catch((error) => {
161
196
  console.warn('[RedisBlackboard] Write error:', error);
162
197
  });
163
- this.notifySubscribers(section, data, agentName);
198
+ this.listeners.notify({ section, data, agentName, version });
164
199
  }
165
200
  append(section, item, agentName) {
201
+ this.assertEnabled();
166
202
  const current = this.localCache.get(section);
167
203
  if (!current) {
168
204
  this.write(section, [item], agentName);
@@ -171,42 +207,31 @@ export class RedisBlackboard {
171
207
  if (!Array.isArray(current.data)) {
172
208
  throw new Error(`Section '${section}' is not an array, cannot append`);
173
209
  }
174
- const newData = [...current.data, item];
175
- this.write(section, newData, agentName);
210
+ this.write(section, [...current.data, item], agentName);
176
211
  }
177
212
  has(section) {
178
213
  return this.localCache.has(section);
179
214
  }
180
215
  delete(section) {
216
+ const existing = this.localCache.get(section);
181
217
  this.localCache.delete(section);
182
218
  this.historyCache.delete(section);
183
- this.subscriptions.delete(section);
184
- void this.redis.del(this.sectionKey(section)).catch((error) => {
185
- console.warn('[RedisBlackboard] Delete error:', error);
186
- });
187
- void this.redis.del(this.historyKey(section)).catch((error) => {
188
- console.warn('[RedisBlackboard] Delete history error:', error);
189
- });
190
- void this.redis
191
- .publish(this.channelKey(), JSON.stringify({ section, deleted: true, agentName: 'system', timestamp: Date.now() }))
192
- .catch((error) => {
193
- console.warn('[RedisBlackboard] Publish delete error:', error);
194
- });
219
+ this.removeFromRedis(section);
220
+ if (existing) {
221
+ this.listeners.notify({
222
+ section,
223
+ data: undefined,
224
+ agentName: 'system',
225
+ version: existing.version,
226
+ deleted: true,
227
+ });
228
+ }
195
229
  }
196
230
  subscribe(section, handler) {
197
- if (!this.subscriptions.has(section)) {
198
- this.subscriptions.set(section, new Set());
199
- }
200
- this.subscriptions.get(section).add(handler);
201
- return () => {
202
- const handlers = this.subscriptions.get(section);
203
- if (handlers) {
204
- handlers.delete(handler);
205
- if (handlers.size === 0) {
206
- this.subscriptions.delete(section);
207
- }
208
- }
209
- };
231
+ return this.listeners.subscribe(section, handler);
232
+ }
233
+ onWrite(listener) {
234
+ return this.listeners.onWrite(listener);
210
235
  }
211
236
  getSections() {
212
237
  return Array.from(this.localCache.keys());
@@ -224,28 +249,25 @@ export class RedisBlackboard {
224
249
  };
225
250
  }
226
251
  getHistory(section) {
227
- return this.historyCache.get(section) ?? [];
252
+ return [...(this.historyCache.get(section) ?? [])];
228
253
  }
229
254
  clear() {
230
255
  const sections = Array.from(this.localCache.keys());
231
256
  this.localCache.clear();
232
257
  this.historyCache.clear();
233
258
  for (const section of sections) {
234
- void this.redis.del(this.sectionKey(section)).catch((error) => {
235
- console.warn('[RedisBlackboard] Clear section error:', error);
236
- });
237
- void this.redis.del(this.historyKey(section)).catch((error) => {
238
- console.warn('[RedisBlackboard] Clear history error:', error);
239
- });
240
- void this.redis
241
- .publish(this.channelKey(), JSON.stringify({ section, deleted: true, agentName: 'system', timestamp: Date.now() }))
242
- .catch((error) => {
243
- console.warn('[RedisBlackboard] Publish clear error:', error);
244
- });
259
+ this.removeFromRedis(section);
245
260
  }
246
261
  }
247
262
  async close() {
248
- this.subscriber.removeAllListeners('message');
263
+ this.subscriber.off('message', this.handleRemoteChange);
264
+ this.initialized = false;
265
+ if (this.subscriber.status === 'end')
266
+ return;
267
+ if (this.subscriber.status === 'wait') {
268
+ this.subscriber.disconnect();
269
+ return;
270
+ }
249
271
  await this.subscriber.unsubscribe();
250
272
  await this.subscriber.quit();
251
273
  }
@@ -259,21 +281,42 @@ export class RedisBlackboard {
259
281
  if (key.endsWith(':history'))
260
282
  continue;
261
283
  const raw = await this.redis.get(key);
262
- if (raw) {
263
- const stored = JSON.parse(raw);
284
+ const stored = raw ? parseStoredSection(raw) : null;
285
+ if (stored && key === this.sectionKey(stored.name)) {
264
286
  this.localCache.set(stored.name, stored);
265
287
  }
266
288
  }
267
289
  } while (cursor !== '0');
268
290
  }
269
- notifySubscribers(section, data, agentName) {
270
- const handlers = this.subscriptions.get(section);
271
- if (handlers) {
272
- for (const handler of handlers) {
273
- void Promise.resolve(handler(data, agentName)).catch((error) => {
274
- console.warn('[RedisBlackboard] Handler error:', error);
275
- });
276
- }
291
+ pushHistory(section, entry) {
292
+ let entries = this.historyCache.get(section);
293
+ if (!entries) {
294
+ entries = [];
295
+ this.historyCache.set(section, entries);
296
+ }
297
+ entries.push(entry);
298
+ if (entries.length > MAX_HISTORY) {
299
+ entries.splice(0, entries.length - MAX_HISTORY);
300
+ }
301
+ }
302
+ removeFromRedis(section) {
303
+ const notification = {
304
+ section,
305
+ deleted: true,
306
+ agentName: 'system',
307
+ timestamp: Date.now(),
308
+ _sid: this.instanceId,
309
+ };
310
+ void this.redis
311
+ .del(this.sectionKey(section), this.historyKey(section))
312
+ .then(() => this.redis.publish(this.channelKey(), JSON.stringify(notification)))
313
+ .catch((error) => {
314
+ console.warn('[RedisBlackboard] Delete error:', error);
315
+ });
316
+ }
317
+ assertEnabled() {
318
+ if (!this.config.enabled) {
319
+ throw new Error('Blackboard is not enabled');
277
320
  }
278
321
  }
279
322
  }
@@ -1 +1 @@
1
- {"version":3,"file":"redis-blackboard.js","sourceRoot":"","sources":["../../src/communication/redis-blackboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis-blackboard.js","sourceRoot":"","sources":["../../src/communication/redis-blackboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,OAAO,EACL,mBAAmB,GAIpB,MAAM,iBAAiB,CAAC;AA0BzB,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiC3B,CAAC;AAEF,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;QACzD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvF,OAAO,MAAuB,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,OAAO,eAAe;IAClB,KAAK,CAAQ;IACb,UAAU,CAAQ;IAClB,OAAO,CAAS;IAChB,SAAS,CAAS;IAClB,MAAM,CAAmB;IACzB,SAAS,GAAG,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IACzD,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,YAAY,GAAG,IAAI,GAAG,EAAoC,CAAC;IAClD,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,WAAW,GAAG,KAAK,CAAC;IAE5B,YAAY,MAAwB,EAAE,OAA+B;QACnE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC;IAChD,CAAC;IAEO,UAAU,CAAC,OAAe;QAChC,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,eAAe,OAAO,EAAE,CAAC;IACnE,CAAC;IAEO,UAAU,CAAC,OAAe;QAChC,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,eAAe,OAAO,UAAU,CAAC;IAC3E,CAAC;IAEO,UAAU;QAChB,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,qBAAqB,CAAC;IAChE,CAAC;IAEgB,kBAAkB,GAAG,CAAC,QAAgB,EAAE,WAAmB,EAAQ,EAAE;QACpF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAuB,CAAC;YAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE5C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;wBACpB,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,SAAS;wBACf,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,QAAQ;wBACvC,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,OAAO,EAAE,IAAI;qBACd,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1F,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAEjD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBAClC,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,YAAY,EAAE,SAAS;gBACvB,UAAU,EAAE,SAAS;gBACrB,OAAO;aACR,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE;oBAC/B,KAAK,EAAE,MAAM,CAAC,IAAI;oBAClB,SAAS,EAAE,SAAS;oBACpB,SAAS;oBACT,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC;YACH,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvE,MAAM,OAAO,GAAkB;oBAC7B,IAAI;oBACJ,IAAI,EAAE,WAAW;oBACjB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;oBACxB,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,CAAC;iBACX,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;gBAE1F,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACnC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;wBAC7B,MAAM,KAAK,GAA2B;4BACpC,KAAK,EAAE,WAAW;4BAClB,SAAS,EAAE,QAAQ;4BACnB,SAAS,EAAE,OAAO,CAAC,YAAY;4BAC/B,OAAO,EAAE,CAAC;yBACX,CAAC;wBACF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;wBACrE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,CAAc,OAAe;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,aAAa,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,MAAM,CAAC,IAAS,CAAC;IAC1B,CAAC;IAED,KAAK,CAAI,OAAe,EAAE,IAAO,EAAE,SAAiB;QAClD,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,UAAU,GAAqB;YACnC,IAAI,EAAE,OAAO;YACb,IAAI;YACJ,YAAY,EAAE,SAAS;YACvB,UAAU,EAAE,SAAS;YACrB,OAAO;SACR,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;YAC/C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;YAClE,CAAC,CAAC,EAAE,CAAC;QAEP,KAAK,IAAI,CAAC,KAAK;aACZ,IAAI,CACH,mBAAmB,EACnB,CAAC,EACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EACxB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EACxB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EACvD,gBAAgB,EAChB,MAAM,CAAC,WAAW,CAAC,EACnB,IAAI,CAAC,UAAU,CAChB;aACA,IAAI,CAAC,CAAC,aAAsB,EAAE,EAAE;YAC/B,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;gBACrF,UAAU,CAAC,OAAO,GAAG,aAAa,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAI,OAAe,EAAE,IAAO,EAAE,SAAiB;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,kCAAkC,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,OAAe;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBACpB,OAAO;gBACP,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,OAAiC;QAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,CAAC,QAAiC;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU,CAAc,OAAe;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAS;YACtB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAE1B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,eAAe,CAAC;QACjE,IAAI,MAAM,GAAG,GAAG,CAAC;QAEjB,GAAG,CAAC;YACF,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACzF,MAAM,GAAG,UAAU,CAAC;YAEpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAAE,SAAS;gBAEvC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpD,IAAI,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC,QAAQ,MAAM,KAAK,GAAG,EAAE;IAC3B,CAAC;IAEO,WAAW,CAAC,OAAe,EAAE,KAA6B;QAChE,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,OAAe;QACrC,MAAM,YAAY,GAAuB;YACvC,OAAO;YACP,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,UAAU;SACtB,CAAC;QAEF,KAAK,IAAI,CAAC,KAAK;aACZ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aACvD,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;aAC/E,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF"}
@@ -15,13 +15,22 @@ export declare class RedisSwarmEventEmitter implements SwarmEventEmitter {
15
15
  private handlers;
16
16
  private localEvents;
17
17
  private readonly instanceId;
18
+ private initialized;
18
19
  constructor(options: RedisEventEmitterOptions);
19
20
  private eventsKey;
20
21
  private channelKey;
22
+ private readonly handleRemoteEvent;
21
23
  initialize(): Promise<void>;
22
24
  on(event: SwarmEventType | '*', handler: SwarmEventHandler): () => void;
23
25
  once(event: SwarmEventType | '*', handler: SwarmEventHandler): () => void;
26
+ /**
27
+ * Emit an event: local handlers are notified synchronously, persistence and
28
+ * cross-node publication happen in the background.
29
+ */
24
30
  emit(event: SwarmEventType, data?: unknown, agentName?: string): void;
31
+ /**
32
+ * Emit an event and wait until it is persisted in Redis and published to other nodes.
33
+ */
25
34
  emitAsync(event: SwarmEventType, data?: unknown, agentName?: string): Promise<void>;
26
35
  off(event: SwarmEventType | '*', handler: SwarmEventHandler): void;
27
36
  removeAllListeners(event?: SwarmEventType): void;
@@ -32,6 +41,9 @@ export declare class RedisSwarmEventEmitter implements SwarmEventEmitter {
32
41
  clearEvents(): void;
33
42
  clearEventsAsync(): Promise<void>;
34
43
  close(): Promise<void>;
44
+ private createEvent;
45
+ private recordLocally;
46
+ private persistAndPublish;
35
47
  private notifyHandlers;
36
48
  }
37
49
  //# sourceMappingURL=redis-event-emitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis-event-emitter.d.ts","sourceRoot":"","sources":["../../src/communication/redis-event-emitter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAA2D;IAC3E,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;gBAE7B,OAAO,EAAE,wBAAwB;IAQ7C,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAIZ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI;IASvE,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAUzE,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAM/D,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BzF,GAAG,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAUlE,kBAAkB,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI;IAQhD,SAAS,IAAI,UAAU,EAAE;IAInB,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAK7C,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,EAAE;IAInD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAIjD,WAAW,IAAI,IAAI;IAIb,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,OAAO,CAAC,cAAc;CAmBvB"}
1
+ {"version":3,"file":"redis-event-emitter.d.ts","sourceRoot":"","sources":["../../src/communication/redis-event-emitter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyBD,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAA2D;IAC3E,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,wBAAwB;IAQ7C,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAUhC;IAEI,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAWvE,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAQzE;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAUrE;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzF,GAAG,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAUlE,kBAAkB,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI;IAQhD,SAAS,IAAI,UAAU,EAAE;IAInB,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAU7C,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,EAAE;IAInD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAIjD,WAAW,IAAI,IAAI;IAIb,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;YAOP,iBAAiB;IAa/B,OAAO,CAAC,cAAc;CASvB"}