diff --git a/extensions/imessage/src/accounts.test.ts b/extensions/imessage/src/accounts.test.ts new file mode 100644 index 00000000000..cbf60b553d6 --- /dev/null +++ b/extensions/imessage/src/accounts.test.ts @@ -0,0 +1,29 @@ +import { describe, expect, it } from "vitest"; +import { resolveIMessageAccount } from "./accounts.js"; + +describe("resolveIMessageAccount", () => { + it("uses configured defaultAccount when accountId is omitted", () => { + const resolved = resolveIMessageAccount({ + cfg: { + channels: { + imessage: { + defaultAccount: "work", + accounts: { + work: { + name: "Work", + cliPath: "/usr/local/bin/imsg-work", + dmPolicy: "open", + }, + }, + }, + }, + } as never, + }); + + expect(resolved.accountId).toBe("work"); + expect(resolved.name).toBe("Work"); + expect(resolved.config.cliPath).toBe("/usr/local/bin/imsg-work"); + expect(resolved.config.dmPolicy).toBe("open"); + expect(resolved.configured).toBe(true); + }); +}); diff --git a/extensions/imessage/src/accounts.ts b/extensions/imessage/src/accounts.ts index 18931713eaf..5607e44bf7d 100644 --- a/extensions/imessage/src/accounts.ts +++ b/extensions/imessage/src/accounts.ts @@ -32,7 +32,9 @@ export function resolveIMessageAccount(params: { cfg: OpenClawConfig; accountId?: string | null; }): ResolvedIMessageAccount { - const accountId = normalizeAccountId(params.accountId); + const accountId = normalizeAccountId( + params.accountId ?? resolveDefaultIMessageAccountId(params.cfg), + ); const baseEnabled = params.cfg.channels?.imessage?.enabled !== false; const merged = mergeIMessageAccountConfig(params.cfg, accountId); const accountEnabled = merged.enabled !== false;