@agenthifive/openclaw 0.1.0 → 0.2.0

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/README.md CHANGED
@@ -37,7 +37,7 @@ Or add to your OpenClaw config manually:
37
37
 
38
38
  ### 2. Setup
39
39
 
40
- Run the setup wizard to bootstrap agent auth and discover connected services:
40
+ Run the setup wizard to bootstrap agent auth, discover connected services, write config, and apply the credential proxying patch:
41
41
 
42
42
  ```bash
43
43
  openclaw setup-vault
@@ -49,7 +49,13 @@ Or non-interactively:
49
49
  openclaw setup-vault --base-url https://app.agenthifive.com --bootstrap-secret ah5b_...
50
50
  ```
51
51
 
52
- The wizard generates a JSON config block to paste into `~/.openclaw/openclaw.json`.
52
+ The wizard automatically:
53
+ - Writes plugin config to `~/.openclaw/openclaw.json`
54
+ - Applies the credential proxying patch to your OpenClaw installation
55
+
56
+ Additional flags:
57
+ - `--config-path <path>` — explicit config file path
58
+ - `--openclaw-dir <path>` — explicit OpenClaw installation directory
53
59
 
54
60
  ### 3. Connect Services
55
61
 
@@ -82,20 +88,17 @@ Plugin config goes in `plugins.entries.agenthifive.config` in your `openclaw.jso
82
88
  | `pollTimeoutMs` | number | Approval poll timeout (default: 300000) |
83
89
  | `pollIntervalMs` | number | Approval poll interval (default: 3000) |
84
90
 
85
- ## LLM Credential Proxying (Optional Patch)
86
-
87
- To route LLM API calls through the vault (so agents don't need local API keys), apply the included patch:
91
+ ## LLM Credential Proxying
88
92
 
89
- ```bash
90
- pnpm patch openclaw
91
- cd <temp-directory>
92
- patch -p1 < node_modules/@agenthifive/openclaw/patches/model-auth.patch
93
- pnpm patch-commit <temp-directory>
94
- ```
93
+ The setup wizard automatically patches OpenClaw's `resolveApiKeyForProvider()` to route LLM API calls through the vault, so agents don't need local API keys.
95
94
 
96
- This adds vault credential resolution (Tier 0 + Tier 0.5) to OpenClaw's `resolveApiKeyForProvider()`. The patch uses dynamic imports and is a no-op when the plugin is not installed.
95
+ The patch is applied during `openclaw setup-vault` and:
96
+ - Works with both npm installs (`dist/` chunks) and source installs (`src/`)
97
+ - Creates a `.bak` backup of the patched file
98
+ - Is idempotent (safe to run multiple times)
99
+ - Uses dynamic imports — no-op when the plugin is not installed
97
100
 
98
- See [`patches/README.md`](patches/README.md) for details.
101
+ To apply manually (e.g. after an OpenClaw upgrade), re-run the setup wizard or see [`patches/README.md`](patches/README.md).
99
102
 
100
103
  ## Programmatic Usage
101
104
 
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Auto-patching for OpenClaw's credential resolution.
3
+ *
4
+ * Finds the OpenClaw installation and injects vault credential resolution
5
+ * into resolveApiKeyForProvider(). Supports both source installs (TypeScript)
6
+ * and npm installs (compiled JS chunks with hashed filenames).
7
+ *
8
+ * The patch adds two tiers before local profile resolution:
9
+ * - Tier 0: Proxied providers (vault bearer token used directly)
10
+ * - Tier 0.5: Credential provider chain (query vault before local profiles)
11
+ */
12
+ export interface OpenClawInstall {
13
+ dir: string;
14
+ kind: "source" | "dist";
15
+ }
16
+ export interface PatchResult {
17
+ applied: boolean;
18
+ alreadyPatched: boolean;
19
+ message: string;
20
+ }
21
+ /**
22
+ * Locate the OpenClaw installation directory.
23
+ *
24
+ * Strategy (cascading, first match wins):
25
+ * 1. `which`/`where` openclaw → resolve symlink → walk up to package.json
26
+ * 2. `npm root -g` → check for openclaw package
27
+ * 3. Well-known paths (Linux, macOS, Windows)
28
+ * 4. `find` as last resort (Linux/macOS only, with timeout)
29
+ *
30
+ * Returns null if not found — caller should ask the user.
31
+ */
32
+ export declare function findOpenClawInstallDir(): Promise<OpenClawInstall | null>;
33
+ /**
34
+ * Find all OpenClaw installations (for disambiguation when multiple exist).
35
+ */
36
+ export declare function findAllOpenClawInstalls(): Promise<OpenClawInstall[]>;
37
+ /**
38
+ * Validate a user-provided OpenClaw installation path.
39
+ */
40
+ export declare function validateOpenClawDir(dir: string): OpenClawInstall | null;
41
+ /**
42
+ * Find the chunk file containing resolveApiKeyForProvider in dist/.
43
+ */
44
+ export declare function findDistChunk(distDir: string): string | null;
45
+ export declare function applyDistPatch(openclawDir: string): PatchResult;
46
+ export declare function applySourcePatch(openclawDir: string): PatchResult;
47
+ /**
48
+ * Apply the credential resolution patch to an OpenClaw installation.
49
+ * Automatically detects source vs dist installs.
50
+ */
51
+ export declare function applyPatch(install: OpenClawInstall): PatchResult;
52
+ /**
53
+ * Check if the credential resolution patch is applied in an OpenClaw installation.
54
+ */
55
+ export declare function isPatchApplied(install: OpenClawInstall): boolean;
56
+ //# sourceMappingURL=auto-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-patch.d.ts","sourceRoot":"","sources":["../src/auto-patch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AA+DD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAoB9E;AAkKD;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAiB1E;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAIvE;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA6B5D;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAqD/D;AAMD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAmFjE;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAIhE;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAUhE"}
@@ -0,0 +1,446 @@
1
+ /**
2
+ * Auto-patching for OpenClaw's credential resolution.
3
+ *
4
+ * Finds the OpenClaw installation and injects vault credential resolution
5
+ * into resolveApiKeyForProvider(). Supports both source installs (TypeScript)
6
+ * and npm installs (compiled JS chunks with hashed filenames).
7
+ *
8
+ * The patch adds two tiers before local profile resolution:
9
+ * - Tier 0: Proxied providers (vault bearer token used directly)
10
+ * - Tier 0.5: Credential provider chain (query vault before local profiles)
11
+ */
12
+ import { execSync } from "node:child_process";
13
+ import { existsSync, readdirSync, readFileSync, realpathSync, writeFileSync, } from "node:fs";
14
+ import path from "node:path";
15
+ import { fileURLToPath } from "node:url";
16
+ // ---------------------------------------------------------------------------
17
+ // Marker used to detect if the patch is already applied
18
+ // ---------------------------------------------------------------------------
19
+ const PATCH_MARKER = "@agenthifive/openclaw/runtime";
20
+ // ---------------------------------------------------------------------------
21
+ // Code injected into compiled dist files
22
+ // ---------------------------------------------------------------------------
23
+ const INJECTED_CODE = `
24
+ \t// -- AgentHiFive: Tier 0 + Tier 0.5 vault credential resolution --
25
+ \t// @agenthifive/openclaw/runtime
26
+ \ttry {
27
+ \t\tconst runtime = await import("@agenthifive/openclaw/runtime");
28
+ \t\tif (runtime.isInitialized()) {
29
+ \t\t\tconst proxiedProviders = runtime.getProxiedProviders();
30
+ \t\t\tif (proxiedProviders.includes(provider)) {
31
+ \t\t\t\tconst vaultToken = runtime.getVaultBearerToken();
32
+ \t\t\t\tif (vaultToken) {
33
+ \t\t\t\t\treturn { apiKey: vaultToken, source: "vault:agent-token", mode: "api-key" };
34
+ \t\t\t\t}
35
+ \t\t\t}
36
+ \t\t\tconst vaultResult = await runtime.resolveCredential({
37
+ \t\t\t\tkind: "model_provider",
38
+ \t\t\t\tprovider,
39
+ \t\t\t\tprofileId: preferredProfile,
40
+ \t\t\t});
41
+ \t\t\tif (vaultResult?.apiKey) {
42
+ \t\t\t\treturn {
43
+ \t\t\t\t\tapiKey: vaultResult.apiKey,
44
+ \t\t\t\t\tsource: "credential-provider:vault",
45
+ \t\t\t\t\tmode: vaultResult.mode ?? "api-key",
46
+ \t\t\t\t};
47
+ \t\t\t}
48
+ \t\t}
49
+ \t} catch {
50
+ \t\t// Plugin not installed -- skip vault credential resolution
51
+ \t}
52
+ `;
53
+ // ---------------------------------------------------------------------------
54
+ // Anchor patterns
55
+ // ---------------------------------------------------------------------------
56
+ /**
57
+ * Regex matching the store assignment line in resolveApiKeyForProvider.
58
+ * This is stable across upstream versions — it's the first line after
59
+ * the destructuring of params.
60
+ *
61
+ * Upstream dist (2026.3.13):
62
+ * const store = params.store ?? ensureAuthProfileStore(params.agentDir);
63
+ * if (profileId) {
64
+ */
65
+ const DIST_ANCHOR = /const store\s*=\s*params\.store\s*\?\?\s*ensureAuthProfileStore\(params\.agentDir\);\n/;
66
+ // ---------------------------------------------------------------------------
67
+ // Find OpenClaw installation
68
+ // ---------------------------------------------------------------------------
69
+ /**
70
+ * Locate the OpenClaw installation directory.
71
+ *
72
+ * Strategy (cascading, first match wins):
73
+ * 1. `which`/`where` openclaw → resolve symlink → walk up to package.json
74
+ * 2. `npm root -g` → check for openclaw package
75
+ * 3. Well-known paths (Linux, macOS, Windows)
76
+ * 4. `find` as last resort (Linux/macOS only, with timeout)
77
+ *
78
+ * Returns null if not found — caller should ask the user.
79
+ */
80
+ export async function findOpenClawInstallDir() {
81
+ // Strategy 1: which/where → resolve symlink
82
+ const result = await findViaWhich();
83
+ if (result)
84
+ return result;
85
+ // Strategy 2: npm root -g
86
+ const npmResult = findViaNpmRoot();
87
+ if (npmResult)
88
+ return npmResult;
89
+ // Strategy 3: well-known paths
90
+ const wellKnown = findViaWellKnownPaths();
91
+ if (wellKnown)
92
+ return wellKnown;
93
+ // Strategy 4: find command (Linux/macOS only)
94
+ if (process.platform !== "win32") {
95
+ const found = findViaFind();
96
+ if (found)
97
+ return found;
98
+ }
99
+ return null;
100
+ }
101
+ function classifyInstall(dir) {
102
+ const hasSrc = existsSync(path.join(dir, "src", "agents", "model-auth.ts"));
103
+ return { dir, kind: hasSrc ? "source" : "dist" };
104
+ }
105
+ function isOpenClawDir(dir) {
106
+ const pkgPath = path.join(dir, "package.json");
107
+ if (!existsSync(pkgPath))
108
+ return false;
109
+ try {
110
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
111
+ return pkg.name === "openclaw";
112
+ }
113
+ catch {
114
+ return false;
115
+ }
116
+ }
117
+ function walkUpToPackageRoot(startDir) {
118
+ let dir = startDir;
119
+ for (let i = 0; i < 10; i++) {
120
+ if (isOpenClawDir(dir))
121
+ return dir;
122
+ const parent = path.dirname(dir);
123
+ if (parent === dir)
124
+ break;
125
+ dir = parent;
126
+ }
127
+ return null;
128
+ }
129
+ async function findViaWhich() {
130
+ const cmd = process.platform === "win32" ? "where openclaw" : "which openclaw";
131
+ try {
132
+ const bin = execSync(cmd, {
133
+ encoding: "utf-8",
134
+ timeout: 5_000,
135
+ stdio: ["pipe", "pipe", "pipe"],
136
+ }).trim();
137
+ if (!bin)
138
+ return null;
139
+ // Resolve symlinks to find the real binary location
140
+ let realBin;
141
+ try {
142
+ realBin = realpathSync(bin);
143
+ }
144
+ catch {
145
+ realBin = bin;
146
+ }
147
+ // Walk up from binary to find package root
148
+ const root = walkUpToPackageRoot(path.dirname(realBin));
149
+ if (root)
150
+ return classifyInstall(root);
151
+ // Binary might be a wrapper script — check if it references a node_modules path
152
+ try {
153
+ const content = readFileSync(realBin, "utf-8");
154
+ const match = /["']([^"']+openclaw[^"']*)['"]/i.exec(content);
155
+ if (match?.[1]) {
156
+ const candidate = path.resolve(path.dirname(realBin), match[1]);
157
+ const root2 = walkUpToPackageRoot(path.dirname(candidate));
158
+ if (root2)
159
+ return classifyInstall(root2);
160
+ }
161
+ }
162
+ catch {
163
+ // Not readable as text
164
+ }
165
+ }
166
+ catch {
167
+ // which/where failed
168
+ }
169
+ return null;
170
+ }
171
+ function findViaNpmRoot() {
172
+ try {
173
+ const root = execSync("npm root -g", {
174
+ encoding: "utf-8",
175
+ timeout: 5_000,
176
+ stdio: ["pipe", "pipe", "pipe"],
177
+ }).trim();
178
+ if (!root)
179
+ return null;
180
+ const candidate = path.join(root, "openclaw");
181
+ if (isOpenClawDir(candidate))
182
+ return classifyInstall(candidate);
183
+ }
184
+ catch {
185
+ // npm not available or failed
186
+ }
187
+ return null;
188
+ }
189
+ function findViaWellKnownPaths() {
190
+ const candidates = [];
191
+ if (process.platform === "win32") {
192
+ const appData = process.env.APPDATA;
193
+ if (appData) {
194
+ candidates.push(path.join(appData, "npm", "node_modules", "openclaw"));
195
+ }
196
+ const localAppData = process.env.LOCALAPPDATA;
197
+ if (localAppData) {
198
+ candidates.push(path.join(localAppData, "pnpm", "global", "5", "node_modules", "openclaw"));
199
+ }
200
+ }
201
+ else {
202
+ candidates.push("/usr/lib/node_modules/openclaw", "/usr/local/lib/node_modules/openclaw", path.join(process.env.HOME ?? "", ".local/share/pnpm/global/5/node_modules/openclaw"));
203
+ if (process.platform === "darwin") {
204
+ candidates.push("/opt/homebrew/lib/node_modules/openclaw", "/usr/local/Cellar/node/*/lib/node_modules/openclaw");
205
+ }
206
+ }
207
+ for (const candidate of candidates) {
208
+ if (isOpenClawDir(candidate))
209
+ return classifyInstall(candidate);
210
+ }
211
+ return null;
212
+ }
213
+ function findViaFind() {
214
+ // Search common directories for openclaw package.json
215
+ const searchDirs = ["/usr", "/opt", process.env.HOME ?? ""].filter((d) => d && existsSync(d));
216
+ for (const searchDir of searchDirs) {
217
+ try {
218
+ const output = execSync(`find "${searchDir}" -maxdepth 8 -name "package.json" -path "*/openclaw/package.json" 2>/dev/null`, {
219
+ encoding: "utf-8",
220
+ timeout: 10_000,
221
+ stdio: ["pipe", "pipe", "pipe"],
222
+ }).trim();
223
+ if (!output)
224
+ continue;
225
+ const matches = output
226
+ .split("\n")
227
+ .filter(Boolean)
228
+ .map((p) => path.dirname(p))
229
+ .filter(isOpenClawDir);
230
+ if (matches.length === 1)
231
+ return classifyInstall(matches[0]);
232
+ if (matches.length > 1) {
233
+ // Multiple installs found — return null so caller can ask the user
234
+ // Store matches for the caller to display
235
+ return null;
236
+ }
237
+ }
238
+ catch {
239
+ // find timed out or failed
240
+ }
241
+ }
242
+ return null;
243
+ }
244
+ /**
245
+ * Find all OpenClaw installations (for disambiguation when multiple exist).
246
+ */
247
+ export async function findAllOpenClawInstalls() {
248
+ const results = [];
249
+ const seen = new Set();
250
+ const add = (install) => {
251
+ if (!install)
252
+ return;
253
+ const resolved = path.resolve(install.dir);
254
+ if (seen.has(resolved))
255
+ return;
256
+ seen.add(resolved);
257
+ results.push({ ...install, dir: resolved });
258
+ };
259
+ add(await findViaWhich());
260
+ add(findViaNpmRoot());
261
+ add(findViaWellKnownPaths());
262
+ return results;
263
+ }
264
+ // ---------------------------------------------------------------------------
265
+ // Validate user-provided path
266
+ // ---------------------------------------------------------------------------
267
+ /**
268
+ * Validate a user-provided OpenClaw installation path.
269
+ */
270
+ export function validateOpenClawDir(dir) {
271
+ const resolved = path.resolve(dir);
272
+ if (!isOpenClawDir(resolved))
273
+ return null;
274
+ return classifyInstall(resolved);
275
+ }
276
+ // ---------------------------------------------------------------------------
277
+ // Apply patch to dist (compiled JS)
278
+ // ---------------------------------------------------------------------------
279
+ /**
280
+ * Find the chunk file containing resolveApiKeyForProvider in dist/.
281
+ */
282
+ export function findDistChunk(distDir) {
283
+ if (!existsSync(distDir))
284
+ return null;
285
+ const files = readdirSync(distDir).filter((f) => f.endsWith(".js"));
286
+ // Primary: look for auth-profiles-*.js (upstream chunk name)
287
+ const authChunk = files.find((f) => f.startsWith("auth-profiles") || f.startsWith("model-auth"));
288
+ if (authChunk) {
289
+ const content = readFileSync(path.join(distDir, authChunk), "utf-8");
290
+ if (content.includes("resolveApiKeyForProvider")) {
291
+ return path.join(distDir, authChunk);
292
+ }
293
+ }
294
+ // Fallback: search all JS files
295
+ for (const file of files) {
296
+ const filePath = path.join(distDir, file);
297
+ const content = readFileSync(filePath, "utf-8");
298
+ if (content.includes("async function resolveApiKeyForProvider") &&
299
+ content.includes("ensureAuthProfileStore")) {
300
+ return filePath;
301
+ }
302
+ }
303
+ return null;
304
+ }
305
+ export function applyDistPatch(openclawDir) {
306
+ const distDir = path.join(openclawDir, "dist");
307
+ const chunkPath = findDistChunk(distDir);
308
+ if (!chunkPath) {
309
+ return {
310
+ applied: false,
311
+ alreadyPatched: false,
312
+ message: "Could not find resolveApiKeyForProvider in OpenClaw dist/. " +
313
+ "The OpenClaw version may be incompatible.",
314
+ };
315
+ }
316
+ const source = readFileSync(chunkPath, "utf-8");
317
+ // Already patched?
318
+ if (source.includes(PATCH_MARKER)) {
319
+ return {
320
+ applied: true,
321
+ alreadyPatched: true,
322
+ message: `Already patched: ${path.basename(chunkPath)}`,
323
+ };
324
+ }
325
+ // Find anchor
326
+ const match = DIST_ANCHOR.exec(source);
327
+ if (!match) {
328
+ return {
329
+ applied: false,
330
+ alreadyPatched: false,
331
+ message: `Found ${path.basename(chunkPath)} but could not locate the anchor point. ` +
332
+ "The OpenClaw version may be incompatible.",
333
+ };
334
+ }
335
+ // Create backup
336
+ const backupPath = chunkPath + ".bak";
337
+ writeFileSync(backupPath, source);
338
+ // Inject code after the anchor line
339
+ const insertPos = match.index + match[0].length;
340
+ const patched = source.slice(0, insertPos) + INJECTED_CODE + source.slice(insertPos);
341
+ writeFileSync(chunkPath, patched);
342
+ return {
343
+ applied: true,
344
+ alreadyPatched: false,
345
+ message: `Patched ${path.basename(chunkPath)} (backup: ${path.basename(backupPath)})`,
346
+ };
347
+ }
348
+ // ---------------------------------------------------------------------------
349
+ // Apply patch to source install
350
+ // ---------------------------------------------------------------------------
351
+ export function applySourcePatch(openclawDir) {
352
+ const targetFile = path.join(openclawDir, "src", "agents", "model-auth.ts");
353
+ if (!existsSync(targetFile)) {
354
+ return {
355
+ applied: false,
356
+ alreadyPatched: false,
357
+ message: "src/agents/model-auth.ts not found",
358
+ };
359
+ }
360
+ const source = readFileSync(targetFile, "utf-8");
361
+ if (source.includes(PATCH_MARKER)) {
362
+ return {
363
+ applied: true,
364
+ alreadyPatched: true,
365
+ message: "Source already patched",
366
+ };
367
+ }
368
+ // Try using the patch command
369
+ const patchFile = path.join(path.dirname(fileURLToPath(import.meta.url)), "..", "patches", "model-auth.patch");
370
+ if (!existsSync(patchFile)) {
371
+ return {
372
+ applied: false,
373
+ alreadyPatched: false,
374
+ message: "patches/model-auth.patch not found in plugin package",
375
+ };
376
+ }
377
+ try {
378
+ execSync(`patch -p1 --forward < "${patchFile}"`, {
379
+ cwd: openclawDir,
380
+ encoding: "utf-8",
381
+ timeout: 10_000,
382
+ stdio: ["pipe", "pipe", "pipe"],
383
+ });
384
+ return {
385
+ applied: true,
386
+ alreadyPatched: false,
387
+ message: "Source patch applied via patch -p1",
388
+ };
389
+ }
390
+ catch (err) {
391
+ // patch command failed — try manual injection as fallback
392
+ const match = DIST_ANCHOR.exec(source);
393
+ if (match) {
394
+ const backupPath = targetFile + ".bak";
395
+ writeFileSync(backupPath, source);
396
+ const insertPos = match.index + match[0].length;
397
+ const patched = source.slice(0, insertPos) +
398
+ "\n" +
399
+ INJECTED_CODE.replace(/\t/g, " ") +
400
+ "\n" +
401
+ source.slice(insertPos);
402
+ writeFileSync(targetFile, patched);
403
+ return {
404
+ applied: true,
405
+ alreadyPatched: false,
406
+ message: `Source patched via text injection (backup: ${path.basename(backupPath)})`,
407
+ };
408
+ }
409
+ return {
410
+ applied: false,
411
+ alreadyPatched: false,
412
+ message: `patch command failed: ${err instanceof Error ? err.message : String(err)}`,
413
+ };
414
+ }
415
+ }
416
+ // ---------------------------------------------------------------------------
417
+ // Unified apply
418
+ // ---------------------------------------------------------------------------
419
+ /**
420
+ * Apply the credential resolution patch to an OpenClaw installation.
421
+ * Automatically detects source vs dist installs.
422
+ */
423
+ export function applyPatch(install) {
424
+ return install.kind === "source"
425
+ ? applySourcePatch(install.dir)
426
+ : applyDistPatch(install.dir);
427
+ }
428
+ // ---------------------------------------------------------------------------
429
+ // Check if patch is applied
430
+ // ---------------------------------------------------------------------------
431
+ /**
432
+ * Check if the credential resolution patch is applied in an OpenClaw installation.
433
+ */
434
+ export function isPatchApplied(install) {
435
+ if (install.kind === "source") {
436
+ const file = path.join(install.dir, "src", "agents", "model-auth.ts");
437
+ if (!existsSync(file))
438
+ return false;
439
+ return readFileSync(file, "utf-8").includes(PATCH_MARKER);
440
+ }
441
+ const chunkPath = findDistChunk(path.join(install.dir, "dist"));
442
+ if (!chunkPath)
443
+ return false;
444
+ return readFileSync(chunkPath, "utf-8").includes(PATCH_MARKER);
445
+ }
446
+ //# sourceMappingURL=auto-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-patch.js","sourceRoot":"","sources":["../src/auto-patch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * OpenClaw config file discovery and merge utilities.
3
+ *
4
+ * Reimplements OpenClaw's config path resolution logic since we can't
5
+ * import from the openclaw package (we're a plugin, not a dependency).
6
+ *
7
+ * Resolution order (matches OpenClaw's src/config/paths.ts):
8
+ * 1. $OPENCLAW_CONFIG_PATH / $CLAWDBOT_CONFIG_PATH (explicit override)
9
+ * 2. $OPENCLAW_STATE_DIR/openclaw.json
10
+ * 3. ~/.openclaw/openclaw.json (preferred)
11
+ * 4. Legacy: ~/.openclaw/clawdbot.json, ~/.clawdbot/, ~/.moltbot/, ~/.moldbot/
12
+ * 5. Return null — caller must ask the user
13
+ */
14
+ /**
15
+ * Find an existing OpenClaw config file.
16
+ *
17
+ * Returns the absolute path to the first existing config file found,
18
+ * or `null` if no config file exists anywhere. The caller should prompt
19
+ * the user rather than silently creating a default file.
20
+ */
21
+ export declare function resolveOpenClawConfigPath(env?: NodeJS.ProcessEnv): string | null;
22
+ /**
23
+ * Return the canonical default config path (for prompting the user).
24
+ */
25
+ export declare function defaultConfigPath(): string;
26
+ /**
27
+ * Read an existing config file. Returns `{}` if the file doesn't exist.
28
+ * Throws on parse errors so the caller can warn the user.
29
+ */
30
+ export declare function readExistingConfig(configPath: string): Record<string, unknown>;
31
+ /**
32
+ * Deep-merge the AgentHiFive plugin config into an existing OpenClaw config.
33
+ *
34
+ * - Sets `plugins.enabled = true`
35
+ * - Adds `"agenthifive"` to `plugins.allow` (deduped)
36
+ * - Adds `"@agenthifive/openclaw"` to `plugins.load.paths` (deduped)
37
+ * - Replaces `plugins.entries.agenthifive` entirely
38
+ * - Preserves ALL other keys untouched
39
+ */
40
+ export declare function mergePluginConfig(existing: Record<string, unknown>, pluginBlock: Record<string, unknown>): Record<string, unknown>;
41
+ //# sourceMappingURL=config-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-discovery.d.ts","sourceRoot":"","sources":["../src/config-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiDH;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,IAAI,CAgCf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyCzB"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * OpenClaw config file discovery and merge utilities.
3
+ *
4
+ * Reimplements OpenClaw's config path resolution logic since we can't
5
+ * import from the openclaw package (we're a plugin, not a dependency).
6
+ *
7
+ * Resolution order (matches OpenClaw's src/config/paths.ts):
8
+ * 1. $OPENCLAW_CONFIG_PATH / $CLAWDBOT_CONFIG_PATH (explicit override)
9
+ * 2. $OPENCLAW_STATE_DIR/openclaw.json
10
+ * 3. ~/.openclaw/openclaw.json (preferred)
11
+ * 4. Legacy: ~/.openclaw/clawdbot.json, ~/.clawdbot/, ~/.moltbot/, ~/.moldbot/
12
+ * 5. Return null — caller must ask the user
13
+ */
14
+ import { existsSync, readFileSync } from "node:fs";
15
+ import os from "node:os";
16
+ import path from "node:path";
17
+ // ---------------------------------------------------------------------------
18
+ // Constants
19
+ // ---------------------------------------------------------------------------
20
+ const STATE_DIRNAMES = [".openclaw", ".clawdbot", ".moltbot", ".moldbot"];
21
+ const CONFIG_FILENAMES = [
22
+ "openclaw.json",
23
+ "clawdbot.json",
24
+ "moltbot.json",
25
+ "moldbot.json",
26
+ ];
27
+ // ---------------------------------------------------------------------------
28
+ // Home directory resolution (cross-platform)
29
+ // ---------------------------------------------------------------------------
30
+ function resolveHome() {
31
+ // Match OpenClaw's home-dir.ts: OPENCLAW_HOME → HOME → USERPROFILE → os.homedir()
32
+ const explicit = process.env.OPENCLAW_HOME?.trim();
33
+ if (explicit && !explicit.startsWith("~"))
34
+ return path.resolve(explicit);
35
+ const home = process.env.HOME?.trim() ||
36
+ process.env.USERPROFILE?.trim() ||
37
+ os.homedir();
38
+ if (explicit) {
39
+ // OPENCLAW_HOME starts with ~ — expand it
40
+ return path.resolve(explicit.replace(/^~(?=$|[/\\])/, home));
41
+ }
42
+ return home;
43
+ }
44
+ function expandTilde(p) {
45
+ if (!p.startsWith("~"))
46
+ return path.resolve(p);
47
+ return path.resolve(p.replace(/^~(?=$|[/\\])/, resolveHome()));
48
+ }
49
+ // ---------------------------------------------------------------------------
50
+ // Config path resolution
51
+ // ---------------------------------------------------------------------------
52
+ /**
53
+ * Find an existing OpenClaw config file.
54
+ *
55
+ * Returns the absolute path to the first existing config file found,
56
+ * or `null` if no config file exists anywhere. The caller should prompt
57
+ * the user rather than silently creating a default file.
58
+ */
59
+ export function resolveOpenClawConfigPath(env = process.env) {
60
+ // 1. Explicit override
61
+ const explicit = env.OPENCLAW_CONFIG_PATH?.trim() || env.CLAWDBOT_CONFIG_PATH?.trim();
62
+ if (explicit) {
63
+ const resolved = expandTilde(explicit);
64
+ return existsSync(resolved) ? resolved : null;
65
+ }
66
+ // 2. State dir override
67
+ const stateDir = env.OPENCLAW_STATE_DIR?.trim() || env.CLAWDBOT_STATE_DIR?.trim();
68
+ if (stateDir) {
69
+ const resolved = expandTilde(stateDir);
70
+ for (const name of CONFIG_FILENAMES) {
71
+ const candidate = path.join(resolved, name);
72
+ if (existsSync(candidate))
73
+ return candidate;
74
+ }
75
+ return null;
76
+ }
77
+ // 3. Default dirs × config filenames
78
+ const home = resolveHome();
79
+ for (const dir of STATE_DIRNAMES) {
80
+ for (const name of CONFIG_FILENAMES) {
81
+ const candidate = path.join(home, dir, name);
82
+ if (existsSync(candidate))
83
+ return candidate;
84
+ }
85
+ }
86
+ // 4. Not found — caller should ask the user
87
+ return null;
88
+ }
89
+ /**
90
+ * Return the canonical default config path (for prompting the user).
91
+ */
92
+ export function defaultConfigPath() {
93
+ return path.join(resolveHome(), ".openclaw", "openclaw.json");
94
+ }
95
+ // ---------------------------------------------------------------------------
96
+ // Config read / merge / write helpers
97
+ // ---------------------------------------------------------------------------
98
+ /**
99
+ * Read an existing config file. Returns `{}` if the file doesn't exist.
100
+ * Throws on parse errors so the caller can warn the user.
101
+ */
102
+ export function readExistingConfig(configPath) {
103
+ if (!existsSync(configPath))
104
+ return {};
105
+ const raw = readFileSync(configPath, "utf-8").trim();
106
+ if (!raw)
107
+ return {};
108
+ // Try standard JSON first (most configs are valid JSON)
109
+ try {
110
+ return JSON.parse(raw);
111
+ }
112
+ catch {
113
+ // Try stripping single-line comments and trailing commas (light JSON5 compat)
114
+ const cleaned = raw
115
+ .replace(/\/\/.*$/gm, "") // strip // comments
116
+ .replace(/\/\*[\s\S]*?\*\//g, "") // strip /* */ comments
117
+ .replace(/,(\s*[}\]])/g, "$1"); // strip trailing commas
118
+ return JSON.parse(cleaned);
119
+ }
120
+ }
121
+ /**
122
+ * Deep-merge the AgentHiFive plugin config into an existing OpenClaw config.
123
+ *
124
+ * - Sets `plugins.enabled = true`
125
+ * - Adds `"agenthifive"` to `plugins.allow` (deduped)
126
+ * - Adds `"@agenthifive/openclaw"` to `plugins.load.paths` (deduped)
127
+ * - Replaces `plugins.entries.agenthifive` entirely
128
+ * - Preserves ALL other keys untouched
129
+ */
130
+ export function mergePluginConfig(existing, pluginBlock) {
131
+ const result = { ...existing };
132
+ // Extract our plugin config from the block buildConfigOutput() produces
133
+ const srcPlugins = pluginBlock.plugins;
134
+ const srcEntries = srcPlugins.entries ?? {};
135
+ // Build merged plugins object
136
+ const plugins = {
137
+ ...(result.plugins ?? {}),
138
+ };
139
+ plugins.enabled = true;
140
+ // Merge allow list
141
+ const allow = new Set(plugins.allow ?? []);
142
+ allow.add("agenthifive");
143
+ plugins.allow = [...allow];
144
+ // Merge load paths
145
+ const load = {
146
+ ...(plugins.load ?? {}),
147
+ };
148
+ const paths = new Set(load.paths ?? []);
149
+ paths.add("@agenthifive/openclaw");
150
+ load.paths = [...paths];
151
+ plugins.load = load;
152
+ // Replace agenthifive entry entirely (fresh bootstrap replaces old)
153
+ const entries = {
154
+ ...(plugins.entries ?? {}),
155
+ };
156
+ entries.agenthifive = srcEntries.agenthifive;
157
+ plugins.entries = entries;
158
+ result.plugins = plugins;
159
+ return result;
160
+ }
161
+ //# sourceMappingURL=config-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-discovery.js","sourceRoot":"","sources":["../src/config-discovery.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,9 @@ export { VaultActionProxy } from "./vault-action-proxy.js";
7
7
  export { VaultCredentialProvider } from "./vault-provider.js";
8
8
  export { verifyPatches } from "./patch-verify.js";
9
9
  export type { PatchStatus } from "./patch-verify.js";
10
+ export { resolveOpenClawConfigPath, defaultConfigPath, readExistingConfig, mergePluginConfig, } from "./config-discovery.js";
11
+ export { findOpenClawInstallDir, findAllOpenClawInstalls, validateOpenClawDir, applyPatch, applyDistPatch, applySourcePatch, isPatchApplied, findDistChunk, } from "./auto-patch.js";
12
+ export type { OpenClawInstall, PatchResult } from "./auto-patch.js";
10
13
  export { runSetupWizard, parseSetupArgs, buildConfigOutput } from "./setup-wizard.js";
11
14
  export type { SetupOptions } from "./setup-wizard.js";
12
15
  export { setCurrentSessionContext, getCurrentSessionContext, parseSessionKey, } from "./session-context.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtF,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EAEtB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,OAAO,EACP,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtF,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EAEtB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,OAAO,EACP,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -12,6 +12,10 @@ export { VaultActionProxy } from "./vault-action-proxy.js";
12
12
  export { VaultCredentialProvider } from "./vault-provider.js";
13
13
  // Patch runtime (separate entry point at @agenthifive/openclaw/runtime)
14
14
  export { verifyPatches } from "./patch-verify.js";
15
+ // Config discovery
16
+ export { resolveOpenClawConfigPath, defaultConfigPath, readExistingConfig, mergePluginConfig, } from "./config-discovery.js";
17
+ // Auto-patching
18
+ export { findOpenClawInstallDir, findAllOpenClawInstalls, validateOpenClawDir, applyPatch, applyDistPatch, applySourcePatch, isPatchApplied, findDistChunk, } from "./auto-patch.js";
15
19
  // Setup wizard
16
20
  export { runSetupWizard, parseSetupArgs, buildConfigOutput } from "./setup-wizard.js";
17
21
  // Session context
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAElD,kDAAkD;AAClD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,wCAAwC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,wEAAwE;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtF,kBAAkB;AAClB,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAgChC,iDAAiD;AACjD,OAAO,EACL,OAAO,EACP,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAElD,kDAAkD;AAClD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,wCAAwC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,wEAAwE;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,mBAAmB;AACnB,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,gBAAgB;AAChB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtF,kBAAkB;AAClB,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAgChC,iDAAiD;AACjD,OAAO,EACL,OAAO,EACP,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
@@ -5,6 +5,12 @@
5
5
  * proxying features are available. The plugin works fully (tools, hooks,
6
6
  * prompt injection) WITHOUT patches — they only enable LLM credential
7
7
  * proxying via model-auth.ts.
8
+ *
9
+ * Detection strategies:
10
+ * 1. import.meta.resolve — finds sibling model-auth.js (works when plugin
11
+ * is co-located with OpenClaw, e.g. source/dev installs)
12
+ * 2. findOpenClawInstallDir — finds the global/npm OpenClaw installation
13
+ * and checks the dist chunk for the patch marker
8
14
  */
9
15
  import type { PluginLogger } from "./pending-approvals.js";
10
16
  export type PatchStatus = {
@@ -14,15 +20,6 @@ export type PatchStatus = {
14
20
  /**
15
21
  * Probe whether the model-auth patch is applied by checking if OpenClaw's
16
22
  * resolveApiKeyForProvider function consults our runtime module.
17
- *
18
- * Strategy: We check if the patched module can be resolved. The patch adds
19
- * a dynamic import of "@agenthifive/openclaw/runtime" — if the import path
20
- * resolves, the module exists. The actual behavior test would require calling
21
- * resolveApiKeyForProvider which is too invasive for a startup check.
22
- *
23
- * Instead, we do a simpler check: look for our credential resolution code
24
- * in the model-auth module by attempting to import it and checking for the
25
- * patched function signature.
26
23
  */
27
24
  export declare function verifyPatches(logger: PluginLogger): Promise<PatchStatus>;
28
25
  //# sourceMappingURL=patch-verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"patch-verify.d.ts","sourceRoot":"","sources":["../src/patch-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG;IACxB,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiC9E"}
1
+ {"version":3,"file":"patch-verify.d.ts","sourceRoot":"","sources":["../src/patch-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,MAAM,WAAW,GAAG;IACxB,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsC9E"}
@@ -5,30 +5,22 @@
5
5
  * proxying features are available. The plugin works fully (tools, hooks,
6
6
  * prompt injection) WITHOUT patches — they only enable LLM credential
7
7
  * proxying via model-auth.ts.
8
+ *
9
+ * Detection strategies:
10
+ * 1. import.meta.resolve — finds sibling model-auth.js (works when plugin
11
+ * is co-located with OpenClaw, e.g. source/dev installs)
12
+ * 2. findOpenClawInstallDir — finds the global/npm OpenClaw installation
13
+ * and checks the dist chunk for the patch marker
8
14
  */
15
+ import { findOpenClawInstallDir, isPatchApplied } from "./auto-patch.js";
9
16
  /**
10
17
  * Probe whether the model-auth patch is applied by checking if OpenClaw's
11
18
  * resolveApiKeyForProvider function consults our runtime module.
12
- *
13
- * Strategy: We check if the patched module can be resolved. The patch adds
14
- * a dynamic import of "@agenthifive/openclaw/runtime" — if the import path
15
- * resolves, the module exists. The actual behavior test would require calling
16
- * resolveApiKeyForProvider which is too invasive for a startup check.
17
- *
18
- * Instead, we do a simpler check: look for our credential resolution code
19
- * in the model-auth module by attempting to import it and checking for the
20
- * patched function signature.
21
19
  */
22
20
  export async function verifyPatches(logger) {
23
21
  const status = { modelAuth: false };
22
+ // Strategy 1: Check sibling module (source/dev installs)
24
23
  try {
25
- // Try to import model-auth and check if it has vault awareness
26
- // The patched version exports a marker or has vault-related code paths.
27
- // We check by looking for the `resolveApiKeyForProvider` and testing
28
- // whether it consults our runtime module.
29
- //
30
- // Simplest reliable approach: check if the source contains our patch
31
- // marker comment that we add in the patch file.
32
24
  const modelAuthPath = await findModuleFile("../agents/model-auth.js");
33
25
  if (modelAuthPath) {
34
26
  const { readFileSync } = await import("node:fs");
@@ -37,13 +29,24 @@ export async function verifyPatches(logger) {
37
29
  }
38
30
  }
39
31
  catch {
40
- // Module not found or read failed patches not applied
32
+ // Module not found — try strategy 2
33
+ }
34
+ // Strategy 2: Find OpenClaw installation and check dist chunk
35
+ if (!status.modelAuth) {
36
+ try {
37
+ const install = await findOpenClawInstallDir();
38
+ if (install) {
39
+ status.modelAuth = isPatchApplied(install);
40
+ }
41
+ }
42
+ catch {
43
+ // Detection failed — assume not patched
44
+ }
41
45
  }
42
46
  if (!status.modelAuth) {
43
47
  logger.warn?.("AgentHiFive: model-auth patch not detected. LLM credential proxying is unavailable. " +
44
48
  "Tools, prompt injection, and approval flow work normally. " +
45
- "To enable credential proxying, apply the patch: " +
46
- "see @agenthifive/openclaw/patches/README.md");
49
+ "Run 'openclaw setup-vault' to apply the patch automatically.");
47
50
  }
48
51
  else {
49
52
  logger.info?.("AgentHiFive: model-auth patch detected — credential proxying enabled");
@@ -56,9 +59,7 @@ export async function verifyPatches(logger) {
56
59
  */
57
60
  async function findModuleFile(specifier) {
58
61
  try {
59
- // Use import.meta.resolve to find the module path
60
62
  const resolved = import.meta.resolve(specifier);
61
- // Convert file:// URL to path
62
63
  if (resolved.startsWith("file://")) {
63
64
  const { fileURLToPath } = await import("node:url");
64
65
  return fileURLToPath(resolved);
@@ -1 +1 @@
1
- {"version":3,"file":"patch-verify.js","sourceRoot":"","sources":["../src/patch-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAoB;IACtD,MAAM,MAAM,GAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAEjD,IAAI,CAAC;QACH,+DAA+D;QAC/D,wEAAwE;QACxE,qEAAqE;QACrE,0CAA0C;QAC1C,EAAE;QACF,qEAAqE;QACrE,gDAAgD;QAChD,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,yBAAyB,CAAC,CAAC;QACtE,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,EAAE,CACX,sFAAsF;YACpF,4DAA4D;YAC5D,kDAAkD;YAClD,6CAA6C,CAChD,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,EAAE,CAAC,sEAAsE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAAC,SAAiB;IAC7C,IAAI,CAAC;QACH,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,8BAA8B;QAC9B,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACnD,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"patch-verify.js","sourceRoot":"","sources":["../src/patch-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOzE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAoB;IACtD,MAAM,MAAM,GAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAEjD,yDAAyD;IACzD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,yBAAyB,CAAC,CAAC;QACtE,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,sBAAsB,EAAE,CAAC;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,EAAE,CACX,sFAAsF;YACpF,4DAA4D;YAC5D,8DAA8D,CACjE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,EAAE,CAAC,sEAAsE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAAC,SAAiB;IAC7C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACnD,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Setup wizard for AgentHiFive vault integration.
3
3
  *
4
- * Bootstraps agent auth, discovers capabilities, and outputs JSON config
5
- * that the user pastes into their openclaw.json.
4
+ * Bootstraps agent auth, discovers capabilities, writes config to
5
+ * openclaw.json, and auto-applies the credential resolution patch.
6
6
  *
7
7
  * Two modes:
8
8
  * - Interactive: prompts via Node.js readline
9
- * - Non-interactive: accepts --base-url and --bootstrap-secret flags
9
+ * - Non-interactive: accepts --base-url, --bootstrap-secret, and other flags
10
10
  *
11
11
  * Registered as `openclaw setup-vault` via api.registerCommand() in register.ts.
12
12
  */
@@ -14,6 +14,8 @@ export interface SetupOptions {
14
14
  baseUrl?: string;
15
15
  bootstrapSecret?: string;
16
16
  nonInteractive?: boolean;
17
+ configPath?: string;
18
+ openclawDir?: string;
17
19
  }
18
20
  export declare function buildConfigOutput(params: {
19
21
  baseUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AA8HD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,GAAG,MAAM,CA4BT;AAMD,wBAAsB,cAAc,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2K3E;AAmCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAsB3D"}
1
+ {"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsBH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8HD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,GAAG,MAAM,CA4BT;AAMD,wBAAsB,cAAc,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0O3E;AA6CD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA4B3D"}
@@ -1,17 +1,21 @@
1
1
  /**
2
2
  * Setup wizard for AgentHiFive vault integration.
3
3
  *
4
- * Bootstraps agent auth, discovers capabilities, and outputs JSON config
5
- * that the user pastes into their openclaw.json.
4
+ * Bootstraps agent auth, discovers capabilities, writes config to
5
+ * openclaw.json, and auto-applies the credential resolution patch.
6
6
  *
7
7
  * Two modes:
8
8
  * - Interactive: prompts via Node.js readline
9
- * - Non-interactive: accepts --base-url and --bootstrap-secret flags
9
+ * - Non-interactive: accepts --base-url, --bootstrap-secret, and other flags
10
10
  *
11
11
  * Registered as `openclaw setup-vault` via api.registerCommand() in register.ts.
12
12
  */
13
+ import { mkdirSync, writeFileSync } from "node:fs";
14
+ import path from "node:path";
13
15
  import { generateKeyPair, exportJWK } from "jose";
14
16
  import { VaultTokenManager } from "./vault-token-manager.js";
17
+ import { resolveOpenClawConfigPath, defaultConfigPath, readExistingConfig, mergePluginConfig, } from "./config-discovery.js";
18
+ import { findOpenClawInstallDir, validateOpenClawDir, applyPatch, } from "./auto-patch.js";
15
19
  // ---------------------------------------------------------------------------
16
20
  // Readline helpers
17
21
  // ---------------------------------------------------------------------------
@@ -216,13 +220,7 @@ export async function runSetupWizard(opts = {}) {
216
220
  if (vaultConnections.length === 0) {
217
221
  log(" No connections found. Add connections in the AgentHiFive dashboard.");
218
222
  }
219
- // Step 7: Ask about credential proxying patch
220
- let showPatchInstructions = false;
221
- if (proxiedProviders.length > 0 && !opts.nonInteractive) {
222
- log("");
223
- showPatchInstructions = await confirm(" Enable LLM credential proxying? (requires a one-time patch)");
224
- }
225
- // Step 8: Output config
223
+ // Step 7: Build config block
226
224
  const configBlock = buildConfigOutput({
227
225
  baseUrl,
228
226
  agentId,
@@ -231,24 +229,91 @@ export async function runSetupWizard(opts = {}) {
231
229
  connectedProviders,
232
230
  proxiedProviders,
233
231
  });
232
+ // Step 8: Write config to openclaw.json
234
233
  log("");
235
- log(" " + "=".repeat(50));
236
- log(" Add this to your ~/.openclaw/openclaw.json:");
237
- log(" " + "=".repeat(50));
238
- log("");
239
- log(JSON.stringify(configBlock, null, 2));
240
- log("");
241
- if (showPatchInstructions) {
242
- log(" " + "-".repeat(50));
243
- log(" To enable LLM credential proxying, apply the patch:");
244
- log(" " + "-".repeat(50));
245
- log("");
246
- log(" pnpm patch openclaw");
247
- log(" cd <temp-directory>");
248
- log(" patch -p1 < node_modules/@agenthifive/openclaw/patches/model-auth.patch");
249
- log(" pnpm patch-commit <temp-directory>");
234
+ let configPath = opts.configPath ?? resolveOpenClawConfigPath();
235
+ if (!configPath && !opts.nonInteractive) {
236
+ const suggested = defaultConfigPath();
237
+ configPath = await prompt(" OpenClaw config path", suggested);
238
+ if (!configPath)
239
+ configPath = null;
240
+ }
241
+ if (configPath) {
242
+ try {
243
+ const existing = readExistingConfig(configPath);
244
+ const merged = mergePluginConfig(existing, configBlock);
245
+ mkdirSync(path.dirname(configPath), { recursive: true });
246
+ writeFileSync(configPath, JSON.stringify(merged, null, 2) + "\n", "utf-8");
247
+ log(` Config written to: ${configPath}`);
248
+ log("");
249
+ log(" Plugin config (agenthifive):");
250
+ log(" " + "-".repeat(40));
251
+ const ah5Entry = configBlock.plugins;
252
+ const entries = ah5Entry.entries;
253
+ const lines = JSON.stringify(entries.agenthifive, null, 2).split("\n");
254
+ for (const line of lines) {
255
+ log(` ${line}`);
256
+ }
257
+ }
258
+ catch (err) {
259
+ log(` WARNING: Could not write config: ${err instanceof Error ? err.message : String(err)}`);
260
+ log("");
261
+ log(" Add this to your openclaw.json manually:");
262
+ log(JSON.stringify(configBlock, null, 2));
263
+ }
264
+ }
265
+ else {
266
+ log(" Could not determine config path.");
267
+ log(" Add this to your openclaw.json manually:");
250
268
  log("");
269
+ log(JSON.stringify(configBlock, null, 2));
270
+ }
271
+ log("");
272
+ // Step 9: Auto-apply credential proxying patch
273
+ log(" " + "-".repeat(50));
274
+ log(" Applying credential proxying patch...");
275
+ let openclawInstall = opts.openclawDir
276
+ ? validateOpenClawDir(opts.openclawDir)
277
+ : await findOpenClawInstallDir();
278
+ if (!openclawInstall && !opts.nonInteractive) {
279
+ const userPath = await prompt(" OpenClaw installation path (press Enter to skip)");
280
+ if (userPath) {
281
+ openclawInstall = validateOpenClawDir(userPath);
282
+ if (!openclawInstall) {
283
+ log(` WARNING: "${userPath}" does not appear to be an OpenClaw installation.`);
284
+ }
285
+ }
251
286
  }
287
+ if (openclawInstall) {
288
+ try {
289
+ const result = applyPatch(openclawInstall);
290
+ if (result.applied) {
291
+ log(` ${result.message}`);
292
+ }
293
+ else {
294
+ log(` WARNING: ${result.message}`);
295
+ logManualPatchInstructions(log);
296
+ }
297
+ }
298
+ catch (err) {
299
+ const msg = err instanceof Error ? err.message : String(err);
300
+ if (msg.includes("EACCES") || msg.includes("permission denied")) {
301
+ log(" ERROR: Permission denied. Try running with sudo:");
302
+ log(" sudo openclaw setup-vault ...");
303
+ }
304
+ else {
305
+ log(` WARNING: Auto-patch failed: ${msg}`);
306
+ }
307
+ logManualPatchInstructions(log);
308
+ }
309
+ }
310
+ else {
311
+ if (!opts.nonInteractive) {
312
+ log(" Could not find OpenClaw installation. Skipping auto-patch.");
313
+ }
314
+ logManualPatchInstructions(log);
315
+ }
316
+ log("");
252
317
  log(" Setup complete!");
253
318
  log("");
254
319
  }
@@ -266,7 +331,7 @@ function outputMinimalConfig(log, baseUrl, agentId, privateKey) {
266
331
  });
267
332
  log("");
268
333
  log(" " + "=".repeat(50));
269
- log(" Add this to your ~/.openclaw/openclaw.json:");
334
+ log(" Add this to your openclaw.json:");
270
335
  log(" (capabilities could not be fetched - update manually)");
271
336
  log(" " + "=".repeat(50));
272
337
  log("");
@@ -274,6 +339,14 @@ function outputMinimalConfig(log, baseUrl, agentId, privateKey) {
274
339
  log("");
275
340
  }
276
341
  // ---------------------------------------------------------------------------
342
+ // Manual patch instructions (shown when auto-patch fails)
343
+ // ---------------------------------------------------------------------------
344
+ function logManualPatchInstructions(log) {
345
+ log("");
346
+ log(" To apply the patch manually, see:");
347
+ log(" node_modules/@agenthifive/openclaw/patches/README.md");
348
+ }
349
+ // ---------------------------------------------------------------------------
277
350
  // CLI argument parser (for non-interactive mode)
278
351
  // ---------------------------------------------------------------------------
279
352
  export function parseSetupArgs(args) {
@@ -290,6 +363,16 @@ export function parseSetupArgs(args) {
290
363
  if (val)
291
364
  opts.bootstrapSecret = val;
292
365
  }
366
+ else if (arg === "--config-path" && args[i + 1]) {
367
+ const val = args[++i];
368
+ if (val)
369
+ opts.configPath = val;
370
+ }
371
+ else if (arg === "--openclaw-dir" && args[i + 1]) {
372
+ const val = args[++i];
373
+ if (val)
374
+ opts.openclawDir = val;
375
+ }
293
376
  else if (arg === "--non-interactive") {
294
377
  opts.nonInteractive = true;
295
378
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenthifive/openclaw",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",