@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.
- package/README.md +440 -0
- package/bin/hooks-daemon.js +199 -0
- package/bin/statusline.js +77 -0
- package/dist/bridge/official-hooks-bridge.d.ts +99 -0
- package/dist/bridge/official-hooks-bridge.d.ts.map +1 -0
- package/dist/bridge/official-hooks-bridge.js +280 -0
- package/dist/bridge/official-hooks-bridge.js.map +1 -0
- package/dist/cli/guidance-cli.d.ts +17 -0
- package/dist/cli/guidance-cli.d.ts.map +1 -0
- package/dist/cli/guidance-cli.js +486 -0
- package/dist/cli/guidance-cli.js.map +1 -0
- package/dist/daemons/index.d.ts +204 -0
- package/dist/daemons/index.d.ts.map +1 -0
- package/dist/daemons/index.js +443 -0
- package/dist/daemons/index.js.map +1 -0
- package/dist/executor/index.d.ts +80 -0
- package/dist/executor/index.d.ts.map +1 -0
- package/dist/executor/index.js +273 -0
- package/dist/executor/index.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/index.d.ts +11 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +11 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm-hooks.d.ts +93 -0
- package/dist/llm/llm-hooks.d.ts.map +1 -0
- package/dist/llm/llm-hooks.js +382 -0
- package/dist/llm/llm-hooks.js.map +1 -0
- package/dist/mcp/index.d.ts +61 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +501 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/reasoningbank/guidance-provider.d.ts +78 -0
- package/dist/reasoningbank/guidance-provider.d.ts.map +1 -0
- package/dist/reasoningbank/guidance-provider.js +350 -0
- package/dist/reasoningbank/guidance-provider.js.map +1 -0
- package/dist/reasoningbank/index.d.ts +212 -0
- package/dist/reasoningbank/index.d.ts.map +1 -0
- package/dist/reasoningbank/index.js +785 -0
- package/dist/reasoningbank/index.js.map +1 -0
- package/dist/registry/index.d.ts +85 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +212 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/statusline/index.d.ts +128 -0
- package/dist/statusline/index.d.ts.map +1 -0
- package/dist/statusline/index.js +493 -0
- package/dist/statusline/index.js.map +1 -0
- package/dist/swarm/index.d.ts +271 -0
- package/dist/swarm/index.d.ts.map +1 -0
- package/dist/swarm/index.js +638 -0
- package/dist/swarm/index.js.map +1 -0
- package/dist/types.d.ts +525 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +56 -0
- package/dist/types.js.map +1 -0
- package/dist/workers/index.d.ts +232 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +1521 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/mcp-tools.d.ts +37 -0
- package/dist/workers/mcp-tools.d.ts.map +1 -0
- package/dist/workers/mcp-tools.js +414 -0
- package/dist/workers/mcp-tools.js.map +1 -0
- package/dist/workers/session-hook.d.ts +42 -0
- package/dist/workers/session-hook.d.ts.map +1 -0
- package/dist/workers/session-hook.js +172 -0
- package/dist/workers/session-hook.js.map +1 -0
- 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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"}
|