Spaces:
Configuration error
Configuration error
| import { imessageOutbound } from "../channels/plugins/outbound/imessage.js"; | |
| import type { | |
| ChannelCapabilities, | |
| ChannelId, | |
| ChannelOutboundAdapter, | |
| ChannelPlugin, | |
| } from "../channels/plugins/types.js"; | |
| import type { PluginRegistry } from "../plugins/registry.js"; | |
| import { normalizeIMessageHandle } from "../imessage/targets.js"; | |
| export const createTestRegistry = (channels: PluginRegistry["channels"] = []): PluginRegistry => ({ | |
| plugins: [], | |
| tools: [], | |
| hooks: [], | |
| typedHooks: [], | |
| channels, | |
| providers: [], | |
| gatewayHandlers: {}, | |
| httpHandlers: [], | |
| httpRoutes: [], | |
| cliRegistrars: [], | |
| services: [], | |
| commands: [], | |
| diagnostics: [], | |
| }); | |
| export const createIMessageTestPlugin = (params?: { | |
| outbound?: ChannelOutboundAdapter; | |
| }): ChannelPlugin => ({ | |
| id: "imessage", | |
| meta: { | |
| id: "imessage", | |
| label: "iMessage", | |
| selectionLabel: "iMessage (imsg)", | |
| docsPath: "/channels/imessage", | |
| blurb: "iMessage test stub.", | |
| aliases: ["imsg"], | |
| }, | |
| capabilities: { chatTypes: ["direct", "group"], media: true }, | |
| config: { | |
| listAccountIds: () => [], | |
| resolveAccount: () => ({}), | |
| }, | |
| status: { | |
| collectStatusIssues: (accounts) => | |
| accounts.flatMap((account) => { | |
| const lastError = typeof account.lastError === "string" ? account.lastError.trim() : ""; | |
| if (!lastError) return []; | |
| return [ | |
| { | |
| channel: "imessage", | |
| accountId: account.accountId, | |
| kind: "runtime", | |
| message: `Channel error: ${lastError}`, | |
| }, | |
| ]; | |
| }), | |
| }, | |
| outbound: params?.outbound ?? imessageOutbound, | |
| messaging: { | |
| targetResolver: { | |
| looksLikeId: (raw) => { | |
| const trimmed = raw.trim(); | |
| if (!trimmed) return false; | |
| if (/^(imessage:|sms:|auto:|chat_id:|chat_guid:|chat_identifier:)/i.test(trimmed)) { | |
| return true; | |
| } | |
| if (trimmed.includes("@")) return true; | |
| return /^\+?\d{3,}$/.test(trimmed); | |
| }, | |
| hint: "<handle|chat_id:ID>", | |
| }, | |
| normalizeTarget: (raw) => normalizeIMessageHandle(raw), | |
| }, | |
| }); | |
| export const createOutboundTestPlugin = (params: { | |
| id: ChannelId; | |
| outbound: ChannelOutboundAdapter; | |
| label?: string; | |
| docsPath?: string; | |
| capabilities?: ChannelCapabilities; | |
| }): ChannelPlugin => ({ | |
| id: params.id, | |
| meta: { | |
| id: params.id, | |
| label: params.label ?? String(params.id), | |
| selectionLabel: params.label ?? String(params.id), | |
| docsPath: params.docsPath ?? `/channels/${params.id}`, | |
| blurb: "test stub.", | |
| }, | |
| capabilities: params.capabilities ?? { chatTypes: ["direct"] }, | |
| config: { | |
| listAccountIds: () => [], | |
| resolveAccount: () => ({}), | |
| }, | |
| outbound: params.outbound, | |
| }); | |