openclaw/extensions/imessage/src/setup-surface.ts
2026-03-18 03:58:22 +00:00

46 lines
1.6 KiB
TypeScript

import {
createDetectedBinaryStatus,
setSetupChannelEnabled,
type ChannelSetupWizard,
} from "openclaw/plugin-sdk/setup";
import { detectBinary } from "openclaw/plugin-sdk/setup-tools";
import { listIMessageAccountIds, resolveIMessageAccount } from "./accounts.js";
import {
createIMessageCliPathTextInput,
imessageCompletionNote,
imessageDmPolicy,
imessageSetupAdapter,
imessageSetupStatusBase,
parseIMessageAllowFromEntries,
} from "./setup-core.js";
const channel = "imessage" as const;
export const imessageSetupWizard: ChannelSetupWizard = {
channel,
status: createDetectedBinaryStatus({
channelLabel: "iMessage",
binaryLabel: "imsg",
configuredLabel: imessageSetupStatusBase.configuredLabel,
unconfiguredLabel: imessageSetupStatusBase.unconfiguredLabel,
configuredHint: imessageSetupStatusBase.configuredHint,
unconfiguredHint: imessageSetupStatusBase.unconfiguredHint,
configuredScore: imessageSetupStatusBase.configuredScore,
unconfiguredScore: imessageSetupStatusBase.unconfiguredScore,
resolveConfigured: imessageSetupStatusBase.resolveConfigured,
resolveBinaryPath: ({ cfg }) => cfg.channels?.imessage?.cliPath ?? "imsg",
detectBinary,
}),
credentials: [],
textInputs: [
createIMessageCliPathTextInput(async ({ currentValue }) => {
return !(await detectBinary(currentValue ?? "imsg"));
}),
],
completionNote: imessageCompletionNote,
dmPolicy: imessageDmPolicy,
disable: (cfg) => setSetupChannelEnabled(cfg, channel, false),
};
export { imessageSetupAdapter, parseIMessageAllowFromEntries };