@rethinkingstudio/clawpilot 1.1.14-beta.2 → 1.1.14-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/local-handlers.js +31 -17
- package/dist/commands/local-handlers.js.map +1 -1
- package/dist/commands/openclaw-cli.d.ts +2 -0
- package/dist/commands/openclaw-cli.js +67 -1
- package/dist/commands/openclaw-cli.js.map +1 -1
- package/dist/commands/provider-config.js +13 -15
- package/dist/commands/provider-config.js.map +1 -1
- package/dist/config/config.js +8 -3
- package/dist/config/config.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/local-handlers.ts +31 -18
- package/src/commands/openclaw-cli.ts +79 -1
- package/src/commands/provider-config.ts +13 -16
- package/src/config/config.ts +8 -3
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { readdirSync, statSync, copyFileSync, existsSync, readFileSync } from "fs";
|
|
2
2
|
import { join } from "path";
|
|
3
|
-
import {
|
|
4
|
-
import { execOpenclaw } from "./openclaw-cli.js";
|
|
5
|
-
const OPENCLAW_DIR = join(homedir(), ".openclaw");
|
|
6
|
-
const OPENCLAW_CONFIG = join(OPENCLAW_DIR, "openclaw.json");
|
|
3
|
+
import { execOpenclaw, resolveOpenclawConfigPath, resolveOpenclawDir } from "./openclaw-cli.js";
|
|
7
4
|
// ---------------------------------------------------------------------------
|
|
8
5
|
export function handleLocalCommand(method) {
|
|
9
6
|
switch (method) {
|
|
@@ -12,6 +9,7 @@ export function handleLocalCommand(method) {
|
|
|
12
9
|
case "clawpilot.restore.config": return restoreConfig();
|
|
13
10
|
case "clawpilot.watchskill": return watchSkill();
|
|
14
11
|
case "clawpilot.doctor": return runDoctor();
|
|
12
|
+
case "clawpilot.doctor.fix": return runDoctorFix();
|
|
15
13
|
case "clawpilot.logs": return readLogs();
|
|
16
14
|
case "clawpilot.gateway.restart": return restartGateway();
|
|
17
15
|
case "clawpilot.version": return getOpenclawVersion();
|
|
@@ -79,14 +77,15 @@ function maskString(value) {
|
|
|
79
77
|
// ---------------------------------------------------------------------------
|
|
80
78
|
function readOpenclawConfig() {
|
|
81
79
|
try {
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
const configPath = resolveOpenclawConfigPath();
|
|
81
|
+
if (!existsSync(configPath)) {
|
|
82
|
+
return { ok: false, error: `openclaw config not found: ${configPath}` };
|
|
84
83
|
}
|
|
85
|
-
const raw = readFileSync(
|
|
84
|
+
const raw = readFileSync(configPath, "utf-8");
|
|
86
85
|
const parsed = JSON.parse(raw);
|
|
87
86
|
const masked = maskSensitive(parsed);
|
|
88
87
|
const output = JSON.stringify(masked, null, 2);
|
|
89
|
-
return { ok: true, payload: { output: `[${
|
|
88
|
+
return { ok: true, payload: { output: `[${configPath}]\n${output}` } };
|
|
90
89
|
}
|
|
91
90
|
catch (err) {
|
|
92
91
|
return { ok: false, error: String(err) };
|
|
@@ -128,13 +127,16 @@ function fixToolsPermissions202632() {
|
|
|
128
127
|
}
|
|
129
128
|
function restoreConfig() {
|
|
130
129
|
try {
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
const openclawDir = resolveOpenclawDir();
|
|
131
|
+
const configPath = resolveOpenclawConfigPath();
|
|
132
|
+
if (!existsSync(openclawDir)) {
|
|
133
|
+
return { ok: false, error: `openclaw config dir not found: ${openclawDir}` };
|
|
133
134
|
}
|
|
134
|
-
const
|
|
135
|
+
const configFileName = configPath.split("/").pop() ?? "openclaw.json";
|
|
136
|
+
const bakFiles = readdirSync(openclawDir)
|
|
135
137
|
.filter(name => name.startsWith("openclaw.json.bak"))
|
|
136
138
|
.map(name => {
|
|
137
|
-
const path = join(
|
|
139
|
+
const path = join(openclawDir, name);
|
|
138
140
|
return { name, path, mtime: statSync(path).mtimeMs };
|
|
139
141
|
})
|
|
140
142
|
.sort((a, b) => b.mtime - a.mtime);
|
|
@@ -142,9 +144,9 @@ function restoreConfig() {
|
|
|
142
144
|
return { ok: false, error: "No backup files found in ~/.openclaw/" };
|
|
143
145
|
}
|
|
144
146
|
const latest = bakFiles[0];
|
|
145
|
-
copyFileSync(latest.path,
|
|
147
|
+
copyFileSync(latest.path, configPath);
|
|
146
148
|
console.log(`[clawpilot] Config restored from ${latest.name}`);
|
|
147
|
-
return { ok: true, payload: { restoredFrom: latest.name } };
|
|
149
|
+
return { ok: true, payload: { restoredFrom: latest.name, config: configFileName } };
|
|
148
150
|
}
|
|
149
151
|
catch (err) {
|
|
150
152
|
return { ok: false, error: String(err) };
|
|
@@ -172,9 +174,21 @@ function runDoctor() {
|
|
|
172
174
|
return output ? { ok: true, payload: { output } } : { ok: false, error: String(err) };
|
|
173
175
|
}
|
|
174
176
|
}
|
|
177
|
+
function runDoctorFix() {
|
|
178
|
+
try {
|
|
179
|
+
const output = openclaw("doctor --fix").toString();
|
|
180
|
+
console.log("[clawpilot] doctor --fix completed");
|
|
181
|
+
return { ok: true, payload: { output } };
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
const output = execErrorOutput(err);
|
|
185
|
+
return output ? { ok: true, payload: { output } } : { ok: false, error: String(err) };
|
|
186
|
+
}
|
|
187
|
+
}
|
|
175
188
|
function readLogs() {
|
|
176
189
|
try {
|
|
177
|
-
const
|
|
190
|
+
const openclawDir = resolveOpenclawDir();
|
|
191
|
+
const logsDir = join(openclawDir, "logs");
|
|
178
192
|
let logFiles = [];
|
|
179
193
|
if (existsSync(logsDir)) {
|
|
180
194
|
logFiles = readdirSync(logsDir)
|
|
@@ -182,9 +196,9 @@ function readLogs() {
|
|
|
182
196
|
.map(f => join(logsDir, f));
|
|
183
197
|
}
|
|
184
198
|
else {
|
|
185
|
-
logFiles = readdirSync(
|
|
199
|
+
logFiles = readdirSync(openclawDir)
|
|
186
200
|
.filter(f => f.endsWith(".log"))
|
|
187
|
-
.map(f => join(
|
|
201
|
+
.map(f => join(openclawDir, f));
|
|
188
202
|
}
|
|
189
203
|
if (logFiles.length === 0) {
|
|
190
204
|
return { ok: true, payload: { output: "No log files found." } };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-handlers.js","sourceRoot":"","sources":["../../src/commands/local-handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-handlers.js","sourceRoot":"","sources":["../../src/commands/local-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export declare const SUBPROCESS_ENV: NodeJS.ProcessEnv;
|
|
2
2
|
export declare function resolveOpenclawBin(forceRefresh?: boolean): string;
|
|
3
3
|
export declare function execOpenclaw(args: string): Buffer;
|
|
4
|
+
export declare function resolveOpenclawConfigPath(forceRefresh?: boolean): string;
|
|
5
|
+
export declare function resolveOpenclawDir(forceRefresh?: boolean): string;
|
|
@@ -7,6 +7,9 @@ const NODE_BIN_DIR = dirname(process.execPath);
|
|
|
7
7
|
const KNOWN_BIN_DIRS = [
|
|
8
8
|
NODE_BIN_DIR,
|
|
9
9
|
join(HOME_DIR, ".npm-global", "bin"),
|
|
10
|
+
join(HOME_DIR, ".pnpm"),
|
|
11
|
+
join(HOME_DIR, "Library", "pnpm"),
|
|
12
|
+
join(HOME_DIR, ".config", "yarn", "global", "node_modules", ".bin"),
|
|
10
13
|
join(HOME_DIR, ".local", "bin"),
|
|
11
14
|
join(HOME_DIR, ".bun", "bin"),
|
|
12
15
|
join(HOME_DIR, ".volta", "bin"),
|
|
@@ -37,6 +40,7 @@ export const SUBPROCESS_ENV = {
|
|
|
37
40
|
]).join(":"),
|
|
38
41
|
};
|
|
39
42
|
let cachedOpenclawBin = null;
|
|
43
|
+
let cachedOpenclawConfigPath = null;
|
|
40
44
|
function findOpenclawInKnownPaths() {
|
|
41
45
|
for (const dir of KNOWN_BIN_DIRS) {
|
|
42
46
|
const candidate = join(dir, "openclaw");
|
|
@@ -66,6 +70,43 @@ function resolveViaShell() {
|
|
|
66
70
|
}
|
|
67
71
|
return null;
|
|
68
72
|
}
|
|
73
|
+
function readCommandOutput(command) {
|
|
74
|
+
const options = {
|
|
75
|
+
stdio: "pipe",
|
|
76
|
+
env: SUBPROCESS_ENV,
|
|
77
|
+
timeout: 3000,
|
|
78
|
+
encoding: "utf8",
|
|
79
|
+
};
|
|
80
|
+
try {
|
|
81
|
+
const output = execSync(command, options).trim();
|
|
82
|
+
return output || null;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function findOpenclawViaPackageManagers() {
|
|
89
|
+
const candidateDirs = [];
|
|
90
|
+
const npmPrefix = readCommandOutput("npm config get prefix");
|
|
91
|
+
if (npmPrefix && !/^undefined|null$/i.test(npmPrefix)) {
|
|
92
|
+
candidateDirs.push(join(npmPrefix, "bin"));
|
|
93
|
+
}
|
|
94
|
+
const pnpmGlobalBin = readCommandOutput("pnpm config get global-bin-dir");
|
|
95
|
+
if (pnpmGlobalBin && !/^undefined|null$/i.test(pnpmGlobalBin)) {
|
|
96
|
+
candidateDirs.push(pnpmGlobalBin);
|
|
97
|
+
}
|
|
98
|
+
const npmExec = readCommandOutput("npm exec --yes -- which openclaw");
|
|
99
|
+
if (npmExec && existsSync(npmExec)) {
|
|
100
|
+
return npmExec;
|
|
101
|
+
}
|
|
102
|
+
for (const dir of unique(candidateDirs)) {
|
|
103
|
+
const candidate = join(dir, "openclaw");
|
|
104
|
+
if (existsSync(candidate)) {
|
|
105
|
+
return candidate;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
69
110
|
export function resolveOpenclawBin(forceRefresh = false) {
|
|
70
111
|
if (!forceRefresh && cachedOpenclawBin && existsSync(cachedOpenclawBin)) {
|
|
71
112
|
return cachedOpenclawBin;
|
|
@@ -76,7 +117,7 @@ export function resolveOpenclawBin(forceRefresh = false) {
|
|
|
76
117
|
console.log(`[clawpilot] openclaw resolved from OPENCLAW_BIN: ${envOverride}`);
|
|
77
118
|
return envOverride;
|
|
78
119
|
}
|
|
79
|
-
const resolved = resolveViaShell() ?? findOpenclawInKnownPaths();
|
|
120
|
+
const resolved = resolveViaShell() ?? findOpenclawViaPackageManagers() ?? findOpenclawInKnownPaths();
|
|
80
121
|
if (resolved) {
|
|
81
122
|
cachedOpenclawBin = resolved;
|
|
82
123
|
console.log(`[clawpilot] openclaw resolved: ${resolved}`);
|
|
@@ -152,4 +193,29 @@ export function execOpenclaw(args) {
|
|
|
152
193
|
return execFileSync(bin, argv, { stdio: "pipe", env: SUBPROCESS_ENV });
|
|
153
194
|
}
|
|
154
195
|
}
|
|
196
|
+
const DEFAULT_OPENCLAW_CONFIG_PATH = join(HOME_DIR, ".openclaw", "openclaw.json");
|
|
197
|
+
export function resolveOpenclawConfigPath(forceRefresh = false) {
|
|
198
|
+
if (!forceRefresh && cachedOpenclawConfigPath && existsSync(cachedOpenclawConfigPath)) {
|
|
199
|
+
return cachedOpenclawConfigPath;
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
const output = execOpenclaw("config file").toString("utf8").trim();
|
|
203
|
+
const resolved = output
|
|
204
|
+
.split("\n")
|
|
205
|
+
.map(line => line.trim())
|
|
206
|
+
.find(line => line.endsWith(".json"));
|
|
207
|
+
if (resolved) {
|
|
208
|
+
cachedOpenclawConfigPath = resolved;
|
|
209
|
+
return resolved;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
// Fall back to the legacy path search below.
|
|
214
|
+
}
|
|
215
|
+
cachedOpenclawConfigPath = DEFAULT_OPENCLAW_CONFIG_PATH;
|
|
216
|
+
return DEFAULT_OPENCLAW_CONFIG_PATH;
|
|
217
|
+
}
|
|
218
|
+
export function resolveOpenclawDir(forceRefresh = false) {
|
|
219
|
+
return dirname(resolveOpenclawConfigPath(forceRefresh));
|
|
220
|
+
}
|
|
155
221
|
//# sourceMappingURL=openclaw-cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-cli.js","sourceRoot":"","sources":["../../src/commands/openclaw-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,QAAQ,GAET,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;AAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/C,MAAM,cAAc,GAAG;IACrB,YAAY;IACZ,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC;IACpC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;IAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;IACxC,mBAAmB;IACnB,oBAAoB;IACpB,gBAAgB;IAChB,iBAAiB;CAClB,CAAC;AAEF,SAAS,MAAM,CAAC,MAAgB;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,GAAG,OAAO,CAAC,GAAG;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM,CAAC;QACX,GAAG,cAAc;QACjB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;KACpD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;CACb,CAAC;AAEF,IAAI,iBAAiB,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"openclaw-cli.js","sourceRoot":"","sources":["../../src/commands/openclaw-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { readFile, writeFile, mkdir, readdir } from "fs/promises";
|
|
2
2
|
import { join } from "path";
|
|
3
|
-
import { homedir } from "os";
|
|
4
3
|
import { PROVIDER_REGISTRY } from "./provider-registry.js";
|
|
5
|
-
|
|
6
|
-
const OPENCLAW_CONFIG = join(OPENCLAW_DIR, "openclaw.json");
|
|
7
|
-
const AGENTS_DIR = join(OPENCLAW_DIR, "agents");
|
|
4
|
+
import { resolveOpenclawConfigPath, resolveOpenclawDir } from "./openclaw-cli.js";
|
|
8
5
|
// ---------------------------------------------------------------------------
|
|
9
6
|
// Internal helpers
|
|
10
7
|
// ---------------------------------------------------------------------------
|
|
@@ -14,8 +11,9 @@ function maskKey(key) {
|
|
|
14
11
|
return key.slice(0, 4) + "***" + key.slice(-4);
|
|
15
12
|
}
|
|
16
13
|
async function resolveAgentId() {
|
|
14
|
+
const agentsDir = join(resolveOpenclawDir(), "agents");
|
|
17
15
|
try {
|
|
18
|
-
const entries = await readdir(
|
|
16
|
+
const entries = await readdir(agentsDir, { withFileTypes: true });
|
|
19
17
|
const dirs = entries.filter(e => e.isDirectory()).map(e => e.name);
|
|
20
18
|
if (dirs.length > 0)
|
|
21
19
|
return dirs[0];
|
|
@@ -48,7 +46,7 @@ function getNestedObj(root, keys) {
|
|
|
48
46
|
return cur;
|
|
49
47
|
}
|
|
50
48
|
function authProfilesPath(agentId) {
|
|
51
|
-
return join(
|
|
49
|
+
return join(resolveOpenclawDir(), "agents", agentId, "agent", "auth-profiles.json");
|
|
52
50
|
}
|
|
53
51
|
/** Extract the first model ID from a provider's models array in openclaw.json */
|
|
54
52
|
function extractModelId(providerRaw) {
|
|
@@ -70,7 +68,7 @@ function inferType(id) {
|
|
|
70
68
|
// Public API
|
|
71
69
|
// ---------------------------------------------------------------------------
|
|
72
70
|
export async function listProviderEntries() {
|
|
73
|
-
const config = await readJson(
|
|
71
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
74
72
|
const agentId = await resolveAgentId();
|
|
75
73
|
const authProfiles = await readJson(authProfilesPath(agentId));
|
|
76
74
|
const profiles = authProfiles["profiles"] ?? {};
|
|
@@ -143,7 +141,7 @@ export async function addProvider(params) {
|
|
|
143
141
|
const info = PROVIDER_REGISTRY[type];
|
|
144
142
|
// --- Update openclaw.json (skip for builtIn providers) ---
|
|
145
143
|
if (!info?.builtIn) {
|
|
146
|
-
const config = await readJson(
|
|
144
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
147
145
|
const models = getNestedObj(config, ["models"]);
|
|
148
146
|
const providers = getNestedObj(models, ["providers"]);
|
|
149
147
|
// "apiKey" is the env var name reference (not the actual key value)
|
|
@@ -152,13 +150,13 @@ export async function addProvider(params) {
|
|
|
152
150
|
providerEntry["models"] = [{ id: modelId, name: modelId }];
|
|
153
151
|
}
|
|
154
152
|
providers[id] = providerEntry;
|
|
155
|
-
await writeJson(
|
|
153
|
+
await writeJson(resolveOpenclawConfigPath(), config);
|
|
156
154
|
}
|
|
157
155
|
// --- Update auth-profiles.json (only if apiKey provided) ---
|
|
158
156
|
if (apiKey != null && apiKey.length > 0) {
|
|
159
157
|
const agentId = await resolveAgentId();
|
|
160
158
|
const profilesPath = authProfilesPath(agentId);
|
|
161
|
-
const profilesDir = join(
|
|
159
|
+
const profilesDir = join(resolveOpenclawDir(), "agents", agentId, "agent");
|
|
162
160
|
await mkdir(profilesDir, { recursive: true });
|
|
163
161
|
const authProfiles = await readJson(profilesPath);
|
|
164
162
|
const profiles = getNestedObj(authProfiles, ["profiles"]);
|
|
@@ -173,11 +171,11 @@ export async function deleteProvider(id) {
|
|
|
173
171
|
const info = PROVIDER_REGISTRY[type];
|
|
174
172
|
// --- Update openclaw.json (skip for builtIn) ---
|
|
175
173
|
if (!info?.builtIn) {
|
|
176
|
-
const config = await readJson(
|
|
174
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
177
175
|
const models = getNestedObj(config, ["models"]);
|
|
178
176
|
const providers = getNestedObj(models, ["providers"]);
|
|
179
177
|
delete providers[id];
|
|
180
|
-
await writeJson(
|
|
178
|
+
await writeJson(resolveOpenclawConfigPath(), config);
|
|
181
179
|
}
|
|
182
180
|
// --- Update auth-profiles.json ---
|
|
183
181
|
const agentId = await resolveAgentId();
|
|
@@ -201,18 +199,18 @@ export async function setDefaultProvider(id) {
|
|
|
201
199
|
}
|
|
202
200
|
else {
|
|
203
201
|
// Read from models.providers entry
|
|
204
|
-
const config = await readJson(
|
|
202
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
205
203
|
const models = config["models"] ?? {};
|
|
206
204
|
const providers = models["providers"] ?? {};
|
|
207
205
|
const providerRaw = providers[id] ?? {};
|
|
208
206
|
modelId = extractModelId(providerRaw) ?? info?.defaultModelId ?? null;
|
|
209
207
|
}
|
|
210
208
|
const primary = modelId ? `${id}/${modelId}` : id;
|
|
211
|
-
const config = await readJson(
|
|
209
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
212
210
|
const agents = getNestedObj(config, ["agents"]);
|
|
213
211
|
const defaults = getNestedObj(agents, ["defaults"]);
|
|
214
212
|
const model = getNestedObj(defaults, ["model"]);
|
|
215
213
|
model["primary"] = primary;
|
|
216
|
-
await writeJson(
|
|
214
|
+
await writeJson(resolveOpenclawConfigPath(), config);
|
|
217
215
|
}
|
|
218
216
|
//# sourceMappingURL=provider-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../../src/commands/provider-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../../src/commands/provider-config.ts"],"names":[],"mappings":"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"}
|
package/dist/config/config.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
2
2
|
import { join } from "path";
|
|
3
3
|
import { homedir } from "os";
|
|
4
|
+
import { resolveOpenclawConfigPath } from "../commands/openclaw-cli.js";
|
|
4
5
|
const CONFIG_DIR = join(homedir(), ".clawai");
|
|
5
6
|
const CONFIG_PATH = join(CONFIG_DIR, "config.json");
|
|
6
|
-
const
|
|
7
|
+
const LEGACY_OPENCLAW_CONFIG_PATH = join(homedir(), ".openclaw", "openclaw.json");
|
|
7
8
|
export function configExists() {
|
|
8
9
|
return existsSync(CONFIG_PATH);
|
|
9
10
|
}
|
|
@@ -20,7 +21,9 @@ export function writeConfig(config) {
|
|
|
20
21
|
}
|
|
21
22
|
export function readGatewayUrl() {
|
|
22
23
|
try {
|
|
23
|
-
const
|
|
24
|
+
const configPath = resolveOpenclawConfigPath();
|
|
25
|
+
const path = existsSync(configPath) ? configPath : LEGACY_OPENCLAW_CONFIG_PATH;
|
|
26
|
+
const raw = readFileSync(path, "utf-8");
|
|
24
27
|
const json = JSON.parse(raw);
|
|
25
28
|
const port = json?.gateway?.port ?? 18789;
|
|
26
29
|
return `ws://localhost:${port}`;
|
|
@@ -41,7 +44,9 @@ export function readGatewayAuth(cfg) {
|
|
|
41
44
|
}
|
|
42
45
|
// Try to read the token from OpenClaw's own config
|
|
43
46
|
try {
|
|
44
|
-
const
|
|
47
|
+
const configPath = resolveOpenclawConfigPath();
|
|
48
|
+
const path = existsSync(configPath) ? configPath : LEGACY_OPENCLAW_CONFIG_PATH;
|
|
49
|
+
const raw = readFileSync(path, "utf-8");
|
|
45
50
|
const json = JSON.parse(raw);
|
|
46
51
|
const token = json?.gateway?.token ?? json?.gateway?.auth?.token ?? undefined;
|
|
47
52
|
const password = json?.gateway?.password ?? json?.gateway?.auth?.password ?? undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { readdirSync, statSync, copyFileSync, existsSync, readFileSync } from "fs";
|
|
2
2
|
import { join } from "path";
|
|
3
|
-
import { homedir } from "os";
|
|
4
3
|
import { execSync } from "child_process";
|
|
5
|
-
import { execOpenclaw, SUBPROCESS_ENV } from "./openclaw-cli.js";
|
|
6
|
-
|
|
7
|
-
const OPENCLAW_DIR = join(homedir(), ".openclaw");
|
|
8
|
-
const OPENCLAW_CONFIG = join(OPENCLAW_DIR, "openclaw.json");
|
|
4
|
+
import { execOpenclaw, resolveOpenclawConfigPath, resolveOpenclawDir, SUBPROCESS_ENV } from "./openclaw-cli.js";
|
|
9
5
|
|
|
10
6
|
export type LocalResult =
|
|
11
7
|
| { ok: true; payload?: unknown }
|
|
@@ -20,6 +16,7 @@ export function handleLocalCommand(method: string): LocalResult | null {
|
|
|
20
16
|
case "clawpilot.restore.config": return restoreConfig();
|
|
21
17
|
case "clawpilot.watchskill": return watchSkill();
|
|
22
18
|
case "clawpilot.doctor": return runDoctor();
|
|
19
|
+
case "clawpilot.doctor.fix": return runDoctorFix();
|
|
23
20
|
case "clawpilot.logs": return readLogs();
|
|
24
21
|
case "clawpilot.gateway.restart": return restartGateway();
|
|
25
22
|
case "clawpilot.version": return getOpenclawVersion();
|
|
@@ -97,16 +94,17 @@ function maskString(value: string): string {
|
|
|
97
94
|
|
|
98
95
|
function readOpenclawConfig(): LocalResult {
|
|
99
96
|
try {
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
const configPath = resolveOpenclawConfigPath();
|
|
98
|
+
if (!existsSync(configPath)) {
|
|
99
|
+
return { ok: false, error: `openclaw config not found: ${configPath}` };
|
|
102
100
|
}
|
|
103
101
|
|
|
104
|
-
const raw = readFileSync(
|
|
102
|
+
const raw = readFileSync(configPath, "utf-8");
|
|
105
103
|
const parsed = JSON.parse(raw) as Record<string, unknown>;
|
|
106
104
|
const masked = maskSensitive(parsed);
|
|
107
105
|
const output = JSON.stringify(masked, null, 2);
|
|
108
106
|
|
|
109
|
-
return { ok: true, payload: { output: `[${
|
|
107
|
+
return { ok: true, payload: { output: `[${configPath}]\n${output}` } };
|
|
110
108
|
} catch (err) {
|
|
111
109
|
return { ok: false, error: String(err) };
|
|
112
110
|
}
|
|
@@ -152,13 +150,16 @@ function fixToolsPermissions202632(): LocalResult {
|
|
|
152
150
|
|
|
153
151
|
function restoreConfig(): LocalResult {
|
|
154
152
|
try {
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
const openclawDir = resolveOpenclawDir();
|
|
154
|
+
const configPath = resolveOpenclawConfigPath();
|
|
155
|
+
if (!existsSync(openclawDir)) {
|
|
156
|
+
return { ok: false, error: `openclaw config dir not found: ${openclawDir}` };
|
|
157
157
|
}
|
|
158
|
-
const
|
|
158
|
+
const configFileName = configPath.split("/").pop() ?? "openclaw.json";
|
|
159
|
+
const bakFiles = readdirSync(openclawDir)
|
|
159
160
|
.filter(name => name.startsWith("openclaw.json.bak"))
|
|
160
161
|
.map(name => {
|
|
161
|
-
const path = join(
|
|
162
|
+
const path = join(openclawDir, name);
|
|
162
163
|
return { name, path, mtime: statSync(path).mtimeMs };
|
|
163
164
|
})
|
|
164
165
|
.sort((a, b) => b.mtime - a.mtime);
|
|
@@ -167,9 +168,9 @@ function restoreConfig(): LocalResult {
|
|
|
167
168
|
return { ok: false, error: "No backup files found in ~/.openclaw/" };
|
|
168
169
|
}
|
|
169
170
|
const latest = bakFiles[0];
|
|
170
|
-
copyFileSync(latest.path,
|
|
171
|
+
copyFileSync(latest.path, configPath);
|
|
171
172
|
console.log(`[clawpilot] Config restored from ${latest.name}`);
|
|
172
|
-
return { ok: true, payload: { restoredFrom: latest.name } };
|
|
173
|
+
return { ok: true, payload: { restoredFrom: latest.name, config: configFileName } };
|
|
173
174
|
} catch (err) {
|
|
174
175
|
return { ok: false, error: String(err) };
|
|
175
176
|
}
|
|
@@ -197,9 +198,21 @@ function runDoctor(): LocalResult {
|
|
|
197
198
|
}
|
|
198
199
|
}
|
|
199
200
|
|
|
201
|
+
function runDoctorFix(): LocalResult {
|
|
202
|
+
try {
|
|
203
|
+
const output = openclaw("doctor --fix").toString();
|
|
204
|
+
console.log("[clawpilot] doctor --fix completed");
|
|
205
|
+
return { ok: true, payload: { output } };
|
|
206
|
+
} catch (err) {
|
|
207
|
+
const output = execErrorOutput(err);
|
|
208
|
+
return output ? { ok: true, payload: { output } } : { ok: false, error: String(err) };
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
200
212
|
function readLogs(): LocalResult {
|
|
201
213
|
try {
|
|
202
|
-
const
|
|
214
|
+
const openclawDir = resolveOpenclawDir();
|
|
215
|
+
const logsDir = join(openclawDir, "logs");
|
|
203
216
|
let logFiles: string[] = [];
|
|
204
217
|
|
|
205
218
|
if (existsSync(logsDir)) {
|
|
@@ -207,9 +220,9 @@ function readLogs(): LocalResult {
|
|
|
207
220
|
.filter(f => f.endsWith(".log"))
|
|
208
221
|
.map(f => join(logsDir, f));
|
|
209
222
|
} else {
|
|
210
|
-
logFiles = readdirSync(
|
|
223
|
+
logFiles = readdirSync(openclawDir)
|
|
211
224
|
.filter(f => f.endsWith(".log"))
|
|
212
|
-
.map(f => join(
|
|
225
|
+
.map(f => join(openclawDir, f));
|
|
213
226
|
}
|
|
214
227
|
|
|
215
228
|
if (logFiles.length === 0) {
|
|
@@ -12,6 +12,9 @@ const NODE_BIN_DIR = dirname(process.execPath);
|
|
|
12
12
|
const KNOWN_BIN_DIRS = [
|
|
13
13
|
NODE_BIN_DIR,
|
|
14
14
|
join(HOME_DIR, ".npm-global", "bin"),
|
|
15
|
+
join(HOME_DIR, ".pnpm"),
|
|
16
|
+
join(HOME_DIR, "Library", "pnpm"),
|
|
17
|
+
join(HOME_DIR, ".config", "yarn", "global", "node_modules", ".bin"),
|
|
15
18
|
join(HOME_DIR, ".local", "bin"),
|
|
16
19
|
join(HOME_DIR, ".bun", "bin"),
|
|
17
20
|
join(HOME_DIR, ".volta", "bin"),
|
|
@@ -44,6 +47,7 @@ export const SUBPROCESS_ENV: NodeJS.ProcessEnv = {
|
|
|
44
47
|
};
|
|
45
48
|
|
|
46
49
|
let cachedOpenclawBin: string | null = null;
|
|
50
|
+
let cachedOpenclawConfigPath: string | null = null;
|
|
47
51
|
|
|
48
52
|
function findOpenclawInKnownPaths(): string | null {
|
|
49
53
|
for (const dir of KNOWN_BIN_DIRS) {
|
|
@@ -76,6 +80,50 @@ function resolveViaShell(): string | null {
|
|
|
76
80
|
return null;
|
|
77
81
|
}
|
|
78
82
|
|
|
83
|
+
function readCommandOutput(command: string): string | null {
|
|
84
|
+
const options: ExecSyncOptionsWithStringEncoding = {
|
|
85
|
+
stdio: "pipe",
|
|
86
|
+
env: SUBPROCESS_ENV,
|
|
87
|
+
timeout: 3000,
|
|
88
|
+
encoding: "utf8",
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
try {
|
|
92
|
+
const output = execSync(command, options).trim();
|
|
93
|
+
return output || null;
|
|
94
|
+
} catch {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function findOpenclawViaPackageManagers(): string | null {
|
|
100
|
+
const candidateDirs: string[] = [];
|
|
101
|
+
|
|
102
|
+
const npmPrefix = readCommandOutput("npm config get prefix");
|
|
103
|
+
if (npmPrefix && !/^undefined|null$/i.test(npmPrefix)) {
|
|
104
|
+
candidateDirs.push(join(npmPrefix, "bin"));
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const pnpmGlobalBin = readCommandOutput("pnpm config get global-bin-dir");
|
|
108
|
+
if (pnpmGlobalBin && !/^undefined|null$/i.test(pnpmGlobalBin)) {
|
|
109
|
+
candidateDirs.push(pnpmGlobalBin);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const npmExec = readCommandOutput("npm exec --yes -- which openclaw");
|
|
113
|
+
if (npmExec && existsSync(npmExec)) {
|
|
114
|
+
return npmExec;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
for (const dir of unique(candidateDirs)) {
|
|
118
|
+
const candidate = join(dir, "openclaw");
|
|
119
|
+
if (existsSync(candidate)) {
|
|
120
|
+
return candidate;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
|
|
79
127
|
export function resolveOpenclawBin(forceRefresh = false): string {
|
|
80
128
|
if (!forceRefresh && cachedOpenclawBin && existsSync(cachedOpenclawBin)) {
|
|
81
129
|
return cachedOpenclawBin;
|
|
@@ -88,7 +136,7 @@ export function resolveOpenclawBin(forceRefresh = false): string {
|
|
|
88
136
|
return envOverride;
|
|
89
137
|
}
|
|
90
138
|
|
|
91
|
-
const resolved = resolveViaShell() ?? findOpenclawInKnownPaths();
|
|
139
|
+
const resolved = resolveViaShell() ?? findOpenclawViaPackageManagers() ?? findOpenclawInKnownPaths();
|
|
92
140
|
if (resolved) {
|
|
93
141
|
cachedOpenclawBin = resolved;
|
|
94
142
|
console.log(`[clawpilot] openclaw resolved: ${resolved}`);
|
|
@@ -174,3 +222,33 @@ export function execOpenclaw(args: string): Buffer {
|
|
|
174
222
|
return execFileSync(bin, argv, { stdio: "pipe", env: SUBPROCESS_ENV });
|
|
175
223
|
}
|
|
176
224
|
}
|
|
225
|
+
|
|
226
|
+
const DEFAULT_OPENCLAW_CONFIG_PATH = join(HOME_DIR, ".openclaw", "openclaw.json");
|
|
227
|
+
|
|
228
|
+
export function resolveOpenclawConfigPath(forceRefresh = false): string {
|
|
229
|
+
if (!forceRefresh && cachedOpenclawConfigPath && existsSync(cachedOpenclawConfigPath)) {
|
|
230
|
+
return cachedOpenclawConfigPath;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
try {
|
|
234
|
+
const output = execOpenclaw("config file").toString("utf8").trim();
|
|
235
|
+
const resolved = output
|
|
236
|
+
.split("\n")
|
|
237
|
+
.map(line => line.trim())
|
|
238
|
+
.find(line => line.endsWith(".json"));
|
|
239
|
+
|
|
240
|
+
if (resolved) {
|
|
241
|
+
cachedOpenclawConfigPath = resolved;
|
|
242
|
+
return resolved;
|
|
243
|
+
}
|
|
244
|
+
} catch {
|
|
245
|
+
// Fall back to the legacy path search below.
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
cachedOpenclawConfigPath = DEFAULT_OPENCLAW_CONFIG_PATH;
|
|
249
|
+
return DEFAULT_OPENCLAW_CONFIG_PATH;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
export function resolveOpenclawDir(forceRefresh = false): string {
|
|
253
|
+
return dirname(resolveOpenclawConfigPath(forceRefresh));
|
|
254
|
+
}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { readFile, writeFile, mkdir, readdir } from "fs/promises";
|
|
2
2
|
import { join } from "path";
|
|
3
|
-
import { homedir } from "os";
|
|
4
3
|
import { PROVIDER_REGISTRY } from "./provider-registry.js";
|
|
5
|
-
|
|
6
|
-
const OPENCLAW_DIR = join(homedir(), ".openclaw");
|
|
7
|
-
const OPENCLAW_CONFIG = join(OPENCLAW_DIR, "openclaw.json");
|
|
8
|
-
const AGENTS_DIR = join(OPENCLAW_DIR, "agents");
|
|
4
|
+
import { resolveOpenclawConfigPath, resolveOpenclawDir } from "./openclaw-cli.js";
|
|
9
5
|
|
|
10
6
|
// ---------------------------------------------------------------------------
|
|
11
7
|
// Types
|
|
@@ -32,8 +28,9 @@ function maskKey(key: string): string {
|
|
|
32
28
|
}
|
|
33
29
|
|
|
34
30
|
async function resolveAgentId(): Promise<string> {
|
|
31
|
+
const agentsDir = join(resolveOpenclawDir(), "agents");
|
|
35
32
|
try {
|
|
36
|
-
const entries = await readdir(
|
|
33
|
+
const entries = await readdir(agentsDir, { withFileTypes: true });
|
|
37
34
|
const dirs = entries.filter(e => e.isDirectory()).map(e => e.name);
|
|
38
35
|
if (dirs.length > 0) return dirs[0];
|
|
39
36
|
} catch {
|
|
@@ -70,7 +67,7 @@ function getNestedObj(
|
|
|
70
67
|
}
|
|
71
68
|
|
|
72
69
|
function authProfilesPath(agentId: string): string {
|
|
73
|
-
return join(
|
|
70
|
+
return join(resolveOpenclawDir(), "agents", agentId, "agent", "auth-profiles.json");
|
|
74
71
|
}
|
|
75
72
|
|
|
76
73
|
/** Extract the first model ID from a provider's models array in openclaw.json */
|
|
@@ -95,7 +92,7 @@ function inferType(id: string): string {
|
|
|
95
92
|
// ---------------------------------------------------------------------------
|
|
96
93
|
|
|
97
94
|
export async function listProviderEntries(): Promise<ProviderEntry[]> {
|
|
98
|
-
const config = await readJson(
|
|
95
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
99
96
|
|
|
100
97
|
const agentId = await resolveAgentId();
|
|
101
98
|
const authProfiles = await readJson(authProfilesPath(agentId));
|
|
@@ -188,7 +185,7 @@ export async function addProvider(params: {
|
|
|
188
185
|
|
|
189
186
|
// --- Update openclaw.json (skip for builtIn providers) ---
|
|
190
187
|
if (!info?.builtIn) {
|
|
191
|
-
const config = await readJson(
|
|
188
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
192
189
|
const models = getNestedObj(config, ["models"]);
|
|
193
190
|
const providers = getNestedObj(models, ["providers"]);
|
|
194
191
|
|
|
@@ -199,14 +196,14 @@ export async function addProvider(params: {
|
|
|
199
196
|
}
|
|
200
197
|
providers[id] = providerEntry;
|
|
201
198
|
|
|
202
|
-
await writeJson(
|
|
199
|
+
await writeJson(resolveOpenclawConfigPath(), config);
|
|
203
200
|
}
|
|
204
201
|
|
|
205
202
|
// --- Update auth-profiles.json (only if apiKey provided) ---
|
|
206
203
|
if (apiKey != null && apiKey.length > 0) {
|
|
207
204
|
const agentId = await resolveAgentId();
|
|
208
205
|
const profilesPath = authProfilesPath(agentId);
|
|
209
|
-
const profilesDir = join(
|
|
206
|
+
const profilesDir = join(resolveOpenclawDir(), "agents", agentId, "agent");
|
|
210
207
|
|
|
211
208
|
await mkdir(profilesDir, { recursive: true });
|
|
212
209
|
|
|
@@ -227,11 +224,11 @@ export async function deleteProvider(id: string): Promise<void> {
|
|
|
227
224
|
|
|
228
225
|
// --- Update openclaw.json (skip for builtIn) ---
|
|
229
226
|
if (!info?.builtIn) {
|
|
230
|
-
const config = await readJson(
|
|
227
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
231
228
|
const models = getNestedObj(config, ["models"]);
|
|
232
229
|
const providers = getNestedObj(models, ["providers"]);
|
|
233
230
|
delete providers[id];
|
|
234
|
-
await writeJson(
|
|
231
|
+
await writeJson(resolveOpenclawConfigPath(), config);
|
|
235
232
|
}
|
|
236
233
|
|
|
237
234
|
// --- Update auth-profiles.json ---
|
|
@@ -259,7 +256,7 @@ export async function setDefaultProvider(id: string): Promise<void> {
|
|
|
259
256
|
modelId = info.defaultModelId ?? null;
|
|
260
257
|
} else {
|
|
261
258
|
// Read from models.providers entry
|
|
262
|
-
const config = await readJson(
|
|
259
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
263
260
|
const models = (config["models"] as Record<string, unknown>) ?? {};
|
|
264
261
|
const providers = (models["providers"] as Record<string, unknown>) ?? {};
|
|
265
262
|
const providerRaw = (providers[id] as Record<string, unknown>) ?? {};
|
|
@@ -268,11 +265,11 @@ export async function setDefaultProvider(id: string): Promise<void> {
|
|
|
268
265
|
|
|
269
266
|
const primary = modelId ? `${id}/${modelId}` : id;
|
|
270
267
|
|
|
271
|
-
const config = await readJson(
|
|
268
|
+
const config = await readJson(resolveOpenclawConfigPath());
|
|
272
269
|
const agents = getNestedObj(config, ["agents"]);
|
|
273
270
|
const defaults = getNestedObj(agents, ["defaults"]);
|
|
274
271
|
const model = getNestedObj(defaults, ["model"]);
|
|
275
272
|
model["primary"] = primary;
|
|
276
273
|
|
|
277
|
-
await writeJson(
|
|
274
|
+
await writeJson(resolveOpenclawConfigPath(), config);
|
|
278
275
|
}
|
package/src/config/config.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
2
2
|
import { join } from "path";
|
|
3
3
|
import { homedir } from "os";
|
|
4
|
+
import { resolveOpenclawConfigPath } from "../commands/openclaw-cli.js";
|
|
4
5
|
|
|
5
6
|
const CONFIG_DIR = join(homedir(), ".clawai");
|
|
6
7
|
const CONFIG_PATH = join(CONFIG_DIR, "config.json");
|
|
7
|
-
const
|
|
8
|
+
const LEGACY_OPENCLAW_CONFIG_PATH = join(homedir(), ".openclaw", "openclaw.json");
|
|
8
9
|
|
|
9
10
|
export interface ClawaiConfig {
|
|
10
11
|
relayServerUrl: string;
|
|
@@ -36,7 +37,9 @@ export function writeConfig(config: ClawaiConfig): void {
|
|
|
36
37
|
|
|
37
38
|
export function readGatewayUrl(): string {
|
|
38
39
|
try {
|
|
39
|
-
const
|
|
40
|
+
const configPath = resolveOpenclawConfigPath();
|
|
41
|
+
const path = existsSync(configPath) ? configPath : LEGACY_OPENCLAW_CONFIG_PATH;
|
|
42
|
+
const raw = readFileSync(path, "utf-8");
|
|
40
43
|
const json = JSON.parse(raw) as { gateway?: { port?: number } };
|
|
41
44
|
const port = json?.gateway?.port ?? 18789;
|
|
42
45
|
return `ws://localhost:${port}`;
|
|
@@ -57,7 +60,9 @@ export function readGatewayAuth(cfg: ClawaiConfig): { token?: string; password?:
|
|
|
57
60
|
}
|
|
58
61
|
// Try to read the token from OpenClaw's own config
|
|
59
62
|
try {
|
|
60
|
-
const
|
|
63
|
+
const configPath = resolveOpenclawConfigPath();
|
|
64
|
+
const path = existsSync(configPath) ? configPath : LEGACY_OPENCLAW_CONFIG_PATH;
|
|
65
|
+
const raw = readFileSync(path, "utf-8");
|
|
61
66
|
const json = JSON.parse(raw) as { gateway?: { token?: string; password?: string; auth?: { token?: string; password?: string } } };
|
|
62
67
|
const token = json?.gateway?.token ?? json?.gateway?.auth?.token ?? undefined;
|
|
63
68
|
const password = json?.gateway?.password ?? json?.gateway?.auth?.password ?? undefined;
|