import type { Command } from "commander"; import { normalizeChannelId } from "../channels/plugins/index.js"; import { listPairingChannels, notifyPairingApproved } from "../channels/plugins/pairing.js"; import { loadConfig } from "../config/config.js"; import { resolvePairingIdLabel } from "../pairing/pairing-labels.js"; import { approveChannelPairingCode, listChannelPairingRequests } from "../pairing/pairing-store.js"; import type { PairingChannel } from "../pairing/pairing-store.types.js"; import { defaultRuntime } from "../runtime.js"; import {
normalizeLowercaseStringOrEmpty,
normalizeStringifiedOptionalString,
} from "../shared/string-coerce.js"; import { formatDocsLink } from "../terminal/links.js"; import { getTerminalTableWidth, renderTable } from "../terminal/table.js"; import { theme } from "../terminal/theme.js"; import { formatCliCommand } from "./command-format.js";
/** Parse channel, allowing extension channels not in core registry. */ function parseChannel(raw: unknown, channels: PairingChannel[]): PairingChannel { const value = normalizeLowercaseStringOrEmpty(normalizeStringifiedOptionalString(raw) ?? ""); if (!value) { thrownew Error("Channel required");
}
const normalized = normalizeChannelId(value); if (normalized) { if (!channels.includes(normalized)) { thrownew Error(`Channel ${normalized} does not support pairing`);
} return normalized;
}
// Allow extension channels: validate format but don't require registry if (/^[a-z][a-z0-9_-]{0,63}$/.test(value)) { return value as PairingChannel;
} thrownew Error(`Invalid channel: ${value}`);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.