@openclaw-cloud/agent-controller 3.1.0 → 3.1.2
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/api.d.ts +7 -0
- package/dist/api.js.map +1 -1
- 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.d.ts +10 -1
- package/dist/commands/bootstrap.js +25 -73
- 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 +4 -8
- 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 +7 -6
- package/dist/commands/update-skills.js.map +1 -1
- package/dist/config-file.d.ts +7 -0
- package/dist/config-file.js +22 -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/memory.d.ts +11 -1
- package/dist/handlers/memory.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 +4 -13
- 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 +57 -117
- 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/gateway-adapter.js +2 -0
- package/dist/providers/openclaw/gateway-adapter.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 +38 -6
- package/dist/utils/apply-config.js +118 -69
- package/dist/utils/apply-config.js.map +1 -1
- package/dist/utils/claude-env.d.ts +6 -0
- package/dist/utils/claude-env.js +29 -28
- package/dist/utils/claude-env.js.map +1 -1
- package/dist/utils/deploy-type.d.ts +16 -0
- package/dist/utils/deploy-type.js +34 -0
- package/dist/utils/deploy-type.js.map +1 -0
- 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/exec.d.ts +9 -0
- package/dist/utils/exec.js +12 -1
- package/dist/utils/exec.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/knowledge-graph.d.ts +13 -1
- package/dist/utils/knowledge-graph.js +75 -29
- package/dist/utils/knowledge-graph.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.d.ts +1 -1
- package/dist/utils/write-workspace-files.js +19 -7
- 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 +9 -4
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();
|
package/dist/api.d.ts
CHANGED
|
@@ -5,6 +5,13 @@ export interface BackupInitResult {
|
|
|
5
5
|
method: 'presigned' | 'api';
|
|
6
6
|
}
|
|
7
7
|
export interface BootstrapResult {
|
|
8
|
+
/**
|
|
9
|
+
* How this agent's machine was provisioned. Decides whether config files may
|
|
10
|
+
* be rewritten wholesale ('vm'/'k8s') or only merged into ('standalone' /
|
|
11
|
+
* 'external'). Absent on older backends → treated as unknown → third-party.
|
|
12
|
+
* See utils/deploy-type.ts.
|
|
13
|
+
*/
|
|
14
|
+
deploymentType?: 'k8s' | 'vm' | 'standalone' | 'external';
|
|
8
15
|
openclawConfig?: Record<string, unknown>;
|
|
9
16
|
workspaceFiles?: Record<string, string>;
|
|
10
17
|
skills?: Record<string, string>;
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE7C,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAC9E,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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,2 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `agent-controller bootstrap` (aliases: update-config / update_config).
|
|
3
|
+
*
|
|
4
|
+
* A thin wrapper over `fetchAndApplyConfig` — the single owner of "fetch
|
|
5
|
+
* bootstrap and apply". This command used to hand-roll its own apply, which
|
|
6
|
+
* drifted from the shared one: it wrote openclaw.json world-readable despite it
|
|
7
|
+
* holding provider API keys, bypassed WORKSPACE_DIR, never wrote
|
|
8
|
+
* auth-profiles.json or the VM .env, and rewrote ~/.claude/settings.json on any
|
|
9
|
+
* machine — which is how a developer laptop lost its Claude settings.
|
|
10
|
+
*/
|
|
2
11
|
export declare function bootstrap(): Promise<void>;
|
|
@@ -1,86 +1,38 @@
|
|
|
1
|
-
import fs from 'node:fs/promises';
|
|
2
|
-
import path from 'node:path';
|
|
3
1
|
import { createAgentApi } from '../api.js';
|
|
4
|
-
import { getBackendUrl
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { config } from '../config.js';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
console.error(` ✗ ${filePath}: ${err instanceof Error ? err.message : err}`);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
// Make .sh files executable
|
|
25
|
-
for (const filePath of fileNames) {
|
|
26
|
-
if (filePath.endsWith('.sh')) {
|
|
27
|
-
const fullPath = path.join(workspaceDir, filePath);
|
|
28
|
-
await fs.chmod(fullPath, 0o755);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
// Log deployed skill names
|
|
32
|
-
const skillNames = [
|
|
33
|
-
...new Set(fileNames.filter((f) => f.startsWith('.agents/skills/')).map((f) => f.split('/')[2])),
|
|
34
|
-
];
|
|
35
|
-
if (skillNames.length > 0) {
|
|
36
|
-
console.log(` ✓ skills deployed: ${skillNames.join(', ')}`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
2
|
+
import { getBackendUrl } from '../utils/env.js';
|
|
3
|
+
import { fetchAndApplyConfig } from '../utils/apply-config.js';
|
|
4
|
+
import { toErrorMessage } from '../utils/response.js';
|
|
5
|
+
import { config, requireConfig } from '../config.js';
|
|
6
|
+
import { getWorkspaceDir } from '../workspace.js';
|
|
7
|
+
/**
|
|
8
|
+
* `agent-controller bootstrap` (aliases: update-config / update_config).
|
|
9
|
+
*
|
|
10
|
+
* A thin wrapper over `fetchAndApplyConfig` — the single owner of "fetch
|
|
11
|
+
* bootstrap and apply". This command used to hand-roll its own apply, which
|
|
12
|
+
* drifted from the shared one: it wrote openclaw.json world-readable despite it
|
|
13
|
+
* holding provider API keys, bypassed WORKSPACE_DIR, never wrote
|
|
14
|
+
* auth-profiles.json or the VM .env, and rewrote ~/.claude/settings.json on any
|
|
15
|
+
* machine — which is how a developer laptop lost its Claude settings.
|
|
16
|
+
*/
|
|
39
17
|
export async function bootstrap() {
|
|
40
18
|
const backendUrl = getBackendUrl();
|
|
41
|
-
const agentToken =
|
|
42
|
-
const agentId =
|
|
43
|
-
const openclawDir = config.stateDir;
|
|
44
|
-
const workspaceDir = path.join(openclawDir, 'workspace');
|
|
19
|
+
const agentToken = requireConfig('agentToken');
|
|
20
|
+
const agentId = requireConfig('agentId');
|
|
45
21
|
console.log(`Bootstrapping agent ${agentId}...`);
|
|
46
22
|
console.log(` Backend: ${backendUrl}`);
|
|
47
|
-
console.log(` OpenClaw dir: ${
|
|
23
|
+
console.log(` OpenClaw dir: ${config.stateDir}`);
|
|
24
|
+
console.log(` Workspace: ${getWorkspaceDir()}`);
|
|
48
25
|
const api = createAgentApi(backendUrl, agentToken);
|
|
49
|
-
let data;
|
|
50
26
|
try {
|
|
51
|
-
|
|
27
|
+
const { managed } = await fetchAndApplyConfig(api, agentId);
|
|
28
|
+
console.log(managed
|
|
29
|
+
? 'Bootstrap complete (managed install — full config applied).'
|
|
30
|
+
: 'Bootstrap complete (third-party install — scoped merge only; ' +
|
|
31
|
+
'~/.claude/settings.json and .env left untouched).');
|
|
52
32
|
}
|
|
53
33
|
catch (err) {
|
|
54
|
-
console.error('Bootstrap failed:', err
|
|
34
|
+
console.error('Bootstrap failed:', toErrorMessage(err));
|
|
55
35
|
process.exit(1);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
// Write openclaw.json
|
|
59
|
-
if (data.openclawConfig) {
|
|
60
|
-
const configPath = path.join(openclawDir, 'openclaw.json');
|
|
61
|
-
await fs.mkdir(openclawDir, { recursive: true });
|
|
62
|
-
await fs.writeFile(configPath, JSON.stringify(data.openclawConfig, null, 2) + '\n');
|
|
63
|
-
console.log(` ✓ openclaw.json written`);
|
|
64
|
-
}
|
|
65
|
-
// Write workspace files
|
|
66
|
-
if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
|
|
67
|
-
await writeWorkspaceFiles(data.workspaceFiles, workspaceDir);
|
|
68
|
-
}
|
|
69
|
-
// Write skills
|
|
70
|
-
const skills = data.skills ?? {};
|
|
71
|
-
if (Object.keys(skills).length > 0) {
|
|
72
|
-
await writeSkillFiles(skills, workspaceDir);
|
|
73
|
-
}
|
|
74
|
-
// Write Claude CLI env files (settings.json, cc-notify.sh, auth-profiles.json)
|
|
75
|
-
if (data.envVars && Object.keys(data.envVars).length > 0) {
|
|
76
|
-
try {
|
|
77
|
-
await writeClaudeEnv(data.envVars);
|
|
78
|
-
console.log(' ✓ Claude env written');
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
console.error(' ✗ Claude env write failed:', err instanceof Error ? err.message : err);
|
|
82
|
-
}
|
|
83
36
|
}
|
|
84
|
-
console.log('Bootstrap complete.');
|
|
85
37
|
}
|
|
86
38
|
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,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"}
|