@winmatrix/daemon 0.2.7 → 1.0.4

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 (53) hide show
  1. package/package.json +3 -3
  2. package/dist/core/AgentProcessManager.d.ts +0 -92
  3. package/dist/core/AgentProcessManager.d.ts.map +0 -1
  4. package/dist/core/AgentProcessManager.js +0 -323
  5. package/dist/core/AgentProcessManager.js.map +0 -1
  6. package/dist/core/ConfigLoader.d.ts +0 -94
  7. package/dist/core/ConfigLoader.d.ts.map +0 -1
  8. package/dist/core/ConfigLoader.js +0 -245
  9. package/dist/core/ConfigLoader.js.map +0 -1
  10. package/dist/core/DaemonFileLogger.d.ts +0 -34
  11. package/dist/core/DaemonFileLogger.d.ts.map +0 -1
  12. package/dist/core/DaemonFileLogger.js +0 -192
  13. package/dist/core/DaemonFileLogger.js.map +0 -1
  14. package/dist/core/DaemonLifecycle.d.ts +0 -22
  15. package/dist/core/DaemonLifecycle.d.ts.map +0 -1
  16. package/dist/core/DaemonLifecycle.js +0 -156
  17. package/dist/core/DaemonLifecycle.js.map +0 -1
  18. package/dist/core/DiagnosticsServer.d.ts +0 -28
  19. package/dist/core/DiagnosticsServer.d.ts.map +0 -1
  20. package/dist/core/DiagnosticsServer.js +0 -155
  21. package/dist/core/DiagnosticsServer.js.map +0 -1
  22. package/dist/core/InstallationId.d.ts +0 -14
  23. package/dist/core/InstallationId.d.ts.map +0 -1
  24. package/dist/core/InstallationId.js +0 -50
  25. package/dist/core/InstallationId.js.map +0 -1
  26. package/dist/core/RuntimeAvailabilityReporter.d.ts +0 -27
  27. package/dist/core/RuntimeAvailabilityReporter.d.ts.map +0 -1
  28. package/dist/core/RuntimeAvailabilityReporter.js +0 -79
  29. package/dist/core/RuntimeAvailabilityReporter.js.map +0 -1
  30. package/dist/core/WorkspaceScanner.d.ts +0 -45
  31. package/dist/core/WorkspaceScanner.d.ts.map +0 -1
  32. package/dist/core/WorkspaceScanner.js +0 -166
  33. package/dist/core/WorkspaceScanner.js.map +0 -1
  34. package/dist/index.d.ts +0 -16
  35. package/dist/index.d.ts.map +0 -1
  36. package/dist/index.js +0 -238
  37. package/dist/index.js.map +0 -1
  38. package/dist/wrapper/AgentProcessManager.d.ts +0 -80
  39. package/dist/wrapper/AgentProcessManager.d.ts.map +0 -1
  40. package/dist/wrapper/AgentProcessManager.js +0 -474
  41. package/dist/wrapper/AgentProcessManager.js.map +0 -1
  42. package/dist/wrapper/AgentWrapper.d.ts +0 -7
  43. package/dist/wrapper/AgentWrapper.d.ts.map +0 -1
  44. package/dist/wrapper/AgentWrapper.js +0 -229
  45. package/dist/wrapper/AgentWrapper.js.map +0 -1
  46. package/dist/wrapper/claudeCommand.d.ts +0 -2
  47. package/dist/wrapper/claudeCommand.d.ts.map +0 -1
  48. package/dist/wrapper/claudeCommand.js +0 -2
  49. package/dist/wrapper/claudeCommand.js.map +0 -1
  50. package/dist/wrapper/supportedAgentTypes.d.ts +0 -7
  51. package/dist/wrapper/supportedAgentTypes.d.ts.map +0 -1
  52. package/dist/wrapper/supportedAgentTypes.js +0 -6
  53. package/dist/wrapper/supportedAgentTypes.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winmatrix/daemon",
3
- "version": "0.2.7",
3
+ "version": "1.0.4",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -28,8 +28,8 @@
28
28
  "node": ">=18"
29
29
  },
30
30
  "dependencies": {
31
- "@winmatrix/agent-sdk": "^0.1.6",
32
- "@winmatrix/protocol": "^1.0.2",
31
+ "@winmatrix/agent-sdk": "^1.0.4",
32
+ "@winmatrix/protocol": "^1.0.4",
33
33
  "ws": "^8.16.0"
34
34
  },
35
35
  "devDependencies": {
@@ -1,92 +0,0 @@
1
- /**
2
- * WinMatrix Daemon - Agent Process Manager (v2)
3
- *
4
- * 管理外部 Agent 适配器实例生命周期�? * 收到 server �?agent.create / agent.stop 信令后,
5
- * 实例化对应的 AgentAdapter 并创�?WinMatrixAgentClient 连接�? *
6
- * 方案 B:adapter �?daemon 进程内直接运行,不再 spawn 子进程�? */
7
- import { WinMatrixAgentClient, AdapterRegistry, type AgentAdapter, type AgentProfile } from '@winmatrix/agent-sdk';
8
- export interface AgentCreatePayload {
9
- agentId: string;
10
- /** agentType: 'claude-code' | 'hermes' | 'openclaw' */
11
- agentType: string;
12
- /** agent name */
13
- name?: string;
14
- /** Server WebSocket URL (agent 独立连接) */
15
- serverUrl: string;
16
- /** Agent API key */
17
- apiKey: string;
18
- /** Working directory */
19
- workDir?: string;
20
- /** Adapter-specific config */
21
- adapterConfig?: Record<string, unknown>;
22
- }
23
- export interface AgentStopPayload {
24
- agentId: string;
25
- }
26
- interface ManagedAgent {
27
- agentId: string;
28
- adapter: AgentAdapter;
29
- client: WinMatrixAgentClient;
30
- abortController: AbortController | null;
31
- busy: boolean;
32
- workDir?: string;
33
- }
34
- type CreateAgentResult = {
35
- ok: true;
36
- agent: ManagedAgent;
37
- } | {
38
- ok: false;
39
- error: string;
40
- };
41
- export interface TaskAuditEntry {
42
- /** 本机本地时间(与 Daemon 日志行一致),非 UTC */
43
- ts: string;
44
- agentId: string;
45
- taskId: string;
46
- event: 'task_start' | 'task_complete' | 'task_error' | 'task_fail';
47
- detail?: string;
48
- }
49
- export declare class AgentProcessManager {
50
- private readonly agents;
51
- private readonly pendingCreations;
52
- private readonly registry;
53
- private readonly taskAudit;
54
- private static readonly TASK_AUDIT_MAX;
55
- private onProfilesChanged;
56
- constructor(registry?: AdapterRegistry);
57
- /** Set callback invoked when agent profiles change (create/destroy/rescan) */
58
- setOnProfilesChanged(fn: () => void): void;
59
- private recordTaskAudit;
60
- /**
61
- * 遍历所�?managed agents,收集其 tools/skills/toolCategories 统一上报�? * 返回深拷贝的 profiles,确保修改原 meta 不影响已收集的数据�? */
62
- collectAgentProfiles(): Promise<AgentProfile[]>;
63
- /**
64
- * 重新扫描所�?agent �?skill 目录并触发立即心跳上报�? * 用于诊断页面的「刷新技能」按钮手动触发�? */
65
- rescanAndReportProfiles(): Promise<void>;
66
- /**
67
- * 创建 Agent 连接并启�?adapter�? *
68
- * 每个 agent 拥有独立�?WinMatrixAgentClient + WebSocket 连接�? */
69
- createAgent(payload: AgentCreatePayload): Promise<CreateAgentResult>;
70
- private createAgentInternal;
71
- /**
72
- * 停止 Agent �?取消正在执行的任务,断开连接�? */
73
- stopAgent(payload: AgentStopPayload): Promise<{
74
- ok: true;
75
- } | {
76
- ok: false;
77
- error: string;
78
- }>;
79
- /** 停止所�?Agent(shutdown 时调用) */
80
- stopAllAgents(): Promise<void>;
81
- /** 列出当前运行�?Agent */
82
- listAgents(): Array<{
83
- agentId: string;
84
- state: string;
85
- }>;
86
- /** 最近一段时间接�?完成的任务(内存环,供本机诊断页�?*/
87
- getRecentTaskEvents(): TaskAuditEntry[];
88
- /** 检�?Agent 是否在运�?*/
89
- isRunning(agentId: string): boolean;
90
- }
91
- export {};
92
- //# sourceMappingURL=AgentProcessManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentProcessManager.d.ts","sourceRoot":"","sources":["../../src/core/AgentProcessManager.ts"],"names":[],"mappings":"AAAA;;;;;kDAKkD;AAElD,OAAO,EACL,oBAAoB,EACpB,eAAe,EAEf,KAAK,YAAY,EAEjB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,iBAAiB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1F,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,GAAG,eAAe,GAAG,YAAY,GAAG,WAAW,CAAC;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiD;IAClF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAO;IAC7C,OAAO,CAAC,iBAAiB,CAA6B;gBAE1C,QAAQ,CAAC,EAAE,eAAe;IAItC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAI1C,OAAO,CAAC,eAAe;IAOvB;iHAC6G;IACvG,oBAAoB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAmBrD;wEACoE;IAC9D,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9C;;gEAE4D;IACtD,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAsB5D,mBAAmB;IA0MjC;uCACmC;IAC7B,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA2BhG,+BAA+B;IACzB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAepC,oBAAoB;IACpB,UAAU,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAOvD,iCAAiC;IACjC,mBAAmB,IAAI,cAAc,EAAE;IAIvC,qBAAqB;IACrB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGpC"}
@@ -1,323 +0,0 @@
1
- /**
2
- * WinMatrix Daemon - Agent Process Manager (v2)
3
- *
4
- * 管理外部 Agent 适配器实例生命周期�? * 收到 server �?agent.create / agent.stop 信令后,
5
- * 实例化对应的 AgentAdapter 并创�?WinMatrixAgentClient 连接�? *
6
- * 方案 B:adapter �?daemon 进程内直接运行,不再 spawn 子进程�? */
7
- import { WinMatrixAgentClient, getGlobalRegistry, } from '@winmatrix/agent-sdk';
8
- import { formatDaemonLocalTimestamp } from './DaemonFileLogger.js';
9
- /* ── Manager Class ── */
10
- export class AgentProcessManager {
11
- agents = new Map();
12
- pendingCreations = new Map();
13
- registry;
14
- taskAudit = [];
15
- static TASK_AUDIT_MAX = 120;
16
- onProfilesChanged = null;
17
- constructor(registry) {
18
- this.registry = registry ?? getGlobalRegistry();
19
- }
20
- /** Set callback invoked when agent profiles change (create/destroy/rescan) */
21
- setOnProfilesChanged(fn) {
22
- this.onProfilesChanged = fn;
23
- }
24
- recordTaskAudit(entry) {
25
- this.taskAudit.push(entry);
26
- if (this.taskAudit.length > AgentProcessManager.TASK_AUDIT_MAX) {
27
- this.taskAudit.splice(0, this.taskAudit.length - AgentProcessManager.TASK_AUDIT_MAX);
28
- }
29
- }
30
- /**
31
- * 遍历所�?managed agents,收集其 tools/skills/toolCategories 统一上报�? * 返回深拷贝的 profiles,确保修改原 meta 不影响已收集的数据�? */
32
- async collectAgentProfiles() {
33
- const profiles = [];
34
- for (const [agentId, agent] of this.agents) {
35
- profiles.push({
36
- agentId,
37
- agentType: agent.adapter.meta.agentType,
38
- // 深拷�?tools 数组
39
- tools: [...agent.adapter.meta.tools],
40
- // 深拷�?skills 数组及其内部对象
41
- skills: agent.adapter.meta.skills.map(s => ({ ...s })),
42
- // 深拷�?toolCategories 及其内部数组
43
- toolCategories: Object.fromEntries(Object.entries(agent.adapter.meta.toolCategories).map(([k, v]) => [k, [...v]])),
44
- });
45
- }
46
- return profiles;
47
- }
48
- /**
49
- * 重新扫描所�?agent �?skill 目录并触发立即心跳上报�? * 用于诊断页面的「刷新技能」按钮手动触发�? */
50
- async rescanAndReportProfiles() {
51
- for (const [, agent] of this.agents) {
52
- if (agent.adapter.discoverSkills) {
53
- try {
54
- const skills = await agent.adapter.discoverSkills({ workDir: agent.workDir });
55
- agent.adapter.meta.skills.splice(0, agent.adapter.meta.skills.length, ...skills);
56
- }
57
- catch {
58
- // best-effort
59
- }
60
- }
61
- }
62
- this.onProfilesChanged?.();
63
- }
64
- /**
65
- * 创建 Agent 连接并启�?adapter�? *
66
- * 每个 agent 拥有独立�?WinMatrixAgentClient + WebSocket 连接�? */
67
- async createAgent(payload) {
68
- const existing = this.agents.get(payload.agentId);
69
- if (existing) {
70
- return { ok: true, agent: existing };
71
- }
72
- const pending = this.pendingCreations.get(payload.agentId);
73
- if (pending) {
74
- return pending;
75
- }
76
- const creation = this.createAgentInternal(payload);
77
- this.pendingCreations.set(payload.agentId, creation);
78
- try {
79
- return await creation;
80
- }
81
- finally {
82
- if (this.pendingCreations.get(payload.agentId) === creation) {
83
- this.pendingCreations.delete(payload.agentId);
84
- }
85
- }
86
- }
87
- async createAgentInternal(payload) {
88
- if (!this.registry.has(payload.agentType)) {
89
- return { ok: false, error: `Unknown agent type: ${payload.agentType}. Registered: ${this.registry.listTypes().join(', ')}` };
90
- }
91
- const adapter = this.registry.create(payload.agentType, payload.adapterConfig);
92
- const client = new WinMatrixAgentClient({
93
- url: payload.serverUrl,
94
- apiKey: payload.apiKey,
95
- agentId: payload.agentId,
96
- name: payload.name ?? payload.agentType,
97
- agentType: payload.agentType,
98
- capabilities: adapter.meta.capabilities,
99
- autoReconnect: true,
100
- sessionQueryHandler: async (method, params) => {
101
- if (method === 'session.list') {
102
- return adapter.listSessions?.(params) ?? { sessions: [], total: 0 };
103
- }
104
- if (method === 'session.get') {
105
- const p = params;
106
- return (adapter.getSession?.(p.sessionId, p) ?? {
107
- session: { id: p.sessionId, summary: 'N/A', createdAt: '', lastActivityAt: '' },
108
- messageCount: 0,
109
- truncated: false,
110
- userPrompts: [],
111
- assistantText: '',
112
- lastAssistantText: '',
113
- });
114
- }
115
- throw new Error(`Unsupported session method: ${method}`);
116
- },
117
- });
118
- const managed = {
119
- agentId: payload.agentId,
120
- adapter,
121
- client,
122
- abortController: null,
123
- busy: false,
124
- workDir: payload.workDir,
125
- };
126
- client.on('disconnect', (() => {
127
- if (!managed.busy)
128
- return;
129
- console.warn(`[agent:${payload.agentId}] connection disconnected, aborting running task`);
130
- managed.abortController?.abort();
131
- }));
132
- // Handle task.assign
133
- client.on('task', (async (taskInput) => {
134
- const task = taskInput;
135
- if (managed.busy) {
136
- this.recordTaskAudit({
137
- ts: formatDaemonLocalTimestamp(),
138
- agentId: payload.agentId,
139
- taskId: task.taskId,
140
- event: 'task_fail',
141
- detail: 'AGENT_BUSY',
142
- });
143
- client.sendFrame({
144
- type: 'event',
145
- event: 'task.error',
146
- payload: { taskId: task.taskId, error: 'Agent busy', code: 'AGENT_BUSY' },
147
- });
148
- return;
149
- }
150
- managed.busy = true;
151
- console.log(`[agent:${payload.agentId}] task start taskId=${task.taskId} inputLength=${task.input.length}`);
152
- this.recordTaskAudit({
153
- ts: formatDaemonLocalTimestamp(),
154
- agentId: payload.agentId,
155
- taskId: task.taskId,
156
- event: 'task_start',
157
- detail: `inputLength=${task.input.length}`,
158
- });
159
- const abortController = new AbortController();
160
- managed.abortController = abortController;
161
- try {
162
- for await (const event of adapter.execute({
163
- taskId: task.taskId,
164
- input: task.input,
165
- mode: 'session',
166
- workDir: payload.workDir ?? task.workDir,
167
- systemPrompt: task.systemPrompt,
168
- mcpToken: task.mcpToken,
169
- }, abortController.signal)) {
170
- if (event.type === 'thinking') {
171
- client.sendFrame({
172
- type: 'event',
173
- event: 'task.delta',
174
- payload: {
175
- taskId: task.taskId,
176
- content: event.content,
177
- meta: { stream: 'thinking' },
178
- },
179
- });
180
- continue;
181
- }
182
- switch (event.type) {
183
- case 'delta':
184
- client.streamDelta(task.taskId, event.content);
185
- break;
186
- case 'tool_call': {
187
- try {
188
- await client.callTool(event.name, event.args, task.taskId);
189
- }
190
- catch (err) {
191
- console.error(`[agent:${payload.agentId}] tool call failed tool=${event.name} error=${err instanceof Error ? err.message : String(err)}`);
192
- }
193
- break;
194
- }
195
- case 'result':
196
- client.completeTask(task.taskId, event.content, event.sessionId, event.usage);
197
- console.log(`[agent:${payload.agentId}] task complete taskId=${task.taskId} sessionId=${event.sessionId ?? '-'}`);
198
- this.recordTaskAudit({
199
- ts: formatDaemonLocalTimestamp(),
200
- agentId: payload.agentId,
201
- taskId: task.taskId,
202
- event: 'task_complete',
203
- detail: `sessionId=${event.sessionId ?? '-'}`,
204
- });
205
- return;
206
- case 'error':
207
- client.failTask(task.taskId, event.message);
208
- console.error(`[agent:${payload.agentId}] task error taskId=${task.taskId} error=${event.message}`);
209
- this.recordTaskAudit({
210
- ts: formatDaemonLocalTimestamp(),
211
- agentId: payload.agentId,
212
- taskId: task.taskId,
213
- event: 'task_error',
214
- detail: event.message,
215
- });
216
- return;
217
- }
218
- }
219
- }
220
- catch (err) {
221
- const msg = err instanceof Error ? err.message : String(err);
222
- try {
223
- client.failTask(task.taskId, msg);
224
- }
225
- catch (notifyErr) {
226
- /* ignore - best effort notification */
227
- }
228
- console.error(`[agent:${payload.agentId}] task failed taskId=${task.taskId} error=${msg}`);
229
- this.recordTaskAudit({
230
- ts: formatDaemonLocalTimestamp(),
231
- agentId: payload.agentId,
232
- taskId: task.taskId,
233
- event: 'task_fail',
234
- detail: msg,
235
- });
236
- }
237
- finally {
238
- managed.abortController = null;
239
- managed.busy = false;
240
- }
241
- }));
242
- // Connect
243
- try {
244
- await client.connect();
245
- }
246
- catch (err) {
247
- const msg = err instanceof Error ? err.message : String(err);
248
- client.disconnect();
249
- return { ok: false, error: `Agent ${payload.agentId} connection failed: ${msg}` };
250
- }
251
- this.agents.set(payload.agentId, managed);
252
- console.log(`[daemon] Agent ${payload.agentId} connected (type: ${payload.agentType})`);
253
- // Discover skills on creation and write to adapter meta
254
- if (adapter.discoverSkills) {
255
- try {
256
- const skills = await adapter.discoverSkills({ workDir: payload.workDir });
257
- adapter.meta.skills.splice(0, adapter.meta.skills.length, ...skills);
258
- }
259
- catch {
260
- // best-effort
261
- }
262
- }
263
- // Notify profile change
264
- this.onProfilesChanged?.();
265
- return { ok: true, agent: managed };
266
- }
267
- /**
268
- * 停止 Agent �?取消正在执行的任务,断开连接�? */
269
- async stopAgent(payload) {
270
- const agent = this.agents.get(payload.agentId);
271
- if (!agent) {
272
- return { ok: false, error: `Agent ${payload.agentId} is not running` };
273
- }
274
- // Cancel running task
275
- if (agent.abortController) {
276
- agent.abortController.abort();
277
- }
278
- // Disconnect
279
- try {
280
- await agent.client.disconnect();
281
- }
282
- catch {
283
- // Best-effort
284
- }
285
- this.agents.delete(payload.agentId);
286
- console.log(`[daemon] Agent ${payload.agentId} stopped`);
287
- // Notify profile change
288
- this.onProfilesChanged?.();
289
- return { ok: true };
290
- }
291
- /** 停止所�?Agent(shutdown 时调用) */
292
- async stopAllAgents() {
293
- for (const [agentId, agent] of this.agents) {
294
- try {
295
- if (agent.abortController) {
296
- agent.abortController.abort();
297
- }
298
- await agent.client.disconnect();
299
- console.log(`[daemon] Agent ${agentId} stopped during shutdown`);
300
- }
301
- catch {
302
- // Best-effort
303
- }
304
- }
305
- this.agents.clear();
306
- }
307
- /** 列出当前运行�?Agent */
308
- listAgents() {
309
- return [...this.agents.values()].map((a) => ({
310
- agentId: a.agentId,
311
- state: a.client.getState(),
312
- }));
313
- }
314
- /** 最近一段时间接�?完成的任务(内存环,供本机诊断页�?*/
315
- getRecentTaskEvents() {
316
- return [...this.taskAudit];
317
- }
318
- /** 检�?Agent 是否在运�?*/
319
- isRunning(agentId) {
320
- return this.agents.has(agentId);
321
- }
322
- }
323
- //# sourceMappingURL=AgentProcessManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentProcessManager.js","sourceRoot":"","sources":["../../src/core/AgentProcessManager.ts"],"names":[],"mappings":"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"}
@@ -1,94 +0,0 @@
1
- /**
2
- * WinMatrix Daemon - Config Loader
3
- *
4
- * Loads configuration from ~/.winmatrix/daemon.json, CLI arguments, and environment variables.
5
- * Optional field `computerToken` in daemon.json holds the Computer token (wmc_...) for restart
6
- * without re-exporting WINMATRIX_TOKEN. Use `--persist-token` once to write CLI/env token to disk.
7
- */
8
- export interface DaemonConfig {
9
- serverUrl: string;
10
- token: string;
11
- /** 指示 token 来源:CLI / 环境变量 / 配置文件 */
12
- tokenSource?: 'token' | 'env' | 'file';
13
- }
14
- interface DaemonJsonFile {
15
- serverUrl?: string;
16
- /** Computer registration token (wmc_...). Legacy alias: `token` */
17
- computerToken?: string;
18
- token?: string;
19
- }
20
- /** Options after parsing argv (run / restart) */
21
- export interface DaemonStartupOptions {
22
- config: DaemonConfig;
23
- /** 若 true 且在解析后 token 非空,将把 serverUrl + computerToken 写入 daemon.json */
24
- persistCredentials: boolean;
25
- }
26
- /** 默认 WinMatrix 外部 Agent WebSocket 地址(与文档一致) */
27
- export declare const DEFAULT_DAEMON_PUBLIC_BASE_URL = "https://winmatrix.winning.com.cn/winmatrix";
28
- export declare const DEFAULT_DAEMON_SERVER_URL = "wss://winmatrix.winning.com.cn/winmatrix/api/v1/external-agents/connect";
29
- /**
30
- * 规范化 Daemon WebSocket 地址:
31
- * - 纠正常见笔误 `ws://http://host` → `ws://host`
32
- * - 将 `http(s)://` API 基址转为 `ws(s)://` 并补全路径(若未包含 connect 路径)
33
- * - `ws(s)://host:port` 无路径时补全默认 connect 路径
34
- */
35
- export declare function normalizeDaemonServerUrl(input: string): string;
36
- export declare function isDefaultDaemonServerUrl(input: string): boolean;
37
- /** 供 setup / 运维脚本使用 */
38
- export declare function getDaemonConfigFilePath(): string;
39
- /** 控制台用短路径标签(POSIX 语义:~/...),与配置文件实际读取路径一致。 */
40
- export declare function getDaemonConfigPathLabel(): string;
41
- /**
42
- * 判断是否已在 daemon.json 持久化 Computer token(不涉及进程环境)。
43
- */
44
- export declare function describeDaemonCredentialFile(): {
45
- pathLabel: string;
46
- fileExists: boolean;
47
- hasStoredComputerToken: boolean;
48
- };
49
- /** 从 JSON 段落读取 token(computerToken 优先,其次别名 token) */
50
- export declare function tokenFromDaemonJsonFields(file: Partial<DaemonJsonFile>): string;
51
- export declare function loadDaemonJson(): Partial<DaemonJsonFile>;
52
- export declare function parseCliArgs(argv: string[]): {
53
- server?: string;
54
- token?: string;
55
- tokenSource?: 'token';
56
- persistCredentials?: boolean;
57
- };
58
- /**
59
- * Resolve config + optional persistence flag for daemon startup.
60
- *
61
- * Token priority:
62
- * 1. CLI (--token)
63
- * 2. Environment (WINMATRIX_TOKEN)
64
- * 3. Config file (~/.winmatrix/daemon.json `computerToken`, or legacy `token`)
65
- *
66
- * Server URL priority:
67
- * 1. CLI (--server)
68
- * 2. daemon.json serverUrl
69
- * 3. Default localhost WebSocket URL
70
- */
71
- export declare function loadDaemonStartupOptions(argv: string[]): DaemonStartupOptions;
72
- export declare function loadConfig(argv: string[]): DaemonConfig;
73
- /**
74
- * 将当前解析得到的 server URL / Computer token 写回磁盘(chmod 0600)。
75
- * `computerToken` 为空时仅从文件改写 `serverUrl`,不删除已有 `computerToken`。
76
- */
77
- export declare function mergeDaemonSetupConfigToDisk(opts: {
78
- serverUrl: string;
79
- computerToken?: string;
80
- }): void;
81
- /**
82
- * Merge server URL + Computer token into ~/.winmatrix/daemon.json (chmod 0600).
83
- * Drops legacy JSON key `token` in favor of `computerToken`.
84
- */
85
- export declare function persistDaemonCredentialsToDisk(config: DaemonConfig): void;
86
- /**
87
- * Sanitize a config for logging (token replaced with ***).
88
- */
89
- export declare function sanitizeConfig(config: DaemonConfig): {
90
- serverUrl: string;
91
- token: string;
92
- };
93
- export {};
94
- //# sourceMappingURL=ConfigLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../../src/core/ConfigLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,WAAW,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;CACxC;AAED,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,wEAAwE;IACxE,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAOD,gDAAgD;AAChD,eAAO,MAAM,8BAA8B,+CAA+C,CAAC;AAE3F,eAAO,MAAM,yBAAyB,4EACqC,CAAC;AAI5E;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA4B9D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/D;AAqBD,uBAAuB;AACvB,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,+CAA+C;AAC/C,wBAAgB,wBAAwB,IAAI,MAAM,CAIjD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,sBAAsB,EAAE,OAAO,CAAC;CACjC,CAKA;AAED,qDAAqD;AACrD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAG/E;AAED,wBAAgB,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,CAWxD;AAwBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAuBA;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,oBAAoB,CA+B7E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAEvD;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,IAAI,CAmBP;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAgBzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKzF"}