@openclaw-cloud/agent-controller 3.1.1 → 3.1.3
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/bin/agent-controller.js +5 -9
- package/dist/commands/agent-update-cli.js +23 -38
- package/dist/commands/agent-update-cli.js.map +1 -1
- package/dist/commands/backup-cli.js +6 -4
- package/dist/commands/backup-cli.js.map +1 -1
- package/dist/commands/bootstrap.js +4 -4
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/channel-server.js +4 -3
- package/dist/commands/channel-server.js.map +1 -1
- package/dist/commands/heartbeat-cli.js +2 -6
- package/dist/commands/heartbeat-cli.js.map +1 -1
- package/dist/commands/install-deps.d.ts +10 -0
- package/dist/commands/install-deps.js +33 -43
- package/dist/commands/install-deps.js.map +1 -1
- package/dist/commands/knowledge-sync-cli.js +6 -4
- package/dist/commands/knowledge-sync-cli.js.map +1 -1
- package/dist/commands/plugin-update-cli.js +2 -9
- package/dist/commands/plugin-update-cli.js.map +1 -1
- package/dist/commands/self-update.js +17 -34
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/update-skills.js +4 -3
- package/dist/commands/update-skills.js.map +1 -1
- package/dist/config-file.d.ts +7 -0
- package/dist/config-file.js +21 -11
- package/dist/config-file.js.map +1 -1
- package/dist/handlers/agent-update.d.ts +4 -0
- package/dist/handlers/agent-update.js +16 -44
- package/dist/handlers/agent-update.js.map +1 -1
- package/dist/handlers/deploy.d.ts +1 -2
- package/dist/handlers/deploy.js +4 -20
- package/dist/handlers/deploy.js.map +1 -1
- package/dist/handlers/diagnostics.js +0 -12
- package/dist/handlers/diagnostics.js.map +1 -1
- package/dist/handlers/file-delete.js +4 -5
- package/dist/handlers/file-delete.js.map +1 -1
- package/dist/handlers/file-write.js +4 -4
- package/dist/handlers/file-write.js.map +1 -1
- package/dist/handlers/knowledge-sync.js +2 -14
- package/dist/handlers/knowledge-sync.js.map +1 -1
- package/dist/handlers/onboarding.d.ts +1 -2
- package/dist/handlers/onboarding.js +3 -20
- package/dist/handlers/onboarding.js.map +1 -1
- package/dist/handlers/package-install.js +1 -1
- package/dist/handlers/package-install.js.map +1 -1
- package/dist/handlers/pair.js +0 -12
- package/dist/handlers/pair.js.map +1 -1
- package/dist/handlers/restart.d.ts +1 -2
- package/dist/handlers/restart.js +3 -8
- package/dist/handlers/restart.js.map +1 -1
- package/dist/handlers/stop.js +0 -7
- package/dist/handlers/stop.js.map +1 -1
- package/dist/handlers/telegram-webhook.js +3 -22
- package/dist/handlers/telegram-webhook.js.map +1 -1
- package/dist/handlers/update-config.js +3 -11
- package/dist/handlers/update-config.js.map +1 -1
- package/dist/heartbeat.js +2 -1
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.js +37 -84
- package/dist/index.js.map +1 -1
- package/dist/lockfile.js +2 -1
- package/dist/lockfile.js.map +1 -1
- package/dist/platform/linux.js +6 -5
- package/dist/platform/linux.js.map +1 -1
- package/dist/platform/macos.js +3 -2
- package/dist/platform/macos.js.map +1 -1
- package/dist/platform/windows.js +3 -2
- package/dist/platform/windows.js.map +1 -1
- package/dist/providers/claude-code/channel-server.js +2 -1
- package/dist/providers/claude-code/channel-server.js.map +1 -1
- package/dist/providers/claude-code/settings-writer.d.ts +3 -2
- package/dist/providers/claude-code/settings-writer.js +6 -15
- package/dist/providers/claude-code/settings-writer.js.map +1 -1
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.js +25 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openclaw/index.js +11 -13
- package/dist/providers/openclaw/index.js.map +1 -1
- package/dist/utils/anthropic-auth.d.ts +14 -0
- package/dist/utils/anthropic-auth.js +24 -0
- package/dist/utils/anthropic-auth.js.map +1 -1
- package/dist/utils/apply-config.d.ts +16 -1
- package/dist/utils/apply-config.js +59 -81
- package/dist/utils/apply-config.js.map +1 -1
- package/dist/utils/claude-env.js +18 -28
- package/dist/utils/claude-env.js.map +1 -1
- package/dist/utils/config-merge-paths.d.ts +9 -1
- package/dist/utils/config-merge-paths.js +10 -2
- package/dist/utils/config-merge-paths.js.map +1 -1
- package/dist/utils/env.d.ts +0 -1
- package/dist/utils/env.js +0 -8
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/gateway-restart-handler.d.ts +6 -2
- package/dist/utils/gateway-restart-handler.js +11 -2
- package/dist/utils/gateway-restart-handler.js.map +1 -1
- package/dist/utils/gateway-restart.d.ts +7 -0
- package/dist/utils/gateway-restart.js +12 -4
- package/dist/utils/gateway-restart.js.map +1 -1
- package/dist/utils/legacy-mcp-servers.d.ts +12 -0
- package/dist/utils/legacy-mcp-servers.js +37 -0
- package/dist/utils/legacy-mcp-servers.js.map +1 -0
- package/dist/utils/log-collector.js +2 -1
- package/dist/utils/log-collector.js.map +1 -1
- package/dist/utils/openclaw-ops.js +8 -7
- package/dist/utils/openclaw-ops.js.map +1 -1
- package/dist/utils/openclaw-stack-update.d.ts +31 -0
- package/dist/utils/openclaw-stack-update.js +50 -0
- package/dist/utils/openclaw-stack-update.js.map +1 -0
- package/dist/utils/package-install.js +4 -12
- package/dist/utils/package-install.js.map +1 -1
- package/dist/utils/package-version.d.ts +10 -0
- package/dist/utils/package-version.js +18 -0
- package/dist/utils/package-version.js.map +1 -0
- package/dist/utils/parse-id-at-version.d.ts +15 -0
- package/dist/utils/parse-id-at-version.js +22 -0
- package/dist/utils/parse-id-at-version.js.map +1 -0
- package/dist/utils/response.js +1 -0
- package/dist/utils/response.js.map +1 -1
- package/dist/utils/write-workspace-files.js +8 -13
- package/dist/utils/write-workspace-files.js.map +1 -1
- package/dist/workspace.d.ts +11 -0
- package/dist/workspace.js +20 -0
- package/dist/workspace.js.map +1 -1
- package/package.json +1 -1
package/bin/agent-controller.js
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { createRequire } from 'node:module';
|
|
4
|
-
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import { dirname, join } from 'node:path';
|
|
6
|
-
|
|
7
|
-
const require = createRequire(import.meta.url);
|
|
8
|
-
const pkg = require(join(dirname(fileURLToPath(import.meta.url)), '../package.json'));
|
|
9
|
-
|
|
10
3
|
// Load saved env file before dispatching any command
|
|
11
4
|
// This allows `agent-controller backup`, `knowledge_sync`, etc. to work without manual env vars
|
|
12
5
|
const { loadEnvFile } = await import('../dist/config-file.js');
|
|
13
6
|
await loadEnvFile();
|
|
14
7
|
|
|
8
|
+
// Same package.json read the TS side uses — one helper, one relative depth.
|
|
9
|
+
const { getPackageVersion } = await import('../dist/utils/package-version.js');
|
|
10
|
+
|
|
15
11
|
const [,, command] = process.argv;
|
|
16
12
|
|
|
17
13
|
if (command === '--version' || command === '-v') {
|
|
18
|
-
console.log(
|
|
14
|
+
console.log(getPackageVersion());
|
|
19
15
|
} else if (command === 'self-update' || command === 'self_update' || command === 'update') {
|
|
20
16
|
const { runSelfUpdateCli } = await import('../dist/commands/self-update.js');
|
|
21
|
-
await runSelfUpdateCli(
|
|
17
|
+
await runSelfUpdateCli(getPackageVersion());
|
|
22
18
|
} else if (command === 'backup') {
|
|
23
19
|
const { runBackup } = await import('../dist/commands/backup-cli.js');
|
|
24
20
|
await runBackup();
|
|
@@ -1,25 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { parseIdAtVersion } from '../utils/parse-id-at-version.js';
|
|
2
|
+
import { runOpenclawStackUpdate } from '../utils/openclaw-stack-update.js';
|
|
3
3
|
import { logCollector } from '../connection.js';
|
|
4
4
|
import { toErrorMessage } from '../utils/response.js';
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
6
6
|
// CLI entrypoint for
|
|
7
7
|
// agent-controller agent-update <openclaw-version> [plugin@v ...]
|
|
8
|
-
//
|
|
9
|
-
// install plugins
|
|
10
|
-
//
|
|
8
|
+
// Shares runOpenclawStackUpdate() with the WS handler (install runtime,
|
|
9
|
+
// install plugins, one best-effort gateway restart if anything changed) and
|
|
10
|
+
// adds only argv parsing, console output and exit codes.
|
|
11
11
|
// ---------------------------------------------------------------------------
|
|
12
12
|
const USAGE = 'Usage: agent-controller agent-update <openclaw-version> [plugin1@v1 plugin2@v2 ...]';
|
|
13
|
-
function parsePluginToken(token) {
|
|
14
|
-
const at = token.lastIndexOf('@');
|
|
15
|
-
if (at <= 0)
|
|
16
|
-
return null;
|
|
17
|
-
const id = token.slice(0, at).trim();
|
|
18
|
-
const version = token.slice(at + 1).trim();
|
|
19
|
-
if (!id || !version)
|
|
20
|
-
return null;
|
|
21
|
-
return { id, version };
|
|
22
|
-
}
|
|
23
13
|
function parseArgs(args) {
|
|
24
14
|
if (args.length < 1)
|
|
25
15
|
return null;
|
|
@@ -28,7 +18,7 @@ function parseArgs(args) {
|
|
|
28
18
|
return null;
|
|
29
19
|
const plugins = [];
|
|
30
20
|
for (const token of args.slice(1)) {
|
|
31
|
-
const p =
|
|
21
|
+
const p = parseIdAtVersion(token);
|
|
32
22
|
if (!p)
|
|
33
23
|
return null;
|
|
34
24
|
plugins.push(p);
|
|
@@ -62,15 +52,18 @@ export async function runAgentUpdateCli(args) {
|
|
|
62
52
|
version: openclawVersion,
|
|
63
53
|
pluginCount: plugins.length,
|
|
64
54
|
});
|
|
65
|
-
|
|
66
|
-
|
|
55
|
+
console.log(`[agent-update] installing openclaw@${openclawVersion}...`);
|
|
56
|
+
if (plugins.length > 0) {
|
|
57
|
+
console.log(`[agent-update] installing ${plugins.length} plugin(s)...`);
|
|
58
|
+
}
|
|
59
|
+
let result;
|
|
67
60
|
try {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
61
|
+
result = await runOpenclawStackUpdate({
|
|
62
|
+
version: openclawVersion,
|
|
63
|
+
plugins,
|
|
64
|
+
eventPrefix: 'agent_update_cli',
|
|
65
|
+
meta: { version: openclawVersion },
|
|
66
|
+
});
|
|
74
67
|
}
|
|
75
68
|
catch (err) {
|
|
76
69
|
const msg = toErrorMessage(err);
|
|
@@ -81,20 +74,12 @@ export async function runAgentUpdateCli(args) {
|
|
|
81
74
|
});
|
|
82
75
|
process.exit(1);
|
|
83
76
|
}
|
|
84
|
-
logSummary(runtimeChanged, pluginSummary);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
await restartGateway();
|
|
91
|
-
console.log('[agent-update] gateway restarted');
|
|
92
|
-
}
|
|
93
|
-
catch (err) {
|
|
94
|
-
const msg = toErrorMessage(err);
|
|
95
|
-
console.error(`[agent-update] gateway restart failed (treating as warning): ${msg}`);
|
|
96
|
-
logCollector?.push('agent_update_cli_restart_failed', 'warn', 'Gateway restart failed after CLI agent-update', { version: openclawVersion, error: msg });
|
|
97
|
-
}
|
|
77
|
+
logSummary(result.runtimeChanged, result.pluginSummary);
|
|
78
|
+
if (result.gatewayRestarted) {
|
|
79
|
+
console.log('[agent-update] gateway restarted');
|
|
80
|
+
}
|
|
81
|
+
else if (result.restartError) {
|
|
82
|
+
console.error(`[agent-update] gateway restart failed (treating as warning): ${result.restartError}`);
|
|
98
83
|
}
|
|
99
84
|
else {
|
|
100
85
|
console.log('[agent-update] nothing changed, skipping gateway restart');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-update-cli.js","sourceRoot":"","sources":["../../src/commands/agent-update-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-update-cli.js","sourceRoot":"","sources":["../../src/commands/agent-update-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8EAA8E;AAC9E,qBAAqB;AACrB,oEAAoE;AACpE,wEAAwE;AACxE,4EAA4E;AAC5E,yDAAyD;AACzD,8EAA8E;AAE9E,MAAM,KAAK,GAAG,qFAAqF,CAAC;AAOpG,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,OAAO,GAA2C,EAAE,CAAC;IAC3D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,cAAuB,EAAE,OAAyC;IACpF,OAAO,CAAC,GAAG,CAAC,0BAA0B,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACpF,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,mCAAmC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAc;IACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE5C,YAAY,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,EAAE,0BAA0B,EAAE;QAC/E,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,OAAO,CAAC,MAAM;KAC5B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,sCAAsC,eAAe,KAAK,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,CAAC,MAAM,eAAe,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,sBAAsB,CAAC;YACpC,OAAO,EAAE,eAAe;YACxB,OAAO;YACP,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;SACnC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;QAC/C,YAAY,EAAE,IAAI,CAAC,yBAAyB,EAAE,OAAO,EAAE,yBAAyB,EAAE;YAChF,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAExD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CACX,gEAAgE,MAAM,CAAC,YAAY,EAAE,CACtF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { createAgentApi } from '../api.js';
|
|
2
|
-
import { getBackendUrl
|
|
2
|
+
import { getBackendUrl } from '../utils/env.js';
|
|
3
|
+
import { requireConfig } from '../config.js';
|
|
3
4
|
import { pushBackupToBackend } from '../utils/backup-push.js';
|
|
5
|
+
import { toErrorMessage } from '../utils/response.js';
|
|
4
6
|
export async function runBackup() {
|
|
5
7
|
console.log('Starting backup...');
|
|
6
|
-
const api = createAgentApi(getBackendUrl(),
|
|
7
|
-
const agentId =
|
|
8
|
+
const api = createAgentApi(getBackendUrl(), requireConfig('agentToken'));
|
|
9
|
+
const agentId = requireConfig('agentId');
|
|
8
10
|
try {
|
|
9
11
|
const { sizeBytes } = await pushBackupToBackend(api, agentId);
|
|
10
12
|
const sizeMb = (sizeBytes / 1024 / 1024).toFixed(2);
|
|
11
13
|
console.log(`Backup complete — ${sizeMb} MB.`);
|
|
12
14
|
}
|
|
13
15
|
catch (e) {
|
|
14
|
-
console.error(
|
|
16
|
+
console.error(toErrorMessage(e));
|
|
15
17
|
process.exit(1);
|
|
16
18
|
}
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-cli.js","sourceRoot":"","sources":["../../src/commands/backup-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"backup-cli.js","sourceRoot":"","sources":["../../src/commands/backup-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,cAAc,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,MAAM,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createAgentApi } from '../api.js';
|
|
2
|
-
import { getBackendUrl
|
|
2
|
+
import { getBackendUrl } from '../utils/env.js';
|
|
3
3
|
import { fetchAndApplyConfig } from '../utils/apply-config.js';
|
|
4
4
|
import { toErrorMessage } from '../utils/response.js';
|
|
5
|
-
import { config } from '../config.js';
|
|
5
|
+
import { config, requireConfig } from '../config.js';
|
|
6
6
|
import { getWorkspaceDir } from '../workspace.js';
|
|
7
7
|
/**
|
|
8
8
|
* `agent-controller bootstrap` (aliases: update-config / update_config).
|
|
@@ -16,8 +16,8 @@ import { getWorkspaceDir } from '../workspace.js';
|
|
|
16
16
|
*/
|
|
17
17
|
export async function bootstrap() {
|
|
18
18
|
const backendUrl = getBackendUrl();
|
|
19
|
-
const agentToken =
|
|
20
|
-
const agentId =
|
|
19
|
+
const agentToken = requireConfig('agentToken');
|
|
20
|
+
const agentId = requireConfig('agentId');
|
|
21
21
|
console.log(`Bootstrapping agent ${agentId}...`);
|
|
22
22
|
console.log(` Backend: ${backendUrl}`);
|
|
23
23
|
console.log(` OpenClaw dir: ${config.stateDir}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAe,EAAE,EAAE,CAAC,CAAC;IAEjD,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CACT,OAAO;YACL,CAAC,CAAC,6DAA6D;YAC/D,CAAC,CAAC,+DAA+D;gBAC7D,mDAAmD,CAC1D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ClaudeChannelServer } from '../providers/claude-code/channel-server.js';
|
|
2
2
|
import { ChannelBridgeClient, DEFAULT_SOCKET_PATH, } from '../providers/claude-code/socket-bridge.js';
|
|
3
|
+
import { toErrorMessage } from '../utils/response.js';
|
|
3
4
|
/**
|
|
4
5
|
* CLI: `agent-controller channel-server`
|
|
5
6
|
*
|
|
@@ -24,7 +25,7 @@ export async function runChannelServer(argv = []) {
|
|
|
24
25
|
await bridge.connect();
|
|
25
26
|
}
|
|
26
27
|
catch (err) {
|
|
27
|
-
process.stderr.write(`[channel-server] failed to connect to ${socketPath}: ${
|
|
28
|
+
process.stderr.write(`[channel-server] failed to connect to ${socketPath}: ${toErrorMessage(err)}\n`);
|
|
28
29
|
process.exit(1);
|
|
29
30
|
}
|
|
30
31
|
bridge.sendHello(process.pid);
|
|
@@ -32,7 +33,7 @@ export async function runChannelServer(argv = []) {
|
|
|
32
33
|
// main → worker: forward inbound chat messages to Claude.
|
|
33
34
|
bridge.on('push', (content, meta) => {
|
|
34
35
|
channel.pushChatMessage(content, meta).catch((err) => {
|
|
35
|
-
process.stderr.write(`[channel-server] pushChatMessage failed: ${
|
|
36
|
+
process.stderr.write(`[channel-server] pushChatMessage failed: ${toErrorMessage(err)}\n`);
|
|
36
37
|
});
|
|
37
38
|
});
|
|
38
39
|
// worker → main: forward Claude's reply/edit tool calls.
|
|
@@ -55,7 +56,7 @@ export async function runChannelServer(argv = []) {
|
|
|
55
56
|
};
|
|
56
57
|
bridge.on('close', shutdown);
|
|
57
58
|
bridge.on('error', (err) => {
|
|
58
|
-
process.stderr.write(`[channel-server] bridge error: ${
|
|
59
|
+
process.stderr.write(`[channel-server] bridge error: ${toErrorMessage(err)}\n`);
|
|
59
60
|
});
|
|
60
61
|
process.on('SIGTERM', shutdown);
|
|
61
62
|
process.on('SIGINT', shutdown);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-server.js","sourceRoot":"","sources":["../../src/commands/channel-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"channel-server.js","sourceRoot":"","sources":["../../src/commands/channel-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';
|
|
2
|
-
import { fileURLToPath } from 'node:url';
|
|
3
|
-
import { dirname, join } from 'node:path';
|
|
4
1
|
import { createAgentApi } from '../api.js';
|
|
5
2
|
import { publishHeartbeat } from '../heartbeat.js';
|
|
6
3
|
import { config } from '../config.js';
|
|
7
|
-
|
|
8
|
-
const pkg = require(join(dirname(fileURLToPath(import.meta.url)), '../../package.json'));
|
|
4
|
+
import { getPackageVersion } from '../utils/package-version.js';
|
|
9
5
|
export async function runHeartbeat() {
|
|
10
6
|
const centrifugoUrl = config.centrifugoUrl;
|
|
11
7
|
const agentToken = config.agentToken;
|
|
@@ -27,7 +23,7 @@ export async function runHeartbeat() {
|
|
|
27
23
|
}
|
|
28
24
|
const api = createAgentApi(backendUrl, agentToken);
|
|
29
25
|
console.log(`[heartbeat] Sending one-shot heartbeat for agent ${agentId}...`);
|
|
30
|
-
await publishHeartbeat({ api, agentId: agentId, version:
|
|
26
|
+
await publishHeartbeat({ api, agentId: agentId, version: getPackageVersion() });
|
|
31
27
|
console.log('[heartbeat] Done.');
|
|
32
28
|
}
|
|
33
29
|
//# sourceMappingURL=heartbeat-cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat-cli.js","sourceRoot":"","sources":["../../src/commands/heartbeat-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"heartbeat-cli.js","sourceRoot":"","sources":["../../src/commands/heartbeat-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,aAAa;QAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,iCAAiC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,UAAW,EAAE,UAAW,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC,oDAAoD,OAAO,KAAK,CAAC,CAAC;IAC9E,MAAM,gBAAgB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -1 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agent-controller install-deps` — install the npm/pip packages the backend
|
|
3
|
+
* lists for this agent's role.
|
|
4
|
+
*
|
|
5
|
+
* The package names come from the backend, i.e. across a trust boundary, so
|
|
6
|
+
* every install goes through `installOnePackage()`: it is the one place that
|
|
7
|
+
* applies the package-name allowlist before anything reaches a shell. This
|
|
8
|
+
* command used to build `npm install -g ${pkg}` strings itself with no
|
|
9
|
+
* validation at all.
|
|
10
|
+
*/
|
|
1
11
|
export declare function installDeps(): Promise<void>;
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { createAgentApi } from '../api.js';
|
|
2
|
-
import { getBackendUrl
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
import { getBackendUrl } from '../utils/env.js';
|
|
3
|
+
import { requireConfig } from '../config.js';
|
|
4
|
+
import { INSTALL_TIMEOUT_MS, installOnePackage, } from '../utils/package-install.js';
|
|
5
|
+
import { toErrorMessage } from '../utils/response.js';
|
|
6
|
+
/**
|
|
7
|
+
* `agent-controller install-deps` — install the npm/pip packages the backend
|
|
8
|
+
* lists for this agent's role.
|
|
9
|
+
*
|
|
10
|
+
* The package names come from the backend, i.e. across a trust boundary, so
|
|
11
|
+
* every install goes through `installOnePackage()`: it is the one place that
|
|
12
|
+
* applies the package-name allowlist before anything reaches a shell. This
|
|
13
|
+
* command used to build `npm install -g ${pkg}` strings itself with no
|
|
14
|
+
* validation at all.
|
|
15
|
+
*/
|
|
15
16
|
export async function installDeps() {
|
|
16
17
|
const backendUrl = getBackendUrl();
|
|
17
|
-
const agentToken =
|
|
18
|
-
const agentId =
|
|
18
|
+
const agentToken = requireConfig('agentToken');
|
|
19
|
+
const agentId = requireConfig('agentId');
|
|
19
20
|
console.log(`Installing dependencies for agent ${agentId}...`);
|
|
20
21
|
const api = createAgentApi(backendUrl, agentToken);
|
|
21
22
|
let data;
|
|
@@ -23,7 +24,7 @@ export async function installDeps() {
|
|
|
23
24
|
data = (await api.agentBootstrap(agentId));
|
|
24
25
|
}
|
|
25
26
|
catch (err) {
|
|
26
|
-
console.error('Failed to fetch bootstrap data:', err
|
|
27
|
+
console.error('Failed to fetch bootstrap data:', toErrorMessage(err));
|
|
27
28
|
process.exit(1);
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
@@ -37,36 +38,25 @@ export async function installDeps() {
|
|
|
37
38
|
}
|
|
38
39
|
const deadline = Date.now() + INSTALL_TIMEOUT_MS;
|
|
39
40
|
const errors = [];
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.then(() => {
|
|
47
|
-
console.log(` ✓ npm: ${pkg}`);
|
|
48
|
-
})
|
|
49
|
-
.catch((err) => {
|
|
50
|
-
errors.push(`npm ${pkg}: ${err.message}`);
|
|
51
|
-
console.error(` ✗ npm: ${pkg}`);
|
|
52
|
-
});
|
|
53
|
-
}));
|
|
54
|
-
}
|
|
55
|
-
// Install pip packages (parallel)
|
|
56
|
-
if (pipPkgs.length > 0) {
|
|
57
|
-
console.log(`Installing pip packages: ${pipPkgs.join(', ')}`);
|
|
58
|
-
await Promise.allSettled(pipPkgs.map((pkg) => {
|
|
41
|
+
// Parallel within a manager — independent registries, no global lock.
|
|
42
|
+
async function installBatch(manager, pkgs) {
|
|
43
|
+
if (pkgs.length === 0)
|
|
44
|
+
return;
|
|
45
|
+
console.log(`Installing ${manager} packages: ${pkgs.join(', ')}`);
|
|
46
|
+
await Promise.all(pkgs.map(async (pkg) => {
|
|
59
47
|
const remaining = Math.max(deadline - Date.now(), 1000);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
console.log(` ✓
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
errors.push(
|
|
66
|
-
console.error(` ✗
|
|
67
|
-
}
|
|
48
|
+
const result = await installOnePackage(manager, pkg, remaining);
|
|
49
|
+
if (result.ok) {
|
|
50
|
+
console.log(` ✓ ${manager}: ${pkg}`);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
errors.push(`${manager} ${pkg}: ${result.error ?? 'unknown error'}`);
|
|
54
|
+
console.error(` ✗ ${manager}: ${pkg}`);
|
|
55
|
+
}
|
|
68
56
|
}));
|
|
69
57
|
}
|
|
58
|
+
await installBatch('npm', npmPkgs);
|
|
59
|
+
await installBatch('pip', pipPkgs);
|
|
70
60
|
if (errors.length > 0) {
|
|
71
61
|
console.error(`\n${errors.length} package(s) failed to install:`);
|
|
72
62
|
errors.forEach((e) => console.error(` - ${e}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-deps.js","sourceRoot":"","sources":["../../src/commands/install-deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"install-deps.js","sourceRoot":"","sources":["../../src/commands/install-deps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { createAgentApi } from '../api.js';
|
|
2
|
-
import { getBackendUrl
|
|
2
|
+
import { getBackendUrl } from '../utils/env.js';
|
|
3
|
+
import { requireConfig } from '../config.js';
|
|
3
4
|
import { pushKnowledgeToBackend } from '../utils/knowledge-push.js';
|
|
5
|
+
import { toErrorMessage } from '../utils/response.js';
|
|
4
6
|
export async function runKnowledgeSync() {
|
|
5
7
|
console.log('Starting knowledge sync...');
|
|
6
|
-
const api = createAgentApi(getBackendUrl(),
|
|
7
|
-
const agentId =
|
|
8
|
+
const api = createAgentApi(getBackendUrl(), requireConfig('agentToken'));
|
|
9
|
+
const agentId = requireConfig('agentId');
|
|
8
10
|
try {
|
|
9
11
|
const { filesRead, filesUpdated } = await pushKnowledgeToBackend(api, agentId);
|
|
10
12
|
console.log(`Knowledge sync complete — ${filesUpdated}/${filesRead} files updated.`);
|
|
11
13
|
}
|
|
12
14
|
catch (e) {
|
|
13
|
-
console.error(
|
|
15
|
+
console.error(toErrorMessage(e));
|
|
14
16
|
process.exit(1);
|
|
15
17
|
}
|
|
16
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-sync-cli.js","sourceRoot":"","sources":["../../src/commands/knowledge-sync-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"knowledge-sync-cli.js","sourceRoot":"","sources":["../../src/commands/knowledge-sync-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,cAAc,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,IAAI,SAAS,iBAAiB,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { installPlugin } from '../utils/openclaw-ops.js';
|
|
2
|
+
import { parseIdAtVersion } from '../utils/parse-id-at-version.js';
|
|
2
3
|
import { logCollector } from '../connection.js';
|
|
3
4
|
import { toErrorMessage } from '../utils/response.js';
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
@@ -15,15 +16,7 @@ function parseArgs(args) {
|
|
|
15
16
|
const combined = args[0];
|
|
16
17
|
if (!combined)
|
|
17
18
|
return null;
|
|
18
|
-
|
|
19
|
-
// Reject leading-@ so `@scope/name` without version doesn't slip through.
|
|
20
|
-
if (at <= 0)
|
|
21
|
-
return null;
|
|
22
|
-
const id = combined.slice(0, at).trim();
|
|
23
|
-
const version = combined.slice(at + 1).trim();
|
|
24
|
-
if (!id || !version)
|
|
25
|
-
return null;
|
|
26
|
-
return { id, version };
|
|
19
|
+
return parseIdAtVersion(combined);
|
|
27
20
|
}
|
|
28
21
|
if (args.length === 2) {
|
|
29
22
|
const id = args[0]?.trim() ?? '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-update-cli.js","sourceRoot":"","sources":["../../src/commands/plugin-update-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8EAA8E;AAC9E,qEAAqE;AACrE,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,qEAAqE;AACrE,8EAA8E;AAE9E,MAAM,KAAK,GACT,wDAAwD;IACxD,sDAAsD,CAAC;AAOzD,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,
|
|
1
|
+
{"version":3,"file":"plugin-update-cli.js","sourceRoot":"","sources":["../../src/commands/plugin-update-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8EAA8E;AAC9E,qEAAqE;AACrE,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,qEAAqE;AACrE,8EAA8E;AAE9E,MAAM,KAAK,GACT,wDAAwD;IACxD,sDAAsD,CAAC;AAOzD,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAc;IACrD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE/B,YAAY,EAAE,IAAI,CAAC,yBAAyB,EAAE,MAAM,EAAE,2BAA2B,EAAE;QACjF,EAAE;QACF,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,OAAO,KAAK,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,OAAO,mCAAmC,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,wEAAwE;QACxE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QAChD,YAAY,EAAE,IAAI,CAAC,0BAA0B,EAAE,OAAO,EAAE,0BAA0B,EAAE;YAClF,EAAE;YACF,OAAO;YACP,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { execAsync } from '../utils/exec.js';
|
|
2
2
|
import { removeLockFile } from '../lockfile.js';
|
|
3
3
|
import { getReleaseChannel } from '../utils/release-channel.js';
|
|
4
|
+
import { createAgentApi } from '../api.js';
|
|
4
5
|
import { config } from '../config.js';
|
|
5
|
-
import { withEaccesRetry,
|
|
6
|
-
import {
|
|
6
|
+
import { withEaccesRetry, installAcSelf, AC_PACKAGE, } from '../utils/openclaw-ops.js';
|
|
7
|
+
import { runOpenclawStackUpdate } from '../utils/openclaw-stack-update.js';
|
|
7
8
|
import { logCollector } from '../connection.js';
|
|
8
|
-
import { toErrorMessage } from '../utils/response.js';
|
|
9
9
|
/**
|
|
10
10
|
* Run the explicit-version self-update flow. Throws when `installOpenclaw`
|
|
11
11
|
* or `installAcSelf` fail outright — per-plugin failures are recorded in
|
|
@@ -33,30 +33,14 @@ export async function runExplicitSelfUpdate(currentVersion, payload) {
|
|
|
33
33
|
});
|
|
34
34
|
// 1) openclaw runtime + plugins (one gateway restart at the end)
|
|
35
35
|
if (payload.openclaw) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
installed: pluginSummary.installed,
|
|
45
|
-
skipped: pluginSummary.skipped,
|
|
46
|
-
failed: pluginSummary.failed,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
const anyChanged = runtimeChanged || (pluginSummary?.installed.length ?? 0) > 0;
|
|
50
|
-
if (anyChanged) {
|
|
51
|
-
try {
|
|
52
|
-
await restartGateway();
|
|
53
|
-
gatewayRestarted = true;
|
|
54
|
-
logCollector?.push('self_update_gateway_restarted', 'info', 'Gateway restarted after openclaw stack update', {});
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
logCollector?.push('self_update_gateway_restart_failed', 'warn', `Gateway restart after openclaw stack update failed: ${toErrorMessage(err)}`, { error: toErrorMessage(err) });
|
|
58
|
-
}
|
|
59
|
-
}
|
|
36
|
+
const stack = await runOpenclawStackUpdate({
|
|
37
|
+
version: payload.openclaw.version,
|
|
38
|
+
plugins: payload.openclaw.plugins,
|
|
39
|
+
eventPrefix: 'self_update',
|
|
40
|
+
});
|
|
41
|
+
runtimeChanged = stack.runtimeChanged;
|
|
42
|
+
pluginSummary = stack.pluginSummary;
|
|
43
|
+
gatewayRestarted = stack.gatewayRestarted;
|
|
60
44
|
}
|
|
61
45
|
// 2) agent-controller swap LAST. Note: we run `npm install -g` here but
|
|
62
46
|
// do NOT remove the lockfile or sleep — the WS handler defers that
|
|
@@ -102,13 +86,12 @@ async function fetchRuntimeTargets() {
|
|
|
102
86
|
if (!backendUrl || !token)
|
|
103
87
|
return null;
|
|
104
88
|
try {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
const data = (await res.json());
|
|
89
|
+
// Through AgentApi rather than a hand-rolled fetch, so this request shows
|
|
90
|
+
// up in debugLog tracing like every other backend call. The swallow is
|
|
91
|
+
// deliberate: any failure (401, 500, network, empty body) means "no
|
|
92
|
+
// explicit targets", and the caller falls back to the channel-based path.
|
|
93
|
+
const api = createAgentApi(backendUrl, token);
|
|
94
|
+
const data = (await api.get('/api/agent/runtime-targets'));
|
|
112
95
|
if (!data || (!data.openclaw && !data.agentController))
|
|
113
96
|
return null;
|
|
114
97
|
return data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"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"}
|