@winmatrix/daemon 0.2.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.
- package/README.md +59 -0
- package/bin/winmatrix-daemon.js +6 -0
- package/dist/core/AgentProcessManager.d.ts +99 -0
- package/dist/core/AgentProcessManager.d.ts.map +1 -0
- package/dist/core/AgentProcessManager.js +292 -0
- package/dist/core/AgentProcessManager.js.map +1 -0
- package/dist/core/ConfigLoader.d.ts +92 -0
- package/dist/core/ConfigLoader.d.ts.map +1 -0
- package/dist/core/ConfigLoader.js +240 -0
- package/dist/core/ConfigLoader.js.map +1 -0
- package/dist/core/DaemonFileLogger.d.ts +34 -0
- package/dist/core/DaemonFileLogger.d.ts.map +1 -0
- package/dist/core/DaemonFileLogger.js +157 -0
- package/dist/core/DaemonFileLogger.js.map +1 -0
- package/dist/core/DaemonLifecycle.d.ts +22 -0
- package/dist/core/DaemonLifecycle.d.ts.map +1 -0
- package/dist/core/DaemonLifecycle.js +155 -0
- package/dist/core/DaemonLifecycle.js.map +1 -0
- package/dist/core/DiagnosticsServer.d.ts +28 -0
- package/dist/core/DiagnosticsServer.d.ts.map +1 -0
- package/dist/core/DiagnosticsServer.js +155 -0
- package/dist/core/DiagnosticsServer.js.map +1 -0
- package/dist/core/InstallationId.d.ts +14 -0
- package/dist/core/InstallationId.d.ts.map +1 -0
- package/dist/core/InstallationId.js +50 -0
- package/dist/core/InstallationId.js.map +1 -0
- package/dist/core/RuntimeAvailabilityReporter.d.ts +27 -0
- package/dist/core/RuntimeAvailabilityReporter.d.ts.map +1 -0
- package/dist/core/RuntimeAvailabilityReporter.js +79 -0
- package/dist/core/RuntimeAvailabilityReporter.js.map +1 -0
- package/dist/core/WorkspaceScanner.d.ts +45 -0
- package/dist/core/WorkspaceScanner.d.ts.map +1 -0
- package/dist/core/WorkspaceScanner.js +166 -0
- package/dist/core/WorkspaceScanner.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +238 -0
- package/dist/index.js.map +1 -0
- package/dist/wrapper/AgentWrapper.d.ts +23 -0
- package/dist/wrapper/AgentWrapper.d.ts.map +1 -0
- package/dist/wrapper/AgentWrapper.js +873 -0
- package/dist/wrapper/AgentWrapper.js.map +1 -0
- package/dist/wrapper/ClaudeStreamParser.d.ts +63 -0
- package/dist/wrapper/ClaudeStreamParser.d.ts.map +1 -0
- package/dist/wrapper/ClaudeStreamParser.js +104 -0
- package/dist/wrapper/ClaudeStreamParser.js.map +1 -0
- package/dist/wrapper/supportedAgentTypes.d.ts +7 -0
- package/dist/wrapper/supportedAgentTypes.d.ts.map +1 -0
- package/dist/wrapper/supportedAgentTypes.js +6 -0
- package/dist/wrapper/supportedAgentTypes.js.map +1 -0
- package/package.json +39 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* WinMatrix Daemon v2 — CLI Entry Point
|
|
4
|
+
*
|
|
5
|
+
* 使用 @winmatrix/agent-sdk 的 DaemonClient + AgentAdapter 架构。
|
|
6
|
+
* 方案 B:adapter 在 daemon 进程内直接运行,不再 spawn 子进程。
|
|
7
|
+
*
|
|
8
|
+
* 1. 解析 CLI 参数
|
|
9
|
+
* 2. 加载或生成持久化 installation UUID
|
|
10
|
+
* 3. 检测本地 AI runtimes
|
|
11
|
+
* 4. 注册 adapters 到全局 registry
|
|
12
|
+
* 5. 连接 WinMatrix Server (DaemonClient)
|
|
13
|
+
* 6. 监听 agent.create / agent.stop 信令
|
|
14
|
+
*/
|
|
15
|
+
import { loadDaemonStartupOptions, persistDaemonCredentialsToDisk, sanitizeConfig, describeDaemonCredentialFile, } from './core/ConfigLoader.js';
|
|
16
|
+
import { getOrCreateInstallationId } from './core/InstallationId.js';
|
|
17
|
+
import { AgentProcessManager, } from './core/AgentProcessManager.js';
|
|
18
|
+
import { DaemonFileLogger, mirrorConsoleToFile } from './core/DaemonFileLogger.js';
|
|
19
|
+
import { startDiagnosticsServer } from './core/DiagnosticsServer.js';
|
|
20
|
+
import { writeDaemonPidFile, clearDaemonPidFile, runSetup, runRestart, printCliHelp, } from './core/DaemonLifecycle.js';
|
|
21
|
+
import { DaemonClient, getGlobalRegistry, ClaudeAdapter, HermesAdapter, OpenClawAdapter, detectRuntimes, } from '@winmatrix/agent-sdk';
|
|
22
|
+
/* ── Constants ── */
|
|
23
|
+
const DAEMON_VERSION = '0.2.0';
|
|
24
|
+
/* ── Helpers ── */
|
|
25
|
+
function logConfig(config) {
|
|
26
|
+
const safe = sanitizeConfig(config);
|
|
27
|
+
const src = config.tokenSource ? ` (${config.tokenSource})` : '';
|
|
28
|
+
console.log(`[daemon] Server URL: ${safe.serverUrl}`);
|
|
29
|
+
console.log(`[daemon] Computer token: ${safe.token}${src}`);
|
|
30
|
+
}
|
|
31
|
+
function logRuntimes(runtimes) {
|
|
32
|
+
const available = runtimes.filter((r) => r.available);
|
|
33
|
+
const unavailable = runtimes.filter((r) => !r.available);
|
|
34
|
+
console.log(`[daemon] Detected ${available.length} available runtime(s):`);
|
|
35
|
+
for (const r of available) {
|
|
36
|
+
console.log(`[daemon] - ${r.name}${r.version ? ` (${r.version})` : ''}`);
|
|
37
|
+
}
|
|
38
|
+
if (unavailable.length > 0) {
|
|
39
|
+
console.log(`[daemon] ${unavailable.length} runtime(s) not found: ${unavailable.map((r) => r.name).join(', ')}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function registerAdapters() {
|
|
43
|
+
const registry = getGlobalRegistry();
|
|
44
|
+
registry.register('claude-code', ClaudeAdapter);
|
|
45
|
+
registry.register('hermes', HermesAdapter);
|
|
46
|
+
registry.register('openclaw', OpenClawAdapter);
|
|
47
|
+
console.log(`[daemon] Registered ${registry.listTypes().length} adapter(s): ${registry.listTypes().join(', ')}`);
|
|
48
|
+
}
|
|
49
|
+
/* ── Main ── */
|
|
50
|
+
function runDaemon(configArgv) {
|
|
51
|
+
console.log(`[daemon] WinMatrix Daemon v${DAEMON_VERSION} starting...`);
|
|
52
|
+
// Step 1: Load configuration
|
|
53
|
+
const { config, persistCredentials } = loadDaemonStartupOptions(configArgv);
|
|
54
|
+
const fileLogger = new DaemonFileLogger();
|
|
55
|
+
mirrorConsoleToFile(fileLogger);
|
|
56
|
+
const retentionTimer = fileLogger.startRetentionTimer();
|
|
57
|
+
if (persistCredentials && config.token.length > 0) {
|
|
58
|
+
persistDaemonCredentialsToDisk(config);
|
|
59
|
+
console.log('[daemon] Saved server URL and computerToken to ~/.winmatrix/daemon.json');
|
|
60
|
+
}
|
|
61
|
+
logConfig(config);
|
|
62
|
+
writeDaemonPidFile();
|
|
63
|
+
if (config.token.length === 0) {
|
|
64
|
+
const st = describeDaemonCredentialFile();
|
|
65
|
+
const detail = !st.fileExists
|
|
66
|
+
? `未找到配置文件 ${st.pathLabel}。请执行一次:winmatrix-daemon setup --token wmc_...(可选 --server ws://.../connect)。`
|
|
67
|
+
: `${st.pathLabel} 中未配置有效的 computerToken,或 JSON 无法解析。可编辑该文件添加 "computerToken",或:winmatrix-daemon setup --token wmc_...;也可在本终端 export WINMATRIX_TOKEN 后再执行 winmatrix-daemon restart。`;
|
|
68
|
+
console.warn(`[daemon] WARNING: No computer token. ${detail}`);
|
|
69
|
+
}
|
|
70
|
+
// Step 2: Get or create installation ID
|
|
71
|
+
const installationId = getOrCreateInstallationId();
|
|
72
|
+
console.log(`[daemon] Installation ID: ${installationId}`);
|
|
73
|
+
// Step 3: Detect runtimes
|
|
74
|
+
const runtimes = detectRuntimes();
|
|
75
|
+
logRuntimes(runtimes);
|
|
76
|
+
// Step 4: Register adapters
|
|
77
|
+
registerAdapters();
|
|
78
|
+
// Step 5: Create Agent Manager
|
|
79
|
+
const agentManager = new AgentProcessManager();
|
|
80
|
+
// Step 6: Connect to server as Computer
|
|
81
|
+
let daemonClient = null;
|
|
82
|
+
let isShuttingDown = false;
|
|
83
|
+
const diagDisabled = process.env.WINMATRIX_DAEMON_DIAG_DISABLE === '1' ||
|
|
84
|
+
process.env.WINMATRIX_DAEMON_DIAG_DISABLE === 'true';
|
|
85
|
+
const diagnosticsServer = !diagDisabled
|
|
86
|
+
? startDiagnosticsServer({
|
|
87
|
+
fileLogger,
|
|
88
|
+
agentManager,
|
|
89
|
+
getContext: () => ({
|
|
90
|
+
version: DAEMON_VERSION,
|
|
91
|
+
installationId,
|
|
92
|
+
serverUrl: config.serverUrl,
|
|
93
|
+
computerState: daemonClient?.getState() ?? null,
|
|
94
|
+
computerId: daemonClient?.getComputerId() ?? null,
|
|
95
|
+
uptimeSec: Math.floor(process.uptime()),
|
|
96
|
+
}),
|
|
97
|
+
onRescanProfiles: async () => {
|
|
98
|
+
try {
|
|
99
|
+
await agentManager.rescanAndReportProfiles();
|
|
100
|
+
await daemonClient?.sendHeartbeatNow();
|
|
101
|
+
return { ok: true };
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
})
|
|
108
|
+
: null;
|
|
109
|
+
function connectDaemon() {
|
|
110
|
+
if (isShuttingDown)
|
|
111
|
+
return;
|
|
112
|
+
console.log(`[daemon] Connecting to ${config.serverUrl}...`);
|
|
113
|
+
daemonClient = new DaemonClient({
|
|
114
|
+
url: config.serverUrl,
|
|
115
|
+
token: config.token,
|
|
116
|
+
installationId,
|
|
117
|
+
hostOs: `${process.platform} ${process.version}`,
|
|
118
|
+
hostArch: process.arch,
|
|
119
|
+
hostname: process.env.HOSTNAME ?? process.env.HOST ?? process.env.COMPUTERNAME ?? 'unknown',
|
|
120
|
+
daemonVersion: DAEMON_VERSION,
|
|
121
|
+
autoReconnect: true,
|
|
122
|
+
runtimes: runtimes.map((r) => ({
|
|
123
|
+
name: r.name,
|
|
124
|
+
version: r.version,
|
|
125
|
+
available: r.available,
|
|
126
|
+
})),
|
|
127
|
+
});
|
|
128
|
+
// Wire profile collection: DaemonClient reads from AgentProcessManager
|
|
129
|
+
daemonClient.setProfileCollector(() => agentManager.collectAgentProfiles());
|
|
130
|
+
agentManager.setOnProfilesChanged(() => {
|
|
131
|
+
void daemonClient?.sendHeartbeatNow();
|
|
132
|
+
});
|
|
133
|
+
// Handle agent.create
|
|
134
|
+
daemonClient.onDaemonEvent('agent.create', async (payload) => {
|
|
135
|
+
const raw = payload;
|
|
136
|
+
const agentId = typeof raw.agentId === 'string' ? raw.agentId : '';
|
|
137
|
+
const agentType = typeof raw.agentType === 'string' ? raw.agentType : '';
|
|
138
|
+
if (!agentId || !agentType) {
|
|
139
|
+
console.error('[daemon] Invalid agent.create payload');
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const agentApiKey = (typeof raw.apiKey === 'string' ? raw.apiKey : '').trim();
|
|
143
|
+
if (!agentApiKey) {
|
|
144
|
+
console.error('[daemon] Invalid agent.create: missing apiKey for agent');
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const agentPayload = {
|
|
148
|
+
agentId,
|
|
149
|
+
agentType,
|
|
150
|
+
name: typeof raw.name === 'string' ? raw.name : undefined,
|
|
151
|
+
serverUrl: config.serverUrl,
|
|
152
|
+
apiKey: agentApiKey,
|
|
153
|
+
workDir: typeof raw.workDir === 'string' ? raw.workDir : undefined,
|
|
154
|
+
adapterConfig: {
|
|
155
|
+
mcpBridgeUrl: typeof raw.mcpBridgeUrl === 'string' ? raw.mcpBridgeUrl : undefined,
|
|
156
|
+
mcpApiKey: typeof raw.mcpApiKey === 'string' ? raw.mcpApiKey : undefined,
|
|
157
|
+
token: typeof raw.endpointToken === 'string' ? raw.endpointToken : undefined,
|
|
158
|
+
agentId: agentId,
|
|
159
|
+
hermesPath: typeof raw.hermesEndpoint === 'string' ? raw.hermesEndpoint : undefined,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
const result = await agentManager.createAgent(agentPayload);
|
|
163
|
+
if (!result.ok) {
|
|
164
|
+
console.error(`[daemon] Failed to create agent: ${result.error}`);
|
|
165
|
+
// Notify server of failure via the daemon connection
|
|
166
|
+
daemonClient?.sendAgentError(agentId, result.error);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
// Handle agent.stop
|
|
170
|
+
daemonClient.onDaemonEvent('agent.stop', async (payload) => {
|
|
171
|
+
const raw = payload;
|
|
172
|
+
const stopAgentId = typeof raw.agentId === 'string' ? raw.agentId : '';
|
|
173
|
+
if (!stopAgentId) {
|
|
174
|
+
console.error('[daemon] Invalid agent.stop payload');
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const result = await agentManager.stopAgent({ agentId: stopAgentId });
|
|
178
|
+
if (!result.ok) {
|
|
179
|
+
console.error(`[daemon] Failed to stop agent: ${result.error}`);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
// Connect
|
|
183
|
+
daemonClient.connect().catch((err) => {
|
|
184
|
+
console.error(`[daemon] Connection failed: ${err.message}`);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
async function shutdown() {
|
|
188
|
+
if (isShuttingDown)
|
|
189
|
+
return;
|
|
190
|
+
isShuttingDown = true;
|
|
191
|
+
console.log('[daemon] Shutting down...');
|
|
192
|
+
clearInterval(retentionTimer);
|
|
193
|
+
diagnosticsServer?.close();
|
|
194
|
+
clearDaemonPidFile();
|
|
195
|
+
// Await agent shutdown with timeout
|
|
196
|
+
try {
|
|
197
|
+
await Promise.race([
|
|
198
|
+
agentManager.stopAllAgents(),
|
|
199
|
+
new Promise((r) => setTimeout(r, 5_000)),
|
|
200
|
+
]);
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
console.error(`[daemon] Error stopping agents: ${err instanceof Error ? err.message : String(err)}`);
|
|
204
|
+
}
|
|
205
|
+
if (daemonClient) {
|
|
206
|
+
daemonClient.disconnect();
|
|
207
|
+
}
|
|
208
|
+
console.log('[daemon] Goodbye.');
|
|
209
|
+
process.exit(0);
|
|
210
|
+
}
|
|
211
|
+
// Register signal handlers
|
|
212
|
+
process.on('SIGINT', shutdown);
|
|
213
|
+
process.on('SIGTERM', shutdown);
|
|
214
|
+
// Start connection
|
|
215
|
+
connectDaemon();
|
|
216
|
+
}
|
|
217
|
+
async function mainEntry() {
|
|
218
|
+
const argv = process.argv.slice(2);
|
|
219
|
+
const cmd = argv[0];
|
|
220
|
+
if (cmd === 'setup') {
|
|
221
|
+
runSetup(argv.slice(1));
|
|
222
|
+
process.exit(0);
|
|
223
|
+
}
|
|
224
|
+
if (cmd === 'restart') {
|
|
225
|
+
await runRestart(argv.slice(1));
|
|
226
|
+
process.exit(process.exitCode ?? 0);
|
|
227
|
+
}
|
|
228
|
+
if (cmd === 'help' || cmd === '--help' || cmd === '-h') {
|
|
229
|
+
printCliHelp(DAEMON_VERSION);
|
|
230
|
+
process.exit(0);
|
|
231
|
+
}
|
|
232
|
+
runDaemon(argv);
|
|
233
|
+
}
|
|
234
|
+
mainEntry().catch((err) => {
|
|
235
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
236
|
+
process.exit(1);
|
|
237
|
+
});
|
|
238
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated 方案 B 下不再使用(adapter 在 daemon 进程内直接运行,不再 spawn 子进程)。
|
|
3
|
+
* 保留供未来 multiprocess 模式参考,所有维护性修改应在此注明原因。
|
|
4
|
+
*
|
|
5
|
+
* Agent Wrapper - Daemon 子进程入口
|
|
6
|
+
*
|
|
7
|
+
* 由 Daemon 通过 agent.create 信令 spawn 启动。
|
|
8
|
+
* 通过 stdin/stdout JSON 帧与 Daemon 通信,Daemon 负责通过 WS 多路复用转发给 Server。
|
|
9
|
+
*
|
|
10
|
+
* 协议(stdin/stdout 均为 JSON Lines):
|
|
11
|
+
* stdin: {"type":"fwd","data":<Server 发来的帧>}
|
|
12
|
+
* stdout: {"type":"fwd","agentId":"...","data":<发往 Server 的帧>}
|
|
13
|
+
* stdout: {"type":"event","event":"agent.ready","payload":{...}}
|
|
14
|
+
* stdout: {"type":"event","event":"agent.stopped","payload":{...}}
|
|
15
|
+
* stdout: {"type":"event","event":"agent.error","payload":{...}}
|
|
16
|
+
*
|
|
17
|
+
* 任务模型:按 agentType 分发到不同执行模式:
|
|
18
|
+
* claude-code → spawn claude --print --output-format stream-json ...
|
|
19
|
+
* hermes → fetch() POST 到 HTTP endpoint
|
|
20
|
+
* default → spawn(runtime, ['--print', '--output-format', 'json', input])
|
|
21
|
+
*/
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=AgentWrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentWrapper.d.ts","sourceRoot":"","sources":["../../src/wrapper/AgentWrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}
|