fix: honor imessage default runtime account

This commit is contained in:
Tak Hoffman 2026-04-03 13:44:11 -05:00
parent b8af2c65e5
commit 4f5f1fa724
No known key found for this signature in database
2 changed files with 32 additions and 1 deletions

View File

@ -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);
});
});

View File

@ -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;