diff --git a/packages/adapters/openclaw-gateway/src/server/execute.test.ts b/packages/adapters/openclaw-gateway/src/server/execute.test.ts index 316b81c7d5..3689e41245 100644 --- a/packages/adapters/openclaw-gateway/src/server/execute.test.ts +++ b/packages/adapters/openclaw-gateway/src/server/execute.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { buildAgentParams, resolveSessionKey } from "./execute.js"; +import { buildAgentParams, resolveClaimedApiKeyPath, resolveSessionKey } from "./execute.js"; describe("resolveSessionKey", () => { it("prefixes run-scoped session keys with the configured agent", () => { @@ -98,3 +98,28 @@ describe("buildAgentParams", () => { }); }); }); + +describe("resolveClaimedApiKeyPath", () => { + const DEFAULT_PATH = "~/.openclaw/workspace/paperclip-claimed-api-key.json"; + + it("returns the configured per-agent path when set", () => { + expect( + resolveClaimedApiKeyPath("~/.openclaw/workspace/paperclip-keys/happy.json"), + ).toBe("~/.openclaw/workspace/paperclip-keys/happy.json"); + }); + + it("falls back to the shared default when value is empty", () => { + expect(resolveClaimedApiKeyPath("")).toBe(DEFAULT_PATH); + expect(resolveClaimedApiKeyPath(" ")).toBe(DEFAULT_PATH); + }); + + it("falls back to the shared default when value is missing", () => { + expect(resolveClaimedApiKeyPath(undefined)).toBe(DEFAULT_PATH); + expect(resolveClaimedApiKeyPath(null)).toBe(DEFAULT_PATH); + }); + + it("falls back to the shared default when value is not a string", () => { + expect(resolveClaimedApiKeyPath(42)).toBe(DEFAULT_PATH); + expect(resolveClaimedApiKeyPath({})).toBe(DEFAULT_PATH); + }); +}); diff --git a/packages/adapters/openclaw-gateway/src/server/execute.ts b/packages/adapters/openclaw-gateway/src/server/execute.ts index ab84aa7de0..7771254de4 100644 --- a/packages/adapters/openclaw-gateway/src/server/execute.ts +++ b/packages/adapters/openclaw-gateway/src/server/execute.ts @@ -337,7 +337,7 @@ function resolvePaperclipApiUrlOverride(value: unknown): string | null { const DEFAULT_CLAIMED_API_KEY_PATH = "~/.openclaw/workspace/paperclip-claimed-api-key.json"; -function resolveClaimedApiKeyPath(value: unknown): string { +export function resolveClaimedApiKeyPath(value: unknown): string { return nonEmpty(value) ?? DEFAULT_CLAIMED_API_KEY_PATH; } @@ -369,8 +369,8 @@ function buildWakeText( payload: WakePayload, paperclipEnv: Record, structuredWakePrompt: string, + claimedApiKeyPath: string, ): string { - const claimedApiKeyPath = "~/.openclaw/workspace/paperclip-claimed-api-key.json"; const orderedKeys = [ "PAPERCLIP_RUN_ID", "PAPERCLIP_AGENT_ID", @@ -1096,6 +1096,7 @@ export async function execute(ctx: AdapterExecutionContext): Promise