@claude-flow/hooks 3.0.0-alpha.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 (72) hide show
  1. package/README.md +440 -0
  2. package/bin/hooks-daemon.js +199 -0
  3. package/bin/statusline.js +77 -0
  4. package/dist/bridge/official-hooks-bridge.d.ts +99 -0
  5. package/dist/bridge/official-hooks-bridge.d.ts.map +1 -0
  6. package/dist/bridge/official-hooks-bridge.js +280 -0
  7. package/dist/bridge/official-hooks-bridge.js.map +1 -0
  8. package/dist/cli/guidance-cli.d.ts +17 -0
  9. package/dist/cli/guidance-cli.d.ts.map +1 -0
  10. package/dist/cli/guidance-cli.js +486 -0
  11. package/dist/cli/guidance-cli.js.map +1 -0
  12. package/dist/daemons/index.d.ts +204 -0
  13. package/dist/daemons/index.d.ts.map +1 -0
  14. package/dist/daemons/index.js +443 -0
  15. package/dist/daemons/index.js.map +1 -0
  16. package/dist/executor/index.d.ts +80 -0
  17. package/dist/executor/index.d.ts.map +1 -0
  18. package/dist/executor/index.js +273 -0
  19. package/dist/executor/index.js.map +1 -0
  20. package/dist/index.d.ts +51 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +85 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/llm/index.d.ts +11 -0
  25. package/dist/llm/index.d.ts.map +1 -0
  26. package/dist/llm/index.js +11 -0
  27. package/dist/llm/index.js.map +1 -0
  28. package/dist/llm/llm-hooks.d.ts +93 -0
  29. package/dist/llm/llm-hooks.d.ts.map +1 -0
  30. package/dist/llm/llm-hooks.js +382 -0
  31. package/dist/llm/llm-hooks.js.map +1 -0
  32. package/dist/mcp/index.d.ts +61 -0
  33. package/dist/mcp/index.d.ts.map +1 -0
  34. package/dist/mcp/index.js +501 -0
  35. package/dist/mcp/index.js.map +1 -0
  36. package/dist/reasoningbank/guidance-provider.d.ts +78 -0
  37. package/dist/reasoningbank/guidance-provider.d.ts.map +1 -0
  38. package/dist/reasoningbank/guidance-provider.js +350 -0
  39. package/dist/reasoningbank/guidance-provider.js.map +1 -0
  40. package/dist/reasoningbank/index.d.ts +212 -0
  41. package/dist/reasoningbank/index.d.ts.map +1 -0
  42. package/dist/reasoningbank/index.js +785 -0
  43. package/dist/reasoningbank/index.js.map +1 -0
  44. package/dist/registry/index.d.ts +85 -0
  45. package/dist/registry/index.d.ts.map +1 -0
  46. package/dist/registry/index.js +212 -0
  47. package/dist/registry/index.js.map +1 -0
  48. package/dist/statusline/index.d.ts +128 -0
  49. package/dist/statusline/index.d.ts.map +1 -0
  50. package/dist/statusline/index.js +493 -0
  51. package/dist/statusline/index.js.map +1 -0
  52. package/dist/swarm/index.d.ts +271 -0
  53. package/dist/swarm/index.d.ts.map +1 -0
  54. package/dist/swarm/index.js +638 -0
  55. package/dist/swarm/index.js.map +1 -0
  56. package/dist/types.d.ts +525 -0
  57. package/dist/types.d.ts.map +1 -0
  58. package/dist/types.js +56 -0
  59. package/dist/types.js.map +1 -0
  60. package/dist/workers/index.d.ts +232 -0
  61. package/dist/workers/index.d.ts.map +1 -0
  62. package/dist/workers/index.js +1521 -0
  63. package/dist/workers/index.js.map +1 -0
  64. package/dist/workers/mcp-tools.d.ts +37 -0
  65. package/dist/workers/mcp-tools.d.ts.map +1 -0
  66. package/dist/workers/mcp-tools.js +414 -0
  67. package/dist/workers/mcp-tools.js.map +1 -0
  68. package/dist/workers/session-hook.d.ts +42 -0
  69. package/dist/workers/session-hook.d.ts.map +1 -0
  70. package/dist/workers/session-hook.js +172 -0
  71. package/dist/workers/session-hook.js.map +1 -0
  72. package/package.json +101 -0
@@ -0,0 +1,204 @@
1
+ /**
2
+ * V3 Daemon Manager
3
+ *
4
+ * Manages background daemon processes for:
5
+ * - Metrics collection
6
+ * - Swarm monitoring
7
+ * - Pattern learning consolidation
8
+ * - Statusline updates
9
+ */
10
+ import type { DaemonConfig, DaemonState, DaemonManagerConfig } from '../types.js';
11
+ /**
12
+ * Daemon instance
13
+ */
14
+ interface DaemonInstance {
15
+ config: DaemonConfig;
16
+ state: DaemonState;
17
+ timer?: ReturnType<typeof setInterval>;
18
+ task?: () => Promise<void>;
19
+ }
20
+ /**
21
+ * Daemon Manager - controls background daemon processes
22
+ */
23
+ export declare class DaemonManager {
24
+ private config;
25
+ private daemons;
26
+ private restartCounts;
27
+ constructor(config?: Partial<DaemonManagerConfig>);
28
+ /**
29
+ * Register a daemon
30
+ */
31
+ register(config: DaemonConfig, task: () => Promise<void>): void;
32
+ /**
33
+ * Start a daemon
34
+ */
35
+ start(name: string): Promise<void>;
36
+ /**
37
+ * Stop a daemon
38
+ */
39
+ stop(name: string): Promise<void>;
40
+ /**
41
+ * Restart a daemon
42
+ */
43
+ restart(name: string): Promise<void>;
44
+ /**
45
+ * Start all registered daemons
46
+ */
47
+ startAll(): Promise<void>;
48
+ /**
49
+ * Stop all daemons
50
+ */
51
+ stopAll(): Promise<void>;
52
+ /**
53
+ * Get daemon state
54
+ */
55
+ getState(name: string): DaemonState | undefined;
56
+ /**
57
+ * Get all daemon states
58
+ */
59
+ getAllStates(): DaemonState[];
60
+ /**
61
+ * Check if daemon is running
62
+ */
63
+ isRunning(name: string): boolean;
64
+ /**
65
+ * Update daemon interval
66
+ */
67
+ updateInterval(name: string, interval: number): void;
68
+ /**
69
+ * Enable a daemon
70
+ */
71
+ enable(name: string): void;
72
+ /**
73
+ * Disable a daemon
74
+ */
75
+ disable(name: string): void;
76
+ /**
77
+ * Get daemon count
78
+ */
79
+ get count(): number;
80
+ /**
81
+ * Get running daemon count
82
+ */
83
+ get runningCount(): number;
84
+ /**
85
+ * Execute a daemon task
86
+ */
87
+ private executeDaemonTask;
88
+ }
89
+ /**
90
+ * Metrics Daemon - collects and syncs metrics
91
+ */
92
+ export declare class MetricsDaemon {
93
+ private manager;
94
+ private metricsStore;
95
+ constructor(manager?: DaemonManager);
96
+ /**
97
+ * Start metrics collection
98
+ */
99
+ start(): Promise<void>;
100
+ /**
101
+ * Stop metrics collection
102
+ */
103
+ stop(): Promise<void>;
104
+ /**
105
+ * Sync metrics
106
+ */
107
+ private syncMetrics;
108
+ /**
109
+ * Get current metrics
110
+ */
111
+ getMetrics(): Record<string, unknown>;
112
+ }
113
+ /**
114
+ * Swarm Monitor Daemon - monitors swarm activity
115
+ */
116
+ export declare class SwarmMonitorDaemon {
117
+ private manager;
118
+ private swarmData;
119
+ constructor(manager?: DaemonManager);
120
+ /**
121
+ * Start swarm monitoring
122
+ */
123
+ start(): Promise<void>;
124
+ /**
125
+ * Stop swarm monitoring
126
+ */
127
+ stop(): Promise<void>;
128
+ /**
129
+ * Check swarm status
130
+ */
131
+ private checkSwarm;
132
+ /**
133
+ * Get swarm data
134
+ */
135
+ getSwarmData(): typeof this.swarmData;
136
+ /**
137
+ * Update active agent count
138
+ */
139
+ updateAgentCount(count: number): void;
140
+ /**
141
+ * Set coordination state
142
+ */
143
+ setCoordinationActive(active: boolean): void;
144
+ }
145
+ /**
146
+ * Hooks Learning Daemon - consolidates learned patterns using ReasoningBank
147
+ */
148
+ export declare class HooksLearningDaemon {
149
+ private manager;
150
+ private patternsLearned;
151
+ private routingAccuracy;
152
+ private reasoningBank;
153
+ private lastConsolidation;
154
+ private consolidationStats;
155
+ constructor(manager?: DaemonManager);
156
+ /**
157
+ * Start learning consolidation
158
+ */
159
+ start(): Promise<void>;
160
+ /**
161
+ * Stop learning consolidation
162
+ */
163
+ stop(): Promise<void>;
164
+ /**
165
+ * Consolidate learned patterns using ReasoningBank
166
+ */
167
+ private consolidate;
168
+ /**
169
+ * Get learning stats
170
+ */
171
+ getStats(): {
172
+ patternsLearned: number;
173
+ routingAccuracy: number;
174
+ consolidationStats: {
175
+ totalRuns: number;
176
+ patternsPromoted: number;
177
+ patternsPruned: number;
178
+ duplicatesRemoved: number;
179
+ };
180
+ lastConsolidation: Date | null;
181
+ };
182
+ /**
183
+ * Update pattern count
184
+ */
185
+ updatePatternCount(count: number): void;
186
+ /**
187
+ * Update routing accuracy
188
+ */
189
+ updateRoutingAccuracy(accuracy: number): void;
190
+ /**
191
+ * Get ReasoningBank stats (if available)
192
+ */
193
+ getReasoningBankStats(): any;
194
+ /**
195
+ * Force immediate consolidation
196
+ */
197
+ forceConsolidate(): Promise<void>;
198
+ }
199
+ /**
200
+ * Default daemon manager instance
201
+ */
202
+ export declare const defaultDaemonManager: DaemonManager;
203
+ export { DaemonManager as default, type DaemonInstance, };
204
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemons/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,443 @@
1
+ /**
2
+ * V3 Daemon Manager
3
+ *
4
+ * Manages background daemon processes for:
5
+ * - Metrics collection
6
+ * - Swarm monitoring
7
+ * - Pattern learning consolidation
8
+ * - Statusline updates
9
+ */
10
+ /**
11
+ * Default daemon manager configuration
12
+ */
13
+ const DEFAULT_CONFIG = {
14
+ pidDirectory: '.claude-flow/pids',
15
+ logDirectory: '.claude-flow/logs',
16
+ daemons: [],
17
+ autoRestart: true,
18
+ maxRestartAttempts: 3,
19
+ };
20
+ /**
21
+ * Daemon Manager - controls background daemon processes
22
+ */
23
+ export class DaemonManager {
24
+ config;
25
+ daemons = new Map();
26
+ restartCounts = new Map();
27
+ constructor(config) {
28
+ this.config = { ...DEFAULT_CONFIG, ...config };
29
+ }
30
+ /**
31
+ * Register a daemon
32
+ */
33
+ register(config, task) {
34
+ if (this.daemons.has(config.name)) {
35
+ throw new Error(`Daemon '${config.name}' is already registered`);
36
+ }
37
+ const state = {
38
+ name: config.name,
39
+ status: 'stopped',
40
+ executionCount: 0,
41
+ failureCount: 0,
42
+ };
43
+ this.daemons.set(config.name, { config, state, task });
44
+ }
45
+ /**
46
+ * Start a daemon
47
+ */
48
+ async start(name) {
49
+ const daemon = this.daemons.get(name);
50
+ if (!daemon) {
51
+ throw new Error(`Daemon '${name}' not found`);
52
+ }
53
+ if (daemon.state.status === 'running') {
54
+ return; // Already running
55
+ }
56
+ if (!daemon.config.enabled) {
57
+ throw new Error(`Daemon '${name}' is disabled`);
58
+ }
59
+ daemon.state.status = 'starting';
60
+ daemon.state.startedAt = new Date();
61
+ try {
62
+ // Start interval timer
63
+ daemon.timer = setInterval(async () => {
64
+ await this.executeDaemonTask(name);
65
+ }, daemon.config.interval);
66
+ daemon.state.status = 'running';
67
+ daemon.state.pid = process.pid; // Use current process for in-process daemons
68
+ // Run initial execution
69
+ await this.executeDaemonTask(name);
70
+ }
71
+ catch (error) {
72
+ daemon.state.status = 'error';
73
+ daemon.state.error = error instanceof Error ? error.message : String(error);
74
+ throw error;
75
+ }
76
+ }
77
+ /**
78
+ * Stop a daemon
79
+ */
80
+ async stop(name) {
81
+ const daemon = this.daemons.get(name);
82
+ if (!daemon) {
83
+ throw new Error(`Daemon '${name}' not found`);
84
+ }
85
+ if (daemon.state.status === 'stopped') {
86
+ return; // Already stopped
87
+ }
88
+ daemon.state.status = 'stopping';
89
+ if (daemon.timer) {
90
+ clearInterval(daemon.timer);
91
+ daemon.timer = undefined;
92
+ }
93
+ daemon.state.status = 'stopped';
94
+ daemon.state.pid = undefined;
95
+ }
96
+ /**
97
+ * Restart a daemon
98
+ */
99
+ async restart(name) {
100
+ await this.stop(name);
101
+ await this.start(name);
102
+ }
103
+ /**
104
+ * Start all registered daemons
105
+ */
106
+ async startAll() {
107
+ const promises = [];
108
+ for (const [name, daemon] of this.daemons) {
109
+ if (daemon.config.enabled) {
110
+ promises.push(this.start(name));
111
+ }
112
+ }
113
+ await Promise.all(promises);
114
+ }
115
+ /**
116
+ * Stop all daemons
117
+ */
118
+ async stopAll() {
119
+ const promises = [];
120
+ for (const name of this.daemons.keys()) {
121
+ promises.push(this.stop(name));
122
+ }
123
+ await Promise.all(promises);
124
+ }
125
+ /**
126
+ * Get daemon state
127
+ */
128
+ getState(name) {
129
+ return this.daemons.get(name)?.state;
130
+ }
131
+ /**
132
+ * Get all daemon states
133
+ */
134
+ getAllStates() {
135
+ return Array.from(this.daemons.values()).map((d) => d.state);
136
+ }
137
+ /**
138
+ * Check if daemon is running
139
+ */
140
+ isRunning(name) {
141
+ return this.daemons.get(name)?.state.status === 'running';
142
+ }
143
+ /**
144
+ * Update daemon interval
145
+ */
146
+ updateInterval(name, interval) {
147
+ const daemon = this.daemons.get(name);
148
+ if (!daemon) {
149
+ throw new Error(`Daemon '${name}' not found`);
150
+ }
151
+ daemon.config.interval = interval;
152
+ // Restart if running to apply new interval
153
+ if (daemon.state.status === 'running') {
154
+ this.restart(name).catch(() => { });
155
+ }
156
+ }
157
+ /**
158
+ * Enable a daemon
159
+ */
160
+ enable(name) {
161
+ const daemon = this.daemons.get(name);
162
+ if (daemon) {
163
+ daemon.config.enabled = true;
164
+ }
165
+ }
166
+ /**
167
+ * Disable a daemon
168
+ */
169
+ disable(name) {
170
+ const daemon = this.daemons.get(name);
171
+ if (daemon) {
172
+ daemon.config.enabled = false;
173
+ this.stop(name).catch(() => { });
174
+ }
175
+ }
176
+ /**
177
+ * Get daemon count
178
+ */
179
+ get count() {
180
+ return this.daemons.size;
181
+ }
182
+ /**
183
+ * Get running daemon count
184
+ */
185
+ get runningCount() {
186
+ return Array.from(this.daemons.values()).filter((d) => d.state.status === 'running').length;
187
+ }
188
+ /**
189
+ * Execute a daemon task
190
+ */
191
+ async executeDaemonTask(name) {
192
+ const daemon = this.daemons.get(name);
193
+ if (!daemon || !daemon.task) {
194
+ return;
195
+ }
196
+ try {
197
+ await daemon.task();
198
+ daemon.state.executionCount++;
199
+ daemon.state.lastUpdateAt = new Date();
200
+ daemon.state.error = undefined;
201
+ // Reset restart count on successful execution
202
+ this.restartCounts.set(name, 0);
203
+ }
204
+ catch (error) {
205
+ daemon.state.failureCount++;
206
+ daemon.state.error = error instanceof Error ? error.message : String(error);
207
+ // Handle auto-restart
208
+ if (this.config.autoRestart) {
209
+ const restartCount = (this.restartCounts.get(name) ?? 0) + 1;
210
+ this.restartCounts.set(name, restartCount);
211
+ if (restartCount <= this.config.maxRestartAttempts) {
212
+ // Schedule restart
213
+ setTimeout(() => {
214
+ this.restart(name).catch(() => { });
215
+ }, 1000 * restartCount); // Exponential backoff
216
+ }
217
+ else {
218
+ daemon.state.status = 'error';
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
224
+ /**
225
+ * Metrics Daemon - collects and syncs metrics
226
+ */
227
+ export class MetricsDaemon {
228
+ manager;
229
+ metricsStore = new Map();
230
+ constructor(manager) {
231
+ this.manager = manager ?? new DaemonManager();
232
+ // Register metrics daemon
233
+ this.manager.register({
234
+ name: 'metrics-sync',
235
+ interval: 30000, // 30 seconds
236
+ enabled: true,
237
+ }, () => this.syncMetrics());
238
+ }
239
+ /**
240
+ * Start metrics collection
241
+ */
242
+ async start() {
243
+ await this.manager.start('metrics-sync');
244
+ }
245
+ /**
246
+ * Stop metrics collection
247
+ */
248
+ async stop() {
249
+ await this.manager.stop('metrics-sync');
250
+ }
251
+ /**
252
+ * Sync metrics
253
+ */
254
+ async syncMetrics() {
255
+ // Collect various metrics
256
+ this.metricsStore.set('timestamp', new Date().toISOString());
257
+ this.metricsStore.set('memory', process.memoryUsage());
258
+ // Additional metrics would be collected here
259
+ }
260
+ /**
261
+ * Get current metrics
262
+ */
263
+ getMetrics() {
264
+ return Object.fromEntries(this.metricsStore);
265
+ }
266
+ }
267
+ /**
268
+ * Swarm Monitor Daemon - monitors swarm activity
269
+ */
270
+ export class SwarmMonitorDaemon {
271
+ manager;
272
+ swarmData = {
273
+ activeAgents: 0,
274
+ maxAgents: 15,
275
+ coordinationActive: false,
276
+ lastCheck: null,
277
+ };
278
+ constructor(manager) {
279
+ this.manager = manager ?? new DaemonManager();
280
+ // Register swarm monitor daemon
281
+ this.manager.register({
282
+ name: 'swarm-monitor',
283
+ interval: 3000, // 3 seconds
284
+ enabled: true,
285
+ }, () => this.checkSwarm());
286
+ }
287
+ /**
288
+ * Start swarm monitoring
289
+ */
290
+ async start() {
291
+ await this.manager.start('swarm-monitor');
292
+ }
293
+ /**
294
+ * Stop swarm monitoring
295
+ */
296
+ async stop() {
297
+ await this.manager.stop('swarm-monitor');
298
+ }
299
+ /**
300
+ * Check swarm status
301
+ */
302
+ async checkSwarm() {
303
+ // In a real implementation, this would check running processes
304
+ // and coordination state
305
+ this.swarmData.lastCheck = new Date();
306
+ }
307
+ /**
308
+ * Get swarm data
309
+ */
310
+ getSwarmData() {
311
+ return { ...this.swarmData };
312
+ }
313
+ /**
314
+ * Update active agent count
315
+ */
316
+ updateAgentCount(count) {
317
+ this.swarmData.activeAgents = count;
318
+ }
319
+ /**
320
+ * Set coordination state
321
+ */
322
+ setCoordinationActive(active) {
323
+ this.swarmData.coordinationActive = active;
324
+ }
325
+ }
326
+ /**
327
+ * Hooks Learning Daemon - consolidates learned patterns using ReasoningBank
328
+ */
329
+ export class HooksLearningDaemon {
330
+ manager;
331
+ patternsLearned = 0;
332
+ routingAccuracy = 0;
333
+ reasoningBank = null;
334
+ lastConsolidation = null;
335
+ consolidationStats = {
336
+ totalRuns: 0,
337
+ patternsPromoted: 0,
338
+ patternsPruned: 0,
339
+ duplicatesRemoved: 0,
340
+ };
341
+ constructor(manager) {
342
+ this.manager = manager ?? new DaemonManager();
343
+ // Register hooks learning daemon
344
+ this.manager.register({
345
+ name: 'hooks-learning',
346
+ interval: 60000, // 60 seconds
347
+ enabled: true,
348
+ }, () => this.consolidate());
349
+ }
350
+ /**
351
+ * Start learning consolidation
352
+ */
353
+ async start() {
354
+ // Lazy load ReasoningBank to avoid circular dependencies
355
+ try {
356
+ const { reasoningBank } = await import('../reasoningbank/index.js');
357
+ this.reasoningBank = reasoningBank;
358
+ await this.reasoningBank.initialize();
359
+ }
360
+ catch (error) {
361
+ console.warn('[HooksLearningDaemon] ReasoningBank not available:', error);
362
+ }
363
+ await this.manager.start('hooks-learning');
364
+ }
365
+ /**
366
+ * Stop learning consolidation
367
+ */
368
+ async stop() {
369
+ await this.manager.stop('hooks-learning');
370
+ }
371
+ /**
372
+ * Consolidate learned patterns using ReasoningBank
373
+ */
374
+ async consolidate() {
375
+ if (!this.reasoningBank) {
376
+ return;
377
+ }
378
+ try {
379
+ const result = await this.reasoningBank.consolidate();
380
+ // Update stats
381
+ this.consolidationStats.totalRuns++;
382
+ this.consolidationStats.patternsPromoted += result.patternsPromoted;
383
+ this.consolidationStats.patternsPruned += result.patternsPruned;
384
+ this.consolidationStats.duplicatesRemoved += result.duplicatesRemoved;
385
+ this.lastConsolidation = new Date();
386
+ // Update pattern count from ReasoningBank stats
387
+ const stats = this.reasoningBank.getStats();
388
+ this.patternsLearned = stats.shortTermCount + stats.longTermCount;
389
+ // Emit consolidation event
390
+ if (result.patternsPromoted > 0 || result.patternsPruned > 0) {
391
+ console.log(`[HooksLearningDaemon] Consolidated: ${result.patternsPromoted} promoted, ` +
392
+ `${result.patternsPruned} pruned, ${result.duplicatesRemoved} deduped`);
393
+ }
394
+ }
395
+ catch (error) {
396
+ console.error('[HooksLearningDaemon] Consolidation failed:', error);
397
+ }
398
+ }
399
+ /**
400
+ * Get learning stats
401
+ */
402
+ getStats() {
403
+ return {
404
+ patternsLearned: this.patternsLearned,
405
+ routingAccuracy: this.routingAccuracy,
406
+ consolidationStats: { ...this.consolidationStats },
407
+ lastConsolidation: this.lastConsolidation,
408
+ };
409
+ }
410
+ /**
411
+ * Update pattern count
412
+ */
413
+ updatePatternCount(count) {
414
+ this.patternsLearned = count;
415
+ }
416
+ /**
417
+ * Update routing accuracy
418
+ */
419
+ updateRoutingAccuracy(accuracy) {
420
+ this.routingAccuracy = accuracy;
421
+ }
422
+ /**
423
+ * Get ReasoningBank stats (if available)
424
+ */
425
+ getReasoningBankStats() {
426
+ if (!this.reasoningBank) {
427
+ return null;
428
+ }
429
+ return this.reasoningBank.getStats();
430
+ }
431
+ /**
432
+ * Force immediate consolidation
433
+ */
434
+ async forceConsolidate() {
435
+ await this.consolidate();
436
+ }
437
+ }
438
+ /**
439
+ * Default daemon manager instance
440
+ */
441
+ export const defaultDaemonManager = new DaemonManager();
442
+ export { DaemonManager as default, };
443
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemons/index.ts"],"names":[],"mappings":"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"}