@openclaw-cloud/agent-controller 1.0.0-beta.2 → 1.0.0-beta.21
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 +11 -2
- 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 +9 -34
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/channel-server.d.ts +17 -0
- package/dist/commands/channel-server.js +71 -0
- package/dist/commands/channel-server.js.map +1 -0
- 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 +20 -4
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +39 -0
- package/dist/config.js +101 -0
- package/dist/config.js.map +1 -0
- package/dist/connection.d.ts +2 -0
- package/dist/connection.js +38 -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 +4 -0
- package/dist/handlers/board-handler.js +127 -100
- package/dist/handlers/board-handler.js.map +1 -1
- package/dist/handlers/chat.d.ts +17 -0
- package/dist/handlers/chat.js +187 -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 +13 -0
- package/dist/handlers/memory.js +128 -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 +140 -29
- package/dist/index.js.map +1 -1
- package/dist/mcp-client.js.map +1 -1
- 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/claude-code/channel-server.d.ts +60 -0
- package/dist/providers/claude-code/channel-server.js +155 -0
- package/dist/providers/claude-code/channel-server.js.map +1 -0
- package/dist/providers/claude-code/index.d.ts +68 -0
- package/dist/providers/claude-code/index.js +280 -0
- package/dist/providers/claude-code/index.js.map +1 -0
- package/dist/providers/claude-code/login-flow.d.ts +26 -0
- package/dist/providers/claude-code/login-flow.js +135 -0
- package/dist/providers/claude-code/login-flow.js.map +1 -0
- package/dist/providers/claude-code/settings-writer.d.ts +29 -0
- package/dist/providers/claude-code/settings-writer.js +94 -0
- package/dist/providers/claude-code/settings-writer.js.map +1 -0
- package/dist/providers/claude-code/socket-bridge.d.ts +98 -0
- package/dist/providers/claude-code/socket-bridge.js +301 -0
- package/dist/providers/claude-code/socket-bridge.js.map +1 -0
- package/dist/providers/claude-code/spawn-claude.d.ts +48 -0
- package/dist/providers/claude-code/spawn-claude.js +108 -0
- package/dist/providers/claude-code/spawn-claude.js.map +1 -0
- package/dist/providers/index.d.ts +4 -2
- package/dist/providers/index.js +16 -0
- 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/types.d.ts +1 -1
- package/dist/utils/agent-controller-bin.d.ts +8 -0
- package/dist/utils/agent-controller-bin.js +58 -0
- package/dist/utils/agent-controller-bin.js.map +1 -0
- package/dist/utils/anthropic-auth.d.ts +25 -0
- package/dist/utils/anthropic-auth.js +13 -0
- package/dist/utils/anthropic-auth.js.map +1 -0
- package/dist/utils/apply-config.d.ts +28 -0
- package/dist/utils/apply-config.js +234 -4
- package/dist/utils/apply-config.js.map +1 -1
- package/dist/utils/claude-env.js +20 -9
- package/dist/utils/claude-env.js.map +1 -1
- package/dist/utils/config-merge-paths.d.ts +21 -0
- package/dist/utils/config-merge-paths.js +27 -0
- package/dist/utils/config-merge-paths.js.map +1 -0
- 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/utils/write-workspace-files.d.ts +15 -0
- package/dist/utils/write-workspace-files.js +48 -0
- package/dist/utils/write-workspace-files.js.map +1 -0
- package/dist/workspace.js +4 -5
- package/dist/workspace.js.map +1 -1
- package/package.json +24 -3
package/bin/agent-controller.js
CHANGED
|
@@ -28,7 +28,7 @@ if (command === '--version' || command === '-v') {
|
|
|
28
28
|
} else if (command === 'heartbeat') {
|
|
29
29
|
const { runHeartbeat } = await import('../dist/commands/heartbeat-cli.js');
|
|
30
30
|
await runHeartbeat();
|
|
31
|
-
} else if (command === 'bootstrap') {
|
|
31
|
+
} else if (command === 'bootstrap' || command === 'update-config' || command === 'update_config') {
|
|
32
32
|
const { bootstrap } = await import('../dist/commands/bootstrap.js');
|
|
33
33
|
await bootstrap();
|
|
34
34
|
} else if (command === 'install-deps' || command === 'install_deps') {
|
|
@@ -40,7 +40,16 @@ if (command === '--version' || command === '-v') {
|
|
|
40
40
|
} else if (command === 'uninstall') {
|
|
41
41
|
const { uninstall } = await import('../dist/commands/uninstall.js');
|
|
42
42
|
await uninstall();
|
|
43
|
-
} else {
|
|
43
|
+
} else if (command === 'channel-server' || command === 'channel_server') {
|
|
44
|
+
const { runChannelServer } = await import('../dist/commands/channel-server.js');
|
|
45
|
+
await runChannelServer(process.argv.slice(3));
|
|
46
|
+
} else if (command === undefined) {
|
|
44
47
|
const { main } = await import('../dist/index.js');
|
|
45
48
|
main();
|
|
49
|
+
} else {
|
|
50
|
+
console.error(`Unknown command: ${command}`);
|
|
51
|
+
console.error(
|
|
52
|
+
'Available: --version, self-update, backup, knowledge-sync, heartbeat, bootstrap, update-config, install-deps, install, uninstall, channel-server',
|
|
53
|
+
);
|
|
54
|
+
process.exit(2);
|
|
46
55
|
}
|
package/dist/api.d.ts
CHANGED
|
@@ -30,6 +30,10 @@ export interface AgentApi {
|
|
|
30
30
|
filesUpdated: number;
|
|
31
31
|
}>;
|
|
32
32
|
agentBootstrap(agentId: string): Promise<BootstrapResult>;
|
|
33
|
+
postMemoryDelta(agentId: string, delta: {
|
|
34
|
+
action: string;
|
|
35
|
+
data: unknown;
|
|
36
|
+
}): Promise<void>;
|
|
33
37
|
uploadRaw(url: string, body: NodeJS.ReadableStream | Buffer | Uint8Array, contentType: string, size: number, timeoutMs?: number): Promise<void>;
|
|
34
38
|
}
|
|
35
39
|
export declare function createAgentApi(backendUrl: string, agentToken: string): AgentApi;
|
package/dist/api.js
CHANGED
|
@@ -69,7 +69,7 @@ export function createAgentApi(backendUrl, agentToken) {
|
|
|
69
69
|
const body = await res.text().catch(() => '');
|
|
70
70
|
throw new Error(`HTTP ${res.status}: ${body}`);
|
|
71
71
|
}
|
|
72
|
-
const data = await res.json();
|
|
72
|
+
const data = (await res.json());
|
|
73
73
|
return data.token;
|
|
74
74
|
},
|
|
75
75
|
async fetchSubscriptionToken(agentId, channels) {
|
|
@@ -78,7 +78,7 @@ export function createAgentApi(backendUrl, agentToken) {
|
|
|
78
78
|
const body = await res.text().catch(() => '');
|
|
79
79
|
throw new Error(`HTTP ${res.status}: ${body}`);
|
|
80
80
|
}
|
|
81
|
-
const data = await res.json();
|
|
81
|
+
const data = (await res.json());
|
|
82
82
|
return data.subscriptions;
|
|
83
83
|
},
|
|
84
84
|
// --- Backup ---
|
|
@@ -115,6 +115,14 @@ export function createAgentApi(backendUrl, agentToken) {
|
|
|
115
115
|
}
|
|
116
116
|
return res.json();
|
|
117
117
|
},
|
|
118
|
+
// --- Memory delta sync ---
|
|
119
|
+
async postMemoryDelta(agentId, delta) {
|
|
120
|
+
const res = await request('POST', '/api/internal/agent-memory-event', { agentId, delta });
|
|
121
|
+
if (!res.ok) {
|
|
122
|
+
const text = await res.text().catch(() => '');
|
|
123
|
+
throw new Error(`Memory delta push failed: ${res.status} ${text}`);
|
|
124
|
+
}
|
|
125
|
+
},
|
|
118
126
|
// --- Raw upload (S3 presigned or backend API fallback) ---
|
|
119
127
|
async uploadRaw(url, body, contentType, size, timeoutMs = TIMEOUT_UPLOAD) {
|
|
120
128
|
const start = Date.now();
|
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,9 +1,10 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import os from 'node:os';
|
|
4
3
|
import { createAgentApi } from '../api.js';
|
|
5
4
|
import { getBackendUrl, requireEnv } from '../utils/env.js';
|
|
6
5
|
import { writeClaudeEnv } from '../utils/claude-env.js';
|
|
6
|
+
import { writeWorkspaceFiles } from '../utils/write-workspace-files.js';
|
|
7
|
+
import { config } from '../config.js';
|
|
7
8
|
export async function writeSkillFiles(skills, workspaceDir) {
|
|
8
9
|
const fileNames = Object.keys(skills);
|
|
9
10
|
if (fileNames.length === 0)
|
|
@@ -28,9 +29,9 @@ export async function writeSkillFiles(skills, workspaceDir) {
|
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
// Log deployed skill names
|
|
31
|
-
const skillNames = [
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
const skillNames = [
|
|
33
|
+
...new Set(fileNames.filter((f) => f.startsWith('.agents/skills/')).map((f) => f.split('/')[2])),
|
|
34
|
+
];
|
|
34
35
|
if (skillNames.length > 0) {
|
|
35
36
|
console.log(` ✓ skills deployed: ${skillNames.join(', ')}`);
|
|
36
37
|
}
|
|
@@ -39,7 +40,7 @@ export async function bootstrap() {
|
|
|
39
40
|
const backendUrl = getBackendUrl();
|
|
40
41
|
const agentToken = requireEnv('AGENT_TOKEN');
|
|
41
42
|
const agentId = requireEnv('AGENT_ID');
|
|
42
|
-
const openclawDir =
|
|
43
|
+
const openclawDir = config.stateDir;
|
|
43
44
|
const workspaceDir = path.join(openclawDir, 'workspace');
|
|
44
45
|
console.log(`Bootstrapping agent ${agentId}...`);
|
|
45
46
|
console.log(` Backend: ${backendUrl}`);
|
|
@@ -47,7 +48,7 @@ export async function bootstrap() {
|
|
|
47
48
|
const api = createAgentApi(backendUrl, agentToken);
|
|
48
49
|
let data;
|
|
49
50
|
try {
|
|
50
|
-
data = await api.agentBootstrap(agentId);
|
|
51
|
+
data = (await api.agentBootstrap(agentId));
|
|
51
52
|
}
|
|
52
53
|
catch (err) {
|
|
53
54
|
console.error('Bootstrap failed:', err instanceof Error ? err.message : err);
|
|
@@ -62,34 +63,8 @@ export async function bootstrap() {
|
|
|
62
63
|
console.log(` ✓ openclaw.json written`);
|
|
63
64
|
}
|
|
64
65
|
// Write workspace files
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (fileNames.length > 0) {
|
|
68
|
-
await fs.mkdir(workspaceDir, { recursive: true });
|
|
69
|
-
for (const [filePath, content] of Object.entries(files)) {
|
|
70
|
-
const fullPath = path.join(workspaceDir, filePath);
|
|
71
|
-
await fs.mkdir(path.dirname(fullPath), { recursive: true });
|
|
72
|
-
try {
|
|
73
|
-
await fs.writeFile(fullPath, content);
|
|
74
|
-
console.log(` ✓ ${filePath}`);
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
console.error(` ✗ ${filePath}: ${err instanceof Error ? err.message : err}`);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// Make .sh files executable
|
|
81
|
-
for (const filePath of fileNames) {
|
|
82
|
-
if (filePath.endsWith('.sh')) {
|
|
83
|
-
const fullPath = path.join(workspaceDir, filePath);
|
|
84
|
-
await fs.chmod(fullPath, 0o755);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// Summary for deployed skills
|
|
88
|
-
const skillFiles = fileNames.filter(f => f.startsWith('.agents/skills/'));
|
|
89
|
-
if (skillFiles.length > 0) {
|
|
90
|
-
const skills = [...new Set(skillFiles.map(f => f.split('/')[2]))];
|
|
91
|
-
console.log(` ✓ skills deployed: ${skills.join(', ')}`);
|
|
92
|
-
}
|
|
66
|
+
if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
|
|
67
|
+
await writeWorkspaceFiles(data.workspaceFiles, workspaceDir);
|
|
93
68
|
}
|
|
94
69
|
// Write skills
|
|
95
70
|
const skills = data.skills ?? {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI: `agent-controller channel-server`
|
|
3
|
+
*
|
|
4
|
+
* Thin worker subprocess spawned by Claude Code as a stdio MCP server. It:
|
|
5
|
+
* 1. Connects to the main agent-controller via the Unix domain socket at
|
|
6
|
+
* `~/.openclaw/claude-channel.sock` (retries for up to 30s).
|
|
7
|
+
* 2. Sends `{op:"hello",pid}` once connected.
|
|
8
|
+
* 3. Starts a `ClaudeChannelServer` on stdio so Claude can call its reply
|
|
9
|
+
* and edit_message tools.
|
|
10
|
+
* 4. Forwards worker → main: reply/edit tool calls as JSON lines.
|
|
11
|
+
* 5. Forwards main → worker: push ops as MCP notifications to Claude.
|
|
12
|
+
* 6. Exits cleanly when the bridge socket closes.
|
|
13
|
+
*
|
|
14
|
+
* `logCollector` is NOT available here (runs as a detached subprocess);
|
|
15
|
+
* diagnostics go to stderr only.
|
|
16
|
+
*/
|
|
17
|
+
export declare function runChannelServer(argv?: string[]): Promise<void>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ClaudeChannelServer } from '../providers/claude-code/channel-server.js';
|
|
2
|
+
import { ChannelBridgeClient, DEFAULT_SOCKET_PATH, } from '../providers/claude-code/socket-bridge.js';
|
|
3
|
+
/**
|
|
4
|
+
* CLI: `agent-controller channel-server`
|
|
5
|
+
*
|
|
6
|
+
* Thin worker subprocess spawned by Claude Code as a stdio MCP server. It:
|
|
7
|
+
* 1. Connects to the main agent-controller via the Unix domain socket at
|
|
8
|
+
* `~/.openclaw/claude-channel.sock` (retries for up to 30s).
|
|
9
|
+
* 2. Sends `{op:"hello",pid}` once connected.
|
|
10
|
+
* 3. Starts a `ClaudeChannelServer` on stdio so Claude can call its reply
|
|
11
|
+
* and edit_message tools.
|
|
12
|
+
* 4. Forwards worker → main: reply/edit tool calls as JSON lines.
|
|
13
|
+
* 5. Forwards main → worker: push ops as MCP notifications to Claude.
|
|
14
|
+
* 6. Exits cleanly when the bridge socket closes.
|
|
15
|
+
*
|
|
16
|
+
* `logCollector` is NOT available here (runs as a detached subprocess);
|
|
17
|
+
* diagnostics go to stderr only.
|
|
18
|
+
*/
|
|
19
|
+
export async function runChannelServer(argv = []) {
|
|
20
|
+
const socketPath = parseFlag(argv, '--socket-path') ?? DEFAULT_SOCKET_PATH;
|
|
21
|
+
const maxWaitMs = Number(parseFlag(argv, '--max-wait-ms') ?? '30000');
|
|
22
|
+
const bridge = new ChannelBridgeClient({ socketPath, maxWaitMs });
|
|
23
|
+
try {
|
|
24
|
+
await bridge.connect();
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
process.stderr.write(`[channel-server] failed to connect to ${socketPath}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
bridge.sendHello(process.pid);
|
|
31
|
+
const channel = new ClaudeChannelServer({ name: 'agent-controller' });
|
|
32
|
+
// main → worker: forward inbound chat messages to Claude.
|
|
33
|
+
bridge.on('push', (content, meta) => {
|
|
34
|
+
channel.pushChatMessage(content, meta).catch((err) => {
|
|
35
|
+
process.stderr.write(`[channel-server] pushChatMessage failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
// worker → main: forward Claude's reply/edit tool calls.
|
|
39
|
+
channel.onReply((reply, tool) => {
|
|
40
|
+
const meta = {
|
|
41
|
+
chat_id: undefined,
|
|
42
|
+
message_id: reply.reply_to,
|
|
43
|
+
tool,
|
|
44
|
+
};
|
|
45
|
+
bridge.sendReply(reply.text, meta, tool);
|
|
46
|
+
});
|
|
47
|
+
const shutdown = () => {
|
|
48
|
+
try {
|
|
49
|
+
bridge.close();
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
/* ignore */
|
|
53
|
+
}
|
|
54
|
+
channel.stop().finally(() => process.exit(0));
|
|
55
|
+
};
|
|
56
|
+
bridge.on('close', shutdown);
|
|
57
|
+
bridge.on('error', (err) => {
|
|
58
|
+
process.stderr.write(`[channel-server] bridge error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
59
|
+
});
|
|
60
|
+
process.on('SIGTERM', shutdown);
|
|
61
|
+
process.on('SIGINT', shutdown);
|
|
62
|
+
// Attach to stdio — this blocks on stdin.
|
|
63
|
+
await channel.start();
|
|
64
|
+
}
|
|
65
|
+
function parseFlag(argv, name) {
|
|
66
|
+
const idx = argv.indexOf(name);
|
|
67
|
+
if (idx < 0 || idx + 1 >= argv.length)
|
|
68
|
+
return undefined;
|
|
69
|
+
return argv[idx + 1];
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=channel-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-server.js","sourceRoot":"","sources":["../../src/commands/channel-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,14 @@ import { fileURLToPath } from 'node:url';
|
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
4
|
import { createAgentApi } from '../api.js';
|
|
5
5
|
import { publishHeartbeat } from '../heartbeat.js';
|
|
6
|
+
import { config } from '../config.js';
|
|
6
7
|
const require = createRequire(import.meta.url);
|
|
7
8
|
const pkg = require(join(dirname(fileURLToPath(import.meta.url)), '../../package.json'));
|
|
8
9
|
export async function runHeartbeat() {
|
|
9
|
-
const centrifugoUrl =
|
|
10
|
-
const agentToken =
|
|
11
|
-
const agentId =
|
|
12
|
-
const backendUrl =
|
|
10
|
+
const centrifugoUrl = config.centrifugoUrl;
|
|
11
|
+
const agentToken = config.agentToken;
|
|
12
|
+
const agentId = config.agentId;
|
|
13
|
+
const backendUrl = config.backendUrl;
|
|
13
14
|
const missing = [];
|
|
14
15
|
if (!centrifugoUrl)
|
|
15
16
|
missing.push('CENTRIFUGO_URL');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat-cli.js","sourceRoot":"","sources":["../../src/commands/heartbeat-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"heartbeat-cli.js","sourceRoot":"","sources":["../../src/commands/heartbeat-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAEtF,CAAC;AAEF,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,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -20,7 +20,7 @@ export async function installDeps() {
|
|
|
20
20
|
const api = createAgentApi(backendUrl, agentToken);
|
|
21
21
|
let data;
|
|
22
22
|
try {
|
|
23
|
-
data = await api.agentBootstrap(agentId);
|
|
23
|
+
data = (await api.agentBootstrap(agentId));
|
|
24
24
|
}
|
|
25
25
|
catch (err) {
|
|
26
26
|
console.error('Failed to fetch bootstrap data:', err instanceof Error ? err.message : err);
|
|
@@ -40,26 +40,36 @@ export async function installDeps() {
|
|
|
40
40
|
// Install npm packages (parallel)
|
|
41
41
|
if (npmPkgs.length > 0) {
|
|
42
42
|
console.log(`Installing npm packages: ${npmPkgs.join(', ')}`);
|
|
43
|
-
await Promise.allSettled(npmPkgs.map(pkg => {
|
|
43
|
+
await Promise.allSettled(npmPkgs.map((pkg) => {
|
|
44
44
|
const remaining = Math.max(deadline - Date.now(), 1000);
|
|
45
45
|
return execCmd(`npm install -g ${pkg}`, remaining)
|
|
46
|
-
.then(() => {
|
|
47
|
-
|
|
46
|
+
.then(() => {
|
|
47
|
+
console.log(` ✓ npm: ${pkg}`);
|
|
48
|
+
})
|
|
49
|
+
.catch((err) => {
|
|
50
|
+
errors.push(`npm ${pkg}: ${err.message}`);
|
|
51
|
+
console.error(` ✗ npm: ${pkg}`);
|
|
52
|
+
});
|
|
48
53
|
}));
|
|
49
54
|
}
|
|
50
55
|
// Install pip packages (parallel)
|
|
51
56
|
if (pipPkgs.length > 0) {
|
|
52
57
|
console.log(`Installing pip packages: ${pipPkgs.join(', ')}`);
|
|
53
|
-
await Promise.allSettled(pipPkgs.map(pkg => {
|
|
58
|
+
await Promise.allSettled(pipPkgs.map((pkg) => {
|
|
54
59
|
const remaining = Math.max(deadline - Date.now(), 1000);
|
|
55
60
|
return execCmd(`pip install ${pkg}`, remaining)
|
|
56
|
-
.then(() => {
|
|
57
|
-
|
|
61
|
+
.then(() => {
|
|
62
|
+
console.log(` ✓ pip: ${pkg}`);
|
|
63
|
+
})
|
|
64
|
+
.catch((err) => {
|
|
65
|
+
errors.push(`pip ${pkg}: ${err.message}`);
|
|
66
|
+
console.error(` ✗ pip: ${pkg}`);
|
|
67
|
+
});
|
|
58
68
|
}));
|
|
59
69
|
}
|
|
60
70
|
if (errors.length > 0) {
|
|
61
71
|
console.error(`\n${errors.length} package(s) failed to install:`);
|
|
62
|
-
errors.forEach(e => console.error(` - ${e}`));
|
|
72
|
+
errors.forEach((e) => console.error(` - ${e}`));
|
|
63
73
|
// Don't exit(1) — partial install is better than no agent
|
|
64
74
|
}
|
|
65
75
|
console.log('Dependency installation complete.');
|
|
@@ -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,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,kBAAkB,GAAG,OAAO,CAAC,CAAC,cAAc;AAElD,SAAS,OAAO,CAAC,GAAW,EAAE,SAAiB;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC1D,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;;gBAC/D,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,KAAK,CAAC,CAAC;IAE/D,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEnD,IAAI,IAAuD,CAAC;IAC5D,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,OAAO,CAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"install-deps.js","sourceRoot":"","sources":["../../src/commands/install-deps.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { createInterface } from 'node:readline';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import os from 'node:os';
|
|
5
4
|
import { saveEnvFile } from '../config-file.js';
|
|
5
|
+
import { config } from '../config.js';
|
|
6
6
|
/**
|
|
7
7
|
* Try to read the gateway auth token from the local OpenClaw config.
|
|
8
8
|
* Path: ~/.openclaw/openclaw.json → gateway.auth.token
|
|
9
9
|
*/
|
|
10
10
|
async function detectGatewayToken() {
|
|
11
|
-
const stateDir =
|
|
11
|
+
const stateDir = config.stateDir;
|
|
12
12
|
const configPath = path.join(stateDir, 'openclaw.json');
|
|
13
13
|
try {
|
|
14
14
|
const raw = await fs.readFile(configPath, 'utf-8');
|
|
@@ -51,7 +51,7 @@ export async function install() {
|
|
|
51
51
|
process.exit(1);
|
|
52
52
|
}
|
|
53
53
|
// Detect OPENCLAW_GATEWAY_TOKEN from local OpenClaw config or env
|
|
54
|
-
let gatewayToken =
|
|
54
|
+
let gatewayToken = config.gatewayToken || null;
|
|
55
55
|
if (!gatewayToken) {
|
|
56
56
|
gatewayToken = await detectGatewayToken();
|
|
57
57
|
if (gatewayToken) {
|
|
@@ -61,24 +61,24 @@ export async function install() {
|
|
|
61
61
|
else {
|
|
62
62
|
console.log(' OPENCLAW_GATEWAY_TOKEN: *** (from environment)');
|
|
63
63
|
}
|
|
64
|
-
const
|
|
64
|
+
const installConfig = { centrifugoUrl, agentToken, agentId, backendInternalUrl, gatewayToken };
|
|
65
65
|
// Save env vars for future CLI usage (backup, knowledge_sync, etc.)
|
|
66
|
-
await saveEnvFile(
|
|
66
|
+
await saveEnvFile(installConfig);
|
|
67
67
|
const platform = process.platform;
|
|
68
68
|
console.log('');
|
|
69
69
|
console.log(`Detected platform: ${platform}`);
|
|
70
70
|
console.log('');
|
|
71
71
|
if (platform === 'darwin') {
|
|
72
72
|
const { installMacOS } = await import('../platform/macos.js');
|
|
73
|
-
await installMacOS(
|
|
73
|
+
await installMacOS(installConfig);
|
|
74
74
|
}
|
|
75
75
|
else if (platform === 'linux') {
|
|
76
76
|
const { installLinux } = await import('../platform/linux.js');
|
|
77
|
-
await installLinux(
|
|
77
|
+
await installLinux(installConfig);
|
|
78
78
|
}
|
|
79
79
|
else if (platform === 'win32') {
|
|
80
80
|
const { installWindows } = await import('../platform/windows.js');
|
|
81
|
-
await installWindows(
|
|
81
|
+
await installWindows(installConfig);
|
|
82
82
|
}
|
|
83
83
|
else {
|
|
84
84
|
console.error(`Unsupported platform: ${platform}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
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 { config } from '../config.js';
|
|
4
5
|
const PACKAGE_NAME = '@openclaw-cloud/agent-controller';
|
|
5
6
|
async function fixNpmPermissions() {
|
|
6
|
-
const home =
|
|
7
|
+
const home = config.home;
|
|
7
8
|
console.log('Fixing npm permissions (root-owned files from previous installs)...');
|
|
8
9
|
// Fix both cache (.npm) and global prefix (.npm-global)
|
|
9
10
|
await execAsync(`sudo chown -R $(id -u):$(id -g) "${home}/.npm" "${home}/.npm-global" 2>/dev/null || true`, 30_000);
|
|
@@ -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;
|
|
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;AAEtC,MAAM,YAAY,GAAG,kCAAkC,CAAC;AAExD,KAAK,UAAU,iBAAiB;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,wDAAwD;IACxD,MAAM,SAAS,CACb,oCAAoC,IAAI,WAAW,IAAI,mCAAmC,EAC1F,MAAM,CACP,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAI,EAAoB,EAAE,KAAa;IACnE,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,MAAM,iBAAiB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,OAAO,MAAM,EAAE,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CACX,GAAG,KAAK,+BAA+B,EACvC,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CACxD,CAAC;gBACF,MAAM,QAAQ,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5E,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,cAAsB;IACrD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,cAAc,cAAc,OAAO,GAAG,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,MAAM,eAAe,CACzC,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,YAAY,IAAI,GAAG,UAAU,EAAE,MAAM,CAAC,EAClE,sBAAsB,CACvB,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,aAAa,EAAE,CAAC,CAAC;IAE1D,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,cAAc,OAAO,aAAa,KAAK,CAAC,CAAC;IACtE,MAAM,eAAe,CACnB,GAAG,EAAE,CAAC,SAAS,CAAC,kBAAkB,YAAY,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,EACjE,gBAAgB,CACjB,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,2BAA2B,aAAa,8CAA8C,CACvF,CAAC;IACF,cAAc,EAAE,CAAC;IACjB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC"}
|
package/dist/config-file.js
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
|
-
import os from 'node:os';
|
|
3
2
|
import path from 'node:path';
|
|
4
|
-
|
|
3
|
+
import { config } from './config.js';
|
|
4
|
+
const ENV_KEYS = [
|
|
5
|
+
'CENTRIFUGO_URL',
|
|
6
|
+
'AGENT_TOKEN',
|
|
7
|
+
'AGENT_ID',
|
|
8
|
+
'BACKEND_INTERNAL_URL',
|
|
9
|
+
'BACKEND_URL',
|
|
10
|
+
'USER_ID',
|
|
11
|
+
'WORKSPACE_ID',
|
|
12
|
+
'OPENCLAW_GATEWAY_TOKEN',
|
|
13
|
+
'AC_RELEASE_CHANNEL',
|
|
14
|
+
'AC_DEBUG',
|
|
15
|
+
'AGENT_PROVIDER',
|
|
16
|
+
'ANTHROPIC_API_KEY',
|
|
17
|
+
'ANTHROPIC_AUTH_TOKEN',
|
|
18
|
+
'CLAUDE_CODE_OAUTH_TOKEN',
|
|
19
|
+
'CLAUDE_WORKSPACE_DIR',
|
|
20
|
+
'CLAUDE_MD_CONTENT',
|
|
21
|
+
];
|
|
5
22
|
/** VM provisioner writes env here */
|
|
6
23
|
export const VM_ENV_PATH = '/opt/openclaw-cloud/agent-controller/.env';
|
|
7
24
|
export function getConfigDir() {
|
|
8
|
-
|
|
9
|
-
return path.join(stateDir, 'agent-controller');
|
|
25
|
+
return path.join(config.stateDir, 'agent-controller');
|
|
10
26
|
}
|
|
11
27
|
export function getConfigPath() {
|
|
12
28
|
return path.join(getConfigDir(), 'agent.env');
|
package/dist/config-file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare const config: {
|
|
2
|
+
/** Base state directory — ~/.openclaw or OPENCLAW_STATE_DIR */
|
|
3
|
+
readonly stateDir: string;
|
|
4
|
+
/** Debug mode (AC_DEBUG or DEBUG) */
|
|
5
|
+
readonly debug: boolean;
|
|
6
|
+
/** Agent UUID (required for main entry, optional in CLI) */
|
|
7
|
+
readonly agentId: string | undefined;
|
|
8
|
+
/** Bearer token for backend API */
|
|
9
|
+
readonly agentToken: string | undefined;
|
|
10
|
+
/** Centrifugo WS endpoint */
|
|
11
|
+
readonly centrifugoUrl: string | undefined;
|
|
12
|
+
/** Backend API URL — BACKEND_URL takes priority, fallback to BACKEND_INTERNAL_URL */
|
|
13
|
+
readonly backendUrl: string | undefined;
|
|
14
|
+
/** Agent provider type */
|
|
15
|
+
readonly agentProvider: string;
|
|
16
|
+
/** OpenClaw Gateway WS URL */
|
|
17
|
+
readonly gatewayWsUrl: string;
|
|
18
|
+
/** OpenClaw Gateway auth token */
|
|
19
|
+
readonly gatewayToken: string;
|
|
20
|
+
/** Release channel — beta or stable */
|
|
21
|
+
readonly releaseChannel: "beta" | "stable";
|
|
22
|
+
/** Workspace directory override */
|
|
23
|
+
readonly workspaceDir: string | undefined;
|
|
24
|
+
/** Deploy type — 'vm' or undefined */
|
|
25
|
+
readonly agentDeployType: string | undefined;
|
|
26
|
+
/** HOME directory */
|
|
27
|
+
readonly home: string;
|
|
28
|
+
/** Anthropic API key (claude-code provider) */
|
|
29
|
+
readonly anthropicApiKey: string | undefined;
|
|
30
|
+
/** Anthropic auth token — alternative to API key (claude-code provider) */
|
|
31
|
+
readonly anthropicAuthToken: string | undefined;
|
|
32
|
+
/** Claude Code OAuth token — issued by `claude login` (claude-code provider) */
|
|
33
|
+
readonly claudeCodeOauthToken: string | undefined;
|
|
34
|
+
/** Workspace directory for the claude-code provider */
|
|
35
|
+
readonly claudeWorkspaceDir: string;
|
|
36
|
+
/** Optional CLAUDE.md content for the claude-code workspace (set by bootstrap). */
|
|
37
|
+
readonly claudeMdContent: string | undefined;
|
|
38
|
+
};
|
|
39
|
+
export declare function requireConfig<K extends keyof typeof config>(key: K): NonNullable<(typeof config)[K]>;
|