@honeybee-ai/incubator 1.1.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 (245) hide show
  1. package/README.md +586 -0
  2. package/dashboard/dist/assets/index-DFb8p7xI.js +9 -0
  3. package/dashboard/dist/assets/index-RKiEoHEo.css +1 -0
  4. package/dashboard/dist/index.html +13 -0
  5. package/dist/agent/acp/claim-manager.d.ts +24 -0
  6. package/dist/agent/acp/claim-manager.js +64 -0
  7. package/dist/agent/acp/claim-manager.js.map +1 -0
  8. package/dist/agent/acp/direct-runtime.d.ts +90 -0
  9. package/dist/agent/acp/direct-runtime.js +364 -0
  10. package/dist/agent/acp/direct-runtime.js.map +1 -0
  11. package/dist/agent/acp/event-client.d.ts +20 -0
  12. package/dist/agent/acp/event-client.js +60 -0
  13. package/dist/agent/acp/event-client.js.map +1 -0
  14. package/dist/agent/acp/event-matcher.d.ts +13 -0
  15. package/dist/agent/acp/event-matcher.js +31 -0
  16. package/dist/agent/acp/event-matcher.js.map +1 -0
  17. package/dist/agent/acp/progress.d.ts +23 -0
  18. package/dist/agent/acp/progress.js +54 -0
  19. package/dist/agent/acp/progress.js.map +1 -0
  20. package/dist/agent/acp/runtime.d.ts +156 -0
  21. package/dist/agent/acp/runtime.js +337 -0
  22. package/dist/agent/acp/runtime.js.map +1 -0
  23. package/dist/agent/acp/ws-event-client.d.ts +64 -0
  24. package/dist/agent/acp/ws-event-client.js +263 -0
  25. package/dist/agent/acp/ws-event-client.js.map +1 -0
  26. package/dist/agent/agent.d.ts +60 -0
  27. package/dist/agent/agent.js +121 -0
  28. package/dist/agent/agent.js.map +1 -0
  29. package/dist/agent/cli.d.ts +2 -0
  30. package/dist/agent/cli.js +311 -0
  31. package/dist/agent/cli.js.map +1 -0
  32. package/dist/agent/mcp-client.d.ts +37 -0
  33. package/dist/agent/mcp-client.js +92 -0
  34. package/dist/agent/mcp-client.js.map +1 -0
  35. package/dist/agent/mock-runner.d.ts +14 -0
  36. package/dist/agent/mock-runner.js +159 -0
  37. package/dist/agent/mock-runner.js.map +1 -0
  38. package/dist/agent/native-client.d.ts +18 -0
  39. package/dist/agent/native-client.js +42 -0
  40. package/dist/agent/native-client.js.map +1 -0
  41. package/dist/agent/prompt.d.ts +45 -0
  42. package/dist/agent/prompt.js +115 -0
  43. package/dist/agent/prompt.js.map +1 -0
  44. package/dist/agent/providers.d.ts +25 -0
  45. package/dist/agent/providers.js +696 -0
  46. package/dist/agent/providers.js.map +1 -0
  47. package/dist/agent/runner.d.ts +15 -0
  48. package/dist/agent/runner.js +625 -0
  49. package/dist/agent/runner.js.map +1 -0
  50. package/dist/agent/tool-client.d.ts +12 -0
  51. package/dist/agent/tool-client.js +2 -0
  52. package/dist/agent/tool-client.js.map +1 -0
  53. package/dist/agent/types.d.ts +116 -0
  54. package/dist/agent/types.js +2 -0
  55. package/dist/agent/types.js.map +1 -0
  56. package/dist/agent-pool.d.ts +44 -0
  57. package/dist/agent-pool.js +228 -0
  58. package/dist/agent-pool.js.map +1 -0
  59. package/dist/bin.d.ts +2 -0
  60. package/dist/bin.js +7 -0
  61. package/dist/bin.js.map +1 -0
  62. package/dist/bus.d.ts +24 -0
  63. package/dist/bus.js +79 -0
  64. package/dist/bus.js.map +1 -0
  65. package/dist/dances.d.ts +73 -0
  66. package/dist/dances.js +122 -0
  67. package/dist/dances.js.map +1 -0
  68. package/dist/guard.d.ts +52 -0
  69. package/dist/guard.js +210 -0
  70. package/dist/guard.js.map +1 -0
  71. package/dist/heartbeat.d.ts +41 -0
  72. package/dist/heartbeat.js +104 -0
  73. package/dist/heartbeat.js.map +1 -0
  74. package/dist/honeycomb.d.ts +63 -0
  75. package/dist/honeycomb.js +222 -0
  76. package/dist/honeycomb.js.map +1 -0
  77. package/dist/index.d.ts +2 -0
  78. package/dist/index.js +601 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/integrations/config.d.ts +15 -0
  81. package/dist/integrations/config.js +62 -0
  82. package/dist/integrations/config.js.map +1 -0
  83. package/dist/integrations/index.d.ts +4 -0
  84. package/dist/integrations/index.js +4 -0
  85. package/dist/integrations/index.js.map +1 -0
  86. package/dist/integrations/loader.d.ts +8 -0
  87. package/dist/integrations/loader.js +27 -0
  88. package/dist/integrations/loader.js.map +1 -0
  89. package/dist/integrations/manager.d.ts +29 -0
  90. package/dist/integrations/manager.js +108 -0
  91. package/dist/integrations/manager.js.map +1 -0
  92. package/dist/log.d.ts +25 -0
  93. package/dist/log.js +67 -0
  94. package/dist/log.js.map +1 -0
  95. package/dist/namespaces.d.ts +28 -0
  96. package/dist/namespaces.js +100 -0
  97. package/dist/namespaces.js.map +1 -0
  98. package/dist/orchestrator.d.ts +119 -0
  99. package/dist/orchestrator.js +463 -0
  100. package/dist/orchestrator.js.map +1 -0
  101. package/dist/persistence.d.ts +7 -0
  102. package/dist/persistence.js +62 -0
  103. package/dist/persistence.js.map +1 -0
  104. package/dist/plugins/index.d.ts +2 -0
  105. package/dist/plugins/index.js +3 -0
  106. package/dist/plugins/index.js.map +1 -0
  107. package/dist/plugins/loader.d.ts +12 -0
  108. package/dist/plugins/loader.js +122 -0
  109. package/dist/plugins/loader.js.map +1 -0
  110. package/dist/plugins/manager.d.ts +76 -0
  111. package/dist/plugins/manager.js +238 -0
  112. package/dist/plugins/manager.js.map +1 -0
  113. package/dist/propolis/guard.d.ts +23 -0
  114. package/dist/propolis/guard.js +49 -0
  115. package/dist/propolis/guard.js.map +1 -0
  116. package/dist/propolis/tools/types.d.ts +9 -0
  117. package/dist/propolis/tools/types.js +9 -0
  118. package/dist/propolis/tools/types.js.map +1 -0
  119. package/dist/rest.d.ts +4 -0
  120. package/dist/rest.js +962 -0
  121. package/dist/rest.js.map +1 -0
  122. package/dist/run-watcher.d.ts +20 -0
  123. package/dist/run-watcher.js +74 -0
  124. package/dist/run-watcher.js.map +1 -0
  125. package/dist/server.d.ts +17 -0
  126. package/dist/server.js +412 -0
  127. package/dist/server.js.map +1 -0
  128. package/dist/stores/backend.d.ts +15 -0
  129. package/dist/stores/backend.js +28 -0
  130. package/dist/stores/backend.js.map +1 -0
  131. package/dist/stores/claims.d.ts +14 -0
  132. package/dist/stores/claims.js +77 -0
  133. package/dist/stores/claims.js.map +1 -0
  134. package/dist/stores/conflicts.d.ts +10 -0
  135. package/dist/stores/conflicts.js +39 -0
  136. package/dist/stores/conflicts.js.map +1 -0
  137. package/dist/stores/control.d.ts +37 -0
  138. package/dist/stores/control.js +105 -0
  139. package/dist/stores/control.js.map +1 -0
  140. package/dist/stores/discoveries.d.ts +11 -0
  141. package/dist/stores/discoveries.js +45 -0
  142. package/dist/stores/discoveries.js.map +1 -0
  143. package/dist/stores/events.d.ts +14 -0
  144. package/dist/stores/events.js +42 -0
  145. package/dist/stores/events.js.map +1 -0
  146. package/dist/stores/help.d.ts +11 -0
  147. package/dist/stores/help.js +46 -0
  148. package/dist/stores/help.js.map +1 -0
  149. package/dist/stores/interfaces.d.ts +125 -0
  150. package/dist/stores/interfaces.js +2 -0
  151. package/dist/stores/interfaces.js.map +1 -0
  152. package/dist/stores/messages.d.ts +8 -0
  153. package/dist/stores/messages.js +29 -0
  154. package/dist/stores/messages.js.map +1 -0
  155. package/dist/stores/progress.d.ts +8 -0
  156. package/dist/stores/progress.js +21 -0
  157. package/dist/stores/progress.js.map +1 -0
  158. package/dist/stores/proposals.d.ts +11 -0
  159. package/dist/stores/proposals.js +46 -0
  160. package/dist/stores/proposals.js.map +1 -0
  161. package/dist/stores/redis/claims.d.ts +16 -0
  162. package/dist/stores/redis/claims.js +126 -0
  163. package/dist/stores/redis/claims.js.map +1 -0
  164. package/dist/stores/redis/db.d.ts +39 -0
  165. package/dist/stores/redis/db.js +34 -0
  166. package/dist/stores/redis/db.js.map +1 -0
  167. package/dist/stores/redis/discoveries.d.ts +13 -0
  168. package/dist/stores/redis/discoveries.js +54 -0
  169. package/dist/stores/redis/discoveries.js.map +1 -0
  170. package/dist/stores/redis/events.d.ts +17 -0
  171. package/dist/stores/redis/events.js +57 -0
  172. package/dist/stores/redis/events.js.map +1 -0
  173. package/dist/stores/redis/index.d.ts +3 -0
  174. package/dist/stores/redis/index.js +31 -0
  175. package/dist/stores/redis/index.js.map +1 -0
  176. package/dist/stores/redis/state.d.ts +14 -0
  177. package/dist/stores/redis/state.js +83 -0
  178. package/dist/stores/redis/state.js.map +1 -0
  179. package/dist/stores/reinforcements.d.ts +11 -0
  180. package/dist/stores/reinforcements.js +42 -0
  181. package/dist/stores/reinforcements.js.map +1 -0
  182. package/dist/stores/roles.d.ts +9 -0
  183. package/dist/stores/roles.js +22 -0
  184. package/dist/stores/roles.js.map +1 -0
  185. package/dist/stores/runs.d.ts +15 -0
  186. package/dist/stores/runs.js +50 -0
  187. package/dist/stores/runs.js.map +1 -0
  188. package/dist/stores/sqlite/claims.d.ts +17 -0
  189. package/dist/stores/sqlite/claims.js +121 -0
  190. package/dist/stores/sqlite/claims.js.map +1 -0
  191. package/dist/stores/sqlite/db.d.ts +16 -0
  192. package/dist/stores/sqlite/db.js +77 -0
  193. package/dist/stores/sqlite/db.js.map +1 -0
  194. package/dist/stores/sqlite/discoveries.d.ts +14 -0
  195. package/dist/stores/sqlite/discoveries.js +66 -0
  196. package/dist/stores/sqlite/discoveries.js.map +1 -0
  197. package/dist/stores/sqlite/events.d.ts +16 -0
  198. package/dist/stores/sqlite/events.js +75 -0
  199. package/dist/stores/sqlite/events.js.map +1 -0
  200. package/dist/stores/sqlite/index.d.ts +2 -0
  201. package/dist/stores/sqlite/index.js +33 -0
  202. package/dist/stores/sqlite/index.js.map +1 -0
  203. package/dist/stores/sqlite/state.d.ts +15 -0
  204. package/dist/stores/sqlite/state.js +99 -0
  205. package/dist/stores/sqlite/state.js.map +1 -0
  206. package/dist/stores/state.d.ts +11 -0
  207. package/dist/stores/state.js +67 -0
  208. package/dist/stores/state.js.map +1 -0
  209. package/dist/transports/broker.d.ts +20 -0
  210. package/dist/transports/broker.js +102 -0
  211. package/dist/transports/broker.js.map +1 -0
  212. package/dist/transports/index.d.ts +3 -0
  213. package/dist/transports/index.js +3 -0
  214. package/dist/transports/index.js.map +1 -0
  215. package/dist/transports/ipc.d.ts +26 -0
  216. package/dist/transports/ipc.js +93 -0
  217. package/dist/transports/ipc.js.map +1 -0
  218. package/dist/transports/types.d.ts +39 -0
  219. package/dist/transports/types.js +8 -0
  220. package/dist/transports/types.js.map +1 -0
  221. package/dist/types.d.ts +45 -0
  222. package/dist/types.js +2 -0
  223. package/dist/types.js.map +1 -0
  224. package/dist/utils.d.ts +3 -0
  225. package/dist/utils.js +36 -0
  226. package/dist/utils.js.map +1 -0
  227. package/dist/waggle/client.d.ts +16 -0
  228. package/dist/waggle/client.js +28 -0
  229. package/dist/waggle/client.js.map +1 -0
  230. package/dist/waggle/compound.d.ts +22 -0
  231. package/dist/waggle/compound.js +194 -0
  232. package/dist/waggle/compound.js.map +1 -0
  233. package/dist/waggle/index.d.ts +25 -0
  234. package/dist/waggle/index.js +77 -0
  235. package/dist/waggle/index.js.map +1 -0
  236. package/dist/waggle/types.d.ts +54 -0
  237. package/dist/waggle/types.js +2 -0
  238. package/dist/waggle/types.js.map +1 -0
  239. package/dist/webhooks.d.ts +26 -0
  240. package/dist/webhooks.js +79 -0
  241. package/dist/webhooks.js.map +1 -0
  242. package/dist/ws.d.ts +33 -0
  243. package/dist/ws.js +195 -0
  244. package/dist/ws.js.map +1 -0
  245. package/package.json +122 -0
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Honeycomb — Cross-namespace event routing layer.
3
+ *
4
+ * Protocols declare `topics.publishes` and `topics.subscribes` in their spec.
5
+ * When an event is published in a namespace whose protocol publishes that
6
+ * event type as a topic, the router injects it into all subscribing namespaces.
7
+ *
8
+ * Loop prevention: routed events use `publishedBy: "honeycomb:<sourceNs>"`.
9
+ * The router skips any event whose publishedBy starts with "honeycomb:".
10
+ */
11
+ import type { NotificationBus } from './bus.js';
12
+ import type { Stores } from './stores/interfaces.js';
13
+ import type { ProtocolSpec } from '@agentcoordinationprotocol/spec';
14
+ import type { HoneycombTransport, TopicEvent } from './transports/types.js';
15
+ export interface TopicRouterOptions {
16
+ transport?: HoneycombTransport;
17
+ hiveName?: string;
18
+ hivePublishes?: string[];
19
+ hiveSubscribes?: string[];
20
+ }
21
+ export declare class TopicRouter {
22
+ private getStores;
23
+ private bus;
24
+ /** topic → set of subscribing namespace names */
25
+ private subscribers;
26
+ /** namespace → set of topics it publishes */
27
+ private publishers;
28
+ /** namespace → set of topics it subscribes to (for cleanup) */
29
+ private subscriptions;
30
+ /** namespace → bus unsubscribe function */
31
+ private unsubscribers;
32
+ /** Optional cross-hive transport */
33
+ private transport?;
34
+ private hiveName?;
35
+ private hivePublishes?;
36
+ private transportUnsubs;
37
+ constructor(getStores: (namespace: string) => Stores, bus: NotificationBus, options?: TopicRouterOptions);
38
+ /** Register topics from a loaded protocol spec. */
39
+ registerProtocol(namespace: string, spec: ProtocolSpec): void;
40
+ /** Subscribe router to a namespace's bus events. */
41
+ watch(namespace: string): void;
42
+ /** Route an event from source namespace to subscribers. */
43
+ private route;
44
+ /** Inject a remote event received via transport into local namespaces. */
45
+ injectRemoteEvent(topic: string, event: TopicEvent): void;
46
+ /** Clean up when a namespace is deleted. */
47
+ clearNamespace(namespace: string): void;
48
+ /** Runtime: subscribe a namespace to a topic. */
49
+ subscribe(namespace: string, topic: string): void;
50
+ /** Runtime: unsubscribe a namespace from a topic. */
51
+ unsubscribe(namespace: string, topic: string): void;
52
+ /** Runtime: declare a namespace as publishing a topic. */
53
+ publish(namespace: string, topic: string): void;
54
+ /** Runtime: remove a namespace's published topic. */
55
+ unpublish(namespace: string, topic: string): void;
56
+ /** Query: get topics for a namespace. */
57
+ getTopics(namespace: string): {
58
+ publishes: string[];
59
+ subscribes: string[];
60
+ };
61
+ /** Query: get all namespaces subscribing to a topic. */
62
+ getSubscribersForTopic(topic: string): string[];
63
+ }
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Honeycomb — Cross-namespace event routing layer.
3
+ *
4
+ * Protocols declare `topics.publishes` and `topics.subscribes` in their spec.
5
+ * When an event is published in a namespace whose protocol publishes that
6
+ * event type as a topic, the router injects it into all subscribing namespaces.
7
+ *
8
+ * Loop prevention: routed events use `publishedBy: "honeycomb:<sourceNs>"`.
9
+ * The router skips any event whose publishedBy starts with "honeycomb:".
10
+ */
11
+ const HONEYCOMB_PREFIX = 'honeycomb:';
12
+ export class TopicRouter {
13
+ getStores;
14
+ bus;
15
+ /** topic → set of subscribing namespace names */
16
+ subscribers = new Map();
17
+ /** namespace → set of topics it publishes */
18
+ publishers = new Map();
19
+ /** namespace → set of topics it subscribes to (for cleanup) */
20
+ subscriptions = new Map();
21
+ /** namespace → bus unsubscribe function */
22
+ unsubscribers = new Map();
23
+ /** Optional cross-hive transport */
24
+ transport;
25
+ hiveName;
26
+ hivePublishes;
27
+ transportUnsubs = [];
28
+ constructor(getStores, bus, options) {
29
+ this.getStores = getStores;
30
+ this.bus = bus;
31
+ if (options?.transport && options.hiveName) {
32
+ this.transport = options.transport;
33
+ this.hiveName = options.hiveName;
34
+ this.hivePublishes = options.hivePublishes ? new Set(options.hivePublishes) : undefined;
35
+ // Subscribe to incoming remote events for each hive-level subscription
36
+ if (options.hiveSubscribes) {
37
+ for (const topic of options.hiveSubscribes) {
38
+ const unsub = options.transport.subscribe(topic, (event) => {
39
+ this.injectRemoteEvent(topic, event);
40
+ });
41
+ this.transportUnsubs.push(unsub);
42
+ }
43
+ }
44
+ }
45
+ }
46
+ /** Register topics from a loaded protocol spec. */
47
+ registerProtocol(namespace, spec) {
48
+ // Clear previous registrations for this namespace (idempotent)
49
+ this.clearNamespace(namespace);
50
+ if (!spec.topics)
51
+ return;
52
+ // Register published topics
53
+ if (spec.topics.publishes && spec.topics.publishes.length > 0) {
54
+ this.publishers.set(namespace, new Set(spec.topics.publishes));
55
+ }
56
+ // Register subscribed topics
57
+ if (spec.topics.subscribes && spec.topics.subscribes.length > 0) {
58
+ const subs = new Set(spec.topics.subscribes);
59
+ this.subscriptions.set(namespace, subs);
60
+ for (const topic of subs) {
61
+ let set = this.subscribers.get(topic);
62
+ if (!set) {
63
+ set = new Set();
64
+ this.subscribers.set(topic, set);
65
+ }
66
+ set.add(namespace);
67
+ }
68
+ }
69
+ // Ensure the router is watching this namespace for outgoing events
70
+ this.watch(namespace);
71
+ }
72
+ /** Subscribe router to a namespace's bus events. */
73
+ watch(namespace) {
74
+ // Don't double-watch
75
+ if (this.unsubscribers.has(namespace))
76
+ return;
77
+ const unsub = this.bus.subscribe(namespace, (event) => {
78
+ this.route(namespace, event);
79
+ });
80
+ this.unsubscribers.set(namespace, unsub);
81
+ }
82
+ /** Route an event from source namespace to subscribers. */
83
+ route(sourceNamespace, event) {
84
+ // Loop prevention: skip events already routed by honeycomb
85
+ if (event.publishedBy.startsWith(HONEYCOMB_PREFIX))
86
+ return;
87
+ // Check if this namespace publishes this event type as a topic
88
+ const published = this.publishers.get(sourceNamespace);
89
+ if (!published || !published.has(event.type))
90
+ return;
91
+ // Local routing: find all subscribing namespaces within this incubator
92
+ const subs = this.subscribers.get(event.type);
93
+ if (subs && subs.size > 0) {
94
+ for (const targetNs of subs) {
95
+ // Don't route back to self
96
+ if (targetNs === sourceNamespace)
97
+ continue;
98
+ const stores = this.getStores(targetNs);
99
+ stores.events.publish(event.type, { ...(event.data && typeof event.data === 'object' ? event.data : { value: event.data }), _source: sourceNamespace }, `${HONEYCOMB_PREFIX}${sourceNamespace}`).catch(() => {
100
+ // Best-effort routing — don't crash if a target namespace has issues
101
+ });
102
+ }
103
+ }
104
+ // Cross-hive routing: publish to transport if topic is in hive-level publishes
105
+ if (this.transport && this.hiveName) {
106
+ if (!this.hivePublishes || this.hivePublishes.has(event.type)) {
107
+ const topicEvent = {
108
+ sourceHive: this.hiveName,
109
+ topic: event.type,
110
+ data: event.data,
111
+ publishedBy: event.publishedBy,
112
+ timestamp: event.publishedAt,
113
+ };
114
+ this.transport.publish(event.type, topicEvent).catch(() => {
115
+ // Best-effort cross-hive routing
116
+ });
117
+ }
118
+ }
119
+ }
120
+ /** Inject a remote event received via transport into local namespaces. */
121
+ injectRemoteEvent(topic, event) {
122
+ const subs = this.subscribers.get(topic);
123
+ if (!subs || subs.size === 0)
124
+ return;
125
+ const source = `${HONEYCOMB_PREFIX}${event.sourceHive}`;
126
+ for (const targetNs of subs) {
127
+ const stores = this.getStores(targetNs);
128
+ stores.events.publish(topic, { ...(event.data && typeof event.data === 'object' ? event.data : { value: event.data }), _source: event.sourceHive }, source).catch(() => {
129
+ // Best-effort injection
130
+ });
131
+ }
132
+ }
133
+ /** Clean up when a namespace is deleted. */
134
+ clearNamespace(namespace) {
135
+ // Remove from publishers
136
+ this.publishers.delete(namespace);
137
+ // Remove from subscriber sets
138
+ const subs = this.subscriptions.get(namespace);
139
+ if (subs) {
140
+ for (const topic of subs) {
141
+ const set = this.subscribers.get(topic);
142
+ if (set) {
143
+ set.delete(namespace);
144
+ if (set.size === 0)
145
+ this.subscribers.delete(topic);
146
+ }
147
+ }
148
+ this.subscriptions.delete(namespace);
149
+ }
150
+ // Unsubscribe from bus
151
+ const unsub = this.unsubscribers.get(namespace);
152
+ if (unsub) {
153
+ unsub();
154
+ this.unsubscribers.delete(namespace);
155
+ }
156
+ }
157
+ /** Runtime: subscribe a namespace to a topic. */
158
+ subscribe(namespace, topic) {
159
+ let subs = this.subscriptions.get(namespace);
160
+ if (!subs) {
161
+ subs = new Set();
162
+ this.subscriptions.set(namespace, subs);
163
+ }
164
+ subs.add(topic);
165
+ let set = this.subscribers.get(topic);
166
+ if (!set) {
167
+ set = new Set();
168
+ this.subscribers.set(topic, set);
169
+ }
170
+ set.add(namespace);
171
+ }
172
+ /** Runtime: unsubscribe a namespace from a topic. */
173
+ unsubscribe(namespace, topic) {
174
+ const subs = this.subscriptions.get(namespace);
175
+ if (subs) {
176
+ subs.delete(topic);
177
+ if (subs.size === 0)
178
+ this.subscriptions.delete(namespace);
179
+ }
180
+ const set = this.subscribers.get(topic);
181
+ if (set) {
182
+ set.delete(namespace);
183
+ if (set.size === 0)
184
+ this.subscribers.delete(topic);
185
+ }
186
+ }
187
+ /** Runtime: declare a namespace as publishing a topic. */
188
+ publish(namespace, topic) {
189
+ let pubs = this.publishers.get(namespace);
190
+ if (!pubs) {
191
+ pubs = new Set();
192
+ this.publishers.set(namespace, pubs);
193
+ }
194
+ pubs.add(topic);
195
+ // Ensure we're watching this namespace
196
+ this.watch(namespace);
197
+ }
198
+ /** Runtime: remove a namespace's published topic. */
199
+ unpublish(namespace, topic) {
200
+ const pubs = this.publishers.get(namespace);
201
+ if (pubs) {
202
+ pubs.delete(topic);
203
+ if (pubs.size === 0)
204
+ this.publishers.delete(namespace);
205
+ }
206
+ }
207
+ /** Query: get topics for a namespace. */
208
+ getTopics(namespace) {
209
+ const pubs = this.publishers.get(namespace);
210
+ const subs = this.subscriptions.get(namespace);
211
+ return {
212
+ publishes: pubs ? [...pubs] : [],
213
+ subscribes: subs ? [...subs] : [],
214
+ };
215
+ }
216
+ /** Query: get all namespaces subscribing to a topic. */
217
+ getSubscribersForTopic(topic) {
218
+ const set = this.subscribers.get(topic);
219
+ return set ? [...set] : [];
220
+ }
221
+ }
222
+ //# sourceMappingURL=honeycomb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"honeycomb.js","sourceRoot":"","sources":["../src/honeycomb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export declare function main(): Promise<void>;