import { N as ChannelSetupInput, T as ChannelMeta, c as ChannelCapabilities } from "./types.core-CuC3Nb15.js"; import { i as OpenClawConfig } from "./types.openclaw-CpnoYlBx.js"; import { h as DmPolicy } from "./types.base-CrXPFJf5.js"; import { t as ChannelId } from "./channel-id.types-DjYEl-_2.js"; import { n as RuntimeEnv } from "./runtime-Bxifh4bY.js"; import { H as ChannelSetupAdapter, g as ChannelConfigAdapter } from "./types.adapters-BFws9krA.js"; import { i as WizardPrompter } from "./prompts-DgKIGa-v.js"; //#region src/channels/plugins/setup-group-access.d.ts /** * Group access policy selected during channel setup. */ type ChannelAccessPolicy = "allowlist" | "open" | "disabled"; /** * Prompts for the full group access config, including allowlist entries when needed. */ declare function promptChannelAccessConfig(params: { prompter: WizardPrompter; label: string; currentPolicy?: ChannelAccessPolicy; currentEntries?: string[]; placeholder?: string; allowOpen?: boolean; allowDisabled?: boolean; skipAllowlistEntries?: boolean; defaultPrompt?: boolean; updatePrompt?: boolean; }): Promise<{ policy: ChannelAccessPolicy; entries: string[]; } | null>; //#endregion //#region src/channels/plugins/setup-wizard-types.d.ts type ChannelSetupPlugin = { id: ChannelId; meta: ChannelMeta; capabilities: ChannelCapabilities; config: ChannelConfigAdapter; setup?: ChannelSetupAdapter; setupWizard?: ChannelSetupWizard | ChannelSetupWizardAdapter; }; /** Status block shown before users select channels during setup. */ type ChannelSetupWizardStatus = { configuredLabel: string; unconfiguredLabel: string; configuredHint?: string; unconfiguredHint?: string; configuredScore?: number; unconfiguredScore?: number; resolveConfigured: (params: { cfg: OpenClawConfig; accountId?: string; }) => boolean | Promise; resolveStatusLines?: (params: { cfg: OpenClawConfig; accountId?: string; configured: boolean; }) => string[] | Promise; resolveSelectionHint?: (params: { cfg: OpenClawConfig; accountId?: string; configured: boolean; }) => string | undefined | Promise; resolveQuickstartScore?: (params: { cfg: OpenClawConfig; accountId?: string; configured: boolean; }) => number | undefined | Promise; }; /** Snapshot of one credential before prompting or reusing existing config. */ type ChannelSetupWizardCredentialState = { accountConfigured: boolean; hasConfiguredValue: boolean; resolvedValue?: string; envValue?: string; }; type ChannelSetupWizardCredentialValues = Partial>; /** Optional explanatory note shown when its owning step is reached. */ type ChannelSetupWizardNote = { title: string; lines: string[]; shouldShow?: (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; }) => boolean | Promise; }; /** Lets a wizard configure an account entirely from existing environment. */ type ChannelSetupWizardEnvShortcut = { prompt: string; preferredEnvVar?: string; isAvailable: (params: { cfg: OpenClawConfig; accountId: string; }) => boolean; apply: (params: { cfg: OpenClawConfig; accountId: string; }) => OpenClawConfig | Promise; }; /** Declarative secret/input step for a channel account credential. */ type ChannelSetupWizardCredential = { inputKey: keyof ChannelSetupInput; providerHint: string; credentialLabel: string; preferredEnvVar?: string; helpTitle?: string; helpLines?: string[]; envPrompt: string; keepPrompt: string; inputPrompt: string; allowEnv?: (params: { cfg: OpenClawConfig; accountId: string; }) => boolean; inspect: (params: { cfg: OpenClawConfig; accountId: string; }) => ChannelSetupWizardCredentialState; shouldPrompt?: (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; currentValue?: string; state: ChannelSetupWizardCredentialState; }) => boolean | Promise; applyUseEnv?: (params: { cfg: OpenClawConfig; accountId: string; }) => OpenClawConfig | Promise; applySet?: (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; value: unknown; resolvedValue: string; }) => OpenClawConfig | Promise; }; /** Declarative non-secret text step that can depend on resolved credentials. */ type ChannelSetupWizardTextInput = { inputKey: keyof ChannelSetupInput; message: string; placeholder?: string; required?: boolean; applyEmptyValue?: boolean; helpTitle?: string; helpLines?: string[]; confirmCurrentValue?: boolean; keepPrompt?: string | ((value: string) => string); currentValue?: (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; }) => string | undefined | Promise; initialValue?: (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; }) => string | undefined | Promise; shouldPrompt?: (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; currentValue?: string; }) => boolean | Promise; applyCurrentValue?: boolean; validate?: (params: { value: string; cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; }) => string | undefined; normalizeValue?: (params: { value: string; cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; }) => string; applySet?: (params: { cfg: OpenClawConfig; accountId: string; value: string; }) => OpenClawConfig | Promise; }; type ChannelSetupWizardAllowFromEntry = { input: string; resolved: boolean; id: string | null; }; /** Channel-specific resolver for user-entered allowlist targets. */ type ChannelSetupWizardAllowFrom = { helpTitle?: string; helpLines?: string[]; credentialInputKey?: keyof ChannelSetupInput; message: string; placeholder: string; invalidWithoutCredentialNote: string; parseInputs?: (raw: string) => string[]; parseId: (raw: string) => string | null; resolveEntries: (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; entries: string[]; }) => Promise; apply: (params: { cfg: OpenClawConfig; accountId: string; allowFrom: string[]; }) => OpenClawConfig | Promise; }; /** Declarative group/DM access policy step used by interactive setup. */ type ChannelSetupWizardGroupAccess = { label: string; placeholder: string; helpTitle?: string; helpLines?: string[]; skipAllowlistEntries?: boolean; currentPolicy: (params: { cfg: OpenClawConfig; accountId: string; }) => ChannelAccessPolicy; currentEntries: (params: { cfg: OpenClawConfig; accountId: string; }) => string[]; updatePrompt: (params: { cfg: OpenClawConfig; accountId: string; }) => boolean; setPolicy: (params: { cfg: OpenClawConfig; accountId: string; policy: ChannelAccessPolicy; }) => OpenClawConfig; resolveAllowlist?: (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; entries: string[]; prompter: Pick; }) => Promise; applyAllowlist?: (params: { cfg: OpenClawConfig; accountId: string; resolved: unknown; }) => OpenClawConfig; }; /** Optional pre-step hook for deriving helper config or credential values. */ type ChannelSetupWizardPrepare = (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; runtime: ChannelSetupConfigureContext["runtime"]; prompter: WizardPrompter; options?: ChannelSetupConfigureContext["options"]; }) => { cfg?: OpenClawConfig; credentialValues?: ChannelSetupWizardCredentialValues; } | void | Promise<{ cfg?: OpenClawConfig; credentialValues?: ChannelSetupWizardCredentialValues; } | void>; /** Optional post-step hook for final validation, writes, or post prompts. */ type ChannelSetupWizardFinalize = (params: { cfg: OpenClawConfig; accountId: string; credentialValues: ChannelSetupWizardCredentialValues; runtime: ChannelSetupConfigureContext["runtime"]; prompter: WizardPrompter; options?: ChannelSetupConfigureContext["options"]; forceAllowFrom: boolean; }) => { cfg?: OpenClawConfig; credentialValues?: ChannelSetupWizardCredentialValues; } | void | Promise<{ cfg?: OpenClawConfig; credentialValues?: ChannelSetupWizardCredentialValues; } | void>; /** Full declarative setup wizard consumed by the generic setup adapter. */ type ChannelSetupWizard = { channel: string; status: ChannelSetupWizardStatus; introNote?: ChannelSetupWizardNote; envShortcut?: ChannelSetupWizardEnvShortcut; resolveAccountIdForConfigure?: (params: { cfg: OpenClawConfig; prompter: WizardPrompter; options?: ChannelSetupConfigureContext["options"]; accountOverride?: string; shouldPromptAccountIds: boolean; listAccountIds: ChannelSetupPlugin["config"]["listAccountIds"]; defaultAccountId: string; }) => string | Promise; resolveShouldPromptAccountIds?: (params: { cfg: OpenClawConfig; options?: ChannelSetupConfigureContext["options"]; shouldPromptAccountIds: boolean; }) => boolean; prepare?: ChannelSetupWizardPrepare; stepOrder?: "credentials-first" | "text-first"; credentials: ChannelSetupWizardCredential[]; textInputs?: ChannelSetupWizardTextInput[]; finalize?: ChannelSetupWizardFinalize; completionNote?: ChannelSetupWizardNote; dmPolicy?: ChannelSetupDmPolicy; allowFrom?: ChannelSetupWizardAllowFrom; groupAccess?: ChannelSetupWizardGroupAccess; disable?: (cfg: OpenClawConfig) => OpenClawConfig; onAccountRecorded?: ChannelSetupWizardAdapter["onAccountRecorded"]; }; /** Runtime options for selecting and configuring one or more channels. */ type SetupChannelsOptions = { allowDisable?: boolean; allowSignalInstall?: boolean; onSelection?: (selection: ChannelId[]) => void; onPostWriteHook?: (hook: ChannelOnboardingPostWriteHook) => void; accountIds?: Partial>; onAccountId?: (channel: ChannelId, accountId: string) => void; onResolvedPlugin?: (channel: ChannelId, plugin: ChannelSetupPlugin) => void; promptAccountIds?: boolean; forceAllowFromChannels?: ChannelId[]; deferStatusUntilSelection?: boolean; skipStatusNote?: boolean; skipDmPolicyPrompt?: boolean; skipConfirm?: boolean; quickstartDefaults?: boolean; initialSelection?: ChannelId[]; secretInputMode?: "plaintext" | "ref"; }; type PromptAccountIdParams = { cfg: OpenClawConfig; prompter: WizardPrompter; label: string; currentId?: string; listAccountIds: (cfg: OpenClawConfig) => string[]; defaultAccountId: string; }; type PromptAccountId = (params: PromptAccountIdParams) => Promise; type ChannelSetupStatus = { channel: ChannelId; configured: boolean; statusLines: string[]; selectionHint?: string; quickstartScore?: number; }; /** Shared context for status checks before channel selection. */ type ChannelSetupStatusContext = { cfg: OpenClawConfig; options?: SetupChannelsOptions; accountOverrides: Partial>; }; /** Shared context for applying setup changes for a selected channel. */ type ChannelSetupConfigureContext = { cfg: OpenClawConfig; runtime: RuntimeEnv; prompter: WizardPrompter; options?: SetupChannelsOptions; accountOverrides: Partial>; shouldPromptAccountIds: boolean; forceAllowFrom: boolean; }; /** Context passed after setup has written config to disk. */ type ChannelOnboardingPostWriteContext = { previousCfg: OpenClawConfig; cfg: OpenClawConfig; accountId: string; runtime: RuntimeEnv; }; /** Deferred hook for channel work that must run after config persistence. */ type ChannelOnboardingPostWriteHook = { channel: ChannelId; accountId: string; run: (ctx: { cfg: OpenClawConfig; runtime: RuntimeEnv; }) => Promise | void; }; type ChannelSetupResult = { cfg: OpenClawConfig; accountId?: string; }; type ChannelSetupConfiguredResult = ChannelSetupResult | "skip"; type ChannelSetupInteractiveContext = ChannelSetupConfigureContext & { configured: boolean; label: string; }; /** Optional direct-message policy contract exposed by setup adapters. */ type ChannelSetupDmPolicy = { label: string; channel: ChannelId; policyKey: string; allowFromKey: string; resolveConfigKeys?: (cfg: OpenClawConfig, accountId?: string) => { policyKey: string; allowFromKey: string; }; getCurrent: (cfg: OpenClawConfig, accountId?: string) => DmPolicy; setPolicy: (cfg: OpenClawConfig, policy: DmPolicy, accountId?: string) => OpenClawConfig; promptAllowFrom?: (params: { cfg: OpenClawConfig; prompter: WizardPrompter; accountId?: string; }) => Promise; }; /** Imperative adapter consumed by onboarding and setup flows. */ type ChannelSetupWizardAdapter = { channel: ChannelId; getStatus: (ctx: ChannelSetupStatusContext) => Promise; configure: (ctx: ChannelSetupConfigureContext) => Promise; configureInteractive?: (ctx: ChannelSetupInteractiveContext) => Promise; configureWhenConfigured?: (ctx: ChannelSetupInteractiveContext) => Promise; afterConfigWritten?: (ctx: ChannelOnboardingPostWriteContext) => Promise | void; dmPolicy?: ChannelSetupDmPolicy; onAccountRecorded?: (accountId: string, options?: SetupChannelsOptions) => void; disable?: (cfg: OpenClawConfig) => OpenClawConfig; }; //#endregion export { ChannelSetupWizardCredentialValues as a, PromptAccountId as c, ChannelSetupWizardAllowFromEntry as i, promptChannelAccessConfig as l, ChannelSetupWizard as n, ChannelSetupWizardStatus as o, ChannelSetupWizardAdapter as r, ChannelSetupWizardTextInput as s, ChannelSetupDmPolicy as t };