UNPKG

@gguf/claw

Version:

Multi-channel AI gateway with extensible messaging integrations

114 lines (113 loc) 3.23 kB
import type { WebhookEvent, TextMessage, ImageMessage, VideoMessage, AudioMessage, StickerMessage, LocationMessage } from "@line/bot-sdk"; import type { BaseProbeResult } from "../channels/plugins/types.js"; export type LineTokenSource = "config" | "env" | "file" | "none"; interface LineAccountBaseConfig { enabled?: boolean; channelAccessToken?: string; channelSecret?: string; tokenFile?: string; secretFile?: string; name?: string; allowFrom?: Array<string | number>; groupAllowFrom?: Array<string | number>; dmPolicy?: "open" | "allowlist" | "pairing" | "disabled"; groupPolicy?: "open" | "allowlist" | "disabled"; /** Outbound response prefix override for this account. */ responsePrefix?: string; mediaMaxMb?: number; webhookPath?: string; groups?: Record<string, LineGroupConfig>; } export interface LineConfig extends LineAccountBaseConfig { /** Per-account overrides keyed by account id. */ accounts?: Record<string, LineAccountConfig>; } export interface LineAccountConfig extends LineAccountBaseConfig { } export interface LineGroupConfig { enabled?: boolean; allowFrom?: Array<string | number>; requireMention?: boolean; systemPrompt?: string; skills?: string[]; } export interface ResolvedLineAccount { accountId: string; name?: string; enabled: boolean; channelAccessToken: string; channelSecret: string; tokenSource: LineTokenSource; config: LineConfig & LineAccountConfig; } export type LineMessageType = TextMessage | ImageMessage | VideoMessage | AudioMessage | StickerMessage | LocationMessage; export interface LineWebhookContext { event: WebhookEvent; replyToken?: string; userId?: string; groupId?: string; roomId?: string; } export interface LineSendResult { messageId: string; chatId: string; } export type LineProbeResult = BaseProbeResult<string> & { bot?: { displayName?: string; userId?: string; basicId?: string; pictureUrl?: string; }; }; export type LineFlexMessagePayload = { altText: string; contents: unknown; }; export type LineTemplateMessagePayload = { type: "confirm"; text: string; confirmLabel: string; confirmData: string; cancelLabel: string; cancelData: string; altText?: string; } | { type: "buttons"; title: string; text: string; actions: Array<{ type: "message" | "uri" | "postback"; label: string; data?: string; uri?: string; }>; thumbnailImageUrl?: string; altText?: string; } | { type: "carousel"; columns: Array<{ title?: string; text: string; thumbnailImageUrl?: string; actions: Array<{ type: "message" | "uri" | "postback"; label: string; data?: string; uri?: string; }>; }>; altText?: string; }; export type LineChannelData = { quickReplies?: string[]; location?: { title: string; address: string; latitude: number; longitude: number; }; flexMessage?: LineFlexMessagePayload; templateMessage?: LineTemplateMessagePayload; }; export {};