@brew.new/cli 0.5.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/errors.ts","../src/lib/confirm.ts","../src/version.ts","../src/lib/config-store.ts","../src/lib/client.ts","../src/lib/output.ts","../src/lib/context.ts","../src/lib/define-command.ts","../src/lib/input.ts","../src/lib/paginate.ts","../src/commands/analytics/automations.ts","../src/commands/analytics/campaigns.ts","../src/commands/analytics/events.ts","../src/commands/analytics/overview.ts","../src/commands/analytics/sends/get.ts","../src/commands/analytics/sends/list.ts","../src/commands/analytics/trigger-instances/list.ts","../src/lib/raw-request.ts","../src/commands/api.ts","../src/commands/api-keys/create.ts","../src/commands/api-keys/delete.ts","../src/commands/api-keys/list.ts","../src/commands/audiences/create.ts","../src/commands/audiences/delete.ts","../src/commands/audiences/duplicate.ts","../src/commands/audiences/from-events.ts","../src/commands/audiences/get.ts","../src/commands/audiences/list.ts","../src/commands/audiences/update.ts","../src/commands/automations/audience-runs/control.ts","../src/commands/automations/audience-runs/list.ts","../src/commands/automations/create.ts","../src/commands/automations/delete.ts","../src/commands/automations/get.ts","../src/commands/automations/list.ts","../src/commands/automations/publish.ts","../src/commands/automations/run.ts","../src/commands/automations/runs/list.ts","../src/commands/automations/test.ts","../src/commands/automations/triggers/contract.ts","../src/commands/automations/triggers/create.ts","../src/commands/automations/triggers/delete.ts","../src/commands/automations/triggers/fire.ts","../src/commands/automations/triggers/list.ts","../src/commands/automations/triggers/ready.ts","../src/commands/automations/triggers/update.ts","../src/commands/automations/unpublish.ts","../src/commands/automations/update.ts","../src/commands/brand/get.ts","../src/commands/brand/get-images.ts","../src/commands/brand/update.ts","../src/commands/brands/create.ts","../src/commands/brands/get.ts","../src/commands/brands/list.ts","../src/commands/chats/get.ts","../src/commands/config.ts","../src/commands/contacts/count.ts","../src/commands/contacts/delete.ts","../src/commands/contacts/delete-many.ts","../src/commands/contacts/get.ts","../src/commands/contacts/import-csv.ts","../src/commands/contacts/search.ts","../src/commands/contacts/update.ts","../src/commands/contacts/upsert.ts","../src/commands/contacts/upsert-many.ts","../src/commands/contacts/validate.ts","../src/commands/content/add-image.ts","../src/commands/content/generate-image.ts","../src/commands/content/gif.ts","../src/commands/content/html-to-png.ts","../src/commands/content/transform.ts","../src/commands/contracts/infer.ts","../src/skip-list.ts","../src/lib/manifest.ts","../src/commands/docs.ts","../src/commands/doctor.ts","../src/commands/domains/add.ts","../src/commands/domains/delete.ts","../src/commands/domains/get.ts","../src/commands/domains/health.ts","../src/commands/domains/list.ts","../src/commands/domains/update.ts","../src/commands/domains/verify.ts","../src/commands/emails/audit.ts","../src/commands/emails/clone.ts","../src/commands/emails/create-inbox-placement-test.ts","../src/commands/emails/delete.ts","../src/commands/emails/edit.ts","../src/commands/emails/export.ts","../src/commands/emails/generate.ts","../src/commands/emails/get.ts","../src/commands/emails/get-inbox-placement-results.ts","../src/commands/emails/groups/create.ts","../src/commands/emails/groups/delete.ts","../src/commands/emails/groups/list.ts","../src/commands/emails/groups/update.ts","../src/commands/emails/import.ts","../src/commands/emails/import-figma.ts","../src/commands/emails/list.ts","../src/commands/emails/preview-clients.ts","../src/commands/emails/restore.ts","../src/commands/emails/send.ts","../src/commands/fields/create.ts","../src/commands/fields/delete.ts","../src/commands/fields/list.ts","../src/commands/health.ts","../src/commands/integrations/list.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/sends/cancel.ts","../src/commands/sends/pause.ts","../src/commands/sends/resume.ts","../src/commands/templates/list.ts","../src/commands/types.ts","../src/commands/usage.ts","../src/commands/whoami.ts","../src/registry.ts","../src/cli.ts","../src/bin.ts"],"names":["readFileSync","parseBool","BrewApiError","parseInlineInput","asString","writeFileSync","ctx"],"mappings":"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","file":"bin.js","sourcesContent":["import { BrewApiError } from '@brew.new/sdk'\nimport type { CliContext } from './types'\n\nexport const EXIT_OK = 0\nexport const EXIT_RUNTIME = 1\nexport const EXIT_USAGE = 2\nexport const EXIT_AUTH = 3\nexport const EXIT_CONFIRM = 4\n\n/** Bad invocation: malformed input, unusable flag combinations. */\nexport class CliUsageError extends Error {}\n\n/** Missing or unusable credentials, detected before any request is sent. */\nexport class CliAuthError extends Error {\n readonly suggestion: string\n\n constructor(message: string, suggestion: string) {\n super(message)\n this.suggestion = suggestion\n }\n}\n\n/** The user declined an interactive confirmation prompt. */\nexport class CommandAbortedError extends Error {}\n\n/**\n * Error raised by the `api` escape hatch, mirroring the public API error\n * envelope so it renders and exits exactly like a `BrewApiError`.\n */\nexport class CliApiError extends Error {\n readonly status: number\n readonly code: string\n readonly type: string\n readonly param: string | undefined\n readonly suggestion: string | undefined\n readonly docs: string | undefined\n readonly requestId: string | undefined\n\n constructor(input: {\n readonly status: number\n readonly code: string\n readonly type: string\n readonly message: string\n readonly param?: string\n readonly suggestion?: string\n readonly docs?: string\n readonly requestId?: string\n }) {\n super(input.message)\n this.status = input.status\n this.code = input.code\n this.type = input.type\n this.param = input.param\n this.suggestion = input.suggestion\n this.docs = input.docs\n this.requestId = input.requestId\n }\n}\n\nexport type ConfirmationEnvelope = {\n readonly confirmationRequired: true\n readonly command: string\n readonly summary: string\n readonly confirmCommand: string\n}\n\n/**\n * A destructive command ran without --yes in a non-interactive session.\n * The envelope is the command's machine-readable response: the caller\n * shows `summary` to a human and re-runs `confirmCommand` to proceed.\n */\nexport class ConfirmationRequiredError extends Error {\n readonly envelope: ConfirmationEnvelope\n\n constructor(envelope: ConfirmationEnvelope) {\n super(envelope.summary)\n this.envelope = envelope\n }\n}\n\nexport function toExitCode(error: unknown): number {\n if (error instanceof ConfirmationRequiredError) {\n return EXIT_CONFIRM\n }\n if (error instanceof CliUsageError) {\n return EXIT_USAGE\n }\n if (error instanceof CliAuthError) {\n return EXIT_AUTH\n }\n const status = apiErrorStatus(error)\n if (status === 401 || status === 403) {\n return EXIT_AUTH\n }\n return EXIT_RUNTIME\n}\n\nexport type CliErrorEnvelope = {\n readonly code: string\n readonly type: string\n readonly message: string\n readonly param?: string\n readonly suggestion?: string\n readonly docs?: string\n readonly requestId?: string\n readonly status?: number\n}\n\nexport function toErrorEnvelope(error: unknown): CliErrorEnvelope {\n if (error instanceof BrewApiError || error instanceof CliApiError) {\n return {\n code: error.code,\n type: error.type,\n message: error.message,\n ...(error.param ? { param: error.param } : {}),\n ...(error.suggestion ? { suggestion: error.suggestion } : {}),\n ...(error.docs ? { docs: error.docs } : {}),\n ...(error.requestId ? { requestId: error.requestId } : {}),\n status: error.status,\n }\n }\n if (error instanceof CliAuthError) {\n return {\n code: 'CLI_AUTH',\n type: 'authentication_error',\n message: error.message,\n suggestion: error.suggestion,\n }\n }\n if (error instanceof CliUsageError) {\n return {\n code: 'CLI_USAGE',\n type: 'invalid_request',\n message: error.message,\n }\n }\n if (isTimeoutError(error)) {\n return {\n code: 'CLI_TIMEOUT',\n type: 'service_unavailable',\n message: 'The request timed out before the API responded.',\n suggestion:\n 'Retry the request. Reuse the same Idempotency-Key for a POST request.',\n }\n }\n if (error instanceof CommandAbortedError) {\n return {\n code: 'CLI_ABORTED',\n type: 'invalid_request',\n message: error.message === '' ? 'Aborted.' : error.message,\n }\n }\n let message = error instanceof Error ? error.message : String(error)\n if (error instanceof Error && error.cause !== undefined) {\n const cause =\n error.cause instanceof Error ? error.cause.message : String(error.cause)\n message = `${message} (${cause})`\n }\n return { code: 'CLI_UNEXPECTED', type: 'internal_error', message }\n}\n\nexport function printError(ctx: CliContext, error: unknown): void {\n if (error instanceof ConfirmationRequiredError) {\n ctx.io.stdout.write(`${JSON.stringify(error.envelope)}\\n`)\n if (ctx.mode === 'human') {\n ctx.io.stderr.write(\n `Confirmation required. Review, then re-run to proceed:\\n ${error.envelope.confirmCommand}\\n`\n )\n }\n return\n }\n const envelope = toErrorEnvelope(error)\n if (ctx.mode === 'json') {\n ctx.io.stderr.write(`${JSON.stringify({ error: envelope })}\\n`)\n return\n }\n const lines = [`brew-cli: ${envelope.message}`]\n if (envelope.suggestion) {\n lines.push(envelope.suggestion)\n }\n if (envelope.docs) {\n lines.push(`Docs: ${envelope.docs}`)\n }\n if (envelope.requestId) {\n lines.push(`Request id: ${envelope.requestId}`)\n }\n ctx.io.stderr.write(`${lines.join('\\n')}\\n`)\n}\n\nfunction apiErrorStatus(error: unknown): number | undefined {\n if (error instanceof BrewApiError || error instanceof CliApiError) {\n return error.status\n }\n}\n\nfunction isTimeoutError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'name' in error &&\n error.name === 'TimeoutError'\n )\n}\n","import type { CommandInvocation, CommandSpec } from './define-command'\nimport { CommandAbortedError, ConfirmationRequiredError } from './errors'\n\n/**\n * The confirmation protocol for destructive commands:\n * - `--yes` proceeds unconditionally.\n * - An interactive human session gets a y/N prompt.\n * - Everything else (agents, pipes, CI) receives exit code 4 and a JSON\n * envelope on stdout whose `confirmCommand` re-runs the call with --yes.\n */\nexport async function enforceConfirmation(\n spec: CommandSpec,\n invocation: CommandInvocation\n): Promise<void> {\n if (!spec.confirmSummary) {\n return\n }\n const summary = spec.confirmSummary({\n args: invocation.args,\n flags: invocation.flags,\n })\n if (summary === undefined) {\n return\n }\n const { ctx } = invocation\n if (ctx.globals.yes) {\n return\n }\n if (ctx.mode === 'human' && ctx.io.isTtyIn) {\n const answer = await ctx.io.readLine(`${summary}\\nProceed? [y/N] `)\n const normalized = answer.trim().toLowerCase()\n if (normalized === 'y' || normalized === 'yes') {\n return\n }\n throw new CommandAbortedError('Aborted.')\n }\n throw new ConfirmationRequiredError({\n confirmationRequired: true,\n command: ['brew-cli', ...spec.path].join(' '),\n summary,\n confirmCommand: buildConfirmCommand(ctx.rawArgv),\n })\n}\n\nexport function buildConfirmCommand(rawArgv: readonly string[]): string {\n // The envelope goes to stdout and into agent transcripts — never echo a\n // raw credential back. The re-run resolves the key from env/config.\n const tokens: string[] = []\n for (let index = 0; index < rawArgv.length; index += 1) {\n const token = rawArgv[index]\n if (token === undefined) {\n continue\n }\n if (token === '--api-key') {\n index += 1\n continue\n }\n if (token.startsWith('--api-key=')) {\n continue\n }\n tokens.push(shellQuote(token))\n }\n return ['brew-cli', ...tokens, '--yes'].join(' ')\n}\n\nfunction shellQuote(token: string): string {\n if (/^[A-Za-z0-9@%+=:,./_-]+$/.test(token)) {\n return token\n }\n return `'${token.replaceAll(\"'\", String.raw`'\\''`)}'`\n}\n","declare const __CLI_VERSION__: string | undefined\n\nexport const CLI_NAME = 'brew-cli'\n\nexport const CLI_VERSION =\n typeof __CLI_VERSION__ === 'string' ? __CLI_VERSION__ : '0.0.0-dev'\n","import { chmodSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { homedir } from 'node:os'\nimport { join } from 'node:path'\n\nexport type StoredConfig = {\n readonly apiKey?: string\n readonly brandId?: string\n readonly apiUrl?: string\n}\n\nconst CONFIG_KEYS = ['apiKey', 'brandId', 'apiUrl'] as const\n\nexport type ConfigKey = (typeof CONFIG_KEYS)[number]\n\nexport function isConfigKey(value: string): value is ConfigKey {\n return (CONFIG_KEYS as readonly string[]).includes(value)\n}\n\nexport function configDir(\n env: Readonly<Record<string, string | undefined>>\n): string {\n const override = env.BREW_CLI_CONFIG_DIR\n if (override !== undefined && override !== '') {\n return override\n }\n const xdg = env.XDG_CONFIG_HOME\n const base =\n xdg !== undefined && xdg !== '' ? xdg : join(homedir(), '.config')\n return join(base, 'brew-cli')\n}\n\nexport function configPath(\n env: Readonly<Record<string, string | undefined>>\n): string {\n return join(configDir(env), 'config.json')\n}\n\nexport function readConfig(\n env: Readonly<Record<string, string | undefined>>\n): StoredConfig {\n try {\n const raw = readFileSync(configPath(env), 'utf8')\n const parsed: unknown = JSON.parse(raw)\n if (parsed === null || typeof parsed !== 'object') {\n return {}\n }\n const record = parsed as Record<string, unknown>\n const config: Record<string, string> = {}\n for (const key of CONFIG_KEYS) {\n const value = record[key]\n if (typeof value === 'string' && value !== '') {\n config[key] = value\n }\n }\n return config\n } catch {\n return {}\n }\n}\n\n/** Writes the config file with owner-only permissions (0600 / dir 0700). */\nexport function writeConfig(\n env: Readonly<Record<string, string | undefined>>,\n config: StoredConfig\n): string {\n const dir = configDir(env)\n mkdirSync(dir, { recursive: true, mode: 0o700 })\n const path = configPath(env)\n const compact: Record<string, string> = {}\n for (const key of CONFIG_KEYS) {\n const value = config[key]\n if (value !== undefined && value !== '') {\n compact[key] = value\n }\n }\n writeFileSync(path, `${JSON.stringify(compact, null, 2)}\\n`, { mode: 0o600 })\n chmodSync(path, 0o600)\n return path\n}\n\nexport function updateConfig(\n env: Readonly<Record<string, string | undefined>>,\n patch: Readonly<Partial<Record<ConfigKey, string | undefined>>>\n): string {\n const current: Record<string, string | undefined> = { ...readConfig(env) }\n for (const key of CONFIG_KEYS) {\n if (key in patch) {\n current[key] = patch[key]\n }\n }\n return writeConfig(env, current)\n}\n","import { createBrewClient } from '@brew.new/sdk'\nimport { CLI_NAME, CLI_VERSION } from '../version'\nimport { readConfig } from './config-store'\nimport { CliAuthError } from './errors'\nimport type { GlobalFlags } from './types'\n\nexport type BrewClient = ReturnType<typeof createBrewClient>\n\nexport const DEFAULT_API_URL = 'https://brew.new/api'\n\nexport const LOGIN_KEYS_URL = 'https://brew.new/settings/api'\n\n/**\n * Placeholder key for the unauthenticated endpoints (health, help,\n * llms.txt). The SDK requires a non-empty key; the server ignores it.\n */\nexport const ANONYMOUS_API_KEY = 'brew_anonymous'\n\n/**\n * Organization-level route prefixes. These ride the org transport and must\n * never receive an X-Brand-Id header (the server ignores it there, but the\n * SDK's own withBrand keeps the same discipline).\n */\nconst ORG_LEVEL_PATH_PREFIXES = [\n '/v1/brands',\n '/v1/usage',\n '/v1/templates',\n '/v1/health',\n '/v1/help',\n '/v1/llms.txt',\n '/v1/api-keys',\n] as const\n\nexport type AuthSource = 'anonymous' | 'config' | 'env' | 'flag'\n\nexport type ResolvedAuth = {\n readonly apiKey: string\n readonly apiKeySource: AuthSource\n readonly brandId: string | undefined\n readonly apiUrl: string\n}\n\nexport function resolveAuth(input: {\n readonly globals: GlobalFlags\n readonly env: Readonly<Record<string, string | undefined>>\n readonly allowAnonymous?: boolean\n}): ResolvedAuth {\n const { globals, env } = input\n const stored = readConfig(env)\n const keyFromFlag = globals.apiKey\n const keyFromEnv = readEnvValue(env.BREW_API_KEY)\n const keyFromConfig = stored.apiKey\n const apiKey = keyFromFlag ?? keyFromEnv ?? keyFromConfig\n const apiUrl =\n globals.apiUrl ??\n readEnvValue(env.BREW_API_URL) ??\n stored.apiUrl ??\n DEFAULT_API_URL\n const brandId =\n globals.brand ?? readEnvValue(env.BREW_BRAND_ID) ?? stored.brandId\n if (!apiKey) {\n if (input.allowAnonymous === true) {\n return {\n apiKey: ANONYMOUS_API_KEY,\n apiKeySource: 'anonymous',\n brandId,\n apiUrl,\n }\n }\n throw new CliAuthError(\n 'No API key found.',\n `Run \\`brew-cli login\\`, set BREW_API_KEY, or pass --api-key. Create keys at ${LOGIN_KEYS_URL}`\n )\n }\n const apiKeySource: AuthSource = keyFromFlag\n ? 'flag'\n : keyFromEnv\n ? 'env'\n : 'config'\n return { apiKey, apiKeySource, brandId, apiUrl }\n}\n\nexport function buildSdkClient(auth: ResolvedAuth): BrewClient {\n return createBrewClient({\n apiKey: auth.apiKey,\n baseUrl: auth.apiUrl,\n userAgent: `${CLI_NAME}/${CLI_VERSION}`,\n ...(auth.brandId === undefined ? {} : { brandId: auth.brandId }),\n })\n}\n\nexport function isOrgLevelPath(url: string): boolean {\n let pathname: string\n try {\n pathname = new URL(url).pathname\n } catch {\n pathname = url.split('?')[0] ?? url\n }\n const versionIndex = pathname.indexOf('/v1/')\n if (versionIndex === -1) {\n return false\n }\n const apiPath = pathname.slice(versionIndex)\n return ORG_LEVEL_PATH_PREFIXES.some(\n (prefix) => apiPath === prefix || apiPath.startsWith(`${prefix}/`)\n )\n}\n\nexport function maskApiKey(apiKey: string): string {\n if (apiKey.length <= 12) {\n return `${apiKey.slice(0, 3)}…`\n }\n return `${apiKey.slice(0, 8)}…${apiKey.slice(-3)}`\n}\n\nfunction readEnvValue(value: string | undefined): string | undefined {\n return value !== undefined && value !== '' ? value : undefined\n}\n","import type { CliContext, OutputMode } from './types'\n\nexport function resolveOutputMode(input: {\n readonly isJsonFlag: boolean\n readonly isTtyOut: boolean\n}): OutputMode {\n if (input.isJsonFlag) {\n return 'json'\n }\n return input.isTtyOut ? 'human' : 'json'\n}\n\n/**\n * Command data goes to stdout and nowhere else. JSON mode prints the API\n * payload verbatim (compact, one line) so pipes and agents get the exact\n * SDK envelope; human mode prefers the command's rendering when provided.\n */\nexport function printData(\n ctx: CliContext,\n data: unknown,\n human?: string\n): void {\n if (ctx.mode === 'json') {\n ctx.io.stdout.write(`${JSON.stringify(data)}\\n`)\n return\n }\n const text = human ?? JSON.stringify(data, null, 2)\n ctx.io.stdout.write(`${text}\\n`)\n}\n\n/** Progress and status lines go to stderr and honor --quiet. */\nexport function progress(ctx: CliContext, message: string): void {\n if (ctx.globals.quiet) {\n return\n }\n ctx.io.stderr.write(`${message}\\n`)\n}\n\nexport function renderTable(\n rows: ReadonlyArray<Record<string, unknown>>,\n columns: ReadonlyArray<{ readonly key: string; readonly header: string }>\n): string {\n const widths = columns.map((column) =>\n Math.max(\n column.header.length,\n ...rows.map((row) => formatCell(row[column.key]).length)\n )\n )\n const line = (cells: readonly string[]) =>\n cells\n .map((cell, index) => cell.padEnd(widths[index] ?? 0))\n .join(' ')\n .trimEnd()\n const header = line(columns.map((column) => column.header))\n const body = rows.map((row) =>\n line(columns.map((column) => formatCell(row[column.key])))\n )\n return [header, ...body].join('\\n')\n}\n\nfunction formatCell(value: unknown): string {\n if (value === null || value === undefined) {\n return ''\n }\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return String(value)\n}\n","import type { BrewClient } from './client'\nimport { buildSdkClient, resolveAuth } from './client'\nimport { resolveOutputMode } from './output'\nimport type { CliContext, ClientOptions, CliIo, GlobalFlags } from './types'\n\nexport function makeContext(input: {\n readonly io: CliIo\n readonly flags: Readonly<Record<string, unknown>>\n readonly rawArgv: readonly string[]\n}): CliContext {\n const globals = readGlobalFlags(input.flags)\n const mode = resolveOutputMode({\n isJsonFlag: globals.json,\n isTtyOut: input.io.isTtyOut,\n })\n const cache = new Map<string, BrewClient>()\n return {\n io: input.io,\n mode,\n globals,\n rawArgv: input.rawArgv,\n client: (options?: ClientOptions) => {\n const key = options?.allowAnonymous === true ? 'anonymous' : 'authed'\n const existing = cache.get(key)\n if (existing) {\n return existing\n }\n const auth = resolveAuth({\n globals,\n env: input.io.env,\n allowAnonymous: options?.allowAnonymous === true,\n })\n const client = buildSdkClient(auth)\n cache.set(key, client)\n return client\n },\n }\n}\n\n/**\n * Fallback context for failures that happen before a command action runs\n * (usage errors, help). Only argv can tell us whether --json was intended.\n */\nexport function makeFallbackContext(\n io: CliIo,\n rawArgv: readonly string[]\n): CliContext {\n const flags: Record<string, unknown> = {\n json: rawArgv.includes('--json'),\n quiet: rawArgv.includes('--quiet'),\n }\n return makeContext({ io, flags, rawArgv })\n}\n\nfunction readGlobalFlags(\n flags: Readonly<Record<string, unknown>>\n): GlobalFlags {\n return {\n json: flags.json === true,\n quiet: flags.quiet === true,\n yes: flags.yes === true,\n apiKey: readStringFlag(flags.apiKey),\n brand: readStringFlag(flags.brand),\n apiUrl: readStringFlag(flags.apiUrl),\n }\n}\n\nfunction readStringFlag(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n","import type { CliContext } from './types'\n\nexport type HttpMethod = 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT'\n\n/**\n * read — no writes; always safe.\n * write — mutates state but is safe to retry / reversible in-app.\n * destructive — irreversible or outward-facing (sends, deletes); runs the\n * confirmation protocol and must declare `confirmSummary`.\n */\nexport type CommandClass = 'destructive' | 'read' | 'write'\n\nexport type ArgSpec = {\n /** camelCase name, also the key in `invocation.args`. */\n readonly name: string\n readonly summary: string\n readonly isRequired: boolean\n}\n\nexport type FlagSpec = {\n /** commander syntax, e.g. `--limit <n>` or `--test`. */\n readonly flag: string\n readonly summary: string\n readonly defaultValue?: string | boolean\n}\n\nexport type CommandInvocation = {\n readonly ctx: CliContext\n readonly args: Readonly<Record<string, string>>\n readonly flags: Readonly<Record<string, unknown>>\n}\n\nexport type CommandOutcome = {\n /** The payload printed to stdout (verbatim in JSON mode). */\n readonly data: unknown\n /** Optional human rendering (tables, summaries) for TTY output. */\n readonly human?: string\n /**\n * Optional non-zero exit code for commands whose payload IS the result\n * of a check (e.g. doctor): the report prints normally, then the\n * process exits with this code so agents can gate on it.\n */\n readonly exitCode?: number\n}\n\nexport type CommandSpec = {\n /** Command path, e.g. ['automations', 'triggers', 'fire']. */\n readonly path: readonly string[]\n readonly summary: string\n /**\n * Dotted path of the SDK method this command binds (`contacts.upsert`),\n * or null for CLI-native commands. Derived sugar commands set null here\n * and name their backing method in `derivedFrom`.\n */\n readonly sdkMethod: string | null\n readonly derivedFrom?: string\n /** The public API operation behind this command — the spec join key. */\n readonly route?: {\n readonly method: HttpMethod\n readonly path: string\n }\n readonly commandClass: CommandClass\n /** True when the operation consumes Brew credits. */\n readonly isCredited?: boolean\n /**\n * True when the command calls the API through the raw transport because\n * the published SDK does not expose the operation yet. Swap to the SDK\n * method (and drop this marker) when the SDK ships it.\n */\n readonly isRawTransport?: boolean\n readonly args?: readonly ArgSpec[]\n readonly flags?: readonly FlagSpec[]\n /** At least one realistic invocation; shown in help and the manifest. */\n readonly examples: readonly string[]\n /**\n * Destructive commands describe what is about to happen. Returning\n * undefined skips the gate for the given invocation (e.g. a dry run).\n */\n readonly confirmSummary?: (\n invocation: Omit<CommandInvocation, 'ctx'>\n ) => string | undefined\n readonly run: (\n invocation: CommandInvocation\n ) => Promise<CommandOutcome | undefined>\n}\n\n/** Identity helper that pins the spec type at the definition site. */\nexport function defineCommand(spec: CommandSpec): CommandSpec {\n return spec\n}\n\nexport const GLOBAL_FLAGS: readonly FlagSpec[] = [\n {\n flag: '--json',\n summary: 'JSON output (automatic when stdout is not a TTY)',\n },\n { flag: '--quiet', summary: 'Suppress progress messages on stderr' },\n {\n flag: '--yes',\n summary: 'Skip the confirmation gate on destructive commands',\n },\n {\n flag: '--api-key <key>',\n summary: 'Brew API key (else BREW_API_KEY, else stored login)',\n },\n {\n flag: '--brand <brandId>',\n summary: 'Brand id for organization-scoped keys (else BREW_BRAND_ID)',\n },\n {\n flag: '--api-url <url>',\n summary: 'API base URL (else BREW_API_URL, else https://brew.new/api)',\n },\n]\n","import { readFileSync } from 'node:fs'\nimport { CliUsageError } from './errors'\nimport type { CliContext } from './types'\n\n/**\n * The single deliberate boundary cast from user-supplied JSON to an SDK\n * input type. The public API strictly validates every request server-side\n * (the Zod contracts upstream of the OpenAPI spec); the CLI does not\n * duplicate those schemas.\n */\nexport function asSdkInput<T>(value: unknown): T {\n return value as T\n}\n\n/** Reads `--input <json|->`; `-` consumes stdin. */\nexport async function readJsonFlag(\n ctx: CliContext,\n value: unknown,\n flagName: string\n): Promise<unknown> {\n if (typeof value !== 'string') {\n return\n }\n const raw = value === '-' ? await ctx.io.readStdin() : value\n try {\n return JSON.parse(raw) as unknown\n } catch {\n throw new CliUsageError(\n `${flagName} must be valid JSON (or - to read stdin)`\n )\n }\n}\n\n/** Reads `--file <path|->`; `-` consumes stdin. */\nexport async function readTextFlag(\n ctx: CliContext,\n value: unknown,\n flagName: string\n): Promise<string | undefined> {\n if (typeof value !== 'string') {\n return\n }\n if (value === '-') {\n return await ctx.io.readStdin()\n }\n try {\n return readFileSync(value, 'utf8')\n } catch {\n throw new CliUsageError(`${flagName}: cannot read file \"${value}\"`)\n }\n}\n\n/** Parses repeatable `key=value` flag values into a record. */\nexport function parseKeyValues(\n value: unknown,\n flagName: string\n): Record<string, string> | undefined {\n const items = toStringArray(value)\n if (items === undefined) {\n return\n }\n const record: Record<string, string> = {}\n for (const item of items) {\n const separator = item.indexOf('=')\n if (separator <= 0) {\n throw new CliUsageError(\n `${flagName}: expected key=value, received \"${item}\"`\n )\n }\n record[item.slice(0, separator)] = item.slice(separator + 1)\n }\n return record\n}\n\n/**\n * Parses repeatable `--filter field:operator[:value]` values into the\n * API's structured contact filter shape.\n */\nexport function parseFilterFlags(\n value: unknown\n): ReadonlyArray<Record<string, string>> | undefined {\n const items = toStringArray(value)\n if (items === undefined) {\n return\n }\n return items.map((item) => {\n const [field, operator, ...rest] = item.split(':')\n if (!field || !operator) {\n throw new CliUsageError(\n `--filter: expected field:operator[:value], received \"${item}\"`\n )\n }\n return {\n field,\n operator,\n ...(rest.length === 0 ? {} : { value: rest.join(':') }),\n }\n })\n}\n\n/** Merges ergonomic flag overrides over a `--input` JSON body. */\nexport function mergeInput(\n base: unknown,\n overrides: Readonly<Record<string, unknown>>\n): Record<string, unknown> {\n if (base !== undefined && (base === null || typeof base !== 'object')) {\n throw new CliUsageError('--input must be a JSON object')\n }\n const merged: Record<string, unknown> = {\n ...((base as Record<string, unknown> | undefined) ?? {}),\n }\n for (const [key, value] of Object.entries(overrides)) {\n if (value !== undefined) {\n merged[key] = value\n }\n }\n return merged\n}\n\nexport function flagString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n\nexport function flagInt(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return\n }\n const parsed = Number(value)\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new CliUsageError(`${flagName} must be a positive integer`)\n }\n return parsed\n}\n\nexport function toStringArray(value: unknown): readonly string[] | undefined {\n if (Array.isArray(value)) {\n const items = value.filter(\n (item): item is string => typeof item === 'string'\n )\n return items.length > 0 ? items : undefined\n }\n return typeof value === 'string' ? [value] : undefined\n}\n\n/** Per-request SDK options derived from shared mutation flags. */\nexport function requestOptions(\n flags: Readonly<Record<string, unknown>>\n): { idempotencyKey: string } | undefined {\n const key = flagString(flags.idempotencyKey)\n return key === undefined ? undefined : { idempotencyKey: key }\n}\n\nexport const IDEMPOTENCY_FLAG = {\n flag: '--idempotency-key <key>',\n summary: 'Idempotency-Key for safe retries (auto-generated otherwise)',\n} as const\n\nexport const INPUT_FLAG = {\n flag: '--input <json>',\n summary: 'Full JSON request body, or - to read stdin (flags override it)',\n} as const\n","import { progress } from './output'\nimport type { CliContext } from './types'\n\nexport type Page<T> = {\n readonly data: ReadonlyArray<T>\n readonly pagination?: {\n readonly cursor: string | null\n }\n}\n\n/**\n * Drains a cursor-paginated list for `--all`. The API contract keeps\n * `pagination.cursor` string-or-null (never omitted); a repeated cursor\n * aborts the loop as a defense against a server-side pagination bug.\n */\nexport async function collectAll<T>(\n ctx: CliContext,\n fetchPage: (cursor: string | undefined) => Promise<Page<T>>\n): Promise<ReadonlyArray<T>> {\n const rows: T[] = []\n let cursor: string | undefined\n let pageCount = 0\n for (;;) {\n const page = await fetchPage(cursor)\n rows.push(...page.data)\n pageCount += 1\n const next = page.pagination?.cursor ?? null\n if (next === null || next === cursor) {\n return rows\n }\n cursor = next\n progress(ctx, `Fetched ${rows.length} rows (page ${pageCount})…`)\n }\n}\n\n/** The `--all` flag shared by paginated list commands. */\nexport const ALL_FLAG = {\n flag: '--all',\n summary: 'Follow the cursor and return every page as one result',\n} as const\n\nexport const LIMIT_FLAG = {\n flag: '--limit <n>',\n summary: 'Page size, 1-100 (default 100)',\n} as const\n\nexport const CURSOR_FLAG = {\n flag: '--cursor <cursor>',\n summary: 'Opaque pagination cursor from a previous page',\n} as const\n","import type { AutomationAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport { LIMIT_FLAG } from '../../lib/paginate'\n\nexport const analyticsAutomationsCommand = defineCommand({\n path: ['analytics', 'automations'],\n summary: 'Windowed per-automation performance + totals',\n sdkMethod: 'analytics.automations',\n route: { method: 'GET', path: '/v1/analytics/automations' },\n commandClass: 'read',\n flags: [\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n {\n flag: '--automation <automationId>',\n summary: 'Narrow to one automation',\n },\n LIMIT_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics automations',\n 'brew-cli analytics automations --since 2026-07-01 --until 2026-08-01',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.since),\n to: flagString(flags.until),\n automationId: flagString(flags.automation),\n limit: flagInt(flags.limit, '--limit'),\n })\n const result = await ctx\n .client()\n .analytics.automations(asSdkInput<AutomationAnalyticsInput>(input))\n return { data: result, human: renderAutomationRows(result.data) }\n },\n})\n\nfunction renderAutomationRows(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automation analytics rows.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'name', header: 'NAME' },\n { key: 'runs', header: 'RUNS' },\n { key: 'completed', header: 'COMPLETED' },\n { key: 'failed', header: 'FAILED' },\n { key: 'openRate', header: 'OPEN RATE' },\n ])\n}\n","import type { CampaignAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const analyticsCampaignsCommand = defineCommand({\n path: ['analytics', 'campaigns'],\n summary: 'Lifetime per-campaign KPIs (sent, opened, clicked, bounced)',\n sdkMethod: 'analytics.campaigns',\n route: { method: 'GET', path: '/v1/analytics/campaigns' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli analytics campaigns',\n 'brew-cli analytics campaigns --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const analytics = ctx.client().analytics\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n analytics.campaigns(\n asSdkInput<CampaignAnalyticsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderCampaigns(rows),\n }\n }\n const result = await analytics.campaigns(\n asSdkInput<CampaignAnalyticsInput>(input)\n )\n return { data: result, human: renderCampaigns(result.data) }\n },\n})\n\nfunction renderCampaigns(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No campaign analytics rows.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'sendId', header: 'SEND' },\n { key: 'title', header: 'TITLE' },\n { key: 'status', header: 'STATUS' },\n { key: 'sentAt', header: 'SENT AT' },\n ])\n}\n","import type { EventsAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const analyticsEventsCommand = defineCommand({\n path: ['analytics', 'events'],\n summary: 'Unified event explorer (email, automation, trigger, inbound)',\n sdkMethod: 'analytics.events',\n route: { method: 'GET', path: '/v1/analytics/events' },\n commandClass: 'read',\n flags: [\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n { flag: '--recipient <email>', summary: 'Filter by recipient email' },\n {\n flag: '--event-type <type>',\n summary: 'Filter by event type (e.g. opened, clicked)',\n },\n { flag: '--automation <automationId>', summary: 'Filter by automation' },\n { flag: '--send <sendId>', summary: 'Filter by campaign send' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics events --since 2026-08-01 --event-type clicked',\n 'brew-cli analytics events --recipient jane@example.com --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.since),\n to: flagString(flags.until),\n recipientEmail: flagString(flags.recipient),\n eventType: flagString(flags.eventType),\n automationId: flagString(flags.automation),\n sendId: flagString(flags.send),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const analytics = ctx.client().analytics\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n analytics.events(\n asSdkInput<EventsAnalyticsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEvents(rows),\n }\n }\n const result = await analytics.events(\n asSdkInput<EventsAnalyticsInput>(input)\n )\n return { data: result, human: renderEvents(result.data) }\n },\n})\n\nfunction renderEvents(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No events matched.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'occurredAt', header: 'OCCURRED' },\n { key: 'domain', header: 'DOMAIN' },\n { key: 'eventType', header: 'EVENT' },\n { key: 'recipientEmail', header: 'RECIPIENT' },\n ])\n}\n","import type { AnalyticsOverviewInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagString } from '../../lib/input'\n\nexport const analyticsOverviewCommand = defineCommand({\n path: ['analytics', 'overview'],\n summary: 'Brand overview: totals, rates, timeseries (default last 7 days)',\n sdkMethod: 'analytics.overview',\n route: { method: 'GET', path: '/v1/analytics/overview' },\n commandClass: 'read',\n flags: [\n {\n flag: '--since <datetime>',\n summary: 'Window start (ISO-8601, default 7 days ago)',\n },\n {\n flag: '--until <datetime>',\n summary: 'Window end (ISO-8601, default now)',\n },\n {\n flag: '--source <sources>',\n summary:\n 'CSV of send sources: audience, api, automation_manual, automation_integration, automation_custom',\n },\n {\n flag: '--automation-id <ids>',\n summary: 'CSV of automation ids (max 20)',\n },\n { flag: '--email-id <emailId>', summary: 'Scope to one email design' },\n { flag: '--audience-id <ids>', summary: 'CSV of audience ids (max 20)' },\n {\n flag: '--trigger-event-id <ids>',\n summary: 'CSV of integration trigger-event ids (max 10)',\n },\n { flag: '--domain <domain>', summary: 'Sending domain (fromEmail match)' },\n {\n flag: '--recipient <rules>',\n summary:\n 'CSV of recipient rules: full address, @domain, substring; prefix ! to exclude',\n },\n ],\n examples: [\n 'brew-cli analytics overview',\n 'brew-cli analytics overview --since 2026-08-01T00:00:00Z --source audience --json',\n ],\n run: async ({ ctx, flags }) => ({\n data: await ctx.client().analytics.overview(\n asSdkInput<AnalyticsOverviewInput>({\n from: flagString(flags.since),\n to: flagString(flags.until),\n source: flagString(flags.source),\n automationId: flagString(flags.automationId),\n emailId: flagString(flags.emailId),\n audienceId: flagString(flags.audienceId),\n triggerEventId: flagString(flags.triggerEventId),\n domain: flagString(flags.domain),\n recipient: flagString(flags.recipient),\n })\n ),\n }),\n})\n","import type { ListSendsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliApiError } from '../../../lib/errors'\nimport { asSdkInput, flagString } from '../../../lib/input'\n\nexport const analyticsSendsGetCommand = defineCommand({\n path: ['analytics', 'sends', 'get'],\n summary: 'Fetch one send by id',\n sdkMethod: null,\n derivedFrom: 'analytics.sends.list',\n route: { method: 'GET', path: '/v1/analytics/sends' },\n commandClass: 'read',\n args: [\n {\n name: 'sendId',\n summary: 'Id of the send',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: events',\n },\n ],\n examples: [\n 'brew-cli analytics sends get snd_123',\n 'brew-cli analytics sends get snd_123 --include events',\n ],\n run: async ({ ctx, args, flags }) => {\n const sendId = args.sendId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().analytics.sends.list(\n asSdkInput<ListSendsInput>({\n sendId,\n ...(include === undefined ? {} : { include }),\n })\n )\n const send = result.data[0]\n if (send === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'SEND_NOT_FOUND',\n type: 'not_found',\n message: `No send found for ${sendId}`,\n suggestion: 'List sends with `brew-cli analytics sends list`.',\n })\n }\n return { data: send }\n },\n})\n","import type { ListSendsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const analyticsSendsListCommand = defineCommand({\n path: ['analytics', 'sends', 'list'],\n summary: 'List campaign/automation sends with delivery stats',\n sdkMethod: 'analytics.sends.list',\n route: { method: 'GET', path: '/v1/analytics/sends' },\n commandClass: 'read',\n flags: [\n { flag: '--send <sendId>', summary: 'Fetch one send (single-row page)' },\n { flag: '--email <emailId>', summary: 'Filter by email design' },\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: events',\n },\n {\n flag: '--status <status>',\n summary: 'scheduled | queued | sending | sent | failed | canceled',\n },\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics sends list --status sent',\n 'brew-cli analytics sends list --email em_123 --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n sendId: flagString(flags.send),\n emailId: flagString(flags.email),\n include: flagString(flags.include),\n status: flagString(flags.status),\n from: flagString(flags.since),\n to: flagString(flags.until),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const sends = ctx.client().analytics.sends\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n sends.list(\n asSdkInput<ListSendsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderSends(rows),\n }\n }\n const result = await sends.list(asSdkInput<ListSendsInput>(input))\n return { data: result, human: renderSends(result.data) }\n },\n})\n\nfunction renderSends(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No sends found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'sendId', header: 'SEND' },\n { key: 'kind', header: 'KIND' },\n { key: 'status', header: 'STATUS' },\n { key: 'subject', header: 'SUBJECT' },\n ])\n}\n","import type { ListTriggerInstancesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const analyticsTriggerInstancesListCommand = defineCommand({\n path: ['analytics', 'trigger-instances', 'list'],\n summary: 'List fired-trigger instances (ingest + match history)',\n sdkMethod: 'analytics.triggerInstances.list',\n route: { method: 'GET', path: '/v1/analytics/trigger-instances' },\n commandClass: 'read',\n flags: [\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Filter by trigger event',\n },\n {\n flag: '--trigger-instance <triggerInstanceId>',\n summary: 'Fetch one instance (single-row page)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics trigger-instances list --trigger tev_123',\n 'brew-cli analytics trigger-instances list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n triggerEventId: flagString(flags.trigger),\n triggerInstanceId: flagString(flags.triggerInstance),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const triggerInstances = ctx.client().analytics.triggerInstances\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n triggerInstances.list(\n asSdkInput<ListTriggerInstancesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderInstances(rows),\n }\n }\n const result = await triggerInstances.list(\n asSdkInput<ListTriggerInstancesInput>(input)\n )\n return { data: result, human: renderInstances(result.data) }\n },\n})\n\nfunction renderInstances(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No trigger instances found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'triggerInstanceId', header: 'INSTANCE' },\n { key: 'source', header: 'SOURCE' },\n { key: 'state', header: 'STATE' },\n { key: 'receivedAt', header: 'RECEIVED' },\n ])\n}\n","import { CLI_NAME, CLI_VERSION } from '../version'\nimport type { ResolvedAuth } from './client'\nimport { isOrgLevelPath, resolveAuth } from './client'\nimport { CliApiError } from './errors'\nimport type { CliContext } from './types'\n\n/**\n * Minimal typed transport for public-API operations the published SDK does\n * not expose yet. Shares auth resolution, the X-Brand-Id policy, and\n * error-envelope mapping with the `api` escape hatch. Each caller swaps to\n * the SDK method when it ships — the parity-sdk sentinel flags the moment\n * that becomes possible. Unlike the SDK transport, raw calls are\n * single-attempt (no retry loop). POST calls receive an invocation-scoped\n * idempotency key automatically; callers can provide a stable key when they\n * need to replay safely across process restarts.\n */\nexport async function rawRequest<TResponse>(\n ctx: CliContext,\n request: {\n readonly method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT'\n readonly path: string\n readonly body?: unknown\n readonly query?: Readonly<Record<string, string | undefined>>\n readonly idempotencyKey?: string | undefined\n readonly allowAnonymous?: boolean\n readonly signal?: AbortSignal\n }\n): Promise<TResponse> {\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n ...(request.allowAnonymous === true ? { allowAnonymous: true } : {}),\n })\n const hasBody = request.body !== undefined\n const idempotencyKey = resolveRawIdempotencyKey(\n request.method,\n request.idempotencyKey\n )\n const headers = buildRawHeaders({\n auth,\n path: request.path,\n hasJsonBody: hasBody,\n idempotencyKey,\n })\n const url = new URL(`${auth.apiUrl}${request.path}`)\n for (const [key, value] of Object.entries(request.query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(key, value)\n }\n }\n const response = await fetch(url, {\n method: request.method,\n headers,\n ...(hasBody ? { body: JSON.stringify(request.body) } : {}),\n ...(request.signal === undefined ? {} : { signal: request.signal }),\n })\n const text = await response.text()\n const parsed = tryParseJson(text)\n if (!response.ok) {\n throw responseToApiError(response, parsed)\n }\n if (parsed === undefined) {\n throw new CliApiError({\n status: response.status,\n code: 'UNEXPECTED_RESPONSE',\n type: 'internal_error',\n message: 'The API returned a non-JSON success response.',\n })\n }\n return parsed as TResponse\n}\n\nfunction resolveRawIdempotencyKey(\n method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT',\n provided: string | undefined\n): string | undefined {\n if (provided !== undefined && provided !== '') {\n return provided\n }\n return method === 'POST' ? crypto.randomUUID() : undefined\n}\n\nexport function buildRawHeaders(input: {\n readonly auth: ResolvedAuth\n readonly path: string\n readonly hasJsonBody: boolean\n readonly idempotencyKey?: string | undefined\n}): Headers {\n const headers = new Headers({\n authorization: `Bearer ${input.auth.apiKey}`,\n 'user-agent': `${CLI_NAME}/${CLI_VERSION}`,\n accept: 'application/json, text/plain;q=0.9',\n })\n if (input.hasJsonBody) {\n headers.set('content-type', 'application/json')\n }\n if (input.auth.brandId !== undefined && !isOrgLevelPath(input.path)) {\n headers.set('x-brand-id', input.auth.brandId)\n }\n if (input.idempotencyKey !== undefined && input.idempotencyKey !== '') {\n headers.set('idempotency-key', input.idempotencyKey)\n }\n return headers\n}\n\nexport function responseToApiError(\n response: Response,\n parsed: unknown\n): CliApiError {\n const requestId = response.headers.get('x-request-id') ?? undefined\n // Standard envelope: { error: {...} }. A few legacy endpoints (e.g.\n // trigger fire) put code/message at the top level instead — fall back\n // to those rather than discarding the body.\n const record =\n parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n const envelope =\n record !== undefined &&\n record.error !== null &&\n typeof record.error === 'object'\n ? (record.error as Record<string, unknown>)\n : record\n const readField = (key: string): string | undefined => {\n const value = envelope?.[key]\n return typeof value === 'string' ? value : undefined\n }\n const param = readField('param')\n const suggestion = readField('suggestion')\n const docs = readField('docs')\n return new CliApiError({\n status: response.status,\n code: readField('code') ?? 'HTTP_ERROR',\n type: readField('type') ?? 'internal_error',\n message:\n readField('message') ?? `Request failed with status ${response.status}`,\n ...(param === undefined ? {} : { param }),\n ...(suggestion === undefined ? {} : { suggestion }),\n ...(docs === undefined ? {} : { docs }),\n ...(requestId === undefined ? {} : { requestId }),\n })\n}\n\nexport function tryParseJson(text: string): unknown {\n try {\n return JSON.parse(text) as unknown\n } catch {}\n}\n","import { resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport {\n buildRawHeaders,\n responseToApiError,\n tryParseJson,\n} from '../lib/raw-request'\n\nconst METHODS = ['GET', 'POST', 'PATCH', 'DELETE'] as const\n\ntype ApiMethod = (typeof METHODS)[number]\n\n/** Paths the API serves without authentication. */\nconst ANONYMOUS_PATHS = ['/v1/health', '/v1/help', '/v1/llms.txt'] as const\n\nexport const apiCommand = defineCommand({\n path: ['api'],\n summary: 'Raw authenticated request against the Brew public API',\n sdkMethod: null,\n commandClass: 'destructive',\n args: [\n {\n name: 'method',\n summary: 'GET | POST | PATCH | DELETE',\n isRequired: true,\n },\n {\n name: 'path',\n summary: 'API path, e.g. /v1/contacts/search',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--data <json>', summary: 'JSON request body, or - to read stdin' },\n {\n flag: '--header <headers...>',\n summary: 'Extra header(s) as \"Name: value\"',\n },\n {\n flag: '--idempotency-key <key>',\n summary: 'Idempotency-Key header for safe POST retries',\n },\n ],\n examples: [\n 'brew-cli api GET /v1/fields',\n `brew-cli api POST /v1/contacts/search --data '{\"limit\":5}' --yes`,\n 'brew-cli api GET /v1/llms.txt',\n ],\n confirmSummary: ({ args }) => {\n const method = (args.method ?? '').toUpperCase()\n if (method === 'GET') {\n return\n }\n return `Send a raw ${method} request to ${args.path ?? ''}. The CLI cannot assess what this mutates.`\n },\n run: async ({ ctx, args, flags }) => {\n const method = parseMethod(args.method)\n const path = parsePath(args.path)\n const barePath = path.split('?')[0] ?? path\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n allowAnonymous: (ANONYMOUS_PATHS as readonly string[]).includes(barePath),\n })\n const body = await readBody(ctx, flags.data)\n if (method === 'GET' && body !== undefined) {\n throw new CliUsageError('GET requests cannot carry --data.')\n }\n const headers = buildRawHeaders({\n auth,\n path,\n hasJsonBody: body !== undefined,\n idempotencyKey:\n typeof flags.idempotencyKey === 'string'\n ? flags.idempotencyKey\n : undefined,\n })\n for (const header of readHeaderFlags(flags.header)) {\n const separator = header.indexOf(':')\n if (separator === -1) {\n throw new CliUsageError(\n `Invalid --header (expected \"Name: value\"): ${header}`\n )\n }\n headers.set(\n header.slice(0, separator).trim(),\n header.slice(separator + 1).trim()\n )\n }\n const response = await fetch(`${auth.apiUrl}${path}`, {\n method,\n headers,\n ...(body === undefined ? {} : { body }),\n })\n const text = await response.text()\n const parsed = tryParseJson(text)\n if (!response.ok) {\n throw responseToApiError(response, parsed)\n }\n if (parsed !== undefined) {\n return { data: parsed }\n }\n return { data: text, human: text }\n },\n})\n\nfunction parseMethod(value: string | undefined): ApiMethod {\n const method = (value ?? '').toUpperCase()\n if ((METHODS as readonly string[]).includes(method)) {\n return method as ApiMethod\n }\n throw new CliUsageError(\n `Unsupported method \"${value ?? ''}\". Expected one of: ${METHODS.join(', ')}`\n )\n}\n\nfunction parsePath(value: string | undefined): string {\n if (value === undefined || !value.startsWith('/')) {\n throw new CliUsageError('Path must start with \"/\", e.g. /v1/fields')\n }\n return value\n}\n\nasync function readBody(\n ctx: { readonly io: { readonly readStdin: () => Promise<string> } },\n data: unknown\n): Promise<string | undefined> {\n if (typeof data !== 'string') {\n return\n }\n const raw = data === '-' ? await ctx.io.readStdin() : data\n try {\n JSON.parse(raw)\n } catch {\n throw new CliUsageError('--data must be valid JSON (or - to read stdin)')\n }\n return raw\n}\n\nfunction readHeaderFlags(value: unknown): readonly string[] {\n if (Array.isArray(value)) {\n return value.filter((item): item is string => typeof item === 'string')\n }\n return typeof value === 'string' ? [value] : []\n}\n","import type { CreateApiKeyInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const apiKeysCreateCommand = defineCommand({\n path: ['api-keys', 'create'],\n summary:\n 'Mint an API key; the plaintext `key` is returned ONCE — this output is the only copy',\n sdkMethod: 'apiKeys.create',\n route: { method: 'POST', path: '/v1/api-keys' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Label for the key' },\n {\n flag: '--permissions <scopes...>',\n summary:\n 'all | contacts | emails | automations | transactional | domains | sends | audiences | brands (default: all)',\n },\n {\n flag: '--brand-id <brandId>',\n summary:\n 'Bind the NEW key to this brand id (omit for an organization-wide key); not the acting --brand',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli api-keys create --name CI --permissions emails domains',\n 'brew-cli api-keys create --name \"Acme key\" --brand-id kx7b3s7fapqz8mjm12ekz1kxdx87yceg',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: flagString(flags.name),\n permissions: toStringArray(flags.permissions),\n brandId: flagString(flags.brandId),\n })\n // The plaintext `key` is never shown again after this call — pass the\n // API response through verbatim (no masking) or the command loses its\n // only purpose.\n return {\n data: await ctx\n .client()\n .apiKeys.create(\n asSdkInput<CreateApiKeyInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const apiKeysDeleteCommand = defineCommand({\n path: ['api-keys', 'delete'],\n summary: 'Revoke an API key',\n sdkMethod: 'apiKeys.revoke',\n route: { method: 'DELETE', path: '/v1/api-keys/{keyId}' },\n commandClass: 'destructive',\n args: [{ name: 'keyId', summary: 'API key id to revoke', isRequired: true }],\n examples: ['brew-cli api-keys delete kd7b3s7fapqz8mjm12ekz1kxdx87yceg --yes'],\n confirmSummary: ({ args }) =>\n `Revoke API key ${args.keyId ?? ''}. Anything still using it starts failing immediately. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().apiKeys.revoke({ keyId: args.keyId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { renderTable } from '../../lib/output'\n\nexport const apiKeysListCommand = defineCommand({\n path: ['api-keys', 'list'],\n summary:\n 'List API keys in the organization (already-redacted `keyPreview`, never the secret)',\n sdkMethod: 'apiKeys.list',\n route: { method: 'GET', path: '/v1/api-keys' },\n commandClass: 'read',\n examples: ['brew-cli api-keys list', 'brew-cli api-keys list --json'],\n run: async ({ ctx }) => {\n const result = await ctx.client().apiKeys.list()\n return { data: result, human: renderApiKeys(result.data) }\n },\n})\n\nfunction renderApiKeys(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No API keys found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'keyId', header: 'KEY ID' },\n { key: 'name', header: 'NAME' },\n { key: 'keyPreview', header: 'KEY PREVIEW' },\n { key: 'status', header: 'STATUS' },\n { key: 'brandId', header: 'BRAND ID' },\n ])\n}\n","import type { CreateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const audiencesCreateCommand = defineCommand({\n path: ['audiences', 'create'],\n summary: 'Create an audience segment from a filter definition',\n sdkMethod: 'audiences.create',\n route: { method: 'POST', path: '/v1/audiences' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Audience name' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n `brew-cli audiences create --name VIP --input '{\"filters\":{\"filters\":[{\"field\":\"plan\",\"operator\":\"equals\",\"value\":\"vip\"}],\"logicalOperator\":\"and\"}}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n if (input.filters === undefined) {\n throw new CliUsageError(\n 'Audience filters are required — pass the filter definition via --input.'\n )\n }\n const result = await ctx\n .client()\n .audiences.create(\n asSdkInput<CreateAudienceInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const audiencesDeleteCommand = defineCommand({\n path: ['audiences', 'delete'],\n summary: 'Delete an audience segment (contacts are kept)',\n sdkMethod: 'audiences.delete',\n route: { method: 'DELETE', path: '/v1/audiences/{audienceId}' },\n commandClass: 'destructive',\n args: [\n { name: 'audienceId', summary: 'Audience id to delete', isRequired: true },\n ],\n examples: ['brew-cli audiences delete aud_3k9sQ --yes'],\n confirmSummary: ({ args }) =>\n `Delete audience ${args.audienceId ?? ''}. Contacts are kept; the segment definition is gone. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .audiences.delete({ audienceId: args.audienceId ?? '' }),\n }),\n})\n","import type { DuplicateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const audiencesDuplicateCommand = defineCommand({\n path: ['audiences', 'duplicate'],\n summary: 'Copy an audience segment (the copy gets a \"(copy)\" name)',\n sdkMethod: 'audiences.duplicate',\n route: { method: 'POST', path: '/v1/audiences/{audienceId}/duplicate' },\n commandClass: 'write',\n args: [\n {\n name: 'audienceId',\n summary: 'Audience id to duplicate',\n isRequired: true,\n },\n ],\n // The operation takes no request body — the API names the copy itself.\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli audiences duplicate aud_3k9sQ'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx.client().audiences.duplicate(\n asSdkInput<DuplicateAudienceInput>({\n audienceId: args.audienceId ?? '',\n }),\n requestOptions(flags)\n ),\n }),\n})\n","import type { AudienceFromEventsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const audiencesFromEventsCommand = defineCommand({\n path: ['audiences', 'from-events'],\n summary:\n 'Create a frozen audience snapshot from analytics events (async build)',\n sdkMethod: 'audiences.fromEvents',\n route: { method: 'POST', path: '/v1/audiences/from-events' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Audience name' },\n {\n flag: '--event-types <types...>',\n summary:\n 'Event type(s), repeatable: sent, delivered, delivery_delayed, opened, clicked, bounced, complained, failed, skipped, unsubscribed',\n },\n {\n flag: '--since <datetime>',\n summary: 'Cohort window start (ISO-8601, max 90 days back)',\n },\n {\n flag: '--until <datetime>',\n summary: 'Cohort window end (ISO-8601, default now)',\n },\n { flag: '--send-id <sendId>', summary: 'Scope to one campaign send' },\n { flag: '--email-id <emailId>', summary: 'Scope to one email design' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli audiences from-events --name \"Opened in July\" --event-types opened --since 2026-07-01T00:00:00Z --until 2026-08-01T00:00:00Z',\n 'brew-cli audiences from-events --event-types opened clicked --since 2026-07-01T00:00:00Z --input \\'{\"cohort\":{\"recipient\":[\"@acme.com\"]}}\\'',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n // Scalar flags override the cohort inside an --input body key-by-key.\n const cohort = mergeInput(input.cohort, {\n eventTypes: toStringArray(flags.eventTypes),\n from: flagString(flags.since),\n to: flagString(flags.until),\n sendId: flagString(flags.sendId),\n emailId: flagString(flags.emailId),\n })\n if (!Array.isArray(cohort.eventTypes) || cohort.eventTypes.length === 0) {\n throw new CliUsageError(\n '--event-types is required (or provide cohort.eventTypes via --input).'\n )\n }\n if (typeof cohort.from !== 'string' || cohort.from === '') {\n throw new CliUsageError(\n '--since is required (or provide cohort.from via --input).'\n )\n }\n return {\n data: await ctx\n .client()\n .audiences.fromEvents(\n asSdkInput<AudienceFromEventsInput>({ ...input, cohort }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\nimport { flagString } from '../../lib/input'\n\nexport const audiencesGetCommand = defineCommand({\n path: ['audiences', 'get'],\n summary: 'Fetch one audience segment by id',\n sdkMethod: null,\n derivedFrom: 'audiences.list',\n route: { method: 'GET', path: '/v1/audiences' },\n commandClass: 'read',\n args: [\n { name: 'audienceId', summary: 'Audience id to fetch', isRequired: true },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: count',\n },\n ],\n examples: ['brew-cli audiences get aud_3k9sQ'],\n run: async ({ ctx, args, flags }) => {\n const audienceId = args.audienceId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().audiences.list({\n audienceId,\n ...(include === undefined ? {} : { include }),\n })\n const audience = result.data[0]\n if (audience === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'AUDIENCE_NOT_FOUND',\n type: 'not_found',\n message: `No audience found for ${audienceId}`,\n suggestion: 'List audiences with `brew-cli audiences list`.',\n })\n }\n return { data: audience }\n },\n})\n","import type { ListAudiencesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const audiencesListCommand = defineCommand({\n path: ['audiences', 'list'],\n summary: 'List audience segments',\n sdkMethod: 'audiences.list',\n route: { method: 'GET', path: '/v1/audiences' },\n commandClass: 'read',\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: count',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli audiences list',\n 'brew-cli audiences list --include count --limit 10',\n 'brew-cli audiences list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n include: flagString(flags.include),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const audiences = ctx.client().audiences\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n audiences.list(\n asSdkInput<ListAudiencesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAudiences(rows),\n }\n }\n const result = await audiences.list(asSdkInput<ListAudiencesInput>(input))\n return { data: result, human: renderAudiences(result.data) }\n },\n})\n\nfunction renderAudiences(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No audiences found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'audienceId', header: 'AUDIENCE ID' },\n { key: 'audienceName', header: 'NAME' },\n { key: 'count', header: 'CONTACTS' },\n { key: 'updatedAt', header: 'UPDATED' },\n ])\n}\n","import type { UpdateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const audiencesUpdateCommand = defineCommand({\n path: ['audiences', 'update'],\n summary: 'Update an audience segment (name and/or filters)',\n sdkMethod: 'audiences.update',\n route: { method: 'PATCH', path: '/v1/audiences/{audienceId}' },\n commandClass: 'write',\n args: [\n { name: 'audienceId', summary: 'Audience id to update', isRequired: true },\n ],\n flags: [{ flag: '--name <name>', summary: 'New audience name' }, INPUT_FLAG],\n examples: [\n 'brew-cli audiences update aud_3k9sQ --name \"VIP customers\"',\n `brew-cli audiences update aud_3k9sQ --input '{\"filters\":{\"filters\":[{\"field\":\"plan\",\"operator\":\"equals\",\"value\":\"vip\"}],\"logicalOperator\":\"and\"}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass --name or --input.')\n }\n const result = await ctx.client().audiences.update(\n asSdkInput<UpdateAudienceInput>({\n ...input,\n audienceId: args.audienceId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import type { ControlAudienceRunInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport { asSdkInput, flagString } from '../../../lib/input'\n\nexport const automationsAudienceRunsControlCommand = defineCommand({\n path: ['automations', 'audience-runs', 'control'],\n summary: 'Pause, resume, or cancel an in-flight manual-audience run',\n sdkMethod: 'automations.audienceRuns.control',\n route: {\n method: 'POST',\n path: '/v1/automations/audience-runs/{audienceRunId}/control',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'audienceRunId',\n summary: 'Audience run id to control',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--action <action>',\n summary: 'pause (resumable) | resume | cancel (final)',\n },\n ],\n examples: [\n 'brew-cli automations audience-runs control arun_01HZ --action pause',\n 'brew-cli automations audience-runs control arun_01HZ --action cancel --yes',\n ],\n // Only cancel is irreversible; pause and resume proceed ungated.\n confirmSummary: ({ args, flags }) =>\n flagString(flags.action) === 'cancel'\n ? `Cancel audience run ${args.audienceRunId ?? ''} for good. Emails already sent are not recalled, and a canceled run cannot be resumed.`\n : undefined,\n run: async ({ ctx, args, flags }) => {\n const action = flagString(flags.action)\n if (action === undefined) {\n throw new CliUsageError('--action is required: pause, resume, or cancel.')\n }\n return {\n data: await ctx.client().automations.audienceRuns.control(\n asSdkInput<ControlAudienceRunInput>({\n audienceRunId: args.audienceRunId ?? '',\n action,\n })\n ),\n }\n },\n})\n","import type { ListAudienceRunsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput, flagInt, flagString } from '../../../lib/input'\n\nexport const automationsAudienceRunsListCommand = defineCommand({\n path: ['automations', 'audience-runs', 'list'],\n summary: 'List manual-audience runs (newest first)',\n sdkMethod: 'automations.audienceRuns.list',\n route: { method: 'GET', path: '/v1/automations/audience-runs' },\n commandClass: 'read',\n // The spec paginates by --limit only: no cursor, and the response carries\n // no pagination envelope, so there is no --all here.\n flags: [\n {\n flag: '--audience-run-id <id>',\n summary: 'Fetch a single audience run by id',\n },\n {\n flag: '--automation-id <id>',\n summary: 'Filter runs to a single automation',\n },\n { flag: '--limit <n>', summary: 'Max rows, 1-200 (default 50)' },\n ],\n examples: [\n 'brew-cli automations audience-runs list',\n 'brew-cli automations audience-runs list --automation-id auto_abc --limit 20',\n ],\n run: async ({ ctx, flags }) => {\n const limit = flagInt(flags.limit, '--limit')\n return {\n data: await ctx.client().automations.audienceRuns.list(\n asSdkInput<ListAudienceRunsInput>({\n audienceRunId: flagString(flags.audienceRunId),\n automationId: flagString(flags.automationId),\n limit,\n })\n ),\n }\n },\n})\n","import type { CreateAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const automationsCreateCommand = defineCommand({\n path: ['automations', 'create'],\n summary: 'Create an automation from a graph JSON (starts unpublished)',\n sdkMethod: 'automations.create',\n route: { method: 'POST', path: '/v1/automations' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Automation name' },\n { flag: '--description <text>', summary: 'Automation description' },\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Trigger event id that starts the automation',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'cat welcome-flow.json | brew-cli automations create --input -',\n `brew-cli automations create --name \"Welcome flow\" --input '{\"triggerEventId\":\"tev_1\",\"nodes\":[],\"connections\":[]}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError(\n '--input is required — the automation graph JSON (name, triggerEventId, nodes, connections).'\n )\n }\n const input = mergeInput(base, {\n name: flagString(flags.name),\n description: flagString(flags.description),\n triggerEventId: flagString(flags.trigger),\n })\n const result = await ctx\n .client()\n .automations.create(\n asSdkInput<CreateAutomationInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const automationsDeleteCommand = defineCommand({\n path: ['automations', 'delete'],\n summary: 'Delete an automation and its version history (cascade)',\n sdkMethod: 'automations.delete',\n route: { method: 'DELETE', path: '/v1/automations/{automationId}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations delete am_123 --yes'],\n confirmSummary: ({ args }) =>\n `Delete automation ${args.automationId ?? ''} and its entire version history (cascade). This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.delete({ automationId: args.automationId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\nimport { flagString } from '../../lib/input'\n\nexport const automationsGetCommand = defineCommand({\n path: ['automations', 'get'],\n summary: 'Fetch one automation by id',\n sdkMethod: null,\n derivedFrom: 'automations.list',\n route: { method: 'GET', path: '/v1/automations' },\n commandClass: 'read',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: graph | versions',\n },\n ],\n examples: [\n 'brew-cli automations get am_123',\n 'brew-cli automations get am_123 --include graph,versions',\n ],\n run: async ({ ctx, args, flags }) => {\n const automationId = args.automationId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().automations.list({\n automationId,\n ...(include === undefined ? {} : { include }),\n })\n const automation = result.data[0]\n if (automation === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'AUTOMATION_NOT_FOUND',\n type: 'not_found',\n message: `No automation found for ${automationId}`,\n suggestion: 'List automations with `brew-cli automations list`.',\n })\n }\n return { data: automation }\n },\n})\n","import type { ListAutomationsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const automationsListCommand = defineCommand({\n path: ['automations', 'list'],\n summary: 'List automations (lean rows; `automations get` for the graph)',\n sdkMethod: 'automations.list',\n route: { method: 'GET', path: '/v1/automations' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli automations list',\n 'brew-cli automations list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const automations = ctx.client().automations\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n automations.list(\n asSdkInput<ListAutomationsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAutomations(rows),\n }\n }\n const result = await automations.list(\n asSdkInput<ListAutomationsInput>(input)\n )\n return { data: result, human: renderAutomations(result.data) }\n },\n})\n\nfunction renderAutomations(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automations found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'name', header: 'NAME' },\n { key: 'published', header: 'PUBLISHED' },\n { key: 'version', header: 'VERSION' },\n { key: 'triggerEventId', header: 'TRIGGER' },\n ])\n}\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const automationsPublishCommand = defineCommand({\n path: ['automations', 'publish'],\n summary:\n 'Publish an automation — arms it for live fires; does not itself send',\n sdkMethod: 'automations.publish',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to publish',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--automation-version <automationVersionId>',\n summary: 'Publish a specific historical version (default: latest)',\n },\n ],\n examples: [\n 'brew-cli automations publish am_123',\n 'brew-cli automations publish am_123 --automation-version amv_456',\n ],\n run: async ({ ctx, args, flags }) => {\n const automationVersionId = flagString(flags.automationVersion)\n const result = await ctx.client().automations.publish({\n automationId: args.automationId ?? '',\n ...(automationVersionId === undefined ? {} : { automationVersionId }),\n })\n return { data: result }\n },\n})\n","import type { RunAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const automationsRunCommand = defineCommand({\n path: ['automations', 'run'],\n summary: 'Run a manual-audience automation (live send; --dry-run previews)',\n sdkMethod: 'automations.run',\n route: { method: 'POST', path: '/v1/automations/{automationId}/run' },\n commandClass: 'destructive',\n args: [\n {\n name: 'automationId',\n summary: 'Manual-audience automation id to run',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--dry-run',\n summary: 'Preview the resolved plan without sending (skips the gate)',\n },\n {\n flag: '--schedule-at <iso>',\n summary: 'Launch at an ISO-8601 time instead of now',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli automations run auto_abc --dry-run',\n 'brew-cli automations run auto_abc --yes',\n 'brew-cli automations run auto_abc --schedule-at 2026-09-01T09:00:00Z --input \\'{\"gradualSend\":{\"startingPercentage\":10,\"incrementPercentage\":20,\"interval\":{\"value\":1,\"unit\":\"day\"},\"timeZone\":\"America/New_York\"}}\\' --yes',\n ],\n confirmSummary: ({ args, flags }) => {\n // The gate must reflect the MERGED request — an inline --input body can\n // carry dry_run/scheduledAt on its own. A dry run never gates.\n const inline = parseInlineInput(flags.input)\n if (flags.dryRun === true || inline?.dry_run === true) {\n return\n }\n const scheduleAt =\n flagString(flags.scheduleAt) ?? asString(inline?.scheduledAt)\n const timing = scheduleAt === undefined ? 'now' : `at ${scheduleAt}`\n return `Run automation ${args.automationId ?? ''} LIVE against its bound audience ${timing}. Real recipients receive mail; preview with --dry-run instead.`\n },\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n // The spec field is snake_case, unlike the rest of the API surface.\n dry_run: flags.dryRun === true ? true : undefined,\n scheduledAt: flagString(flags.scheduleAt),\n })\n return {\n data: await ctx.client().automations.run(\n asSdkInput<RunAutomationInput>({\n ...input,\n automationId: args.automationId ?? '',\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n\n/** Best-effort parse of an inline --input body (stdin `-` stays opaque). */\nfunction parseInlineInput(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'string' || value === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(value)\n return parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n } catch {}\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n","import type { ListAutomationRunsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const automationsRunsListCommand = defineCommand({\n path: ['automations', 'runs', 'list'],\n summary: 'List automation runs (live + test history)',\n sdkMethod: 'automations.runs.list',\n route: { method: 'GET', path: '/v1/automations/runs' },\n commandClass: 'read',\n flags: [\n {\n flag: '--run <automationRunId>',\n summary: 'Fetch one run (single-row page)',\n },\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: logs',\n },\n { flag: '--automation <automationId>', summary: 'Filter by automation' },\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Filter by trigger event',\n },\n {\n flag: '--trigger-instance <triggerInstanceId>',\n summary: 'Filter by fired trigger instance',\n },\n { flag: '--recipient <email>', summary: 'Filter by recipient email' },\n {\n flag: '--status <status>',\n summary: 'pending | running | completed | failed | cancelled',\n },\n { flag: '--mode <mode>', summary: 'live | test' },\n { flag: '--since <datetime>', summary: 'Runs started at/after (ISO-8601)' },\n {\n flag: '--until <datetime>',\n summary: 'Runs started at/before (ISO-8601)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations runs list --automation am_123 --status failed',\n 'brew-cli automations runs list --run arun_123 --include logs',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n automationRunId: flagString(flags.run),\n include: flagString(flags.include),\n automationId: flagString(flags.automation),\n triggerEventId: flagString(flags.trigger),\n triggerInstanceId: flagString(flags.triggerInstance),\n recipientEmail: flagString(flags.recipient),\n status: flagString(flags.status),\n mode: flagString(flags.mode),\n from: flagString(flags.since),\n to: flagString(flags.until),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const runs = ctx.client().automations.runs\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n runs.list(\n asSdkInput<ListAutomationRunsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderRuns(rows),\n }\n }\n const result = await runs.list(asSdkInput<ListAutomationRunsInput>(input))\n return { data: result, human: renderRuns(result.data) }\n },\n})\n\nfunction renderRuns(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automation runs found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationRunId', header: 'RUN' },\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'status', header: 'STATUS' },\n { key: 'mode', header: 'MODE' },\n { key: 'recipientEmail', header: 'RECIPIENT' },\n ])\n}\n","import type { AutomationsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, INPUT_FLAG, readJsonFlag } from '../../lib/input'\n\ntype TestAutomationInput = Parameters<AutomationsResource['test']>[0]\n\nexport const automationsTestCommand = defineCommand({\n path: ['automations', 'test'],\n summary: 'Start a suppression-aware TEST run (no real mail is sent)',\n sdkMethod: 'automations.test',\n route: { method: 'POST', path: '/v1/automations/{automationId}/test' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to test',\n isRequired: true,\n },\n ],\n flags: [INPUT_FLAG],\n examples: [\n 'brew-cli automations test am_123',\n `brew-cli automations test am_123 --input '{\"userId\":\"u_1\"}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n // A bare object is sugar for the { payload } envelope the API takes.\n const body =\n base === undefined\n ? {}\n : typeof base === 'object' && base !== null && 'payload' in base\n ? (base as Record<string, unknown>)\n : { payload: base }\n const result = await ctx.client().automations.test(\n asSdkInput<TestAutomationInput>({\n ...body,\n automationId: args.automationId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import type { components } from '../../../generated/openapi-types'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { rawRequest } from '../../../lib/raw-request'\n\ntype ContractGetResponse = components['schemas']['PayloadContractGetResponse']\ntype ContractValidateResponse =\n components['schemas']['PayloadContractValidateResponse']\n\nconst FORMAT_FLAG = {\n flag: '--format <format>',\n summary:\n 'Rendering: json (default, the contract object) or ts | zod | jsonschema | skill ({format, content})',\n} as const\n\nconst FORMATS = new Set(['json', 'ts', 'zod', 'jsonschema', 'skill'])\n\nconst ENFORCEMENT_MODES = new Set(['off', 'prune', 'strict'])\n\n/**\n * The validate preview knob is the VALIDATOR's enum — it is only ever\n * consulted once a contract is enforcing, so `off` is not representable\n * (platform `ContractEnforcementMode`).\n */\nconst VALIDATE_ENFORCEMENT_MODES = new Set(['prune', 'strict'])\n\nfunction formatQuery(value: unknown): string {\n const format = flagString(value)\n if (format === undefined) {\n return ''\n }\n if (!FORMATS.has(format)) {\n throw new CliUsageError(\n `Unknown --format '${format}' (expected json | ts | zod | jsonschema | skill).`\n )\n }\n return `?format=${format}`\n}\n\n/** Text formats print `content` raw on a TTY; `--json | jq -r .content` for pipes. */\nfunction contentHuman(body: { content?: string }): { human?: string } {\n return typeof body.content === 'string' ? { human: body.content } : {}\n}\n\nexport const automationsTriggersContractGetCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'get'],\n summary:\n 'Read a trigger payload contract: stored when declared, derived otherwise; --format renders ts/zod/jsonschema/skill',\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'GET',\n path: '/v1/automations/triggers/{triggerEventId}/contract',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…, or an integration composite id)',\n isRequired: true,\n },\n ],\n flags: [FORMAT_FLAG],\n examples: [\n 'brew-cli automations triggers contract get tri_signup',\n 'brew-cli automations triggers contract get tri_signup --format ts',\n 'brew-cli automations triggers contract get tri_signup --format skill --json | jq -r .content',\n ],\n run: async ({ ctx, args, flags }) => {\n const body = await rawRequest<ContractGetResponse>(ctx, {\n method: 'GET',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract${formatQuery(flags.format)}`,\n })\n return { data: body, ...contentHuman(body) }\n },\n})\n\nexport const automationsTriggersContractPutCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'put'],\n summary:\n 'Declare (or replace) the stored payload contract for a trigger — tree-validated before any write; omitting --enforcement leaves the stored setting unchanged',\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'PUT',\n path: '/v1/automations/triggers/{triggerEventId}/contract',\n },\n commandClass: 'write',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…)',\n isRequired: true,\n },\n ],\n flags: [\n INPUT_FLAG,\n {\n flag: '--enforcement <mode>',\n summary:\n 'off (advisory, the default) | prune (drop fields not on the list) | strict (reject a payload carrying them)',\n },\n ],\n examples: [\n `brew-cli automations triggers contract put tri_signup --input '{\"fields\":[{\"key\":\"email\",\"type\":\"string\",\"required\":true}]}'`,\n 'brew-cli automations triggers contract put tri_signup --enforcement strict',\n ],\n // Trigger contracts must keep a top-level required `email` string;\n // nested object/array fields need a Liquid-enabled workspace. The\n // response is the same body a follow-up `contract get` returns.\n run: async ({ ctx, args, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n // The platform PUT takes fields?, name?, enforcement? — each optional,\n // so an enforcement-only (or rename-only) patch is designed usage.\n if (input.fields !== undefined && !Array.isArray(input.fields)) {\n throw new CliUsageError(\n '--input .fields must be an array of contract field nodes.'\n )\n }\n // One knob. Omitting it leaves the stored setting alone.\n const enforcement = flagString(flags.enforcement)\n if (enforcement !== undefined && !ENFORCEMENT_MODES.has(enforcement)) {\n throw new CliUsageError(\n `Unknown --enforcement '${enforcement}' (expected off | prune | strict).`\n )\n }\n const requestBody = {\n ...input,\n ...(enforcement !== undefined ? { enforcement } : {}),\n }\n if (Object.keys(requestBody).length === 0) {\n throw new CliUsageError(\n 'Empty contract body — pass --input (fields and/or name) or --enforcement <mode>.'\n )\n }\n const body = await rawRequest<ContractGetResponse>(ctx, {\n method: 'PUT',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract`,\n body: requestBody,\n })\n return { data: body }\n },\n})\n\nexport const automationsTriggersContractValidateCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'validate'],\n summary:\n \"Dry-run a payload against a trigger's contract (the fire path's validator) — never fires; invalid payloads still exit 0\",\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'POST',\n path: '/v1/automations/triggers/{triggerEventId}/contract/validate',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…)',\n isRequired: true,\n },\n ],\n flags: [\n INPUT_FLAG,\n {\n flag: '--enforcement <mode>',\n summary: 'Preview a mode other than the stored one: prune | strict',\n },\n ],\n examples: [\n `brew-cli automations triggers contract validate tri_signup --input '{\"payload\":{\"email\":\"jane@example.com\"}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n const payload = input.payload ?? input\n const enforcement = flagString(flags.enforcement)\n if (\n enforcement !== undefined &&\n !VALIDATE_ENFORCEMENT_MODES.has(enforcement)\n ) {\n throw new CliUsageError(\n `Unknown --enforcement '${enforcement}' (expected prune | strict).`\n )\n }\n const body = await rawRequest<ContractValidateResponse>(ctx, {\n method: 'POST',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract/validate`,\n body: {\n payload,\n ...(enforcement !== undefined ? { enforcement } : {}),\n },\n })\n return { data: body }\n },\n})\n","import type { CreateTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const automationsTriggersCreateCommand = defineCommand({\n path: ['automations', 'triggers', 'create'],\n summary: 'Create a trigger event (title + typed payload schema)',\n sdkMethod: 'automations.triggers.create',\n route: { method: 'POST', path: '/v1/automations/triggers' },\n commandClass: 'write',\n flags: [\n { flag: '--title <title>', summary: 'Trigger event title' },\n { flag: '--description <text>', summary: 'Trigger event description' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n `brew-cli automations triggers create --title user.signup --input '{\"payloadSchema\":{\"type\":\"object\",\"fields\":[{\"key\":\"userId\",\"type\":\"string\",\"required\":true}]}}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n title: flagString(flags.title),\n description: flagString(flags.description),\n })\n if (typeof input.title !== 'string' || input.title === '') {\n throw new CliUsageError('A title is required (--title or --input).')\n }\n if (input.payloadSchema === undefined) {\n throw new CliUsageError(\n '--input with a payloadSchema is required (the typed contract fires are validated against).'\n )\n }\n const result = await ctx\n .client()\n .automations.triggers.create(\n asSdkInput<CreateTriggerInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\n\nexport const automationsTriggersDeleteCommand = defineCommand({\n path: ['automations', 'triggers', 'delete'],\n summary: 'Delete a trigger event (rejected while automations depend on it)',\n sdkMethod: 'automations.triggers.delete',\n route: {\n method: 'DELETE',\n path: '/v1/automations/triggers/{triggerEventId}',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations triggers delete tev_123 --yes'],\n confirmSummary: ({ args }) =>\n `Delete trigger event ${args.triggerEventId ?? ''}. This cannot be undone (the server rejects the delete while automations still depend on it).`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().automations.triggers.delete({\n triggerEventId: args.triggerEventId ?? '',\n }),\n }),\n})\n","import type { FireTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const automationsTriggersFireCommand = defineCommand({\n path: ['automations', 'triggers', 'fire'],\n summary: 'Fire a trigger event with a payload (starts LIVE runs)',\n sdkMethod: 'automations.triggers.fire',\n route: {\n method: 'POST',\n path: '/v1/automations/triggers/{triggerEventId}/fire',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to fire',\n isRequired: true,\n },\n ],\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli automations triggers fire tri_signup --input '{\"payload\":{\"email\":\"jane@example.com\"}}' --yes`,\n ],\n confirmSummary: ({ args }) =>\n `Fire trigger ${args.triggerEventId ?? ''} — starts REAL runs on every published automation listening to it.`,\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required — the trigger payload JSON.')\n }\n // A bare object is sugar for the { payload } envelope the API takes.\n const body =\n typeof base === 'object' && base !== null && 'payload' in base\n ? (base as Record<string, unknown>)\n : { payload: base }\n const result = await ctx.client().automations.triggers.fire(\n asSdkInput<FireTriggerInput>({\n ...body,\n triggerEventId: args.triggerEventId ?? '',\n }),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ListTriggersInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const automationsTriggersListCommand = defineCommand({\n path: ['automations', 'triggers', 'list'],\n summary: 'List trigger events (their payload schemas drive fires)',\n sdkMethod: 'automations.triggers.list',\n route: { method: 'GET', path: '/v1/automations/triggers' },\n commandClass: 'read',\n flags: [\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Fetch one trigger event (single-row page)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations triggers list',\n 'brew-cli automations triggers list --trigger tev_123',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n triggerEventId: flagString(flags.trigger),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const triggers = ctx.client().automations.triggers\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n triggers.list(\n asSdkInput<ListTriggersInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderTriggers(rows),\n }\n }\n const result = await triggers.list(asSdkInput<ListTriggersInput>(input))\n return { data: result, human: renderTriggers(result.data) }\n },\n})\n\nfunction renderTriggers(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No trigger events found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'triggerEventId', header: 'TRIGGER' },\n { key: 'title', header: 'TITLE' },\n { key: 'provider', header: 'PROVIDER' },\n ])\n}\n","import type { TriggerReadyInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput } from '../../../lib/input'\n\nexport const automationsTriggersReadyCommand = defineCommand({\n path: ['automations', 'triggers', 'ready'],\n summary:\n 'Preflight a trigger without firing: key + scope + permissions pass/fail, the payload contract, and what a fire would start',\n sdkMethod: 'automations.triggers.ready',\n route: {\n method: 'GET',\n path: '/v1/automations/triggers/{triggerEventId}/fire',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…, or an integration composite id)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations triggers ready tri_signup'],\n // 200 `status: \"ready\"` means the exact credential in use can fire this\n // trigger; `details.counts.automations: 0` means fires are accepted and\n // logged but start no runs until a wired automation is published.\n run: async ({ ctx, args }) => {\n const result = await ctx.client().automations.triggers.ready(\n asSdkInput<TriggerReadyInput>({\n triggerEventId: args.triggerEventId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import type { PatchTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\n\nexport const automationsTriggersUpdateCommand = defineCommand({\n path: ['automations', 'triggers', 'update'],\n summary: 'Update a trigger event (title, description, payload schema)',\n sdkMethod: 'automations.triggers.patch',\n route: {\n method: 'PATCH',\n path: '/v1/automations/triggers/{triggerEventId}',\n },\n commandClass: 'write',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to update',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--title <title>', summary: 'New title' },\n { flag: '--description <text>', summary: 'New description' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations triggers update tev_123 --title user.signup.v2',\n `brew-cli automations triggers update tev_123 --input '{\"payloadSchema\":{\"type\":\"object\",\"fields\":[]}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n title: flagString(flags.title),\n description: flagString(flags.description),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().automations.triggers.patch(\n asSdkInput<PatchTriggerInput>({\n ...input,\n triggerEventId: args.triggerEventId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const automationsUnpublishCommand = defineCommand({\n path: ['automations', 'unpublish'],\n summary: 'Unpublish an automation so new trigger fires no longer start runs',\n sdkMethod: 'automations.unpublish',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to unpublish',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations unpublish am_123'],\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.unpublish({ automationId: args.automationId ?? '' }),\n }),\n})\n","import type { PatchAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const automationsUpdateCommand = defineCommand({\n path: ['automations', 'update'],\n summary: 'Update automation metadata and/or its graph (PATCH)',\n sdkMethod: 'automations.patch',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to update',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--name <name>', summary: 'New name' },\n { flag: '--description <text>', summary: 'New description' },\n { flag: '--trigger <triggerEventId>', summary: 'New trigger event id' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations update am_123 --name \"Welcome flow v2\"',\n 'cat graph.json | brew-cli automations update am_123 --input -',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: flagString(flags.name),\n description: flagString(flags.description),\n triggerEventId: flagString(flags.trigger),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().automations.patch(\n asSdkInput<PatchAutomationInput>({\n ...input,\n automationId: args.automationId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const brandGetCommand = defineCommand({\n path: ['brand', 'get'],\n summary: \"Fetch the key's brand + extraction readiness (`ready` flag)\",\n sdkMethod: 'brand.get',\n route: { method: 'GET', path: '/v1/brand' },\n commandClass: 'read',\n flags: [\n {\n flag: '--include <tokens>',\n summary:\n 'Comma-separated embeds: identity | emailDesign | imageStyle | logos',\n },\n ],\n examples: [\n 'brew-cli brand get',\n 'brew-cli brand get --include identity,logos',\n ],\n run: async ({ ctx, flags }) => {\n const include = flagString(flags.include)\n const result = await ctx.client().brand.get({\n ...(include === undefined ? {} : { include }),\n })\n return { data: result }\n },\n})\n","import type { ListBrandImagesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const brandGetImagesCommand = defineCommand({\n path: ['brand', 'get-images'],\n summary: \"Browse or semantically search the brand's image library\",\n sdkMethod: 'brand.getImages',\n route: { method: 'GET', path: '/v1/brand/images' },\n commandClass: 'read',\n flags: [\n {\n flag: '--query <text>',\n summary: 'Semantic search over image descriptions',\n },\n { flag: '--type <type>', summary: 'Filter by image category' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'Filter by aspect ratio (e.g. 16:9)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli brand get-images',\n 'brew-cli brand get-images --query \"team photo\" --aspect-ratio 16:9',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n q: flagString(flags.query),\n type: flagString(flags.type),\n aspectRatio: flagString(flags.aspectRatio),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const brand = ctx.client().brand\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n brand.getImages(\n asSdkInput<ListBrandImagesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderImages(rows),\n }\n }\n const result = await brand.getImages(\n asSdkInput<ListBrandImagesInput>(input)\n )\n return { data: result, human: renderImages(result.data) }\n },\n})\n\nfunction renderImages(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No brand images found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'url', header: 'URL' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'aspectRatio', header: 'ASPECT' },\n ])\n}\n","import type { UpdateBrandInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const brandUpdateCommand = defineCommand({\n path: ['brand', 'update'],\n summary: 'Update brand identity and/or design-system markdown (PATCH)',\n sdkMethod: 'brand.patch',\n route: { method: 'PATCH', path: '/v1/brand' },\n commandClass: 'write',\n flags: [INPUT_FLAG],\n examples: [\n `brew-cli brand update --input '{\"identity\":{\"tagline\":\"Brew better email\"}}'`,\n 'cat brand-patch.json | brew-cli brand update --input -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {})\n if (Object.keys(input).length === 0) {\n throw new CliUsageError(\n '--input is required — at least one of identity, emailDesign, imageStyle.'\n )\n }\n const result = await ctx\n .client()\n .brand.patch(asSdkInput<UpdateBrandInput>(input))\n return { data: result }\n },\n})\n","import type { CreateBrandInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const brandsCreateCommand = defineCommand({\n path: ['brands', 'create'],\n summary:\n 'Create a brand and start async extraction (needs an ORGANIZATION-scoped key); poll `brands get` until ready',\n sdkMethod: 'brands.create',\n route: { method: 'POST', path: '/v1/brands' },\n commandClass: 'write',\n flags: [\n { flag: '--url <url>', summary: 'Website to extract the brand from' },\n {\n flag: '--instructions <text>',\n summary: 'Guidance for the extraction (tone sources, brand color, …)',\n },\n {\n flag: '--include-paths <paths...>',\n summary: 'Site path(s) the crawl must include, repeatable',\n },\n {\n flag: '--exclude-paths <paths...>',\n summary: 'Site path(s) the crawl must skip, repeatable',\n },\n {\n flag: '--exclude-subdomains <subdomains...>',\n summary: 'Subdomain(s) the crawl must skip, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli brands create --url acme.com',\n 'brew-cli brands create --url acme.com --instructions \"Primary brand color is the deep navy in the header\"',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n url: flagString(flags.url),\n instructions: flagString(flags.instructions),\n includePaths: toStringArray(flags.includePaths),\n excludePaths: toStringArray(flags.excludePaths),\n excludeSubdomains: toStringArray(flags.excludeSubdomains),\n })\n if (typeof input.url !== 'string' || input.url === '') {\n throw new CliUsageError('--url is required (or provide it via --input).')\n }\n return {\n data: await ctx\n .client()\n .brands.create(\n asSdkInput<CreateBrandInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const brandsGetCommand = defineCommand({\n path: ['brands', 'get'],\n summary: \"One brand's lifecycle state (the extraction polling endpoint)\",\n sdkMethod: 'brands.get',\n route: { method: 'GET', path: '/v1/brands/{brandId}' },\n commandClass: 'read',\n args: [{ name: 'brandId', summary: 'Brand id to fetch', isRequired: true }],\n examples: ['brew-cli brands get kx7b3s7fapqz8mjm12ekz1kxdx87yceg'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().brands.get({ brandId: args.brandId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const brandsListCommand = defineCommand({\n path: ['brands', 'list'],\n summary: 'List every brand in the organization',\n sdkMethod: 'brands.list',\n route: { method: 'GET', path: '/v1/brands' },\n commandClass: 'read',\n examples: ['brew-cli brands list --json'],\n run: async ({ ctx }) => ({\n data: await ctx.client().brands.list(),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const chatsGetCommand = defineCommand({\n path: ['chats', 'get'],\n summary: 'Brand-scoped digest of a Brew chat (artifacts + transcript tail)',\n sdkMethod: 'chats.get',\n route: { method: 'GET', path: '/v1/chats/{chatId}' },\n commandClass: 'read',\n args: [\n {\n name: 'chatId',\n summary: 'Brew chat id (from the chat URL / the app)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli chats get Hk2mZ8t9QbY3sW1vR0pLd'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().chats.get(args.chatId ?? ''),\n }),\n})\n","import { maskApiKey } from '../lib/client'\nimport {\n configPath,\n isConfigKey,\n readConfig,\n updateConfig,\n} from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport type { CliContext } from '../lib/types'\n\nconst SETTABLE_KEYS = ['brandId', 'apiUrl'] as const\n\nexport const configListCommand = defineCommand({\n path: ['config', 'list'],\n summary: 'Show the stored configuration (API key masked)',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli config list'],\n run: async ({ ctx }) => ({ data: maskedConfig(ctx) }),\n})\n\nexport const configGetCommand = defineCommand({\n path: ['config', 'get'],\n summary: 'Read one stored configuration value',\n sdkMethod: null,\n commandClass: 'read',\n args: [\n { name: 'key', summary: 'brandId | apiUrl | apiKey', isRequired: true },\n ],\n examples: ['brew-cli config get brandId'],\n run: async ({ ctx, args }) => {\n const key = requireKnownKey(args.key)\n const value = maskedConfig(ctx)[key] ?? null\n return { data: { [key]: value } }\n },\n})\n\nexport const configSetCommand = defineCommand({\n path: ['config', 'set'],\n summary: 'Store a configuration value (brandId or apiUrl)',\n sdkMethod: null,\n commandClass: 'write',\n args: [\n { name: 'key', summary: 'brandId | apiUrl', isRequired: true },\n { name: 'value', summary: 'The value to store', isRequired: true },\n ],\n examples: ['brew-cli config set brandId bd_123'],\n run: async ({ ctx, args }) => {\n const key = requireSettableKey(args.key)\n const value = args.value ?? ''\n if (value === '') {\n throw new CliUsageError('A non-empty value is required.')\n }\n const path = updateConfig(ctx.io.env, { [key]: value })\n return { data: { [key]: value, configPath: path } }\n },\n})\n\nexport const configUnsetCommand = defineCommand({\n path: ['config', 'unset'],\n summary: 'Remove a stored configuration value (brandId or apiUrl)',\n sdkMethod: null,\n commandClass: 'write',\n args: [{ name: 'key', summary: 'brandId | apiUrl', isRequired: true }],\n examples: ['brew-cli config unset brandId'],\n run: async ({ ctx, args }) => {\n const key = requireSettableKey(args.key)\n const path = updateConfig(ctx.io.env, { [key]: undefined })\n return { data: { [key]: null, configPath: path } }\n },\n})\n\nfunction maskedConfig(ctx: CliContext): Record<string, string | undefined> {\n const stored = readConfig(ctx.io.env)\n return {\n ...stored,\n ...(stored.apiKey === undefined\n ? {}\n : { apiKey: maskApiKey(stored.apiKey) }),\n configPath: configPath(ctx.io.env),\n }\n}\n\nfunction requireKnownKey(\n value: string | undefined\n): 'apiKey' | 'apiUrl' | 'brandId' {\n if (value !== undefined && isConfigKey(value)) {\n return value\n }\n throw new CliUsageError('Unknown key. Expected brandId, apiUrl, or apiKey.')\n}\n\nfunction requireSettableKey(value: string | undefined): 'apiUrl' | 'brandId' {\n if (value === 'apiKey') {\n throw new CliUsageError(\n 'The API key is managed by `brew-cli login` / `brew-cli logout`.'\n )\n }\n const key = requireKnownKey(value)\n if ((SETTABLE_KEYS as readonly string[]).includes(key)) {\n return key as 'apiUrl' | 'brandId'\n }\n throw new CliUsageError('Unknown key. Expected brandId or apiUrl.')\n}\n","import type { CountContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseFilterFlags,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const contactsCountCommand = defineCommand({\n path: ['contacts', 'count'],\n summary: 'Count contacts matching a filter',\n sdkMethod: 'contacts.count',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n flags: [\n { flag: '--search <text>', summary: 'Free-text search' },\n {\n flag: '--filter <filters...>',\n summary: 'Structured filter field:operator[:value], repeatable',\n },\n { flag: '--audience <audienceId>', summary: 'Scope to one audience' },\n { flag: '--logic <logic>', summary: 'Filter combinator: and | or' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts count',\n 'brew-cli contacts count --filter subscribed:equals:true',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n search: flagString(flags.search),\n filters: parseFilterFlags(flags.filter),\n audienceId: flagString(flags.audience),\n logic: flagString(flags.logic),\n })\n return {\n data: await ctx\n .client()\n .contacts.count(asSdkInput<CountContactsInput>(input)),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const contactsDeleteCommand = defineCommand({\n path: ['contacts', 'delete'],\n summary: 'Delete one contact by email (idempotent)',\n sdkMethod: 'contacts.delete',\n route: { method: 'DELETE', path: '/v1/contacts/{email}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli contacts delete jane@example.com --yes'],\n confirmSummary: ({ args }) =>\n `Delete contact ${args.email ?? ''} from the active brand. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().contacts.delete({ email: args.email ?? '' }),\n }),\n})\n","import type { DeleteManyContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsDeleteManyCommand = defineCommand({\n path: ['contacts', 'delete-many'],\n summary: 'Delete up to 1000 contacts by email',\n sdkMethod: 'contacts.deleteMany',\n route: { method: 'POST', path: '/v1/contacts/batch-delete' },\n commandClass: 'destructive',\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli contacts delete-many --input '{\"emails\":[\"a@x.com\",\"b@x.com\"]}' --yes`,\n 'cat emails.json | brew-cli contacts delete-many --input - --yes',\n ],\n confirmSummary: ({ flags }) => {\n const count = inlineEmailCount(flags.input)\n return count === undefined\n ? 'Delete the contacts listed in --input. This cannot be undone.'\n : `Delete ${count} contact(s). This cannot be undone.`\n },\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required (JSON or - for stdin).')\n }\n const input = Array.isArray(base) ? { emails: base } : base\n const result = await ctx\n .client()\n .contacts.deleteMany(\n asSdkInput<DeleteManyContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n\nfunction inlineEmailCount(input: unknown): number | undefined {\n if (typeof input !== 'string' || input === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(input)\n if (Array.isArray(parsed)) {\n return parsed.length\n }\n if (\n parsed !== null &&\n typeof parsed === 'object' &&\n Array.isArray((parsed as { emails?: unknown }).emails)\n ) {\n return (parsed as { emails: unknown[] }).emails.length\n }\n } catch {}\n}\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\n\nexport const contactsGetCommand = defineCommand({\n path: ['contacts', 'get'],\n summary: 'Fetch one contact by email',\n sdkMethod: null,\n derivedFrom: 'contacts.search',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact',\n isRequired: true,\n },\n ],\n examples: ['brew-cli contacts get jane@example.com'],\n run: async ({ ctx, args }) => {\n const email = args.email ?? ''\n const result = await ctx.client().contacts.search({\n filters: [{ field: 'email', operator: 'equals', value: email }],\n limit: 1,\n })\n const contact = result.data[0]\n if (contact === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'CONTACT_NOT_FOUND',\n type: 'not_found',\n message: `No contact found for ${email}`,\n suggestion:\n 'Check the address, or create the contact with `brew-cli contacts upsert`.',\n })\n }\n return { data: contact }\n },\n})\n","import type { ContactsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n parseKeyValues,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\ntype ImportCsvContactsInput = Parameters<ContactsResource['importCsv']>[0]\n\nexport const contactsImportCsvCommand = defineCommand({\n path: ['contacts', 'import-csv'],\n summary: 'Bulk-import contacts from a CSV file or stdin',\n sdkMethod: 'contacts.importCsv',\n route: { method: 'POST', path: '/v1/contacts/import-csv' },\n commandClass: 'write',\n flags: [\n { flag: '--file <path>', summary: 'CSV file to import, or - for stdin' },\n {\n flag: '--mapping <pairs...>',\n summary: 'Column mapping csvColumn=fieldName, repeatable',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts import-csv --file contacts.csv',\n 'cat contacts.csv | brew-cli contacts import-csv --file - --mapping Email=email',\n ],\n run: async ({ ctx, flags }) => {\n const csv = await readTextFlag(ctx, flags.file, '--file')\n if (csv === undefined || csv.trim() === '') {\n throw new CliUsageError(\n '--file is required (a CSV path, or - for stdin).'\n )\n }\n const mapping = parseKeyValues(flags.mapping, '--mapping')\n const result = await ctx.client().contacts.importCsv(\n asSdkInput<ImportCsvContactsInput>({\n csv,\n ...(mapping === undefined ? {} : { mapping }),\n }),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { SearchContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseFilterFlags,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const contactsSearchCommand = defineCommand({\n path: ['contacts', 'search'],\n summary: 'Search contacts with structured filters (the contacts read)',\n sdkMethod: 'contacts.search',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n flags: [\n { flag: '--search <text>', summary: 'Free-text search' },\n {\n flag: '--filter <filters...>',\n summary: 'Structured filter field:operator[:value], repeatable',\n },\n { flag: '--audience <audienceId>', summary: 'Scope to one audience' },\n { flag: '--logic <logic>', summary: 'Filter combinator: and | or' },\n { flag: '--sort <field>', summary: 'Sort field' },\n { flag: '--order <order>', summary: 'Sort order: asc | desc' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts search --filter email:equals:jane@example.com',\n 'brew-cli contacts search --search jane --limit 10',\n 'brew-cli contacts search --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n search: flagString(flags.search),\n filters: parseFilterFlags(flags.filter),\n audienceId: flagString(flags.audience),\n logic: flagString(flags.logic),\n sort: flagString(flags.sort),\n order: flagString(flags.order),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const contacts = ctx.client().contacts\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n contacts.search(\n asSdkInput<SearchContactsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderContacts(rows),\n }\n }\n const result = await contacts.search(asSdkInput<SearchContactsInput>(input))\n return { data: result, human: renderContacts(result.data) }\n },\n})\n\nfunction renderContacts(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No contacts matched.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'email', header: 'EMAIL' },\n { key: 'firstName', header: 'FIRST' },\n { key: 'lastName', header: 'LAST' },\n { key: 'subscribed', header: 'SUBSCRIBED' },\n ])\n}\n","import type { PatchContactInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseKeyValues,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const contactsUpdateCommand = defineCommand({\n path: ['contacts', 'update'],\n summary: 'Partially update one contact (PATCH; never retried)',\n sdkMethod: 'contacts.patch',\n route: { method: 'PATCH', path: '/v1/contacts/{email}' },\n commandClass: 'write',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--first-name <name>', summary: 'First name' },\n { flag: '--last-name <name>', summary: 'Last name' },\n {\n flag: '--subscribed <bool>',\n summary: 'Subscription state: true | false',\n },\n { flag: '--set <pairs...>', summary: 'Field key=value, repeatable' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts update jane@example.com --first-name Jane',\n 'brew-cli contacts update j@x.com --set plan=enterprise',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const fields = mergeInput(base, {\n firstName: flagString(flags.firstName),\n lastName: flagString(flags.lastName),\n subscribed: parseBool(flags.subscribed),\n ...(parseKeyValues(flags.set, '--set') ?? {}),\n })\n if (Object.keys(fields).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().contacts.patch(\n asSdkInput<PatchContactInput>({\n email: args.email ?? '',\n fields,\n })\n )\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--subscribed must be true or false')\n}\n","import type { UpsertContactInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n parseKeyValues,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsUpsertCommand = defineCommand({\n path: ['contacts', 'upsert'],\n summary: 'Create or update one contact by email',\n sdkMethod: 'contacts.upsert',\n route: { method: 'POST', path: '/v1/contacts' },\n commandClass: 'write',\n flags: [\n { flag: '--email <email>', summary: 'Email address (the identity)' },\n { flag: '--first-name <name>', summary: 'First name' },\n { flag: '--last-name <name>', summary: 'Last name' },\n {\n flag: '--subscribed <bool>',\n summary: 'Subscription state: true | false',\n },\n {\n flag: '--custom <pairs...>',\n summary: 'Custom field key=value, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts upsert --email jane@example.com --first-name Jane',\n 'brew-cli contacts upsert --email j@x.com --custom plan=pro --custom seats=4',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n email: flagString(flags.email),\n firstName: flagString(flags.firstName),\n lastName: flagString(flags.lastName),\n subscribed: parseBool(flags.subscribed),\n customFields: parseKeyValues(flags.custom, '--custom'),\n })\n if (typeof input.email !== 'string' || input.email === '') {\n throw new CliUsageError('An email is required (--email or --input).')\n }\n const result = await ctx\n .client()\n .contacts.upsert(\n asSdkInput<UpsertContactInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--subscribed must be true or false')\n}\n","import type { UpsertManyContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsUpsertManyCommand = defineCommand({\n path: ['contacts', 'upsert-many'],\n summary: 'Create or update a batch of contacts (up to 100 per call)',\n sdkMethod: 'contacts.upsertMany',\n route: { method: 'POST', path: '/v1/contacts' },\n commandClass: 'write',\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli contacts upsert-many --input '{\"contacts\":[{\"email\":\"a@x.com\"}]}'`,\n 'cat contacts.json | brew-cli contacts upsert-many --input -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required (JSON or - for stdin).')\n }\n const input = Array.isArray(base) ? { contacts: base } : base\n const result = await ctx\n .client()\n .contacts.upsertMany(\n asSdkInput<UpsertManyContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContactsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\ntype ValidateContactsInput = Parameters<ContactsResource['validate']>[0]\n\nexport const contactsValidateCommand = defineCommand({\n path: ['contacts', 'validate'],\n summary: 'Batch-validate email deliverability (no contacts created)',\n sdkMethod: 'contacts.validate',\n route: { method: 'POST', path: '/v1/contacts/validate' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--emails <emails...>',\n summary: 'Email address(es) to validate, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts validate --emails jane@example.com bob@example.com',\n `brew-cli contacts validate --input '{\"emails\":[\"jane@example.com\"]}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const fromFlags = toStringArray(flags.emails)\n const input =\n fromFlags === undefined\n ? Array.isArray(base)\n ? { emails: base }\n : base\n : { emails: fromFlags }\n if (input === undefined) {\n throw new CliUsageError('Pass --emails or --input.')\n }\n const result = await ctx\n .client()\n .contacts.validate(\n asSdkInput<ValidateContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentAddImageRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentAddImageCommand = defineCommand({\n path: ['content', 'add-image'],\n summary: 'Mirror an external image onto Brew-hosted storage',\n sdkMethod: 'content.addImage',\n route: { method: 'POST', path: '/v1/content/add-image' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--url <url>', summary: 'Image URL to mirror' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content add-image --url https://cdn.example.com/logo.png',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n imageUrl: flagString(flags.url),\n })\n if (typeof input.imageUrl !== 'string' || input.imageUrl === '') {\n throw new CliUsageError('An image URL is required (--url or --input).')\n }\n const result = await ctx\n .client()\n .content.addImage(\n asSdkInput<ContentAddImageRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentGenerateImageRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentGenerateImageCommand = defineCommand({\n path: ['content', 'generate-image'],\n summary: 'Generate or edit an image from a prompt',\n sdkMethod: 'content.generateImage',\n route: { method: 'POST', path: '/v1/content/generate-image' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--prompt <text>', summary: 'What to generate' },\n { flag: '--mode <mode>', summary: 'text-to-image | image-editing' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'e.g. 16:9, 3:2, 1:1, 9:16',\n },\n { flag: '--model <model>', summary: 'Image model override' },\n { flag: '--image1 <url>', summary: 'Source image for image-editing' },\n {\n flag: '--image2 <url>',\n summary: 'Second source image for image-editing',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content generate-image --prompt \"hero shot of a ceramic mug\" --aspect-ratio 16:9',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n mode: flagString(flags.mode),\n aspectRatio: flagString(flags.aspectRatio),\n model: flagString(flags.model),\n image1: flagString(flags.image1),\n image2: flagString(flags.image2),\n })\n if (typeof input.prompt !== 'string' || input.prompt === '') {\n throw new CliUsageError('A prompt is required (--prompt or --input).')\n }\n const result = await ctx\n .client()\n .content.generateImage(\n asSdkInput<ContentGenerateImageRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentGifRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentGifCommand = defineCommand({\n path: ['content', 'gif'],\n summary: 'Create an animated GIF from a prompt, image, or video',\n sdkMethod: 'content.gif',\n route: { method: 'POST', path: '/v1/content/gif' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--from <source>', summary: 'prompt | image | video' },\n { flag: '--prompt <text>', summary: 'What to animate' },\n { flag: '--image-url <url>', summary: 'Source image (from: image)' },\n { flag: '--video-url <url>', summary: 'Source video (from: video)' },\n { flag: '--duration <seconds>', summary: 'Clip duration in seconds' },\n { flag: '--fps <n>', summary: 'Frames per second' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'e.g. 16:9, 1:1, 9:16',\n },\n { flag: '--loop <bool>', summary: 'Loop the GIF: true | false' },\n { flag: '--width <n>', summary: 'Output width (from: video)' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content gif --prompt \"steam rising from a coffee cup\"',\n 'brew-cli content gif --image-url https://cdn.example.com/mug.png --prompt \"gentle zoom\"',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.from),\n prompt: flagString(flags.prompt),\n imageUrl: flagString(flags.imageUrl),\n videoUrl: flagString(flags.videoUrl),\n duration: flagNumber(flags.duration, '--duration'),\n fps: flagInt(flags.fps, '--fps'),\n aspectRatio: flagString(flags.aspectRatio),\n loop: parseBool(flags.loop),\n width: flagInt(flags.width, '--width'),\n })\n // The API requires the `from` discriminator; infer it from the source\n // that was provided so the obvious invocations just work.\n if (input.from === undefined) {\n if (typeof input.videoUrl === 'string') {\n input.from = 'video'\n } else if (typeof input.imageUrl === 'string') {\n input.from = 'image'\n } else if (typeof input.prompt === 'string') {\n input.from = 'prompt'\n }\n }\n if (input.from === undefined) {\n throw new CliUsageError(\n 'Pass --prompt, --image-url, or --video-url (or --input).'\n )\n }\n const result = await ctx\n .client()\n .content.gif(asSdkInput<ContentGifRequest>(input), requestOptions(flags))\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--loop must be true or false')\n}\n\nfunction flagNumber(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return\n }\n const parsed = Number(value)\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new CliUsageError(`${flagName} must be a positive number`)\n }\n return parsed\n}\n","import type { ContentHtmlToPngRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentHtmlToPngCommand = defineCommand({\n path: ['content', 'html-to-png'],\n summary: 'Render HTML to a hosted PNG',\n sdkMethod: 'content.htmlToPng',\n route: { method: 'POST', path: '/v1/content/html-to-png' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--file <path>',\n summary: 'HTML file to render, or - for stdin',\n },\n { flag: '--width <n>', summary: 'Viewport width in pixels' },\n { flag: '--max-height <n>', summary: 'Clip the render at this height' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content html-to-png --file email.html --width 600',\n 'cat snippet.html | brew-cli content html-to-png --file -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const html = await readTextFlag(ctx, flags.file, '--file')\n const input = mergeInput(base, {\n html,\n width: flagInt(flags.width, '--width'),\n maxHeight: flagInt(flags.maxHeight, '--max-height'),\n })\n if (typeof input.html !== 'string' || input.html === '') {\n throw new CliUsageError('HTML is required (--file <path|-> or --input).')\n }\n const result = await ctx\n .client()\n .content.htmlToPng(\n asSdkInput<ContentHtmlToPngRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentTransformRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentTransformCommand = defineCommand({\n path: ['content', 'transform'],\n summary: 'Optimize or resize a hosted image',\n sdkMethod: 'content.transform',\n route: { method: 'POST', path: '/v1/content/transform' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--url <url>', summary: 'Image URL to transform' },\n {\n flag: '--operation <op>',\n summary: 'optimize | resize (default: optimize)',\n },\n { flag: '--width <n>', summary: 'Target width (resize)' },\n { flag: '--height <n>', summary: 'Target height (resize)' },\n { flag: '--prompt <text>', summary: 'Guidance for the resize' },\n { flag: '--resolution <res>', summary: '1K | 2K | 4K (resize)' },\n {\n flag: '--output-format <format>',\n summary: 'png | jpeg | webp (resize)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content transform --url https://cdn.example.com/hero.png',\n 'brew-cli content transform --url https://cdn.example.com/hero.png --operation resize --width 1200 --height 630',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n operation: flagString(flags.operation),\n imageUrl: flagString(flags.url),\n width: flagInt(flags.width, '--width'),\n height: flagInt(flags.height, '--height'),\n prompt: flagString(flags.prompt),\n resolution: flagString(flags.resolution),\n outputFormat: flagString(flags.outputFormat),\n })\n if (typeof input.imageUrl !== 'string' || input.imageUrl === '') {\n throw new CliUsageError('An image URL is required (--url or --input).')\n }\n // The API requires the `operation` discriminator. Resize knobs imply\n // resize; the bare-URL case defaults to optimize (which accepts no\n // other fields on the strict schema).\n if (input.operation === undefined) {\n const hasResizeKnobs = [\n input.width,\n input.height,\n input.prompt,\n input.resolution,\n input.outputFormat,\n ].some((value) => value !== undefined)\n input.operation = hasResizeKnobs ? 'resize' : 'optimize'\n }\n const result = await ctx\n .client()\n .content.transform(\n asSdkInput<ContentTransformRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { components } from '../../generated/openapi-types'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { INPUT_FLAG, mergeInput, readJsonFlag } from '../../lib/input'\nimport { rawRequest } from '../../lib/raw-request'\n\ntype ContractInferResponse =\n components['schemas']['PayloadContractInferResponse']\n\nexport const contractsInferCommand = defineCommand({\n path: ['contracts', 'infer'],\n summary:\n 'Draft a payload contract from a real example payload — nothing is saved; PUT the draft on a trigger',\n sdkMethod: null,\n isRawTransport: true,\n route: { method: 'POST', path: '/v1/payload-contracts/infer' },\n commandClass: 'read',\n flags: [INPUT_FLAG],\n examples: [\n `brew-cli contracts infer --input '{\"email\":\"jane@example.com\",\"order\":{\"total\":9.5}}'`,\n ],\n // Accepts either the bare example object or `{ example: {...} }`.\n // Un-inferable spots (nulls, empty arrays) come back under `issues`.\n run: async ({ ctx, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n const example = input.example ?? input\n if (\n typeof example !== 'object' ||\n example === null ||\n Array.isArray(example) ||\n Object.keys(example).length === 0\n ) {\n throw new CliUsageError(\n '--input with a non-empty example object is required (the JSON your system sends).'\n )\n }\n const body = await rawRequest<ContractInferResponse>(ctx, {\n method: 'POST',\n path: '/v1/payload-contracts/infer',\n body: { example },\n })\n return { data: body }\n },\n})\n","import type { HttpMethod } from './lib/define-command'\n\n/**\n * The two parity sentinels read these lists. Every entry is a deliberate,\n * reviewed decision — parity tests fail on anything unaccounted for, and\n * on entries that go stale (e.g. after an SDK upgrade closes a gap).\n */\n\nexport type SdkSkip = {\n /** Dotted SDK client path, e.g. `contacts.searchAll`. */\n readonly sdkPath: string\n readonly reason: string\n}\n\nexport type SpecSkip = {\n readonly method: HttpMethod\n readonly path: string\n readonly reason: string\n}\n\n/** SDK methods that intentionally have no dedicated CLI command. */\nexport const SDK_SKIP_LIST: readonly SdkSkip[] = [\n {\n sdkPath: 'contacts.searchAll',\n reason: 'auto-pager covered by `contacts search --all`',\n },\n {\n sdkPath: 'analytics.eventsAll',\n reason: 'auto-pager covered by `analytics events --all`',\n },\n {\n sdkPath: 'analytics.sends.listAll',\n reason: 'auto-pager covered by `analytics sends list --all`',\n },\n {\n sdkPath: 'analytics.triggerInstances.listAll',\n reason: 'auto-pager covered by `analytics trigger-instances list --all`',\n },\n {\n sdkPath: 'brand.update',\n reason: 'SDK alias of brand.patch, exposed as `brand update`',\n },\n {\n sdkPath: 'withBrand',\n reason:\n 'client scoping helper activated by the global `--brand`; not an API command',\n },\n]\n\n/**\n * Spec operations with no CLI command yet. Kept exact: the parity test\n * fails if one of these gains SDK support without gaining a command.\n */\nexport const SPEC_SKIP_LIST: readonly SpecSkip[] = []\n","import { ALL_COMMANDS } from '../registry'\nimport { SDK_SKIP_LIST, SPEC_SKIP_LIST } from '../skip-list'\nimport { CLI_NAME, CLI_VERSION } from '../version'\nimport { GLOBAL_FLAGS } from './define-command'\n\n/**\n * The machine-readable surface contract printed by `brew-cli docs --agent`.\n * Additive-only: tests snapshot this shape, so removals or renames are\n * breaking changes by construction.\n */\nexport function buildManifest(): Record<string, unknown> {\n return {\n name: CLI_NAME,\n version: CLI_VERSION,\n baseUrlDefault: 'https://brew.new/api',\n env: {\n BREW_API_KEY: 'API key (overrides stored login; flags override both)',\n BREW_BRAND_ID: 'Brand id for organization-scoped keys',\n BREW_API_URL: 'API base URL',\n BREW_CLI_CONFIG_DIR: 'Config directory (default ~/.config/brew-cli)',\n },\n exitCodes: {\n '0': 'success',\n '1': 'API or runtime error',\n '2': 'usage error',\n '3': 'authentication error',\n '4': 'confirmation required (re-run with --yes)',\n },\n confirmationProtocol: {\n exitCode: 4,\n envelope: [\n 'confirmationRequired',\n 'command',\n 'summary',\n 'confirmCommand',\n ],\n override: '--yes',\n },\n globalFlags: GLOBAL_FLAGS.map((flag) => ({\n flag: flag.flag,\n summary: flag.summary,\n })),\n commands: ALL_COMMANDS.map((spec) => ({\n command: [CLI_NAME, ...spec.path].join(' '),\n summary: spec.summary,\n class: spec.commandClass,\n ...(spec.isCredited === true ? { credited: true } : {}),\n sdkMethod: spec.sdkMethod,\n ...(spec.isRawTransport === true ? { transport: 'raw' } : {}),\n ...(spec.derivedFrom === undefined\n ? {}\n : { derivedFrom: spec.derivedFrom }),\n ...(spec.route === undefined\n ? {}\n : { route: `${spec.route.method} ${spec.route.path}` }),\n args: (spec.args ?? []).map((arg) => ({\n name: arg.name,\n summary: arg.summary,\n required: arg.isRequired,\n })),\n flags: (spec.flags ?? []).map((flag) => ({\n flag: flag.flag,\n summary: flag.summary,\n })),\n confirmation: spec.confirmSummary !== undefined,\n examples: spec.examples,\n })),\n skips: {\n sdk: SDK_SKIP_LIST,\n spec: SPEC_SKIP_LIST,\n },\n }\n}\n","import { defineCommand } from '../lib/define-command'\nimport { buildManifest } from '../lib/manifest'\n\nconst DOCS_POINTERS = {\n documentation: 'https://docs.getbrew.io',\n openapiSpec: 'https://brew.new/openapi/public-api-v1.yaml',\n agentGuide: 'https://brew.new/api/v1/llms.txt',\n apiCatalog: 'https://brew.new/api/v1/help',\n createApiKeys: 'https://brew.new/settings/api',\n}\n\nexport const docsCommand = defineCommand({\n path: ['docs'],\n summary: 'Documentation pointers; --agent prints the command manifest',\n sdkMethod: null,\n commandClass: 'read',\n flags: [\n {\n flag: '--agent',\n summary: 'Print the machine-readable manifest of every command',\n },\n ],\n examples: ['brew-cli docs', 'brew-cli docs --agent'],\n run: async ({ flags }) => {\n if (flags.agent === true) {\n return { data: buildManifest() }\n }\n return {\n data: DOCS_POINTERS,\n human: Object.entries(DOCS_POINTERS)\n .map(([key, url]) => `${key.padEnd(16)} ${url}`)\n .join('\\n'),\n }\n },\n})\n\nexport const docsApiCommand = defineCommand({\n path: ['docs', 'api'],\n summary: 'Fetch the live machine-readable API catalog (GET /v1/help)',\n sdkMethod: 'help.get',\n route: { method: 'GET', path: '/v1/help' },\n commandClass: 'read',\n examples: ['brew-cli docs api --json'],\n run: async ({ ctx }) => ({\n data: await ctx.client({ allowAnonymous: true }).help.get(),\n }),\n})\n","import { BrewApiError } from '@brew.new/sdk'\nimport { maskApiKey, resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { CliApiError } from '../lib/errors'\nimport { ALL_COMMANDS } from '../registry'\n\n/** Discovery endpoints without a dedicated command route. */\nconst NON_COMMAND_OPS = new Set(['GET /v1/llms.txt'])\n\nexport const doctorCommand = defineCommand({\n path: ['doctor'],\n summary:\n 'Trust check: auth, API reachability, and installed-CLI vs live-API drift',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli doctor', 'brew-cli doctor --json'],\n run: async ({ ctx }) => {\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n allowAnonymous: true,\n })\n const isKeyPresent = auth.apiKeySource !== 'anonymous'\n const anonymous = ctx.client({ allowAnonymous: true })\n\n let isReachable = false\n let apiVersion: string | null = null\n let reachabilityError: string | null = null\n try {\n const health = (await anonymous.health.get()) as {\n status?: string\n version?: string\n }\n isReachable = health.status === 'ok'\n apiVersion = health.version ?? null\n } catch (error) {\n reachabilityError = error instanceof Error ? error.message : String(error)\n }\n\n let isAuthValid: boolean | null = null\n let plan: string | null = null\n if (isKeyPresent && isReachable) {\n try {\n const usage = (await ctx.client().usage.get()) as {\n plan?: { key?: string }\n }\n isAuthValid = true\n plan = usage.plan?.key ?? null\n } catch (error) {\n if (\n (error instanceof BrewApiError || error instanceof CliApiError) &&\n (error.status === 401 || error.status === 403)\n ) {\n isAuthValid = false\n }\n // Other failures leave auth unknown; reachability already reported.\n }\n }\n\n let missingLocally: readonly string[] = []\n let extraLocally: readonly string[] = []\n let isSurfaceChecked = false\n if (isReachable) {\n try {\n const help = (await anonymous.help.get()) as {\n endpoints?: ReadonlyArray<{ method?: string; path?: string }>\n }\n const liveOps = new Set(\n (help.endpoints ?? [])\n .filter((e) => e.method !== undefined && e.path !== undefined)\n .map((e) => `${e.method} ${e.path}`)\n )\n const localOps = new Set(\n ALL_COMMANDS.flatMap((spec) =>\n spec.route === undefined\n ? []\n : [`${spec.route.method} ${spec.route.path}`]\n )\n )\n missingLocally = [...liveOps].filter(\n (op) => !(localOps.has(op) || NON_COMMAND_OPS.has(op))\n )\n extraLocally = [...localOps].filter((op) => !liveOps.has(op))\n isSurfaceChecked = true\n } catch {\n // /v1/help unavailable — surface check stays unperformed.\n }\n }\n\n const isHealthy =\n isReachable &&\n isAuthValid !== false &&\n isSurfaceChecked &&\n missingLocally.length === 0\n const data = {\n ok: isHealthy,\n apiUrl: auth.apiUrl,\n apiVersion,\n reachable: isReachable,\n ...(reachabilityError === null ? {} : { reachabilityError }),\n apiKey: isKeyPresent ? maskApiKey(auth.apiKey) : null,\n apiKeySource: isKeyPresent ? auth.apiKeySource : null,\n authValid: isAuthValid,\n plan,\n brandId: auth.brandId ?? null,\n surface: {\n checked: isSurfaceChecked,\n commands: ALL_COMMANDS.length,\n missingLocally,\n extraLocally,\n },\n }\n const lines = [\n `${isReachable ? 'ok' : 'FAIL'} api ${auth.apiUrl} (${apiVersion ?? 'unreachable'})`,\n isKeyPresent\n ? `${isAuthValid === false ? 'FAIL' : isAuthValid === true ? 'ok' : '??'} auth ${maskApiKey(auth.apiKey)} via ${auth.apiKeySource}${plan === null ? '' : ` (${plan} plan)`}`\n : '-- no API key (run `brew-cli login` or set BREW_API_KEY)',\n isSurfaceChecked\n ? missingLocally.length === 0\n ? `ok surface in sync (${ALL_COMMANDS.length} commands cover the live API)`\n : `DRIFT live API has ${missingLocally.length} operation(s) this CLI lacks — update @brew.new/cli:\\n${missingLocally.map((op) => ` ${op}`).join('\\n')}`\n : '-- surface not checked (API unreachable)',\n ...(extraLocally.length > 0\n ? [\n `note ${extraLocally.length} local command route(s) unknown to this server (server behind the CLI?)`,\n ]\n : []),\n ]\n return {\n data,\n human: lines.join('\\n'),\n exitCode: isHealthy ? 0 : 1,\n }\n },\n})\n","import type { AddDomainInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const domainsAddCommand = defineCommand({\n path: ['domains', 'add'],\n summary: 'Add a sending domain (response lists the DNS records to set)',\n sdkMethod: 'domains.add',\n route: { method: 'POST', path: '/v1/domains' },\n commandClass: 'write',\n args: [\n {\n name: 'domain',\n summary: 'Domain name to add (e.g. mail.example.com)',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--region <region>', summary: 'Sending region (us-east-1)' },\n {\n flag: '--custom-return-path <subdomain>',\n summary: 'Custom Return-Path subdomain',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli domains add mail.example.com'],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: args.domain,\n region: flagString(flags.region),\n customReturnPath: flagString(flags.customReturnPath),\n })\n const result = await ctx\n .client()\n .domains.add(asSdkInput<AddDomainInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsDeleteCommand = defineCommand({\n path: ['domains', 'delete'],\n summary: 'Delete a sending domain',\n sdkMethod: 'domains.delete',\n route: { method: 'DELETE', path: '/v1/domains/{domainId}' },\n commandClass: 'destructive',\n args: [\n { name: 'domainId', summary: 'Domain id to delete', isRequired: true },\n ],\n examples: ['brew-cli domains delete dom_8s1Kj --yes'],\n confirmSummary: ({ args }) =>\n `Delete sending domain ${args.domainId ?? ''}. Future sends from it will fail until it is re-added and re-verified. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.delete({ domainId: args.domainId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\n\nexport const domainsGetCommand = defineCommand({\n path: ['domains', 'get'],\n summary: 'Fetch one sending domain by id',\n sdkMethod: null,\n derivedFrom: 'domains.list',\n route: { method: 'GET', path: '/v1/domains' },\n commandClass: 'read',\n args: [{ name: 'domainId', summary: 'Domain id to fetch', isRequired: true }],\n examples: ['brew-cli domains get dom_3k9sQ'],\n run: async ({ ctx, args }) => {\n const domainId = args.domainId ?? ''\n const result = await ctx.client().domains.list({ domainId })\n const domain = result.data[0]\n if (domain === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'DOMAIN_NOT_FOUND',\n type: 'not_found',\n message: `No domain found for ${domainId}`,\n suggestion: 'List domains with `brew-cli domains list`.',\n })\n }\n return { data: domain }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsHealthCommand = defineCommand({\n path: ['domains', 'health'],\n summary: 'Deliverability health: verdict, signals, DNS/auth, reputation',\n sdkMethod: 'domains.health',\n route: { method: 'GET', path: '/v1/domains/{domainId}/health' },\n commandClass: 'read',\n args: [\n { name: 'domainId', summary: 'Domain id to inspect', isRequired: true },\n ],\n examples: ['brew-cli domains health kx7bkh53hasmfeh5kd7sqgykt187g8ww'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.health({\n domainId: args.domainId ?? '',\n }),\n }),\n})\n","import type { ListDomainsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const domainsListCommand = defineCommand({\n path: ['domains', 'list'],\n summary: 'List sending domains with verification state and DNS records',\n sdkMethod: 'domains.list',\n route: { method: 'GET', path: '/v1/domains' },\n commandClass: 'read',\n flags: [\n {\n flag: '--sendable-only',\n summary: 'Only domains currently able to send',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli domains list',\n 'brew-cli domains list --sendable-only --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n sendableOnly: flags.sendableOnly === true ? true : undefined,\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const domains = ctx.client().domains\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n domains.list(\n asSdkInput<ListDomainsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderDomains(rows),\n }\n }\n const result = await domains.list(asSdkInput<ListDomainsInput>(input))\n return { data: result, human: renderDomains(result.data) }\n },\n})\n\nfunction renderDomains(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No sending domains found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'domainId', header: 'DOMAIN ID' },\n { key: 'name', header: 'NAME' },\n { key: 'status', header: 'STATUS' },\n { key: 'sendable', header: 'SENDABLE' },\n ])\n}\n","import type { UpdateDomainSettingsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const domainsUpdateCommand = defineCommand({\n path: ['domains', 'update'],\n summary: 'Update default sender settings for a domain',\n sdkMethod: 'domains.updateSettings',\n route: { method: 'PATCH', path: '/v1/domains/{domainId}' },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Domain id to update', isRequired: true },\n ],\n flags: [\n {\n flag: '--default-sender-name <name>',\n summary: 'Default From display name',\n },\n {\n flag: '--default-from-email <email>',\n summary: 'Default From address on this domain',\n },\n {\n flag: '--default-reply-to-email <email>',\n summary: 'Default Reply-To address',\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli domains update dom_8s1Kj --default-sender-name \"Brew Coffee\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n defaultSenderName: flagString(flags.defaultSenderName),\n defaultFromEmail: flagString(flags.defaultFromEmail),\n defaultReplyToEmail: flagString(flags.defaultReplyToEmail),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().domains.updateSettings(\n asSdkInput<UpdateDomainSettingsInput>({\n ...input,\n domainId: args.domainId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsVerifyCommand = defineCommand({\n path: ['domains', 'verify'],\n summary: 'Re-check DNS records and refresh domain verification',\n sdkMethod: 'domains.verify',\n route: { method: 'POST', path: '/v1/domains/{domainId}/verify' },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Domain id to verify', isRequired: true },\n ],\n examples: ['brew-cli domains verify dom_8s1Kj'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.verify({ domainId: args.domainId ?? '' }),\n }),\n})\n","import {\n AUDIT_EMAIL_DEFAULT_TIMEOUT_MS,\n type AuditEmailInput,\n} from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nconst SENDING_PURPOSES = new Set(['marketing', 'transactional'])\n\nexport { AUDIT_EMAIL_DEFAULT_TIMEOUT_MS }\n\nfunction optionalText(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\nexport const emailsAuditCommand = defineCommand({\n path: ['emails', 'audit'],\n summary:\n 'Audit raw email content for production readiness (5 credits when complete)',\n sdkMethod: 'emails.auditEmail',\n route: { method: 'POST', path: '/v1/emails/audit' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--file <path>',\n summary: 'Email HTML file to audit, or - for stdin',\n },\n { flag: '--subject <text>', summary: 'Inbox subject line' },\n {\n flag: '--preview-text <text>',\n summary: 'Inbox preview text; an explicit empty value stays empty',\n },\n {\n flag: '--sending-purpose <purpose>',\n summary: 'marketing | transactional (default: marketing)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails audit --file newsletter.html --subject \"August update\" --sending-purpose marketing',\n 'cat email.html | brew-cli emails audit --file - --subject \"Receipt\" --sending-purpose transactional',\n `brew-cli emails audit --input '{\"emailHtml\":\"<p>Hello</p>\",\"subject\":\"Hello\"}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const emailHtml = await readTextFlag(ctx, flags.file, '--file')\n const sendingPurpose = flagString(flags.sendingPurpose)\n if (sendingPurpose !== undefined && !SENDING_PURPOSES.has(sendingPurpose)) {\n throw new CliUsageError(\n `Unknown --sending-purpose '${sendingPurpose}' (expected marketing | transactional).`\n )\n }\n const input = mergeInput(base, {\n emailHtml,\n subject: optionalText(flags.subject),\n previewText: optionalText(flags.previewText),\n sendingPurpose,\n })\n if (typeof input.emailHtml !== 'string' || input.emailHtml.trim() === '') {\n throw new CliUsageError(\n '--file is required (a path, or - for stdin), or emailHtml via --input.'\n )\n }\n const signal = AbortSignal.timeout(AUDIT_EMAIL_DEFAULT_TIMEOUT_MS)\n try {\n const result = await ctx\n .client()\n .emails.auditEmail(asSdkInput<AuditEmailInput>(input), {\n signal,\n ...(requestOptions(flags) ?? {}),\n })\n return { data: result }\n } catch (error) {\n if (signal.aborted) {\n throw signal.reason\n }\n throw error\n }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype CloneEmailInput = Parameters<BrewClient['emails']['clone']>[0]\n\nexport const emailsCloneCommand = defineCommand({\n path: ['emails', 'clone'],\n summary: 'Clone a design into a new one (exact snapshot copy, no AI)',\n sdkMethod: 'emails.clone',\n route: { method: 'POST', path: '/v1/emails/{emailId}/clone' },\n commandClass: 'write',\n args: [{ name: 'emailId', summary: 'Design id to clone', isRequired: true }],\n flags: [\n {\n flag: '--email-version-id <id>',\n summary: 'Exact source version to clone (default: latest)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails clone eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails clone eml_2SmZOWV3ZQ7W5x6g3m4p --email-version-id emv_9f2kX',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailVersionId = flagString(flags.emailVersionId)\n return {\n data: await ctx.client().emails.clone(\n asSdkInput<CloneEmailInput>({\n emailId: args.emailId ?? '',\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\ntype CreateInboxPlacementTestInput = Parameters<\n BrewClient['emails']['createInboxPlacementTest']\n>[0]\n\nexport const emailsCreateInboxPlacementTestCommand = defineCommand({\n path: ['emails', 'create-inbox-placement-test'],\n summary:\n 'Seed-test where the design lands (inbox vs spam) via a real small send (10 credits)',\n sdkMethod: 'emails.createInboxPlacementTest',\n route: { method: 'POST', path: '/v1/emails/{emailId}/inbox-placement-tests' },\n commandClass: 'write',\n isCredited: true,\n args: [{ name: 'emailId', summary: 'Design id to test', isRequired: true }],\n flags: [\n {\n flag: '--domain <domainId>',\n summary: 'Verified sending domain id the seed send goes out on',\n },\n {\n flag: '--subject <text>',\n summary: 'Seed-send subject (default: the email title)',\n },\n {\n flag: '--preview-text <text>',\n summary: 'Preheader override for this test',\n },\n {\n flag: '--email-version-id <id>',\n summary: 'Pin a specific design version (default: latest)',\n },\n {\n flag: '--providers <domains...>',\n summary:\n 'Restrict seed mailbox providers, repeatable (e.g. gmail.com outlook.com)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails create-inbox-placement-test eml_2SmZOWV3ZQ7W5x6g3m4p --domain kx7bkh53hasmfeh5kd7sqgykt187g8ww',\n 'brew-cli emails create-inbox-placement-test eml_2SmZOWV3ZQ7W5x6g3m4p --domain kx7bkh53hasmfeh5kd7sqgykt187g8ww --subject \"Variant B\" --providers gmail.com outlook.com',\n ],\n run: async ({ ctx, args, flags }) => {\n const domainId = flagString(flags.domain)\n if (domainId === undefined) {\n throw new CliUsageError(\n '--domain is required (a verified sending domain id; see `brew-cli domains list`).'\n )\n }\n const subject = flagString(flags.subject)\n const previewText = flagString(flags.previewText)\n const emailVersionId = flagString(flags.emailVersionId)\n const providers = toStringArray(flags.providers)\n return {\n // The API answers 202 with a pending test (status: \"collecting\");\n // poll `emails get-inbox-placement-results --test-id` for the outcome.\n data: await ctx.client().emails.createInboxPlacementTest(\n asSdkInput<CreateInboxPlacementTestInput>({\n emailId: args.emailId ?? '',\n domainId,\n ...(subject === undefined ? {} : { subject }),\n ...(previewText === undefined ? {} : { previewText }),\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n ...(providers === undefined ? {} : { providers }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const emailsDeleteCommand = defineCommand({\n path: ['emails', 'delete'],\n summary: 'Hard-delete an email design and all its versions (idempotent)',\n sdkMethod: 'emails.delete',\n route: { method: 'DELETE', path: '/v1/emails/{emailId}' },\n commandClass: 'destructive',\n args: [{ name: 'emailId', summary: 'Design id to delete', isRequired: true }],\n examples: ['brew-cli emails delete eml_2SmZOWV3ZQ7W5x6g3m4p --yes'],\n confirmSummary: ({ args }) =>\n `Hard-delete email design ${args.emailId ?? ''} and ALL its versions. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().emails.delete({ emailId: args.emailId ?? '' }),\n }),\n})\n","import type { EditEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n toStringArray,\n} from '../../lib/input'\nimport { progress } from '../../lib/output'\n\nexport const emailsEditCommand = defineCommand({\n path: ['emails', 'edit'],\n summary:\n 'AI-edit an email design, and/or set its subject line (subject-only is free)',\n sdkMethod: 'emails.edit',\n route: { method: 'PATCH', path: '/v1/emails/{emailId}' },\n commandClass: 'write',\n isCredited: true,\n args: [{ name: 'emailId', summary: 'Design id to edit', isRequired: true }],\n flags: [\n { flag: '--prompt <text>', summary: 'The edit instruction' },\n {\n flag: '--email-version-id <id>',\n summary: 'Edit from a specific version (default: latest); needs --prompt',\n },\n {\n flag: '--content-urls <urls...>',\n summary: 'Page URL(s) to pull copy and imagery from, repeatable',\n },\n {\n flag: '--subject-line <text>',\n summary:\n \"The design's default inbox subject line; alone it skips the AI run\",\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --prompt \"Tighten the hero copy\"',\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --subject-line \"Your September roundup\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n emailVersionId: flagString(flags.emailVersionId),\n contentUrls: toStringArray(flags.contentUrls),\n subjectLine: flagString(flags.subjectLine),\n })\n const isPromptEdit = typeof input.prompt === 'string' && input.prompt !== ''\n const hasSubjectLine =\n typeof input.subjectLine === 'string' && input.subjectLine !== ''\n if (!(isPromptEdit || hasSubjectLine)) {\n throw new CliUsageError(\n '--prompt or --subject-line is required (or provide either via --input).'\n )\n }\n // Subject-only is a deterministic in-place patch server-side: no AI run,\n // no new version, and no credits — so it returns immediately.\n progress(\n ctx,\n isPromptEdit\n ? 'Editing email… (typically 30-90s)'\n : 'Setting the subject line…'\n )\n const result = await ctx\n .client()\n .emails.edit(\n asSdkInput<EditEmailInput>({ ...input, emailId: args.emailId ?? '' }),\n { timeoutMs: 240_000 }\n )\n return { data: result }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype ExportEmailInput = Parameters<BrewClient['emails']['export']>[0]\n\nexport const emailsExportCommand = defineCommand({\n path: ['emails', 'export'],\n summary: 'Export a design to a connected ESP as a template (not a send)',\n sdkMethod: 'emails.export',\n route: { method: 'POST', path: '/v1/emails/{emailId}/export' },\n commandClass: 'write',\n args: [{ name: 'emailId', summary: 'Design id to export', isRequired: true }],\n flags: [\n {\n flag: '--provider <provider>',\n summary:\n 'Connected ESP: braze, hubspot, klaviyo, mailchimp, iterable, postmark, onesignal, mailgun, sendgrid',\n },\n {\n flag: '--template-name <name>',\n summary: 'Template name in the ESP (default: the email title)',\n },\n {\n flag: '--dry-run',\n summary:\n 'Validate design, ownership, and ESP connection without creating a template',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails export eml_2SmZOWV3ZQ7W5x6g3m4p --provider klaviyo',\n 'brew-cli emails export eml_2SmZOWV3ZQ7W5x6g3m4p --provider mailchimp --template-name \"Fall sale\" --dry-run',\n ],\n run: async ({ ctx, args, flags }) => {\n const provider = flagString(flags.provider)\n if (provider === undefined) {\n throw new CliUsageError(\n '--provider is required: braze, hubspot, klaviyo, mailchimp, iterable, postmark, onesignal, mailgun, or sendgrid.'\n )\n }\n const templateName = flagString(flags.templateName)\n return {\n data: await ctx.client().emails.export(\n asSdkInput<ExportEmailInput>({\n emailId: args.emailId ?? '',\n provider,\n ...(templateName === undefined ? {} : { templateName }),\n // The spec field is snake_case, unlike the rest of the API surface.\n ...(flags.dryRun === true ? { dry_run: true } : {}),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { GenerateEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\nimport { progress } from '../../lib/output'\n\nexport const emailsGenerateCommand = defineCommand({\n path: ['emails', 'generate'],\n summary: 'Generate a new on-brand email design from a prompt',\n sdkMethod: 'emails.generate',\n route: { method: 'POST', path: '/v1/emails' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--prompt <text>', summary: 'What the email should be' },\n {\n flag: '--reference-email-id <emailId>',\n summary: 'Existing design or template to base the layout on',\n },\n {\n flag: '--content-urls <urls...>',\n summary: 'Page URL(s) to pull copy and imagery from, repeatable',\n },\n {\n flag: '--group-id <groupId>',\n summary: 'Destination group id; omit or use ungrouped for Ungrouped',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails generate --prompt \"Product-launch email for the fall sale\"',\n 'brew-cli emails generate --prompt \"Welcome email\" --group-id grp_welcome',\n 'brew-cli emails generate --prompt \"Welcome email\" --subject-line \"Welcome to Brew\"',\n 'brew-cli emails generate --prompt \"Welcome email\" --content-urls https://example.com/pricing',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n referenceEmailId: flagString(flags.referenceEmailId),\n contentUrls: toStringArray(flags.contentUrls),\n groupId: flagString(flags.groupId),\n subjectLine: flagString(flags.subjectLine),\n })\n if (typeof input.prompt !== 'string' || input.prompt === '') {\n throw new CliUsageError(\n '--prompt is required (or provide it via --input).'\n )\n }\n progress(ctx, 'Generating email… (typically 30-90s)')\n const result = await ctx\n .client()\n .emails.generate(asSdkInput<GenerateEmailInput>(input), {\n timeoutMs: 240_000,\n ...(requestOptions(flags) ?? {}),\n })\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\nimport { flagString } from '../../lib/input'\n\nexport const emailsGetCommand = defineCommand({\n path: ['emails', 'get'],\n summary: 'Fetch one email design by id',\n sdkMethod: null,\n derivedFrom: 'emails.list',\n route: { method: 'GET', path: '/v1/emails' },\n commandClass: 'read',\n args: [\n {\n name: 'emailId',\n summary: 'Design id returned by emails generate/import',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: html,versions',\n },\n ],\n examples: [\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p --include html,versions',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailId = args.emailId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().emails.list({\n emailId,\n ...(include === undefined ? {} : { include }),\n })\n const email = result.data[0]\n if (email === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'EMAIL_NOT_FOUND',\n type: 'not_found',\n message: `No email design found for ${emailId}`,\n suggestion: 'List designs with `brew-cli emails list`.',\n })\n }\n return { data: email }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagString } from '../../lib/input'\n\ntype GetInboxPlacementResultsInput = Parameters<\n BrewClient['emails']['getInboxPlacementResults']\n>[0]\n\nexport const emailsGetInboxPlacementResultsCommand = defineCommand({\n path: ['emails', 'get-inbox-placement-results'],\n summary:\n 'Inbox placement results: one test with --test-id, else the recent tests',\n sdkMethod: 'emails.getInboxPlacementResults',\n route: { method: 'GET', path: '/v1/emails/{emailId}/inbox-placement-tests' },\n commandClass: 'read',\n args: [\n {\n name: 'emailId',\n summary: 'Design id the tests ran on',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--test-id <id>',\n summary:\n 'One test: live status + per-provider placement (re-poll ~30s until completed)',\n },\n ],\n examples: [\n 'brew-cli emails get-inbox-placement-results eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails get-inbox-placement-results eml_2SmZOWV3ZQ7W5x6g3m4p --test-id ibp_2f1c9d8a',\n ],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx.client().emails.getInboxPlacementResults(\n asSdkInput<GetInboxPlacementResultsInput>({\n emailId: args.emailId ?? '',\n testId: flagString(flags.testId),\n })\n ),\n }),\n})\n","import type { CreateEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const emailsGroupsCreateCommand = defineCommand({\n path: ['emails', 'groups', 'create'],\n summary: 'Create a named email folder (group)',\n sdkMethod: 'emailGroups.create',\n route: { method: 'POST', path: '/v1/email-groups' },\n commandClass: 'write',\n flags: [\n {\n flag: '--name <name>',\n summary: 'Folder label, 1-60 chars (Ungrouped is reserved)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli emails groups create --name Welcome'],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n return {\n data: await ctx\n .client()\n .emailGroups.create(\n asSdkInput<CreateEmailGroupInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { DeleteEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput } from '../../../lib/input'\n\nexport const emailsGroupsDeleteCommand = defineCommand({\n path: ['emails', 'groups', 'delete'],\n summary: 'Delete an email folder (group); its emails move to Ungrouped',\n sdkMethod: 'emailGroups.delete',\n route: { method: 'DELETE', path: '/v1/email-groups/{groupId}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'groupId',\n summary: 'Named group id (grp_*); Ungrouped cannot be deleted',\n isRequired: true,\n },\n ],\n examples: ['brew-cli emails groups delete grp_welcome --yes'],\n confirmSummary: ({ args }) =>\n `Delete email group ${args.groupId ?? ''}. Its emails move to Ungrouped; the folder itself cannot be recovered.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .emailGroups.delete(\n asSdkInput<DeleteEmailGroupInput>({ groupId: args.groupId ?? '' })\n ),\n }),\n})\n","import type { ListEmailGroupsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const emailsGroupsListCommand = defineCommand({\n path: ['emails', 'groups', 'list'],\n summary: 'List email groups in display order, including Ungrouped',\n sdkMethod: 'emailGroups.list',\n route: { method: 'GET', path: '/v1/email-groups' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli emails groups list',\n 'brew-cli emails groups list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const fetchPage = (cursor: string | undefined) =>\n ctx.client().emailGroups.list(\n asSdkInput<ListEmailGroupsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n if (flags.all === true) {\n const rows = await collectAll(ctx, fetchPage)\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEmailGroups(rows),\n }\n }\n const result = await fetchPage(undefined)\n return { data: result, human: renderEmailGroups(result.data) }\n },\n})\n\nfunction renderEmailGroups(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No email groups found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'groupId', header: 'GROUP ID' },\n { key: 'groupName', header: 'GROUP' },\n ])\n}\n","import type { UpdateEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\n\nexport const emailsGroupsUpdateCommand = defineCommand({\n path: ['emails', 'groups', 'update'],\n summary: 'Rename an email folder (group)',\n sdkMethod: 'emailGroups.update',\n route: { method: 'PATCH', path: '/v1/email-groups/{groupId}' },\n commandClass: 'write',\n args: [\n {\n name: 'groupId',\n summary: 'Named group id (grp_*); Ungrouped cannot be renamed',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--name <name>', summary: 'New folder label, 1-60 chars' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails groups update grp_welcome --name \"Welcome series\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n return {\n data: await ctx.client().emailGroups.update(\n asSdkInput<UpdateEmailGroupInput>({\n ...input,\n groupId: args.groupId ?? '',\n })\n ),\n }\n },\n})\n","import type { EmailImportInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const emailsImportCommand = defineCommand({\n path: ['emails', 'import'],\n summary: 'Import existing HTML, MJML, or JSX as a new editable design',\n sdkMethod: 'emails.import',\n route: { method: 'POST', path: '/v1/emails/import' },\n commandClass: 'write',\n flags: [\n {\n flag: '--file <path>',\n summary: 'Source file to import, or - for stdin',\n },\n { flag: '--format <format>', summary: 'Source format: html | mjml | jsx' },\n { flag: '--title <title>', summary: 'Design title' },\n {\n flag: '--base-url <url>',\n summary: 'Base URL for resolving relative asset links',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails import --file newsletter.html --format html --title \"Legacy newsletter\"',\n 'brew-cli emails import --file newsletter.html --format html --subject-line \"This month at Brew\"',\n 'cat email.html | brew-cli emails import --file - --format html',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const content = await readTextFlag(ctx, flags.file, '--file')\n const input = mergeInput(base, {\n content,\n format: flagString(flags.format),\n title: flagString(flags.title),\n baseUrl: flagString(flags.baseUrl),\n subjectLine: flagString(flags.subjectLine),\n })\n if (typeof input.content !== 'string' || input.content.trim() === '') {\n throw new CliUsageError(\n '--file is required (a path, or - for stdin), or content via --input.'\n )\n }\n if (typeof input.format !== 'string') {\n throw new CliUsageError('--format is required: html | mjml | jsx.')\n }\n const result = await ctx\n .client()\n .emails.import(asSdkInput<EmailImportInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype ImportFigmaInput = Parameters<BrewClient['emails']['importFigma']>[0]\n\nexport const emailsImportFigmaCommand = defineCommand({\n path: ['emails', 'import-figma'],\n summary:\n 'Convert one Figma frame into an editable design (deterministic, free)',\n sdkMethod: 'emails.importFigma',\n route: { method: 'POST', path: '/v1/emails/figma' },\n commandClass: 'write',\n flags: [\n {\n flag: '--url <figmaUrl>',\n summary: 'Figma frame link; must include a node-id query parameter',\n },\n {\n flag: '--title <title>',\n summary: 'Design title (default: the Figma frame name)',\n },\n {\n flag: '--format <format>',\n summary: 'Representation returned in content: jsx (default) or html',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails import-figma --url \"https://www.figma.com/design/abc123/Launch?node-id=1-2\"',\n 'brew-cli emails import-figma --url \"https://www.figma.com/design/abc123/Launch?node-id=1-2\" --subject-line \"Launch day is here\"',\n ],\n run: async ({ ctx, flags }) => {\n const figmaUrl = flagString(flags.url)\n if (figmaUrl === undefined) {\n throw new CliUsageError(\n '--url is required (a Figma frame link containing node-id).'\n )\n }\n const title = flagString(flags.title)\n const format = flagString(flags.format)\n const subjectLine = flagString(flags.subjectLine)\n return {\n data: await ctx.client().emails.importFigma(\n asSdkInput<ImportFigmaInput>({\n figmaUrl,\n ...(title === undefined ? {} : { title }),\n ...(format === undefined ? {} : { format }),\n ...(subjectLine === undefined ? {} : { subjectLine }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { ListEmailsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const emailsListCommand = defineCommand({\n path: ['emails', 'list'],\n summary: 'List email designs (the single email read)',\n sdkMethod: 'emails.list',\n route: { method: 'GET', path: '/v1/emails' },\n commandClass: 'read',\n flags: [\n {\n flag: '--status <status>',\n summary: 'Filter by status: streaming | complete | error',\n },\n {\n flag: '--group-id <groupId>',\n summary: 'Filter by one group id; use ungrouped for no saved group',\n },\n {\n flag: '--sort <field>',\n summary: 'Sort by updatedAt | createdAt | title',\n },\n { flag: '--order <order>', summary: 'Sort order: asc | desc' },\n { flag: '--created-at-from <iso>', summary: 'Created at or after (ISO)' },\n { flag: '--created-at-to <iso>', summary: 'Created at or before (ISO)' },\n { flag: '--updated-at-from <iso>', summary: 'Updated at or after (ISO)' },\n { flag: '--updated-at-to <iso>', summary: 'Updated at or before (ISO)' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails list --status complete --limit 10',\n 'brew-cli emails list --group-id ungrouped --sort title --order asc',\n 'brew-cli emails list --updated-at-from 2026-08-01T00:00:00Z',\n 'brew-cli emails list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n status: flagString(flags.status),\n groupId: flagString(flags.groupId),\n sort: flagString(flags.sort),\n order: flagString(flags.order),\n createdAtFrom: flagString(flags.createdAtFrom),\n createdAtTo: flagString(flags.createdAtTo),\n updatedAtFrom: flagString(flags.updatedAtFrom),\n updatedAtTo: flagString(flags.updatedAtTo),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const emails = ctx.client().emails\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n emails.list(\n asSdkInput<ListEmailsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEmails(rows),\n }\n }\n const result = await emails.list(asSdkInput<ListEmailsInput>(input))\n return { data: result, human: renderEmails(result.data) }\n },\n})\n\nfunction renderEmails(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No email designs found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'emailId', header: 'EMAIL ID' },\n { key: 'title', header: 'TITLE' },\n { key: 'status', header: 'STATUS' },\n { key: 'groupName', header: 'GROUP' },\n { key: 'updatedAt', header: 'UPDATED' },\n ])\n}\n","import type { PreviewEmailClientsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const emailsPreviewClientsCommand = defineCommand({\n path: ['emails', 'preview-clients'],\n summary: 'Render the design across real email clients (10 credits)',\n sdkMethod: 'emails.previewClients',\n route: { method: 'POST', path: '/v1/emails/{emailId}/client-previews' },\n commandClass: 'write',\n isCredited: true,\n args: [\n { name: 'emailId', summary: 'Design id to preview', isRequired: true },\n ],\n flags: [\n {\n flag: '--clients <ids...>',\n summary:\n 'Client id(s) to render, repeatable (e.g. applemail16 iphone16_18); default: a popular spread',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails preview-clients eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails preview-clients eml_2SmZOWV3ZQ7W5x6g3m4p --clients applemail16 outlook2021_win11_lm_dt',\n ],\n run: async ({ ctx, args, flags }) => {\n const clients = toStringArray(flags.clients)\n return {\n data: await ctx.client().emails.previewClients(\n asSdkInput<PreviewEmailClientsInput>({\n emailId: args.emailId ?? '',\n ...(clients === undefined ? {} : { clients }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { flagInt, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const emailsRestoreCommand = defineCommand({\n path: ['emails', 'restore'],\n summary: 'Restore a previous version as the new latest (non-destructive)',\n sdkMethod: 'emails.restore',\n route: { method: 'POST', path: '/v1/emails/{emailId}/restore' },\n commandClass: 'write',\n args: [\n { name: 'emailId', summary: 'Design id to restore', isRequired: true },\n ],\n // --version is taken by the CLI itself, hence --to-version.\n flags: [\n { flag: '--to-version <n>', summary: 'Version number to restore' },\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli emails restore eml_2SmZOWV3ZQ7W5x6g3m4p --to-version 2'],\n run: async ({ ctx, args, flags }) => {\n const version = flagInt(flags.toVersion, '--to-version')\n if (version === undefined) {\n throw new CliUsageError(\n '--to-version is required (see `brew-cli emails get <emailId> --include versions`).'\n )\n }\n const result = await ctx\n .client()\n .emails.restore(\n { emailId: args.emailId ?? '', version },\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { SendEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const emailsSendCommand = defineCommand({\n path: ['emails', 'send'],\n summary: 'Send an email: a real campaign, or a safe test with --test',\n sdkMethod: 'emails.send',\n route: { method: 'POST', path: '/v1/sends' },\n commandClass: 'destructive',\n args: [{ name: 'emailId', summary: 'Design id to send', isRequired: true }],\n flags: [\n {\n flag: '--test',\n summary: 'Test delivery to --to only; skips the confirmation gate',\n },\n {\n flag: '--to <emails...>',\n summary: 'Recipient(s): required for --test, ad-hoc list for campaigns',\n },\n { flag: '--subject <text>', summary: 'Subject line' },\n { flag: '--audience <audienceId>', summary: 'Campaign audience segment' },\n { flag: '--domain <domainId>', summary: 'Verified sending domain id' },\n {\n flag: '--schedule-at <iso>',\n summary: 'Schedule the campaign for an ISO-8601 time (default: now)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails send eml_1 --test --to qa@example.com --subject \"Preview\"',\n 'brew-cli emails send eml_1 --subject \"Fall sale\" --domain dom_1 --audience aud_1 --yes',\n 'brew-cli emails send eml_1 --subject \"Fall sale\" --domain dom_1 --audience aud_1 --schedule-at 2026-09-01T09:00:00Z --yes',\n ],\n confirmSummary: ({ args, flags }) => {\n // The gate must describe the MERGED send, not just the flags — an\n // --input body can carry test/audienceId/to/scheduledAt on its own.\n const inline = parseInlineInput(flags.input)\n const isTest = flags.test === true || inline?.test === true\n if (isTest) {\n return\n }\n const audience = flagString(flags.audience) ?? asString(inline?.audienceId)\n const scheduleAt =\n flagString(flags.scheduleAt) ?? asString(inline?.scheduledAt)\n const recipients = toStringArray(flags.to) ?? asRecipients(inline?.to)\n const target =\n audience === undefined\n ? recipients === undefined\n ? flags.input === '-'\n ? 'the recipients named in the --input body on stdin'\n : 'its recipients'\n : `${recipients.length} listed recipient(s)`\n : `audience ${audience}`\n const timing = scheduleAt === undefined ? 'now' : `at ${scheduleAt}`\n return `Send email ${args.emailId ?? ''} as a REAL campaign to ${target} ${timing}. Real recipients receive it; this cannot be undone.`\n },\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n emailId: args.emailId,\n test: flags.test === true ? true : undefined,\n subject: flagString(flags.subject),\n to: collapseRecipients(toStringArray(flags.to)),\n audienceId: flagString(flags.audience),\n domainId: flagString(flags.domain),\n scheduledAt: flagString(flags.scheduleAt),\n })\n if (typeof input.subject !== 'string' || input.subject === '') {\n throw new CliUsageError(\n '--subject is required (or provide it via --input).'\n )\n }\n if (input.test === true && input.to === undefined) {\n throw new CliUsageError('--to is required for a --test send.')\n }\n if (input.test !== true && typeof input.domainId !== 'string') {\n throw new CliUsageError(\n 'Campaign sends require --domain (a verified domain id); use --test for a test delivery.'\n )\n }\n const result = await ctx\n .client()\n .emails.send(asSdkInput<SendEmailInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n\nfunction collapseRecipients(\n values: readonly string[] | undefined\n): string | readonly string[] | undefined {\n if (values === undefined) {\n return\n }\n const [first] = values\n return values.length === 1 && first !== undefined ? first : values\n}\n\n/** Best-effort parse of an inline --input body (stdin `-` stays opaque). */\nfunction parseInlineInput(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'string' || value === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(value)\n return parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n } catch {}\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n\nfunction asRecipients(value: unknown): readonly string[] | undefined {\n if (typeof value === 'string' && value !== '') {\n return [value]\n }\n if (Array.isArray(value)) {\n const items = value.filter(\n (item): item is string => typeof item === 'string'\n )\n return items.length > 0 ? items : undefined\n }\n}\n","import type { CreateFieldInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { flagString, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nconst FIELD_TYPES = ['string', 'number', 'date', 'bool'] as const\n\nexport const fieldsCreateCommand = defineCommand({\n path: ['fields', 'create'],\n summary: 'Create a custom contact field',\n sdkMethod: 'fields.create',\n route: { method: 'POST', path: '/v1/fields' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Field name (camelCase)' },\n {\n flag: '--type <type>',\n summary: 'Field type: string | number | date | bool',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli fields create --name plan --type string'],\n run: async ({ ctx, flags }) => {\n const fieldName = flagString(flags.name)\n const fieldType = flagString(flags.type)\n if (fieldName === undefined || fieldType === undefined) {\n throw new CliUsageError('--name and --type are required.')\n }\n if (!(FIELD_TYPES as readonly string[]).includes(fieldType)) {\n throw new CliUsageError(\n `--type must be one of: ${FIELD_TYPES.join(', ')}`\n )\n }\n // Typed literal on purpose — no asSdkInput cast, so the compiler holds\n // this body to the generated contract (wire names are fieldName/fieldType).\n const input: CreateFieldInput = {\n fieldName,\n fieldType: fieldType as CreateFieldInput['fieldType'],\n }\n const result = await ctx\n .client()\n .fields.create(input, requestOptions(flags))\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const fieldsDeleteCommand = defineCommand({\n path: ['fields', 'delete'],\n summary: 'Delete a custom field definition',\n sdkMethod: 'fields.delete',\n route: { method: 'DELETE', path: '/v1/fields/{fieldName}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'fieldName',\n summary: 'Name of the field to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli fields delete plan --yes'],\n confirmSummary: ({ args }) =>\n `Delete the custom field definition \"${args.fieldName ?? ''}\". This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().fields.delete({ fieldName: args.fieldName ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const fieldsListCommand = defineCommand({\n path: ['fields', 'list'],\n summary: 'List custom contact fields',\n sdkMethod: 'fields.list',\n route: { method: 'GET', path: '/v1/fields' },\n commandClass: 'read',\n examples: ['brew-cli fields list'],\n run: async ({ ctx }) => ({ data: await ctx.client().fields.list() }),\n})\n","import { defineCommand } from '../lib/define-command'\n\nexport const healthCommand = defineCommand({\n path: ['health'],\n summary: 'Check Brew API liveness (no auth required)',\n sdkMethod: 'health.get',\n route: { method: 'GET', path: '/v1/health' },\n commandClass: 'read',\n examples: ['brew-cli health'],\n run: async ({ ctx }) => ({\n data: await ctx.client({ allowAnonymous: true }).health.get(),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { renderTable } from '../../lib/output'\n\nexport const integrationsListCommand = defineCommand({\n path: ['integrations', 'list'],\n summary:\n 'List the integration catalog with per-provider connected state (connect via Settings, not this CLI)',\n sdkMethod: 'integrations.list',\n route: { method: 'GET', path: '/v1/integrations' },\n commandClass: 'read',\n examples: ['brew-cli integrations list', 'brew-cli integrations list --json'],\n run: async ({ ctx }) => {\n const result = await ctx.client().integrations.list()\n return { data: result, human: renderIntegrations(result.data) }\n },\n})\n\nfunction renderIntegrations(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No integrations found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'provider', header: 'PROVIDER' },\n { key: 'name', header: 'NAME' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'connected', header: 'CONNECTED' },\n ])\n}\n","import {\n buildSdkClient,\n LOGIN_KEYS_URL,\n maskApiKey,\n resolveAuth,\n} from '../lib/client'\nimport { updateConfig } from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport { progress } from '../lib/output'\nimport type { CliContext } from '../lib/types'\n\nconst KEY_SHAPE = /^brew_[a-z0-9]{16,64}$/\n\nexport const loginCommand = defineCommand({\n path: ['login'],\n summary: 'Store an API key for this machine (validated against the API)',\n sdkMethod: null,\n commandClass: 'write',\n examples: [\n 'brew-cli login',\n 'brew-cli login --api-key brew_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n 'echo \"$BREW_API_KEY\" | brew-cli login',\n ],\n run: async ({ ctx }) => {\n const candidate = await readCandidateKey(ctx)\n if (!KEY_SHAPE.test(candidate)) {\n progress(\n ctx,\n 'Warning: key does not look like a Brew API key (brew_…); validating anyway.'\n )\n }\n const auth = resolveAuth({\n globals: { ...ctx.globals, apiKey: candidate },\n env: ctx.io.env,\n })\n // Throws a 401 BrewApiError (exit 3) when the key is invalid.\n await buildSdkClient(auth).usage.get()\n const path = updateConfig(ctx.io.env, { apiKey: candidate })\n progress(ctx, `Logged in. Key stored in ${path} (0600).`)\n return {\n data: {\n loggedIn: true,\n apiKey: maskApiKey(candidate),\n apiUrl: auth.apiUrl,\n configPath: path,\n },\n }\n },\n})\n\nasync function readCandidateKey(ctx: CliContext): Promise<string> {\n if (ctx.globals.apiKey !== undefined) {\n return ctx.globals.apiKey\n }\n if (!ctx.io.isTtyIn) {\n const piped = (await ctx.io.readStdin()).trim()\n if (piped !== '') {\n return piped\n }\n throw new CliUsageError(\n `No key provided. Pass --api-key or pipe the key on stdin. Create keys at ${LOGIN_KEYS_URL}`\n )\n }\n progress(ctx, `Create an API key at ${LOGIN_KEYS_URL}`)\n const answer = (await ctx.io.readLine('Paste your API key: ')).trim()\n if (answer === '') {\n throw new CliUsageError('No key entered.')\n }\n return answer\n}\n","import { readConfig, updateConfig } from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { progress } from '../lib/output'\n\nexport const logoutCommand = defineCommand({\n path: ['logout'],\n summary: 'Remove the stored API key from this machine',\n sdkMethod: null,\n commandClass: 'write',\n examples: ['brew-cli logout'],\n run: async ({ ctx }) => {\n const hadKey = readConfig(ctx.io.env).apiKey !== undefined\n const path = updateConfig(ctx.io.env, { apiKey: undefined })\n progress(ctx, hadKey ? 'Logged out.' : 'No stored key found.')\n return { data: { loggedOut: true, hadKey, configPath: path } }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const sendsCancelCommand = defineCommand({\n path: ['sends', 'cancel'],\n summary: 'Cancel a scheduled or queued send before it goes out',\n sdkMethod: 'sends.cancel',\n route: { method: 'POST', path: '/v1/sends/{sendId}/cancel' },\n commandClass: 'destructive',\n args: [{ name: 'sendId', summary: 'Send id to cancel', isRequired: true }],\n examples: ['brew-cli sends cancel snd_9f2kX --yes'],\n confirmSummary: ({ args }) =>\n `Cancel send ${args.sendId ?? ''}. A scheduled or queued campaign will not go out; delivery already in flight cannot be recalled.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().sends.cancel(args.sendId ?? ''),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const sendsPauseCommand = defineCommand({\n path: ['sends', 'pause'],\n summary: 'Pause an in-flight or scheduled send (resumable)',\n sdkMethod: 'sends.pause',\n route: { method: 'POST', path: '/v1/sends/{sendId}/pause' },\n commandClass: 'write',\n args: [{ name: 'sendId', summary: 'Send id to pause', isRequired: true }],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli sends pause snd_123'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .sends.pause(args.sendId ?? '', requestOptions(flags)),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const sendsResumeCommand = defineCommand({\n path: ['sends', 'resume'],\n summary: 'Resume a paused gradual send (the unsent tail is re-spread)',\n sdkMethod: 'sends.resume',\n route: { method: 'POST', path: '/v1/sends/{sendId}/resume' },\n commandClass: 'write',\n args: [{ name: 'sendId', summary: 'Send id to resume', isRequired: true }],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli sends resume snd_123'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .sends.resume(args.sendId ?? '', requestOptions(flags)),\n }),\n})\n","import type { ListTemplatesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const templatesListCommand = defineCommand({\n path: ['templates', 'list'],\n summary: 'List public templates (each row carries the rendered html)',\n sdkMethod: 'templates.list',\n route: { method: 'GET', path: '/v1/templates' },\n commandClass: 'read',\n flags: [\n {\n // --brand is taken by the global brand-selection flag.\n flag: '--brand-name <name>',\n summary: 'Filter by gallery brand name',\n },\n { flag: '--category <category>', summary: 'Filter by category' },\n {\n flag: '--semantic <text>',\n summary: 'Semantic search over the gallery',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli templates list --category welcome',\n 'brew-cli templates list --semantic \"minimal product launch\" --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n brand: flagString(flags.brandName),\n category: flagString(flags.category),\n semantic: flagString(flags.semantic),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const templates = ctx.client().templates\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n templates.list(\n asSdkInput<ListTemplatesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderTemplates(rows),\n }\n }\n const result = await templates.list(asSdkInput<ListTemplatesInput>(input))\n return { data: result, human: renderTemplates(result.data) }\n },\n})\n\nfunction renderTemplates(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No templates found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'emailId', header: 'TEMPLATE' },\n { key: 'title', header: 'TITLE' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'brand', header: 'BRAND' },\n ])\n}\n","import { createHash } from 'node:crypto'\nimport { readFileSync, writeFileSync } from 'node:fs'\n\nimport type {\n ListTriggersInput,\n ListTriggersResponse,\n Trigger,\n} from '@brew.new/sdk'\nimport { defineCommand } from '../lib/define-command'\nimport { asSdkInput } from '../lib/input'\n\ntype TriggerRow = Trigger\n\n/**\n * `brew-cli types` — generate TypeScript payload contracts for this\n * workspace's triggers (declared `payloadSchema`). Deterministic output:\n * same inputs → the same bytes, with a content hash in the header so\n * `--check` works as a CI drift gate (exit 1 when the API's contracts no\n * longer match the committed file).\n */\n\nconst HEADER_PREFIX = '// brew:contracts sha256:'\n\n/**\n * THE canonical type-name rule, mirrored byte-for-byte from the app's\n * `lib/payload-contract/codegen.ts` (`contractTypeName`) so Copy-as, the\n * SKILL.md brief, and this file all mint the SAME identifier for one\n * contract: PascalCase(name || id) + `Payload`, digit-led names prefixed,\n * an existing `…Payload` suffix never doubled, symbol-only names →\n * `ContractPayload`.\n */\nfunction pascalCase(value: string): string {\n const cleaned = value.replace(/[^a-zA-Z0-9]+/g, ' ').trim()\n if (cleaned === '') {\n return 'Contract'\n }\n return cleaned\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n}\n\nfunction typeName(label: string): string {\n const base = pascalCase(label)\n if (/^[0-9]/.test(base)) {\n return `Payload${base}`\n }\n return base.endsWith('Payload') ? base : `${base}Payload`\n}\n\nconst IDENTIFIER_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/\n\nfunction propertyKey(key: string): string {\n return IDENTIFIER_RE.test(key) ? key : JSON.stringify(key)\n}\n\n/**\n * The full contract-node lattice the platform can emit — the app's\n * `ContractFieldNode` (lib/payload-contract/types.ts). Deliberately wider\n * than the vendored `TriggerPayloadField` so nested / enum nodes survive\n * a vendored-spec lag: the emitter reads the wire JSON, not the spec.\n */\ntype TriggerFieldNode = {\n key: string\n type: string\n required: boolean\n /** `type: 'enum'` (or an array of enums via `itemType`): allowed values. */\n enumValues?: ReadonlyArray<string>\n /** `object`: properties. `array` with object elements: element properties. */\n children?: ReadonlyArray<TriggerFieldNode>\n /** `array` with scalar elements: the element type. */\n itemType?: string\n}\n\n/**\n * Scalar mapping mirrored from the app's `lib/payload-contract/codegen.ts`\n * (`scalarTsType`): int/float → number, date → ISO string, enum → a\n * literal union when `enumValues` exist. A type this build does not know\n * (including the platform's derived-view `'unknown'`) is honestly\n * `unknown` — never a silently-wrong `string`.\n */\nfunction scalarTsType(type: string, node: TriggerFieldNode): string {\n switch (type) {\n case 'string':\n return 'string'\n case 'int':\n case 'float':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'date':\n // ISO-8601 date-time string on the wire.\n return 'string'\n case 'enum':\n return node.enumValues && node.enumValues.length > 0\n ? node.enumValues.map((value) => JSON.stringify(value)).join(' | ')\n : 'string'\n default:\n return 'unknown'\n }\n}\n\nfunction triggerFieldType(node: TriggerFieldNode, indent: string): string {\n if (node.type === 'object') {\n return triggerObjectLiteral(node.children ?? [], indent)\n }\n if (node.type === 'array') {\n if (node.children && node.children.length > 0) {\n return `Array<${triggerObjectLiteral(node.children, indent)}>`\n }\n const element = node.itemType\n ? scalarTsType(node.itemType, node)\n : 'unknown'\n return `Array<${element}>`\n }\n return scalarTsType(node.type, node)\n}\n\n/**\n * Nested emission mirrored from the app codegen's `tsObjectLiteral`:\n * field order as given, `?:` from `required`, two-space indent per level.\n * Flat contracts emit byte-identically to the pre-nested emitter (the\n * sha256 header + `--check` gates depend on that stability), which is\n * also why the app's per-field doc comments are NOT ported here.\n */\nfunction triggerObjectLiteral(\n nodes: ReadonlyArray<TriggerFieldNode>,\n indent: string\n): string {\n if (nodes.length === 0) {\n // Top level: zero declared fields means \"send nothing\". A NESTED\n // childless object is different: its inner shape is unknown, not\n // empty.\n return indent === '' ? 'Record<string, never>' : 'Record<string, unknown>'\n }\n const inner = `${indent} `\n const lines: Array<string> = ['{']\n for (const node of nodes) {\n const optional = node.required ? '' : '?'\n lines.push(\n `${inner}${propertyKey(node.key)}${optional}: ${triggerFieldType(node, inner)}`\n )\n }\n lines.push(`${indent}}`)\n return lines.join('\\n')\n}\n\nfunction emitTriggerType(trigger: TriggerRow, name: string): string {\n const fields: ReadonlyArray<TriggerFieldNode> =\n trigger.payloadSchema?.fields ?? []\n return [\n `/** Fire: POST /v1/automations/triggers/${trigger.triggerEventId}/fire — body { payload: ${name} } */`,\n `export type ${name} = ${triggerObjectLiteral(fields, '')}`,\n ].join('\\n')\n}\n\n/** Byte-stable ordering — `localeCompare` varies by host locale. */\nfunction byCodepoint(a: string, b: string): number {\n if (a < b) {\n return -1\n }\n return a > b ? 1 : 0\n}\n\n/**\n * Trigger titles share one flat namespace and carry no uniqueness\n * constraint — colliding names get the trigger id appended (then a\n * numeric suffix as a last resort) so the generated file always compiles.\n */\nfunction uniqueNames(\n entries: ReadonlyArray<{ label: string; id: string }>\n): Array<string> {\n const taken = new Map<string, number>()\n return entries.map(({ label, id }) => {\n let name = typeName(label)\n if (taken.has(name)) {\n const suffixed = `${name}${pascalCase(id)}`\n name = suffixed\n }\n while (taken.has(name)) {\n const bump = (taken.get(name) ?? 1) + 1\n taken.set(name, bump)\n name = `${name}${bump}`\n }\n taken.set(name, 1)\n return name\n })\n}\n\nfunction buildFileText(args: { triggers: ReadonlyArray<TriggerRow> }): string {\n const triggers = [...args.triggers].sort((a, b) =>\n byCodepoint(a.triggerEventId, b.triggerEventId)\n )\n // ONE name pass: same rule as the app (name || id), collisions\n // resolved deterministically.\n const names = uniqueNames(\n triggers.map((t) => ({ id: t.triggerEventId, label: t.title }))\n )\n const triggerBlocks = triggers.map((t, i) =>\n emitTriggerType(t, names[i] ?? typeName(t.title))\n )\n const body = [\n '// Generated by `brew-cli types` — do not edit by hand.',\n '// Re-run `brew-cli types` after changing a trigger schema; gate',\n '// drift in CI with `brew-cli types --check`.',\n '',\n triggerBlocks.join('\\n\\n'),\n '',\n ].join('\\n')\n const hash = createHash('sha256').update(body).digest('hex')\n return `${HEADER_PREFIX}${hash}\\n${body}`\n}\n\nexport const typesCommand = defineCommand({\n path: ['types'],\n summary:\n \"Generate TypeScript payload contracts for this workspace's triggers into your codebase; --check is the CI drift gate (exit 1 on drift). Needs the automations scope\",\n sdkMethod: null,\n derivedFrom: 'automations.triggers.list',\n route: { method: 'GET', path: '/v1/automations/triggers' },\n commandClass: 'read',\n flags: [\n {\n flag: '--out <file>',\n summary: 'Output file (default brew-contracts.ts)',\n defaultValue: 'brew-contracts.ts',\n },\n {\n flag: '--check',\n summary:\n 'Verify the output file is up to date instead of writing; exits 1 on drift',\n },\n ],\n examples: [\n 'brew-cli types',\n 'brew-cli types --out src/brew-contracts.ts',\n 'brew-cli types --check',\n ],\n run: async ({ ctx, flags }) => {\n // Follow the cursor to the end — a silent 100-trigger cap would make\n // `--check` certify an incomplete file (integration catalogs alone\n // can cross 100). The page ceiling is a runaway-loop backstop only.\n const triggers: Array<TriggerRow> = []\n let cursor: string | null = null\n for (let page = 0; page < 50; page++) {\n const listResponse: ListTriggersResponse = await ctx\n .client()\n .automations.triggers.list(\n asSdkInput<ListTriggersInput>({\n limit: 100,\n ...(cursor === null ? {} : { cursor }),\n })\n )\n triggers.push(...(listResponse.data ?? []))\n if (\n !listResponse.pagination?.hasMore ||\n !listResponse.pagination.cursor\n ) {\n break\n }\n cursor = listResponse.pagination.cursor\n }\n const text = buildFileText({ triggers })\n const outPath =\n typeof flags.out === 'string' ? flags.out : 'brew-contracts.ts'\n\n if (flags.check === true) {\n let existing: string | null = null\n try {\n existing = readFileSync(outPath, 'utf8')\n } catch {\n existing = null\n }\n // CRLF-tolerant: an autocrlf checkout must not read as drift.\n const normalize = (value: string) => value.replaceAll('\\r\\n', '\\n')\n if (existing === null || normalize(existing) !== normalize(text)) {\n return {\n data: { checked: outPath, upToDate: false },\n human:\n existing === null\n ? `${outPath} does not exist — run \\`brew-cli types\\` first.`\n : `${outPath} is stale — the workspace's payload contracts changed. Run \\`brew-cli types\\` to regenerate.`,\n // Documented drift contract: exit 1 (not the usage-error 2).\n exitCode: 1,\n }\n }\n return {\n data: { checked: outPath, upToDate: true },\n human: `${outPath} is up to date.`,\n }\n }\n\n writeFileSync(outPath, text)\n return {\n data: {\n out: outPath,\n triggers: triggers.length,\n },\n human: `Wrote ${outPath} (${triggers.length} trigger${triggers.length === 1 ? '' : 's'}).`,\n }\n },\n})\n","import { defineCommand } from '../lib/define-command'\n\nexport const usageCommand = defineCommand({\n path: ['usage'],\n summary: 'Show plan, credit balance, and email-send quota',\n sdkMethod: 'usage.get',\n route: { method: 'GET', path: '/v1/usage' },\n commandClass: 'read',\n examples: ['brew-cli usage', 'brew-cli usage --json'],\n run: async ({ ctx }) => ({ data: await ctx.client().usage.get() }),\n})\n","import { BrewApiError } from '@brew.new/sdk'\nimport { maskApiKey, resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { progress } from '../lib/output'\n\nexport const whoamiCommand = defineCommand({\n path: ['whoami'],\n summary: 'Show the resolved credential, brand, and API target',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli whoami', 'brew-cli whoami --json'],\n run: async ({ ctx }) => {\n const auth = resolveAuth({ globals: ctx.globals, env: ctx.io.env })\n // Invalid credentials must surface (exit 3), but a server-side outage\n // should not hide the local credential state — degrade to usage: null.\n let usage: unknown = null\n try {\n usage = await ctx.client().usage.get()\n } catch (error) {\n if (\n error instanceof BrewApiError &&\n (error.status === 401 || error.status === 403)\n ) {\n throw error\n }\n progress(\n ctx,\n 'Warning: could not reach /v1/usage — showing local credential state only.'\n )\n }\n return {\n data: {\n apiUrl: auth.apiUrl,\n apiKey: maskApiKey(auth.apiKey),\n apiKeySource: auth.apiKeySource,\n brandId: auth.brandId ?? null,\n usage,\n },\n }\n },\n})\n","import { analyticsAutomationsCommand } from './commands/analytics/automations'\nimport { analyticsCampaignsCommand } from './commands/analytics/campaigns'\nimport { analyticsEventsCommand } from './commands/analytics/events'\nimport { analyticsOverviewCommand } from './commands/analytics/overview'\nimport { analyticsSendsGetCommand } from './commands/analytics/sends/get'\nimport { analyticsSendsListCommand } from './commands/analytics/sends/list'\nimport { analyticsTriggerInstancesListCommand } from './commands/analytics/trigger-instances/list'\nimport { apiCommand } from './commands/api'\nimport { apiKeysCreateCommand } from './commands/api-keys/create'\nimport { apiKeysDeleteCommand } from './commands/api-keys/delete'\nimport { apiKeysListCommand } from './commands/api-keys/list'\nimport { audiencesCreateCommand } from './commands/audiences/create'\nimport { audiencesDeleteCommand } from './commands/audiences/delete'\nimport { audiencesDuplicateCommand } from './commands/audiences/duplicate'\nimport { audiencesFromEventsCommand } from './commands/audiences/from-events'\nimport { audiencesGetCommand } from './commands/audiences/get'\nimport { audiencesListCommand } from './commands/audiences/list'\nimport { audiencesUpdateCommand } from './commands/audiences/update'\nimport { automationsAudienceRunsControlCommand } from './commands/automations/audience-runs/control'\nimport { automationsAudienceRunsListCommand } from './commands/automations/audience-runs/list'\nimport { automationsCreateCommand } from './commands/automations/create'\nimport { automationsDeleteCommand } from './commands/automations/delete'\nimport { automationsGetCommand } from './commands/automations/get'\nimport { automationsListCommand } from './commands/automations/list'\nimport { automationsPublishCommand } from './commands/automations/publish'\nimport { automationsRunCommand } from './commands/automations/run'\nimport { automationsRunsListCommand } from './commands/automations/runs/list'\nimport { automationsTestCommand } from './commands/automations/test'\nimport {\n automationsTriggersContractGetCommand,\n automationsTriggersContractPutCommand,\n automationsTriggersContractValidateCommand,\n} from './commands/automations/triggers/contract'\nimport { automationsTriggersCreateCommand } from './commands/automations/triggers/create'\nimport { automationsTriggersDeleteCommand } from './commands/automations/triggers/delete'\nimport { automationsTriggersFireCommand } from './commands/automations/triggers/fire'\nimport { automationsTriggersListCommand } from './commands/automations/triggers/list'\nimport { automationsTriggersReadyCommand } from './commands/automations/triggers/ready'\nimport { automationsTriggersUpdateCommand } from './commands/automations/triggers/update'\nimport { automationsUnpublishCommand } from './commands/automations/unpublish'\nimport { automationsUpdateCommand } from './commands/automations/update'\nimport { brandGetCommand } from './commands/brand/get'\nimport { brandGetImagesCommand } from './commands/brand/get-images'\nimport { brandUpdateCommand } from './commands/brand/update'\nimport { brandsCreateCommand } from './commands/brands/create'\nimport { brandsGetCommand } from './commands/brands/get'\nimport { brandsListCommand } from './commands/brands/list'\nimport { chatsGetCommand } from './commands/chats/get'\nimport {\n configGetCommand,\n configListCommand,\n configSetCommand,\n configUnsetCommand,\n} from './commands/config'\nimport { contactsCountCommand } from './commands/contacts/count'\nimport { contactsDeleteCommand } from './commands/contacts/delete'\nimport { contactsDeleteManyCommand } from './commands/contacts/delete-many'\nimport { contactsGetCommand } from './commands/contacts/get'\nimport { contactsImportCsvCommand } from './commands/contacts/import-csv'\nimport { contactsSearchCommand } from './commands/contacts/search'\nimport { contactsUpdateCommand } from './commands/contacts/update'\nimport { contactsUpsertCommand } from './commands/contacts/upsert'\nimport { contactsUpsertManyCommand } from './commands/contacts/upsert-many'\nimport { contactsValidateCommand } from './commands/contacts/validate'\nimport { contentAddImageCommand } from './commands/content/add-image'\nimport { contentGenerateImageCommand } from './commands/content/generate-image'\nimport { contentGifCommand } from './commands/content/gif'\nimport { contentHtmlToPngCommand } from './commands/content/html-to-png'\nimport { contentTransformCommand } from './commands/content/transform'\nimport { contractsInferCommand } from './commands/contracts/infer'\nimport { docsApiCommand, docsCommand } from './commands/docs'\nimport { doctorCommand } from './commands/doctor'\nimport { domainsAddCommand } from './commands/domains/add'\nimport { domainsDeleteCommand } from './commands/domains/delete'\nimport { domainsGetCommand } from './commands/domains/get'\nimport { domainsHealthCommand } from './commands/domains/health'\nimport { domainsListCommand } from './commands/domains/list'\nimport { domainsUpdateCommand } from './commands/domains/update'\nimport { domainsVerifyCommand } from './commands/domains/verify'\nimport { emailsAuditCommand } from './commands/emails/audit'\nimport { emailsCloneCommand } from './commands/emails/clone'\nimport { emailsCreateInboxPlacementTestCommand } from './commands/emails/create-inbox-placement-test'\nimport { emailsDeleteCommand } from './commands/emails/delete'\nimport { emailsEditCommand } from './commands/emails/edit'\nimport { emailsExportCommand } from './commands/emails/export'\nimport { emailsGenerateCommand } from './commands/emails/generate'\nimport { emailsGetCommand } from './commands/emails/get'\nimport { emailsGetInboxPlacementResultsCommand } from './commands/emails/get-inbox-placement-results'\nimport { emailsGroupsCreateCommand } from './commands/emails/groups/create'\nimport { emailsGroupsDeleteCommand } from './commands/emails/groups/delete'\nimport { emailsGroupsListCommand } from './commands/emails/groups/list'\nimport { emailsGroupsUpdateCommand } from './commands/emails/groups/update'\nimport { emailsImportCommand } from './commands/emails/import'\nimport { emailsImportFigmaCommand } from './commands/emails/import-figma'\nimport { emailsListCommand } from './commands/emails/list'\nimport { emailsPreviewClientsCommand } from './commands/emails/preview-clients'\nimport { emailsRestoreCommand } from './commands/emails/restore'\nimport { emailsSendCommand } from './commands/emails/send'\nimport { fieldsCreateCommand } from './commands/fields/create'\nimport { fieldsDeleteCommand } from './commands/fields/delete'\nimport { fieldsListCommand } from './commands/fields/list'\nimport { healthCommand } from './commands/health'\nimport { integrationsListCommand } from './commands/integrations/list'\nimport { loginCommand } from './commands/login'\nimport { logoutCommand } from './commands/logout'\nimport { sendsCancelCommand } from './commands/sends/cancel'\nimport { sendsPauseCommand } from './commands/sends/pause'\nimport { sendsResumeCommand } from './commands/sends/resume'\nimport { templatesListCommand } from './commands/templates/list'\nimport { typesCommand } from './commands/types'\nimport { usageCommand } from './commands/usage'\nimport { whoamiCommand } from './commands/whoami'\nimport type { CommandSpec } from './lib/define-command'\n\n/**\n * Every command the CLI exposes, in help-display order. One entry per\n * command file; the parity tests hold this list to the SDK surface and\n * the vendored OpenAPI spec.\n */\nexport const ALL_COMMANDS: readonly CommandSpec[] = [\n loginCommand,\n logoutCommand,\n whoamiCommand,\n configListCommand,\n configGetCommand,\n configSetCommand,\n configUnsetCommand,\n contactsSearchCommand,\n contactsGetCommand,\n contactsCountCommand,\n contactsUpsertCommand,\n contactsUpsertManyCommand,\n contactsUpdateCommand,\n contactsDeleteCommand,\n contactsDeleteManyCommand,\n contactsValidateCommand,\n contactsImportCsvCommand,\n fieldsListCommand,\n fieldsCreateCommand,\n fieldsDeleteCommand,\n emailsListCommand,\n emailsGroupsListCommand,\n emailsGroupsCreateCommand,\n emailsGroupsUpdateCommand,\n emailsGroupsDeleteCommand,\n emailsGetCommand,\n emailsGenerateCommand,\n emailsImportCommand,\n emailsImportFigmaCommand,\n emailsEditCommand,\n emailsCloneCommand,\n emailsRestoreCommand,\n emailsDeleteCommand,\n emailsExportCommand,\n emailsAuditCommand,\n emailsPreviewClientsCommand,\n emailsCreateInboxPlacementTestCommand,\n emailsGetInboxPlacementResultsCommand,\n emailsSendCommand,\n sendsCancelCommand,\n sendsPauseCommand,\n sendsResumeCommand,\n typesCommand,\n audiencesListCommand,\n audiencesGetCommand,\n audiencesCreateCommand,\n audiencesUpdateCommand,\n audiencesDuplicateCommand,\n audiencesFromEventsCommand,\n audiencesDeleteCommand,\n automationsListCommand,\n automationsGetCommand,\n automationsCreateCommand,\n automationsUpdateCommand,\n automationsPublishCommand,\n automationsUnpublishCommand,\n automationsDeleteCommand,\n automationsTestCommand,\n automationsRunCommand,\n automationsTriggersListCommand,\n automationsTriggersReadyCommand,\n automationsTriggersContractGetCommand,\n automationsTriggersContractPutCommand,\n automationsTriggersContractValidateCommand,\n contractsInferCommand,\n automationsTriggersCreateCommand,\n automationsTriggersUpdateCommand,\n automationsTriggersDeleteCommand,\n automationsTriggersFireCommand,\n automationsRunsListCommand,\n automationsAudienceRunsListCommand,\n automationsAudienceRunsControlCommand,\n analyticsOverviewCommand,\n analyticsCampaignsCommand,\n analyticsAutomationsCommand,\n analyticsEventsCommand,\n analyticsSendsListCommand,\n analyticsSendsGetCommand,\n analyticsTriggerInstancesListCommand,\n brandGetCommand,\n brandUpdateCommand,\n brandGetImagesCommand,\n brandsListCommand,\n brandsGetCommand,\n brandsCreateCommand,\n apiKeysListCommand,\n apiKeysCreateCommand,\n apiKeysDeleteCommand,\n domainsListCommand,\n domainsGetCommand,\n domainsAddCommand,\n domainsVerifyCommand,\n domainsHealthCommand,\n domainsUpdateCommand,\n domainsDeleteCommand,\n contentGenerateImageCommand,\n contentGifCommand,\n contentTransformCommand,\n contentHtmlToPngCommand,\n contentAddImageCommand,\n templatesListCommand,\n integrationsListCommand,\n chatsGetCommand,\n healthCommand,\n usageCommand,\n doctorCommand,\n docsCommand,\n docsApiCommand,\n apiCommand,\n]\n","import { Command, CommanderError } from 'commander'\nimport { enforceConfirmation } from './lib/confirm'\nimport { makeContext, makeFallbackContext } from './lib/context'\nimport type { CommandSpec } from './lib/define-command'\nimport { GLOBAL_FLAGS } from './lib/define-command'\nimport {\n CliUsageError,\n EXIT_OK,\n EXIT_USAGE,\n printError,\n toExitCode,\n} from './lib/errors'\nimport { printData } from './lib/output'\nimport type { CliContext, CliIo } from './lib/types'\nimport { ALL_COMMANDS } from './registry'\nimport { CLI_NAME, CLI_VERSION } from './version'\n\nconst GROUP_SUMMARIES: Readonly<Record<string, string>> = {\n analytics: 'Read campaign, automation, send, and event analytics',\n 'api-keys': 'Manage organization API keys',\n audiences: 'Manage audience segments',\n automations: 'Manage automation graphs, triggers, and runs',\n brand: \"Read and update the active brand's design context\",\n brands: 'Organization-level brand lifecycle',\n chats: 'Read Brew chat context for hand-offs',\n config: 'Read and write stored CLI configuration',\n contacts: 'Manage contacts',\n content: 'Credit-metered content generation (images, GIFs, renders)',\n docs: 'Reference material for humans and agents',\n domains: 'Manage sending domains',\n emails: 'Manage email designs and send campaigns',\n fields: 'Manage custom contact fields',\n groups: 'Manage email folders (groups)',\n integrations: 'Read the connected-integration catalog',\n sends: 'Control in-flight or scheduled sends',\n templates: 'Browse the template gallery',\n contract: 'Stored payload contracts (get, put, validate)',\n contracts: 'Payload-contract helpers',\n triggers: 'Manage trigger events',\n runs: 'Automation run history',\n 'trigger-instances': 'Fired trigger instances',\n}\n\nconst AGENT_HELP_FOOTER = `\nEnvironment:\n BREW_API_KEY API key (overrides stored login; flags override both)\n BREW_BRAND_ID Brand id for organization-scoped keys\n BREW_API_URL API base URL (default https://brew.new/api)\n BREW_CLI_CONFIG_DIR Config directory (default ~/.config/brew-cli)\n\nExit codes:\n 0 success · 1 API/runtime error · 2 usage error · 3 auth error\n 4 confirmation required (re-run with --yes)\n\nAgents: run \\`${CLI_NAME} docs --agent\\` for the machine-readable manifest.\n`\n\nexport async function run(\n argv: readonly string[],\n io: CliIo,\n commands: readonly CommandSpec[] = ALL_COMMANDS\n): Promise<number> {\n let activeContext: CliContext | undefined\n let commandExitCode: number | undefined\n // Commander's own stderr (usage errors, error-mode help) is buffered so\n // JSON mode can replace it with a structured envelope instead of mixing\n // free text and JSON on the same stream.\n const commanderStderr: string[] = []\n const program = buildProgram(\n io,\n argv,\n (ctx) => {\n activeContext = ctx\n },\n commands,\n (text) => {\n commanderStderr.push(text)\n },\n (code) => {\n commandExitCode = code\n }\n )\n const flushCommanderStderr = (): void => {\n for (const text of commanderStderr) {\n io.stderr.write(text)\n }\n commanderStderr.length = 0\n }\n try {\n await program.parseAsync([...argv], { from: 'user' })\n flushCommanderStderr()\n return commandExitCode ?? EXIT_OK\n } catch (error) {\n if (error instanceof CommanderError) {\n const ctx = activeContext ?? makeFallbackContext(io, argv)\n return handleCommanderError(error, ctx, flushCommanderStderr)\n }\n flushCommanderStderr()\n const ctx = activeContext ?? makeFallbackContext(io, argv)\n printError(ctx, error)\n return toExitCode(error)\n }\n}\n\nfunction handleCommanderError(\n error: CommanderError,\n ctx: CliContext,\n flush: () => void\n): number {\n const isHelpCode =\n error.code === 'commander.helpDisplayed' || error.code === 'commander.help'\n if (\n error.code === 'commander.version' ||\n (isHelpCode && error.exitCode === 0)\n ) {\n flush()\n return EXIT_OK\n }\n if (isHelpCode) {\n // Error-mode help: a group or bare invocation with no subcommand.\n if (ctx.mode === 'json') {\n printError(\n ctx,\n new CliUsageError('Incomplete command: a subcommand is required.')\n )\n } else {\n flush()\n }\n return EXIT_USAGE\n }\n if (ctx.mode === 'json') {\n printError(ctx, new CliUsageError(error.message.replace(/^error: /, '')))\n } else {\n flush()\n }\n return EXIT_USAGE\n}\n\nexport function buildProgram(\n io: CliIo,\n rawArgv: readonly string[],\n onContext?: (ctx: CliContext) => void,\n commands: readonly CommandSpec[] = ALL_COMMANDS,\n errSink?: (text: string) => void,\n onExitCode?: (code: number) => void\n): Command {\n const writeErr = errSink ?? ((text: string) => io.stderr.write(text))\n const program = new Command(CLI_NAME)\n .description('Agent-first CLI for the Brew public API (brew.new)')\n .version(CLI_VERSION, '--version', 'Print the CLI version')\n .exitOverride()\n .showSuggestionAfterError(false)\n .configureOutput({\n writeOut: (str) => {\n io.stdout.write(str)\n },\n writeErr: (str) => {\n writeErr(str)\n },\n })\n program.addHelpText('after', AGENT_HELP_FOOTER)\n // Global flags register on the root as well as every leaf so agents can\n // place them on either side of the subcommand (`brew-cli --json usage`\n // and `brew-cli usage --json` both work); optsWithGlobals merges them.\n for (const flag of GLOBAL_FLAGS) {\n program.option(flag.flag, flag.summary)\n }\n for (const spec of commands) {\n registerCommand(program, spec, io, rawArgv, onContext, onExitCode)\n }\n return program\n}\n\nfunction registerCommand(\n program: Command,\n spec: CommandSpec,\n io: CliIo,\n rawArgv: readonly string[],\n onContext?: (ctx: CliContext) => void,\n onExitCode?: (code: number) => void\n): void {\n const parent = resolveGroup(program, spec.path.slice(0, -1))\n const leafName = spec.path.at(-1)\n if (leafName === undefined) {\n throw new Error('command spec has an empty path')\n }\n const leaf = parent.command(leafName).description(spec.summary)\n for (const arg of spec.args ?? []) {\n const wrapped = arg.isRequired ? `<${arg.name}>` : `[${arg.name}]`\n leaf.argument(wrapped, arg.summary)\n }\n for (const flag of [...(spec.flags ?? []), ...GLOBAL_FLAGS]) {\n if (flag.defaultValue === undefined) {\n leaf.option(flag.flag, flag.summary)\n } else {\n leaf.option(flag.flag, flag.summary, flag.defaultValue)\n }\n }\n leaf.addHelpText('after', buildCommandHelpFooter(spec))\n leaf.action(async (...actionArgs: unknown[]) => {\n const command = actionArgs.at(-1) as Command\n // optsWithGlobals lets ancestors overwrite the leaf; re-apply the\n // leaf's own parsed values so the flag nearest the subcommand wins.\n const flags: Record<string, unknown> = {\n ...command.optsWithGlobals<Record<string, unknown>>(),\n }\n for (const [key, value] of Object.entries(\n command.opts<Record<string, unknown>>()\n )) {\n if (value !== undefined) {\n flags[key] = value\n }\n }\n const positional = (spec.args ?? []).reduce<Record<string, string>>(\n (acc, arg, index) => {\n const value = actionArgs[index]\n if (typeof value === 'string') {\n // An empty required id would otherwise build a malformed API path\n // (`/v1/x//action`) and surface as a confusing server-side 405.\n if (arg.isRequired && value.trim() === '') {\n throw new CliUsageError(`<${arg.name}> must not be empty.`)\n }\n acc[arg.name] = value\n }\n return acc\n },\n {}\n )\n const ctx = makeContext({ io, flags, rawArgv })\n onContext?.(ctx)\n const invocation = { ctx, args: positional, flags }\n await enforceConfirmation(spec, invocation)\n const outcome = await spec.run(invocation)\n if (outcome !== undefined) {\n printData(ctx, outcome.data, outcome.human)\n if (outcome.exitCode !== undefined && outcome.exitCode !== 0) {\n onExitCode?.(outcome.exitCode)\n }\n }\n })\n}\n\nfunction resolveGroup(program: Command, path: readonly string[]): Command {\n let current = program\n for (const segment of path) {\n const existing = current.commands.find((cmd) => cmd.name() === segment)\n if (existing) {\n current = existing\n continue\n }\n const summary = GROUP_SUMMARIES[segment] ?? ''\n current = current.command(segment).description(summary)\n // Groups accept the global flags too, so `brew-cli contacts --json list`\n // parses instead of failing with a misleading unknown-command error.\n for (const flag of GLOBAL_FLAGS) {\n current.option(flag.flag, flag.summary)\n }\n }\n return current\n}\n\nfunction buildCommandHelpFooter(spec: CommandSpec): string {\n const lines: string[] = ['']\n if (spec.route) {\n lines.push(`API route: ${spec.route.method} ${spec.route.path}`)\n }\n if (spec.commandClass === 'destructive') {\n lines.push('Destructive: requires --yes in non-interactive sessions.')\n }\n if (spec.isCredited === true) {\n lines.push('Credits: this operation consumes Brew credits.')\n }\n lines.push('', 'Examples:')\n for (const example of spec.examples) {\n lines.push(` ${example}`)\n }\n lines.push('')\n return lines.join('\\n')\n}\n","import { createInterface } from 'node:readline/promises'\nimport { run } from './cli'\nimport type { CliIo } from './lib/types'\n\nfunction realIo(): CliIo {\n return {\n stdout: process.stdout,\n stderr: process.stderr,\n isTtyOut: process.stdout.isTTY === true,\n isTtyIn: process.stdin.isTTY === true,\n env: process.env,\n readStdin: async () => {\n process.stdin.setEncoding('utf8')\n let data = ''\n for await (const chunk of process.stdin) {\n data += chunk\n }\n return data\n },\n readLine: async (prompt: string) => {\n const rl = createInterface({\n input: process.stdin,\n output: process.stderr,\n })\n try {\n return await rl.question(prompt)\n } finally {\n rl.close()\n }\n },\n }\n}\n\nprocess.exitCode = await run(process.argv.slice(2), realIo())\n"]}
1
+ {"version":3,"sources":["../src/lib/errors.ts","../src/lib/confirm.ts","../src/version.ts","../src/lib/config-store.ts","../src/lib/client.ts","../src/lib/output.ts","../src/lib/context.ts","../src/lib/define-command.ts","../src/lib/input.ts","../src/lib/paginate.ts","../src/commands/analytics/automations.ts","../src/commands/sends/list.ts","../src/commands/analytics/campaigns.ts","../src/commands/analytics/events.ts","../src/commands/analytics/overview.ts","../src/commands/analytics/sends/get.ts","../src/lib/compat.ts","../src/commands/analytics/sends/list.ts","../src/commands/automations/trigger-instances/list.ts","../src/commands/analytics/trigger-instances/list.ts","../src/lib/raw-request.ts","../src/commands/api.ts","../src/commands/api-keys/create.ts","../src/commands/api-keys/delete.ts","../src/commands/api-keys/list.ts","../src/commands/audiences/create.ts","../src/commands/audiences/delete.ts","../src/commands/audiences/duplicate.ts","../src/commands/audiences/from-events.ts","../src/commands/audiences/get.ts","../src/commands/audiences/list.ts","../src/commands/audiences/update.ts","../src/commands/automations/audience-runs/cancel.ts","../src/commands/automations/audience-runs/control.ts","../src/commands/automations/audience-runs/get.ts","../src/commands/automations/audience-runs/list.ts","../src/commands/automations/audience-runs/pause.ts","../src/commands/automations/audience-runs/resume.ts","../src/commands/automations/create.ts","../src/commands/automations/delete.ts","../src/commands/automations/get.ts","../src/commands/automations/list.ts","../src/commands/automations/publish.ts","../src/commands/automations/run.ts","../src/commands/automations/runs/cancel.ts","../src/commands/automations/runs/get.ts","../src/commands/automations/runs/list.ts","../src/commands/automations/test.ts","../src/commands/automations/trigger-instances/get.ts","../src/commands/automations/triggers/contract.ts","../src/commands/automations/triggers/create.ts","../src/commands/automations/triggers/delete.ts","../src/commands/automations/triggers/fire.ts","../src/commands/automations/triggers/get.ts","../src/commands/automations/triggers/list.ts","../src/commands/automations/triggers/ready.ts","../src/commands/automations/triggers/update.ts","../src/commands/automations/unpublish.ts","../src/commands/automations/update.ts","../src/commands/brand/get.ts","../src/commands/brand/get-images.ts","../src/commands/brand/update.ts","../src/commands/brands/create.ts","../src/commands/brands/get.ts","../src/commands/brands/list.ts","../src/commands/chats/get.ts","../src/commands/config.ts","../src/commands/contacts/count.ts","../src/commands/contacts/delete.ts","../src/commands/contacts/delete-many.ts","../src/commands/contacts/get.ts","../src/commands/contacts/import-csv.ts","../src/commands/contacts/list.ts","../src/commands/contacts/search.ts","../src/commands/contacts/update.ts","../src/commands/contacts/upsert.ts","../src/commands/contacts/upsert-many.ts","../src/commands/contacts/validate.ts","../src/commands/content/add-image.ts","../src/commands/content/generate-image.ts","../src/commands/content/gif.ts","../src/commands/content/html-to-png.ts","../src/commands/content/transform.ts","../src/commands/contracts/infer.ts","../src/commands/data/run.ts","../src/skip-list.ts","../src/lib/manifest.ts","../src/commands/docs.ts","../src/commands/doctor.ts","../src/commands/domains/add.ts","../src/commands/domains/delete.ts","../src/commands/domains/get.ts","../src/commands/domains/health.ts","../src/commands/domains/list.ts","../src/commands/domains/update.ts","../src/commands/domains/verify.ts","../src/commands/emails/audit.ts","../src/commands/emails/clone.ts","../src/commands/emails/create-inbox-placement-test.ts","../src/commands/emails/delete.ts","../src/commands/emails/edit.ts","../src/commands/emails/export.ts","../src/commands/emails/generate.ts","../src/commands/emails/get.ts","../src/commands/emails/get-audit.ts","../src/commands/emails/get-client-preview.ts","../src/commands/emails/get-inbox-placement-results.ts","../src/commands/emails/groups/create.ts","../src/commands/emails/groups/delete.ts","../src/commands/emails/groups/get.ts","../src/commands/emails/groups/list.ts","../src/commands/emails/groups/update.ts","../src/commands/emails/import.ts","../src/commands/emails/import-figma.ts","../src/commands/emails/inbox-placement-tests/get.ts","../src/commands/emails/list.ts","../src/commands/emails/preview-clients.ts","../src/commands/emails/restore.ts","../src/commands/emails/send.ts","../src/commands/fields/create.ts","../src/commands/fields/delete.ts","../src/commands/fields/get.ts","../src/commands/fields/list.ts","../src/commands/flows/get.ts","../src/commands/flows/list.ts","../src/commands/health.ts","../src/commands/integrations/list.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/sends/cancel.ts","../src/commands/sends/get.ts","../src/commands/sends/pause.ts","../src/commands/sends/resume.ts","../src/commands/templates/get.ts","../src/commands/templates/list.ts","../src/commands/types.ts","../src/commands/usage.ts","../src/commands/whoami.ts","../src/registry.ts","../src/cli.ts","../src/bin.ts"],"names":["readFileSync","isRecord","renderContacts","parseBool","BrewApiError","parseInlineInput","asString","writeFileSync","ctx"],"mappings":"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","file":"bin.js","sourcesContent":["import { BrewApiError } from '@brew.new/sdk'\nimport type { CliContext } from './types'\n\nexport const EXIT_OK = 0\nexport const EXIT_RUNTIME = 1\nexport const EXIT_USAGE = 2\nexport const EXIT_AUTH = 3\nexport const EXIT_CONFIRM = 4\n\n/** Bad invocation: malformed input, unusable flag combinations. */\nexport class CliUsageError extends Error {}\n\n/** Missing or unusable credentials, detected before any request is sent. */\nexport class CliAuthError extends Error {\n readonly suggestion: string\n\n constructor(message: string, suggestion: string) {\n super(message)\n this.suggestion = suggestion\n }\n}\n\n/** The user declined an interactive confirmation prompt. */\nexport class CommandAbortedError extends Error {}\n\n/**\n * Error raised by the `api` escape hatch and the raw transport, mirroring\n * the public API error envelope so it renders and exits exactly like a\n * `BrewApiError`.\n */\nexport class CliApiError extends Error {\n readonly status: number\n readonly code: string\n readonly type: string\n readonly param: string | undefined\n readonly suggestion: string | undefined\n readonly docs: string | undefined\n readonly requestId: string | undefined\n /**\n * The envelope's `details` object when the API sent one — for a\n * trigger-fire `payload_mismatch` that is `{ errors[], warnings[],\n * payloadSchema, … }`, naming every field the payload got wrong.\n */\n readonly details: Record<string, unknown> | undefined\n /** The parsed response body exactly as received (`undefined` if not JSON). */\n readonly body: unknown\n\n constructor(input: {\n readonly status: number\n readonly code: string\n readonly type: string\n readonly message: string\n readonly param?: string\n readonly suggestion?: string\n readonly docs?: string\n readonly requestId?: string\n readonly details?: Record<string, unknown>\n readonly body?: unknown\n }) {\n super(input.message)\n this.status = input.status\n this.code = input.code\n this.type = input.type\n this.param = input.param\n this.suggestion = input.suggestion\n this.docs = input.docs\n this.requestId = input.requestId\n this.details = input.details\n this.body = input.body\n }\n}\n\n/**\n * The closest API error `type` for a response that did not carry one — the\n * legacy fire envelope never does, and neither does a non-JSON body. Every\n * 4xx is a client-side problem (an unlisted one, `405` or `415` say, is\n * still `invalid_request`); only a 5xx is an `internal_error`.\n */\nexport function errorTypeForStatus(status: number): string {\n switch (status) {\n case 401:\n return 'authentication_error'\n case 402:\n return 'payment_required'\n case 403:\n return 'authorization_error'\n case 404:\n return 'not_found'\n case 409:\n return 'conflict'\n case 429:\n return 'rate_limit'\n case 501:\n return 'not_implemented'\n case 503:\n return 'service_unavailable'\n default:\n return status >= 400 && status < 500\n ? 'invalid_request'\n : 'internal_error'\n }\n}\n\n/**\n * Retry advice is only honest for the statuses the SDK's retry policy\n * retries — `408`, `429` and 5xx — so a raw call (single-attempt) and a\n * typed call give the same guidance for the same status. Any other 4xx\n * fails the same way on every retry.\n */\nexport function suggestionForStatus(status: number): string {\n if (status === 408 || status === 429 || status >= 500) {\n return 'Retry the request. If it keeps failing, contact support.'\n }\n return 'Fix the request before sending it again — the same request fails the same way. See `details` for the specifics when present.'\n}\n\nexport type ConfirmationEnvelope = {\n readonly confirmationRequired: true\n readonly command: string\n readonly summary: string\n readonly confirmCommand: string\n}\n\n/**\n * A destructive command ran without --yes in a non-interactive session.\n * The envelope is the command's machine-readable response: the caller\n * shows `summary` to a human and re-runs `confirmCommand` to proceed.\n */\nexport class ConfirmationRequiredError extends Error {\n readonly envelope: ConfirmationEnvelope\n\n constructor(envelope: ConfirmationEnvelope) {\n super(envelope.summary)\n this.envelope = envelope\n }\n}\n\nexport function toExitCode(error: unknown): number {\n if (error instanceof ConfirmationRequiredError) {\n return EXIT_CONFIRM\n }\n if (error instanceof CliUsageError) {\n return EXIT_USAGE\n }\n if (error instanceof CliAuthError) {\n return EXIT_AUTH\n }\n const status = apiErrorStatus(error)\n if (status === 401 || status === 403) {\n return EXIT_AUTH\n }\n return EXIT_RUNTIME\n}\n\nexport type CliErrorEnvelope = {\n readonly code: string\n readonly type: string\n readonly message: string\n readonly param?: string\n readonly suggestion?: string\n readonly docs?: string\n readonly requestId?: string\n /** The API's `details` object, verbatim, when the refusal carried one. */\n readonly details?: Record<string, unknown>\n readonly status?: number\n}\n\nexport function toErrorEnvelope(error: unknown): CliErrorEnvelope {\n if (error instanceof BrewApiError || error instanceof CliApiError) {\n const details = readErrorDetails(error)\n return {\n code: error.code,\n type: error.type,\n message: error.message,\n ...(error.param ? { param: error.param } : {}),\n ...(error.suggestion ? { suggestion: error.suggestion } : {}),\n ...(error.docs ? { docs: error.docs } : {}),\n ...(error.requestId ? { requestId: error.requestId } : {}),\n ...(details === undefined ? {} : { details }),\n status: error.status,\n }\n }\n if (error instanceof CliAuthError) {\n return {\n code: 'CLI_AUTH',\n type: 'authentication_error',\n message: error.message,\n suggestion: error.suggestion,\n }\n }\n if (error instanceof CliUsageError) {\n return {\n code: 'CLI_USAGE',\n type: 'invalid_request',\n message: error.message,\n }\n }\n if (isTimeoutError(error)) {\n return {\n code: 'CLI_TIMEOUT',\n type: 'service_unavailable',\n message: 'The request timed out before the API responded.',\n suggestion:\n 'Retry the request. Reuse the same Idempotency-Key for a POST request.',\n }\n }\n if (error instanceof CommandAbortedError) {\n return {\n code: 'CLI_ABORTED',\n type: 'invalid_request',\n message: error.message === '' ? 'Aborted.' : error.message,\n }\n }\n let message = error instanceof Error ? error.message : String(error)\n if (error instanceof Error && error.cause !== undefined) {\n const cause =\n error.cause instanceof Error ? error.cause.message : String(error.cause)\n message = `${message} (${cause})`\n }\n return { code: 'CLI_UNEXPECTED', type: 'internal_error', message }\n}\n\nexport function printError(ctx: CliContext, error: unknown): void {\n if (error instanceof ConfirmationRequiredError) {\n ctx.io.stdout.write(`${JSON.stringify(error.envelope)}\\n`)\n if (ctx.mode === 'human') {\n ctx.io.stderr.write(\n `Confirmation required. Review, then re-run to proceed:\\n ${error.envelope.confirmCommand}\\n`\n )\n }\n return\n }\n const envelope = toErrorEnvelope(error)\n if (ctx.mode === 'json') {\n ctx.io.stderr.write(`${JSON.stringify({ error: envelope })}\\n`)\n return\n }\n const lines = [\n `brew-cli: ${envelope.message}`,\n ...formatDetailLines(envelope.details),\n ]\n if (envelope.suggestion) {\n lines.push(envelope.suggestion)\n }\n if (envelope.docs) {\n lines.push(`Docs: ${envelope.docs}`)\n }\n if (envelope.requestId) {\n lines.push(`Request id: ${envelope.requestId}`)\n }\n ctx.io.stderr.write(`${lines.join('\\n')}\\n`)\n}\n\n/**\n * `details` read structurally off either error class. `BrewApiError`\n * exposes it from `@brew.new/sdk` 9.3 on; older SDKs simply have none, so\n * the typed commands light up on the SDK bump with no CLI change.\n */\nfunction readErrorDetails(error: object): Record<string, unknown> | undefined {\n const details = (error as { details?: unknown }).details\n return isRecord(details) ? details : undefined\n}\n\n/**\n * Human-mode rendering of `details`. A field-error list (the trigger-fire\n * `payload_mismatch` shape, `errors: [{ field, message, expectedType?,\n * actualType? }]`) becomes one line per field; any other shape is one JSON\n * line, so nothing the API said is hidden.\n */\nfunction formatDetailLines(\n details: Record<string, unknown> | undefined\n): string[] {\n if (details === undefined) {\n return []\n }\n const issues = details.errors\n if (Array.isArray(issues) && issues.length > 0 && issues.every(isIssue)) {\n return issues.map((issue) => {\n const types =\n typeof issue.expectedType === 'string'\n ? typeof issue.actualType === 'string'\n ? ` (expected ${issue.expectedType}, got ${issue.actualType})`\n : ` (expected ${issue.expectedType})`\n : ''\n return ` - ${issue.field}: ${issue.message}${types}`\n })\n }\n return [`Details: ${JSON.stringify(details)}`]\n}\n\nfunction isIssue(\n value: unknown\n): value is Record<string, unknown> & { field: string; message: string } {\n return (\n isRecord(value) &&\n typeof value.field === 'string' &&\n typeof value.message === 'string'\n )\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction apiErrorStatus(error: unknown): number | undefined {\n if (error instanceof BrewApiError || error instanceof CliApiError) {\n return error.status\n }\n}\n\nfunction isTimeoutError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'name' in error &&\n error.name === 'TimeoutError'\n )\n}\n","import type { CommandInvocation, CommandSpec } from './define-command'\nimport { CommandAbortedError, ConfirmationRequiredError } from './errors'\n\n/**\n * The confirmation protocol for destructive commands:\n * - `--yes` proceeds unconditionally.\n * - An interactive human session gets a y/N prompt.\n * - Everything else (agents, pipes, CI) receives exit code 4 and a JSON\n * envelope on stdout whose `confirmCommand` re-runs the call with --yes.\n */\nexport async function enforceConfirmation(\n spec: CommandSpec,\n invocation: CommandInvocation\n): Promise<void> {\n if (!spec.confirmSummary) {\n return\n }\n const summary = spec.confirmSummary({\n args: invocation.args,\n flags: invocation.flags,\n })\n if (summary === undefined) {\n return\n }\n const { ctx } = invocation\n if (ctx.globals.yes) {\n return\n }\n if (ctx.mode === 'human' && ctx.io.isTtyIn) {\n const answer = await ctx.io.readLine(`${summary}\\nProceed? [y/N] `)\n const normalized = answer.trim().toLowerCase()\n if (normalized === 'y' || normalized === 'yes') {\n return\n }\n throw new CommandAbortedError('Aborted.')\n }\n throw new ConfirmationRequiredError({\n confirmationRequired: true,\n command: ['brew-cli', ...spec.path].join(' '),\n summary,\n confirmCommand: buildConfirmCommand(ctx.rawArgv),\n })\n}\n\nexport function buildConfirmCommand(rawArgv: readonly string[]): string {\n // The envelope goes to stdout and into agent transcripts — never echo a\n // raw credential back. The re-run resolves the key from env/config.\n const tokens: string[] = []\n for (let index = 0; index < rawArgv.length; index += 1) {\n const token = rawArgv[index]\n if (token === undefined) {\n continue\n }\n if (token === '--api-key') {\n index += 1\n continue\n }\n if (token.startsWith('--api-key=')) {\n continue\n }\n tokens.push(shellQuote(token))\n }\n return ['brew-cli', ...tokens, '--yes'].join(' ')\n}\n\nfunction shellQuote(token: string): string {\n if (/^[A-Za-z0-9@%+=:,./_-]+$/.test(token)) {\n return token\n }\n return `'${token.replaceAll(\"'\", String.raw`'\\''`)}'`\n}\n","declare const __CLI_VERSION__: string | undefined\n\nexport const CLI_NAME = 'brew-cli'\n\nexport const CLI_VERSION =\n typeof __CLI_VERSION__ === 'string' ? __CLI_VERSION__ : '0.0.0-dev'\n","import { chmodSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { homedir } from 'node:os'\nimport { join } from 'node:path'\n\nexport type StoredConfig = {\n readonly apiKey?: string\n readonly brandId?: string\n readonly apiUrl?: string\n}\n\nconst CONFIG_KEYS = ['apiKey', 'brandId', 'apiUrl'] as const\n\nexport type ConfigKey = (typeof CONFIG_KEYS)[number]\n\nexport function isConfigKey(value: string): value is ConfigKey {\n return (CONFIG_KEYS as readonly string[]).includes(value)\n}\n\nexport function configDir(\n env: Readonly<Record<string, string | undefined>>\n): string {\n const override = env.BREW_CLI_CONFIG_DIR\n if (override !== undefined && override !== '') {\n return override\n }\n const xdg = env.XDG_CONFIG_HOME\n const base =\n xdg !== undefined && xdg !== '' ? xdg : join(homedir(), '.config')\n return join(base, 'brew-cli')\n}\n\nexport function configPath(\n env: Readonly<Record<string, string | undefined>>\n): string {\n return join(configDir(env), 'config.json')\n}\n\nexport function readConfig(\n env: Readonly<Record<string, string | undefined>>\n): StoredConfig {\n try {\n const raw = readFileSync(configPath(env), 'utf8')\n const parsed: unknown = JSON.parse(raw)\n if (parsed === null || typeof parsed !== 'object') {\n return {}\n }\n const record = parsed as Record<string, unknown>\n const config: Record<string, string> = {}\n for (const key of CONFIG_KEYS) {\n const value = record[key]\n if (typeof value === 'string' && value !== '') {\n config[key] = value\n }\n }\n return config\n } catch {\n return {}\n }\n}\n\n/** Writes the config file with owner-only permissions (0600 / dir 0700). */\nexport function writeConfig(\n env: Readonly<Record<string, string | undefined>>,\n config: StoredConfig\n): string {\n const dir = configDir(env)\n mkdirSync(dir, { recursive: true, mode: 0o700 })\n const path = configPath(env)\n const compact: Record<string, string> = {}\n for (const key of CONFIG_KEYS) {\n const value = config[key]\n if (value !== undefined && value !== '') {\n compact[key] = value\n }\n }\n writeFileSync(path, `${JSON.stringify(compact, null, 2)}\\n`, { mode: 0o600 })\n chmodSync(path, 0o600)\n return path\n}\n\nexport function updateConfig(\n env: Readonly<Record<string, string | undefined>>,\n patch: Readonly<Partial<Record<ConfigKey, string | undefined>>>\n): string {\n const current: Record<string, string | undefined> = { ...readConfig(env) }\n for (const key of CONFIG_KEYS) {\n if (key in patch) {\n current[key] = patch[key]\n }\n }\n return writeConfig(env, current)\n}\n","import { createBrewClient } from '@brew.new/sdk'\nimport { CLI_NAME, CLI_VERSION } from '../version'\nimport { readConfig } from './config-store'\nimport { CliAuthError } from './errors'\nimport type { GlobalFlags } from './types'\n\nexport type BrewClient = ReturnType<typeof createBrewClient>\n\nexport const DEFAULT_API_URL = 'https://brew.new/api'\n\nexport const LOGIN_KEYS_URL = 'https://brew.new/settings/api'\n\n/**\n * Placeholder key for the unauthenticated endpoints (health, help,\n * llms.txt). The SDK requires a non-empty key; the server ignores it.\n */\nexport const ANONYMOUS_API_KEY = 'brew_anonymous'\n\n/**\n * Organization-level route prefixes. These ride the org transport and must\n * never receive an X-Brand-Id header (the server ignores it there, but the\n * SDK's own withBrand keeps the same discipline).\n */\nconst ORG_LEVEL_PATH_PREFIXES = [\n '/v1/brands',\n '/v1/usage',\n '/v1/templates',\n '/v1/flows',\n '/v1/health',\n '/v1/help',\n '/v1/llms.txt',\n '/v1/api-keys',\n] as const\n\nexport type AuthSource = 'anonymous' | 'config' | 'env' | 'flag'\n\nexport type ResolvedAuth = {\n readonly apiKey: string\n readonly apiKeySource: AuthSource\n readonly brandId: string | undefined\n readonly apiUrl: string\n}\n\nexport function resolveAuth(input: {\n readonly globals: GlobalFlags\n readonly env: Readonly<Record<string, string | undefined>>\n readonly allowAnonymous?: boolean\n}): ResolvedAuth {\n const { globals, env } = input\n const stored = readConfig(env)\n const keyFromFlag = globals.apiKey\n const keyFromEnv = readEnvValue(env.BREW_API_KEY)\n const keyFromConfig = stored.apiKey\n const apiKey = keyFromFlag ?? keyFromEnv ?? keyFromConfig\n const apiUrl =\n globals.apiUrl ??\n readEnvValue(env.BREW_API_URL) ??\n stored.apiUrl ??\n DEFAULT_API_URL\n const brandId =\n globals.brand ?? readEnvValue(env.BREW_BRAND_ID) ?? stored.brandId\n if (!apiKey) {\n if (input.allowAnonymous === true) {\n return {\n apiKey: ANONYMOUS_API_KEY,\n apiKeySource: 'anonymous',\n brandId,\n apiUrl,\n }\n }\n throw new CliAuthError(\n 'No API key found.',\n `Run \\`brew-cli login\\`, set BREW_API_KEY, or pass --api-key. Create keys at ${LOGIN_KEYS_URL}`\n )\n }\n const apiKeySource: AuthSource = keyFromFlag\n ? 'flag'\n : keyFromEnv\n ? 'env'\n : 'config'\n return { apiKey, apiKeySource, brandId, apiUrl }\n}\n\nexport function buildSdkClient(auth: ResolvedAuth): BrewClient {\n return createBrewClient({\n apiKey: auth.apiKey,\n baseUrl: auth.apiUrl,\n userAgent: `${CLI_NAME}/${CLI_VERSION}`,\n ...(auth.brandId === undefined ? {} : { brandId: auth.brandId }),\n })\n}\n\nexport function isOrgLevelPath(url: string): boolean {\n let pathname: string\n try {\n pathname = new URL(url).pathname\n } catch {\n pathname = url.split('?')[0] ?? url\n }\n const versionIndex = pathname.indexOf('/v1/')\n if (versionIndex === -1) {\n return false\n }\n const apiPath = pathname.slice(versionIndex)\n return ORG_LEVEL_PATH_PREFIXES.some(\n (prefix) => apiPath === prefix || apiPath.startsWith(`${prefix}/`)\n )\n}\n\nexport function maskApiKey(apiKey: string): string {\n if (apiKey.length <= 12) {\n return `${apiKey.slice(0, 3)}…`\n }\n return `${apiKey.slice(0, 8)}…${apiKey.slice(-3)}`\n}\n\nfunction readEnvValue(value: string | undefined): string | undefined {\n return value !== undefined && value !== '' ? value : undefined\n}\n","import type { CliContext, OutputMode } from './types'\n\nexport function resolveOutputMode(input: {\n readonly isJsonFlag: boolean\n readonly isTtyOut: boolean\n}): OutputMode {\n if (input.isJsonFlag) {\n return 'json'\n }\n return input.isTtyOut ? 'human' : 'json'\n}\n\n/**\n * Command data goes to stdout and nowhere else. JSON mode prints the API\n * payload verbatim (compact, one line) so pipes and agents get the exact\n * SDK envelope; human mode prefers the command's rendering when provided.\n */\nexport function printData(\n ctx: CliContext,\n data: unknown,\n human?: string\n): void {\n if (ctx.mode === 'json') {\n ctx.io.stdout.write(`${JSON.stringify(data)}\\n`)\n return\n }\n const text = human ?? JSON.stringify(data, null, 2)\n ctx.io.stdout.write(`${text}\\n`)\n}\n\n/** Progress and status lines go to stderr and honor --quiet. */\nexport function progress(ctx: CliContext, message: string): void {\n if (ctx.globals.quiet) {\n return\n }\n ctx.io.stderr.write(`${message}\\n`)\n}\n\nexport function renderTable(\n rows: ReadonlyArray<Record<string, unknown>>,\n columns: ReadonlyArray<{ readonly key: string; readonly header: string }>\n): string {\n const widths = columns.map((column) =>\n Math.max(\n column.header.length,\n ...rows.map((row) => formatCell(row[column.key]).length)\n )\n )\n const line = (cells: readonly string[]) =>\n cells\n .map((cell, index) => cell.padEnd(widths[index] ?? 0))\n .join(' ')\n .trimEnd()\n const header = line(columns.map((column) => column.header))\n const body = rows.map((row) =>\n line(columns.map((column) => formatCell(row[column.key])))\n )\n return [header, ...body].join('\\n')\n}\n\nfunction formatCell(value: unknown): string {\n if (value === null || value === undefined) {\n return ''\n }\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return String(value)\n}\n","import type { BrewClient } from './client'\nimport { buildSdkClient, resolveAuth } from './client'\nimport { resolveOutputMode } from './output'\nimport type { CliContext, ClientOptions, CliIo, GlobalFlags } from './types'\n\nexport function makeContext(input: {\n readonly io: CliIo\n readonly flags: Readonly<Record<string, unknown>>\n readonly rawArgv: readonly string[]\n}): CliContext {\n const globals = readGlobalFlags(input.flags)\n const mode = resolveOutputMode({\n isJsonFlag: globals.json,\n isTtyOut: input.io.isTtyOut,\n })\n const cache = new Map<string, BrewClient>()\n return {\n io: input.io,\n mode,\n globals,\n rawArgv: input.rawArgv,\n client: (options?: ClientOptions) => {\n const key = options?.allowAnonymous === true ? 'anonymous' : 'authed'\n const existing = cache.get(key)\n if (existing) {\n return existing\n }\n const auth = resolveAuth({\n globals,\n env: input.io.env,\n allowAnonymous: options?.allowAnonymous === true,\n })\n const client = buildSdkClient(auth)\n cache.set(key, client)\n return client\n },\n }\n}\n\n/**\n * Fallback context for failures that happen before a command action runs\n * (usage errors, help). Only argv can tell us whether --json was intended.\n */\nexport function makeFallbackContext(\n io: CliIo,\n rawArgv: readonly string[]\n): CliContext {\n const flags: Record<string, unknown> = {\n json: rawArgv.includes('--json'),\n quiet: rawArgv.includes('--quiet'),\n }\n return makeContext({ io, flags, rawArgv })\n}\n\nfunction readGlobalFlags(\n flags: Readonly<Record<string, unknown>>\n): GlobalFlags {\n return {\n json: flags.json === true,\n quiet: flags.quiet === true,\n yes: flags.yes === true,\n apiKey: readStringFlag(flags.apiKey),\n brand: readStringFlag(flags.brand),\n apiUrl: readStringFlag(flags.apiUrl),\n }\n}\n\nfunction readStringFlag(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n","import type { CliContext } from './types'\n\nexport type HttpMethod = 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT'\n\n/**\n * read — no writes; always safe.\n * write — mutates state but is safe to retry / reversible in-app.\n * destructive — irreversible or outward-facing (sends, deletes); runs the\n * confirmation protocol and must declare `confirmSummary`.\n */\nexport type CommandClass = 'destructive' | 'read' | 'write'\n\nexport type ArgSpec = {\n /** camelCase name, also the key in `invocation.args`. */\n readonly name: string\n readonly summary: string\n readonly isRequired: boolean\n}\n\nexport type FlagSpec = {\n /** commander syntax, e.g. `--limit <n>` or `--test`. */\n readonly flag: string\n readonly summary: string\n readonly defaultValue?: string | boolean\n}\n\nexport type CommandInvocation = {\n readonly ctx: CliContext\n readonly args: Readonly<Record<string, string>>\n readonly flags: Readonly<Record<string, unknown>>\n}\n\nexport type CommandOutcome = {\n /** The payload printed to stdout (verbatim in JSON mode). */\n readonly data: unknown\n /** Optional human rendering (tables, summaries) for TTY output. */\n readonly human?: string\n /**\n * Optional non-zero exit code for commands whose payload IS the result\n * of a check (e.g. doctor): the report prints normally, then the\n * process exits with this code so agents can gate on it.\n */\n readonly exitCode?: number\n}\n\nexport type CommandSpec = {\n /** Command path, e.g. ['automations', 'triggers', 'fire']. */\n readonly path: readonly string[]\n readonly summary: string\n /**\n * Dotted path of the SDK method this command binds (`contacts.upsert`),\n * or null for CLI-native commands. Derived sugar commands set null here\n * and name their backing method in `derivedFrom` — or, for a verb-flag\n * dispatcher that fans out to several methods (`audience-runs control\n * --action`), every method it can call. A single backing method implies\n * the command declares that method's `route`; a fan-out spans several and\n * declares none.\n */\n readonly sdkMethod: string | null\n readonly derivedFrom?: string | readonly string[]\n /** The public API operation behind this command — the spec join key. */\n readonly route?: {\n readonly method: HttpMethod\n readonly path: string\n }\n readonly commandClass: CommandClass\n /** True when the operation consumes Brew credits. */\n readonly isCredited?: boolean\n /**\n * True when the command calls the API through the raw transport because\n * the published SDK does not expose the operation yet. Swap to the SDK\n * method (and drop this marker) when the SDK ships it.\n */\n readonly isRawTransport?: boolean\n readonly args?: readonly ArgSpec[]\n readonly flags?: readonly FlagSpec[]\n /** At least one realistic invocation; shown in help and the manifest. */\n readonly examples: readonly string[]\n /**\n * Destructive commands describe what is about to happen. Returning\n * undefined skips the gate for the given invocation (e.g. a dry run).\n */\n readonly confirmSummary?: (\n invocation: Omit<CommandInvocation, 'ctx'>\n ) => string | undefined\n readonly run: (\n invocation: CommandInvocation\n ) => Promise<CommandOutcome | undefined>\n}\n\n/** Identity helper that pins the spec type at the definition site. */\nexport function defineCommand(spec: CommandSpec): CommandSpec {\n return spec\n}\n\nexport const GLOBAL_FLAGS: readonly FlagSpec[] = [\n {\n flag: '--json',\n summary: 'JSON output (automatic when stdout is not a TTY)',\n },\n { flag: '--quiet', summary: 'Suppress progress messages on stderr' },\n {\n flag: '--yes',\n summary: 'Skip the confirmation gate on destructive commands',\n },\n {\n flag: '--api-key <key>',\n summary: 'Brew API key (else BREW_API_KEY, else stored login)',\n },\n {\n flag: '--brand <brandId>',\n summary: 'Brand id for organization-scoped keys (else BREW_BRAND_ID)',\n },\n {\n flag: '--api-url <url>',\n summary: 'API base URL (else BREW_API_URL, else https://brew.new/api)',\n },\n]\n","import { readFileSync } from 'node:fs'\nimport { CliUsageError } from './errors'\nimport type { CliContext } from './types'\n\n/**\n * The single deliberate boundary cast from user-supplied JSON to an SDK\n * input type. The public API strictly validates every request server-side\n * (the Zod contracts upstream of the OpenAPI spec); the CLI does not\n * duplicate those schemas.\n */\nexport function asSdkInput<T>(value: unknown): T {\n return value as T\n}\n\n/** Reads `--input <json|->`; `-` consumes stdin. */\nexport async function readJsonFlag(\n ctx: CliContext,\n value: unknown,\n flagName: string\n): Promise<unknown> {\n if (typeof value !== 'string') {\n return\n }\n const raw = value === '-' ? await ctx.io.readStdin() : value\n try {\n return JSON.parse(raw) as unknown\n } catch {\n throw new CliUsageError(\n `${flagName} must be valid JSON (or - to read stdin)`\n )\n }\n}\n\n/** Reads `--file <path|->`; `-` consumes stdin. */\nexport async function readTextFlag(\n ctx: CliContext,\n value: unknown,\n flagName: string\n): Promise<string | undefined> {\n if (typeof value !== 'string') {\n return\n }\n if (value === '-') {\n return await ctx.io.readStdin()\n }\n try {\n return readFileSync(value, 'utf8')\n } catch {\n throw new CliUsageError(`${flagName}: cannot read file \"${value}\"`)\n }\n}\n\n/** Parses repeatable `key=value` flag values into a record. */\nexport function parseKeyValues(\n value: unknown,\n flagName: string\n): Record<string, string> | undefined {\n const items = toStringArray(value)\n if (items === undefined) {\n return\n }\n const record: Record<string, string> = {}\n for (const item of items) {\n const separator = item.indexOf('=')\n if (separator <= 0) {\n throw new CliUsageError(\n `${flagName}: expected key=value, received \"${item}\"`\n )\n }\n record[item.slice(0, separator)] = item.slice(separator + 1)\n }\n return record\n}\n\n/**\n * Parses repeatable `--filter field:operator[:value]` values into the\n * API's structured contact filter shape.\n */\nexport function parseFilterFlags(\n value: unknown\n): ReadonlyArray<Record<string, string>> | undefined {\n const items = toStringArray(value)\n if (items === undefined) {\n return\n }\n return items.map((item) => {\n const [field, operator, ...rest] = item.split(':')\n if (!field || !operator) {\n throw new CliUsageError(\n `--filter: expected field:operator[:value], received \"${item}\"`\n )\n }\n return {\n field,\n operator,\n ...(rest.length === 0 ? {} : { value: rest.join(':') }),\n }\n })\n}\n\n/** Merges ergonomic flag overrides over a `--input` JSON body. */\nexport function mergeInput(\n base: unknown,\n overrides: Readonly<Record<string, unknown>>\n): Record<string, unknown> {\n if (base !== undefined && (base === null || typeof base !== 'object')) {\n throw new CliUsageError('--input must be a JSON object')\n }\n const merged: Record<string, unknown> = {\n ...((base as Record<string, unknown> | undefined) ?? {}),\n }\n for (const [key, value] of Object.entries(overrides)) {\n if (value !== undefined) {\n merged[key] = value\n }\n }\n return merged\n}\n\nexport function flagString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n\nexport function flagInt(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return\n }\n const parsed = Number(value)\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new CliUsageError(`${flagName} must be a positive integer`)\n }\n return parsed\n}\n\nexport function toStringArray(value: unknown): readonly string[] | undefined {\n if (Array.isArray(value)) {\n const items = value.filter(\n (item): item is string => typeof item === 'string'\n )\n return items.length > 0 ? items : undefined\n }\n return typeof value === 'string' ? [value] : undefined\n}\n\n/** Per-request SDK options derived from shared mutation flags. */\nexport function requestOptions(\n flags: Readonly<Record<string, unknown>>\n): { idempotencyKey: string } | undefined {\n const key = flagString(flags.idempotencyKey)\n return key === undefined ? undefined : { idempotencyKey: key }\n}\n\nexport const IDEMPOTENCY_FLAG = {\n flag: '--idempotency-key <key>',\n summary: 'Idempotency-Key for safe retries (auto-generated otherwise)',\n} as const\n\nexport const INPUT_FLAG = {\n flag: '--input <json>',\n summary: 'Full JSON request body, or - to read stdin (flags override it)',\n} as const\n","import { progress } from './output'\nimport type { CliContext } from './types'\n\nexport type Page<T> = {\n readonly data: ReadonlyArray<T>\n readonly pagination?: {\n readonly cursor: string | null\n }\n}\n\n/**\n * Drains a cursor-paginated list for `--all`. The API contract keeps\n * `pagination.cursor` string-or-null (never omitted); a repeated cursor\n * aborts the loop as a defense against a server-side pagination bug.\n */\nexport async function collectAll<T>(\n ctx: CliContext,\n fetchPage: (cursor: string | undefined) => Promise<Page<T>>\n): Promise<ReadonlyArray<T>> {\n const rows: T[] = []\n let cursor: string | undefined\n let pageCount = 0\n for (;;) {\n const page = await fetchPage(cursor)\n rows.push(...page.data)\n pageCount += 1\n const next = page.pagination?.cursor ?? null\n if (next === null || next === cursor) {\n return rows\n }\n cursor = next\n progress(ctx, `Fetched ${rows.length} rows (page ${pageCount})…`)\n }\n}\n\n/** The `--all` flag shared by paginated list commands. */\nexport const ALL_FLAG = {\n flag: '--all',\n summary: 'Follow the cursor and return every page as one result',\n} as const\n\nexport const LIMIT_FLAG = {\n flag: '--limit <n>',\n summary: 'Page size, 1-100 (default 100)',\n} as const\n\nexport const CURSOR_FLAG = {\n flag: '--cursor <cursor>',\n summary: 'Opaque pagination cursor from a previous page',\n} as const\n","import type { AutomationAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport { LIMIT_FLAG } from '../../lib/paginate'\n\nexport const analyticsAutomationsCommand = defineCommand({\n path: ['analytics', 'automations'],\n summary: 'Windowed per-automation performance + totals',\n sdkMethod: 'analytics.automations',\n route: { method: 'GET', path: '/v1/analytics/automations' },\n commandClass: 'read',\n flags: [\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n {\n flag: '--automation <automationId>',\n summary: 'Narrow to one automation',\n },\n LIMIT_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics automations',\n 'brew-cli analytics automations --since 2026-07-01 --until 2026-08-01',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.since),\n to: flagString(flags.until),\n automationId: flagString(flags.automation),\n limit: flagInt(flags.limit, '--limit'),\n })\n const result = await ctx\n .client()\n .analytics.automations(asSdkInput<AutomationAnalyticsInput>(input))\n return { data: result, human: renderAutomationRows(result.data) }\n },\n})\n\nfunction renderAutomationRows(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automation analytics rows.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'name', header: 'NAME' },\n { key: 'runs', header: 'RUNS' },\n { key: 'completed', header: 'COMPLETED' },\n { key: 'failed', header: 'FAILED' },\n { key: 'openRate', header: 'OPEN RATE' },\n ])\n}\n","import type { ListSendsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\nimport type { CliContext } from '../../lib/types'\n\n/** The one status vocabulary every send, run and build reports. */\nexport const SEND_STATUS_SUMMARY =\n 'scheduled | queued | running | paused | completed | partially_completed | failed | canceled'\n\nexport const sendsListCommand = defineCommand({\n path: ['sends', 'list'],\n summary:\n 'List sends (the unit of delivery and analytics) with lifetime stats',\n sdkMethod: 'sends.list',\n route: { method: 'GET', path: '/v1/sends' },\n commandClass: 'read',\n flags: [\n { flag: '--email <emailId>', summary: 'Only sends of this design' },\n { flag: '--kind <kind>', summary: 'campaign | automation' },\n { flag: '--automation <automationId>', summary: 'Filter by automation' },\n {\n flag: '--automation-run <automationRunId>',\n summary: 'Deliveries of one automation run',\n },\n {\n flag: '--audience-run <audienceRunId>',\n summary: 'Deliveries of one manual-audience run',\n },\n {\n flag: '--trigger-instance <triggerInstanceId>',\n summary: 'Deliveries started by one fired trigger instance',\n },\n { flag: '--status <status>', summary: SEND_STATUS_SUMMARY },\n {\n flag: '--message-class <class>',\n summary: 'marketing | transactional',\n },\n {\n flag: '--since <datetime>',\n summary: 'Inclusive lower bound on updatedAt (ISO-8601)',\n },\n {\n flag: '--until <datetime>',\n summary: 'Inclusive upper bound on updatedAt (ISO-8601)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli sends list --status completed',\n 'brew-cli sends list --email eml_1 --all --json',\n 'brew-cli sends list --automation-run arun_9f2kX',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n emailId: flagString(flags.email),\n kind: flagString(flags.kind),\n automationId: flagString(flags.automation),\n automationRunId: flagString(flags.automationRun),\n audienceRunId: flagString(flags.audienceRun),\n triggerInstanceId: flagString(flags.triggerInstance),\n status: flagString(flags.status),\n messageClass: flagString(flags.messageClass),\n from: flagString(flags.since),\n to: flagString(flags.until),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n return await listSends(ctx, input, flags.all === true)\n },\n})\n\n/**\n * The shared read behind `sends list` and the `analytics sends list` /\n * `analytics campaigns` aliases, so every name renders the same rows.\n */\nexport async function listSends(\n ctx: CliContext,\n input: Record<string, unknown>,\n followCursor: boolean\n): Promise<{ data: unknown; human: string }> {\n const sends = ctx.client().sends\n if (followCursor) {\n const rows = await collectAll(ctx, (cursor) =>\n sends.list(\n asSdkInput<ListSendsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderSends(rows),\n }\n }\n const result = await sends.list(asSdkInput<ListSendsInput>(input))\n return { data: result, human: renderSends(result.data) }\n}\n\nexport function renderSends(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No sends found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'sendId', header: 'SEND' },\n { key: 'kind', header: 'KIND' },\n { key: 'status', header: 'STATUS' },\n { key: 'subject', header: 'SUBJECT' },\n ])\n}\n","import { defineCommand } from '../../lib/define-command'\nimport {\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { ALL_FLAG, CURSOR_FLAG, LIMIT_FLAG } from '../../lib/paginate'\nimport { listSends } from '../sends/list'\n\n/**\n * The name agents already know. There is no campaign analytics report any\n * more: a campaign IS a send of `kind: \"campaign\"`, and each row carries\n * its own lifetime `stats`.\n */\nexport const analyticsCampaignsCommand = defineCommand({\n path: ['analytics', 'campaigns'],\n summary:\n 'Lifetime per-campaign KPIs (`sends list --kind campaign`; stats ride each row)',\n sdkMethod: null,\n derivedFrom: 'sends.list',\n route: { method: 'GET', path: '/v1/sends' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli analytics campaigns',\n 'brew-cli analytics campaigns --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n kind: 'campaign',\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n return await listSends(ctx, input, flags.all === true)\n },\n})\n","import type { EventsAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const analyticsEventsCommand = defineCommand({\n path: ['analytics', 'events'],\n summary: 'Unified event explorer (email, automation, trigger, inbound)',\n sdkMethod: 'analytics.events',\n route: { method: 'GET', path: '/v1/analytics/events' },\n commandClass: 'read',\n flags: [\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n {\n flag: '--recipient <rules>',\n summary:\n 'CSV of recipient rules (max 10): an address, @domain, or substring; prefix ! to exclude',\n },\n {\n flag: '--event-type <type>',\n summary: 'Filter by event type (e.g. opened, clicked)',\n },\n { flag: '--automation <automationId>', summary: 'Filter by automation' },\n { flag: '--send <sendId>', summary: 'Filter by campaign send' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics events --since 2026-08-01 --event-type clicked',\n 'brew-cli analytics events --recipient jane@example.com --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.since),\n to: flagString(flags.until),\n recipient: flagString(flags.recipient),\n eventType: flagString(flags.eventType),\n automationId: flagString(flags.automation),\n sendId: flagString(flags.send),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const analytics = ctx.client().analytics\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n analytics.events(\n asSdkInput<EventsAnalyticsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEvents(rows),\n }\n }\n const result = await analytics.events(\n asSdkInput<EventsAnalyticsInput>(input)\n )\n return { data: result, human: renderEvents(result.data) }\n },\n})\n\nfunction renderEvents(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No events matched.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'occurredAt', header: 'OCCURRED' },\n { key: 'domain', header: 'DOMAIN' },\n { key: 'eventType', header: 'EVENT' },\n { key: 'recipientEmail', header: 'RECIPIENT' },\n ])\n}\n","import type { AnalyticsOverviewInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagString } from '../../lib/input'\n\nexport const analyticsOverviewCommand = defineCommand({\n path: ['analytics', 'overview'],\n summary: 'Brand overview: totals, rates, timeseries (default last 7 days)',\n sdkMethod: 'analytics.overview',\n route: { method: 'GET', path: '/v1/analytics/overview' },\n commandClass: 'read',\n flags: [\n {\n flag: '--since <datetime>',\n summary: 'Window start (ISO-8601, default 7 days ago)',\n },\n {\n flag: '--until <datetime>',\n summary: 'Window end (ISO-8601, default now)',\n },\n {\n flag: '--source <sources>',\n summary:\n 'CSV of send sources: audience, api, automation_manual, automation_integration, automation_custom',\n },\n {\n flag: '--automation-id <ids>',\n summary: 'CSV of automation ids (max 20)',\n },\n { flag: '--email-id <emailId>', summary: 'Scope to one email design' },\n { flag: '--audience-id <ids>', summary: 'CSV of audience ids (max 20)' },\n {\n flag: '--trigger-event-id <ids>',\n summary: 'CSV of integration trigger-event ids (max 10)',\n },\n { flag: '--domain <domain>', summary: 'Sending domain (fromEmail match)' },\n {\n flag: '--recipient <rules>',\n summary:\n 'CSV of recipient rules: full address, @domain, substring; prefix ! to exclude',\n },\n ],\n examples: [\n 'brew-cli analytics overview',\n 'brew-cli analytics overview --since 2026-08-01T00:00:00Z --source audience --json',\n ],\n run: async ({ ctx, flags }) => ({\n data: await ctx.client().analytics.overview(\n asSdkInput<AnalyticsOverviewInput>({\n from: flagString(flags.since),\n to: flagString(flags.until),\n source: flagString(flags.source),\n automationId: flagString(flags.automationId),\n emailId: flagString(flags.emailId),\n audienceId: flagString(flags.audienceId),\n triggerEventId: flagString(flags.triggerEventId),\n domain: flagString(flags.domain),\n recipient: flagString(flags.recipient),\n })\n ),\n }),\n})\n","import { defineCommand } from '../../../lib/define-command'\nimport { flagString } from '../../../lib/input'\n\n/** The name agents already know, now reading the real send detail row. */\nexport const analyticsSendsGetCommand = defineCommand({\n path: ['analytics', 'sends', 'get'],\n summary: 'Fetch one send by id — the bare row (`sends get`)',\n sdkMethod: null,\n derivedFrom: 'sends.get',\n route: { method: 'GET', path: '/v1/sends/{sendId}' },\n commandClass: 'read',\n args: [\n {\n name: 'sendId',\n summary: 'Id of the send',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: events',\n },\n ],\n examples: [\n 'brew-cli analytics sends get snd_123',\n 'brew-cli analytics sends get snd_123 --include events',\n ],\n run: async ({ ctx, args, flags }) => {\n const include = flagString(flags.include)\n return {\n data: await ctx\n .client()\n .sends.get(\n args.sendId ?? '',\n include === undefined ? undefined : { include }\n ),\n }\n },\n})\n","import { CliUsageError } from './errors'\n\n/**\n * 0.6 shims. Flags and command names are additive-only after release\n * (AGENTS.md), so a released flag keeps working where the API moved: an id\n * flag on a list (`runs list --run <id>`) performs the detail read and\n * answers the way 0.6 did, that one row as a single-row page, and\n * `--include`, which rides detail reads only today, is refused with the\n * command that takes it instead of being forwarded to a `400`.\n */\n\n/** The 0.6 shape of a list narrowed to one id: that row, page complete. */\nexport function singleRowPage<T>(row: T): {\n readonly data: readonly [T]\n readonly pagination: { readonly cursor: null; readonly hasMore: false }\n} {\n return { data: [row], pagination: { cursor: null, hasMore: false } }\n}\n\n/**\n * The 0.6 id and `include` keys could also ride the `--input` body\n * (`--input '{\"automationRunId\":\"run_1\",\"include\":\"logs\"}'`); an explicit\n * flag still wins over the body, as everywhere else.\n */\nexport function inputField(base: unknown, key: string): string | undefined {\n if (base === null || typeof base !== 'object') {\n return undefined\n }\n const value = (base as Record<string, unknown>)[key]\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n\n/** `--include` used to ride list reads; detail reads carry it now. */\nexport function includeRidesDetailRead(\n getCommand: string,\n idFlag?: string\n): CliUsageError {\n const pairing = idFlag === undefined ? '' : `, or pair it with ${idFlag}`\n return new CliUsageError(\n `--include rides the detail read: use \\`brew-cli ${getCommand} <id> --include …\\`${pairing}.`\n )\n}\n","import {\n includeRidesDetailRead,\n inputField,\n singleRowPage,\n} from '../../../lib/compat'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { ALL_FLAG, CURSOR_FLAG, LIMIT_FLAG } from '../../../lib/paginate'\nimport { listSends, renderSends, SEND_STATUS_SUMMARY } from '../../sends/list'\n\n/**\n * The name agents already know, now reading the sends root. Analytics keeps\n * only reports (`overview`, `events`, `automations`); a send and its\n * lifetime `stats` live on the send row itself.\n */\nexport const analyticsSendsListCommand = defineCommand({\n path: ['analytics', 'sends', 'list'],\n summary: 'List campaign/automation sends with delivery stats (`sends list`)',\n sdkMethod: null,\n derivedFrom: 'sends.list',\n route: { method: 'GET', path: '/v1/sends' },\n commandClass: 'read',\n flags: [\n {\n flag: '--send <sendId>',\n summary:\n '0.6 shim: read ONE send as a single-row page (`sends get` is the real read)',\n },\n {\n flag: '--include <tokens>',\n summary: 'With --send only: detail includes (`events`)',\n },\n { flag: '--email <emailId>', summary: 'Filter by email design' },\n { flag: '--kind <kind>', summary: 'campaign | automation' },\n { flag: '--status <status>', summary: SEND_STATUS_SUMMARY },\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics sends list --status completed',\n 'brew-cli analytics sends list --email eml_1 --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const sendId = flagString(flags.send) ?? inputField(base, 'sendId')\n const include = flagString(flags.include) ?? inputField(base, 'include')\n if (sendId !== undefined) {\n const row = await ctx\n .client()\n .sends.get(sendId, include === undefined ? undefined : { include })\n return { data: singleRowPage(row), human: renderSends([row]) }\n }\n if (include !== undefined) {\n throw includeRidesDetailRead('sends get', '--send')\n }\n const input = mergeInput(base, {\n emailId: flagString(flags.email),\n kind: flagString(flags.kind),\n status: flagString(flags.status),\n from: flagString(flags.since),\n to: flagString(flags.until),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n return await listSends(ctx, input, flags.all === true)\n },\n})\n","import type { ListTriggerInstancesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\nimport type { CliContext } from '../../../lib/types'\n\n/**\n * `state` on every row, in lifecycle order:\n * `received | verified | matched | partially_fired | fired | rejected |\n * dead_letter`. Branch on it — `fired` means every matched automation\n * started, `partially_fired` means some starts are still being retried,\n * and `rejected` carries a `rejectionReason`.\n */\nexport const automationsTriggerInstancesListCommand = defineCommand({\n path: ['automations', 'trigger-instances', 'list'],\n summary:\n 'List fired-trigger instances (the inbound-fire audit log); each row carries a lifecycle `state`',\n sdkMethod: 'automations.triggerInstances.list',\n route: { method: 'GET', path: '/v1/automations/trigger-instances' },\n commandClass: 'read',\n flags: [\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Filter by trigger event',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations trigger-instances list --trigger tri_signup',\n 'brew-cli automations trigger-instances list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n triggerEventId: flagString(flags.trigger),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n return await listTriggerInstances(ctx, input, flags.all === true)\n },\n})\n\n/**\n * The shared read behind `automations trigger-instances list` and the\n * `analytics trigger-instances list` alias.\n */\nexport async function listTriggerInstances(\n ctx: CliContext,\n input: Record<string, unknown>,\n followCursor: boolean\n): Promise<{ data: unknown; human: string }> {\n const triggerInstances = ctx.client().automations.triggerInstances\n if (followCursor) {\n const rows = await collectAll(ctx, (cursor) =>\n triggerInstances.list(\n asSdkInput<ListTriggerInstancesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderInstances(rows),\n }\n }\n const result = await triggerInstances.list(\n asSdkInput<ListTriggerInstancesInput>(input)\n )\n return { data: result, human: renderInstances(result.data) }\n}\n\nexport function renderInstances(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No trigger instances found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'triggerInstanceId', header: 'INSTANCE' },\n { key: 'source', header: 'SOURCE' },\n { key: 'state', header: 'STATE' },\n { key: 'receivedAt', header: 'RECEIVED' },\n ])\n}\n","import { inputField, singleRowPage } from '../../../lib/compat'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { ALL_FLAG, CURSOR_FLAG, LIMIT_FLAG } from '../../../lib/paginate'\nimport {\n listTriggerInstances,\n renderInstances,\n} from '../../automations/trigger-instances/list'\n\n/**\n * The name agents already know. Trigger instances moved under automations;\n * one instance by id is `automations trigger-instances get`.\n */\nexport const analyticsTriggerInstancesListCommand = defineCommand({\n path: ['analytics', 'trigger-instances', 'list'],\n summary:\n 'List fired-trigger instances with their lifecycle `state` (`automations trigger-instances list`)',\n sdkMethod: null,\n derivedFrom: 'automations.triggerInstances.list',\n route: { method: 'GET', path: '/v1/automations/trigger-instances' },\n commandClass: 'read',\n flags: [\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Filter by trigger event',\n },\n {\n flag: '--trigger-instance <triggerInstanceId>',\n summary:\n '0.6 shim: read ONE instance as a single-row page (`automations trigger-instances get` is the real read)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics trigger-instances list --trigger tri_signup',\n 'brew-cli analytics trigger-instances list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const triggerInstanceId =\n flagString(flags.triggerInstance) ?? inputField(base, 'triggerInstanceId')\n if (triggerInstanceId !== undefined) {\n const row = await ctx\n .client()\n .automations.triggerInstances.get(triggerInstanceId)\n return { data: singleRowPage(row), human: renderInstances([row]) }\n }\n const input = mergeInput(base, {\n triggerEventId: flagString(flags.trigger),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n return await listTriggerInstances(ctx, input, flags.all === true)\n },\n})\n","import { CLI_NAME, CLI_VERSION } from '../version'\nimport type { ResolvedAuth } from './client'\nimport { isOrgLevelPath, resolveAuth } from './client'\nimport { CliApiError, errorTypeForStatus, suggestionForStatus } from './errors'\nimport type { CliContext } from './types'\n\n/**\n * Minimal typed transport for public-API operations the published SDK does\n * not expose yet. Shares auth resolution, the X-Brand-Id policy, and\n * error-envelope mapping with the `api` escape hatch. Each caller swaps to\n * the SDK method when it ships — the parity-sdk sentinel flags the moment\n * that becomes possible. Unlike the SDK transport, raw calls are\n * single-attempt (no retry loop). POST calls receive an invocation-scoped\n * idempotency key automatically; callers can provide a stable key when they\n * need to replay safely across process restarts.\n */\nexport async function rawRequest<TResponse>(\n ctx: CliContext,\n request: {\n readonly method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT'\n readonly path: string\n readonly body?: unknown\n readonly query?: Readonly<Record<string, string | undefined>>\n readonly idempotencyKey?: string | undefined\n readonly allowAnonymous?: boolean\n readonly signal?: AbortSignal\n }\n): Promise<TResponse> {\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n ...(request.allowAnonymous === true ? { allowAnonymous: true } : {}),\n })\n const hasBody = request.body !== undefined\n const idempotencyKey = resolveRawIdempotencyKey(\n request.method,\n request.idempotencyKey\n )\n const headers = buildRawHeaders({\n auth,\n path: request.path,\n hasJsonBody: hasBody,\n idempotencyKey,\n })\n const url = new URL(`${auth.apiUrl}${request.path}`)\n for (const [key, value] of Object.entries(request.query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(key, value)\n }\n }\n const response = await fetch(url, {\n method: request.method,\n headers,\n ...(hasBody ? { body: JSON.stringify(request.body) } : {}),\n ...(request.signal === undefined ? {} : { signal: request.signal }),\n })\n const text = await response.text()\n const parsed = tryParseJson(text)\n if (!response.ok) {\n throw responseToApiError(response, parsed)\n }\n if (parsed === undefined) {\n throw new CliApiError({\n status: response.status,\n code: 'UNEXPECTED_RESPONSE',\n type: 'internal_error',\n message: 'The API returned a non-JSON success response.',\n })\n }\n return parsed as TResponse\n}\n\nfunction resolveRawIdempotencyKey(\n method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT',\n provided: string | undefined\n): string | undefined {\n if (provided !== undefined && provided !== '') {\n return provided\n }\n return method === 'POST' ? crypto.randomUUID() : undefined\n}\n\nexport function buildRawHeaders(input: {\n readonly auth: ResolvedAuth\n readonly path: string\n readonly hasJsonBody: boolean\n readonly idempotencyKey?: string | undefined\n}): Headers {\n const headers = new Headers({\n authorization: `Bearer ${input.auth.apiKey}`,\n 'user-agent': `${CLI_NAME}/${CLI_VERSION}`,\n accept: 'application/json, text/plain;q=0.9',\n })\n if (input.hasJsonBody) {\n headers.set('content-type', 'application/json')\n }\n if (input.auth.brandId !== undefined && !isOrgLevelPath(input.path)) {\n headers.set('x-brand-id', input.auth.brandId)\n }\n if (input.idempotencyKey !== undefined && input.idempotencyKey !== '') {\n headers.set('idempotency-key', input.idempotencyKey)\n }\n return headers\n}\n\nexport function responseToApiError(\n response: Response,\n parsed: unknown\n): CliApiError {\n const requestId = response.headers.get('x-request-id') ?? undefined\n // Standard envelope: { error: {...} }. The trigger-fire endpoints answer\n // with the legacy fire envelope instead — `code`/`message`/`details` at\n // the top level and no `type` — so read those rather than discarding the\n // body, and derive the `type` (and a suggestion) from the HTTP status.\n const record = isRecord(parsed) ? parsed : undefined\n const standard =\n record !== undefined && isRecord(record.error) ? record.error : undefined\n const envelope = standard ?? record\n const readField = (key: string): string | undefined => {\n const value = envelope?.[key]\n return typeof value === 'string' ? value : undefined\n }\n const param = readField('param')\n const suggestion =\n readField('suggestion') ??\n (envelope === undefined ? undefined : suggestionForStatus(response.status))\n const docs = readField('docs')\n const details = isRecord(envelope?.details) ? envelope.details : undefined\n return new CliApiError({\n status: response.status,\n code: readField('code') ?? 'HTTP_ERROR',\n type: readField('type') ?? errorTypeForStatus(response.status),\n message:\n readField('message') ?? `Request failed with status ${response.status}`,\n ...(param === undefined ? {} : { param }),\n ...(suggestion === undefined ? {} : { suggestion }),\n ...(docs === undefined ? {} : { docs }),\n ...(requestId === undefined ? {} : { requestId }),\n ...(details === undefined ? {} : { details }),\n ...(parsed === undefined ? {} : { body: parsed }),\n })\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nexport function tryParseJson(text: string): unknown {\n try {\n return JSON.parse(text) as unknown\n } catch {}\n}\n","import { resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport {\n buildRawHeaders,\n responseToApiError,\n tryParseJson,\n} from '../lib/raw-request'\n\nconst METHODS = ['GET', 'POST', 'PATCH', 'DELETE'] as const\n\ntype ApiMethod = (typeof METHODS)[number]\n\n/** Paths the API serves without authentication. */\nconst ANONYMOUS_PATHS = ['/v1/health', '/v1/help', '/v1/llms.txt'] as const\n\nexport const apiCommand = defineCommand({\n path: ['api'],\n summary: 'Raw authenticated request against the Brew public API',\n sdkMethod: null,\n commandClass: 'destructive',\n args: [\n {\n name: 'method',\n summary: 'GET | POST | PATCH | DELETE',\n isRequired: true,\n },\n {\n name: 'path',\n summary: 'API path, e.g. /v1/contacts/search',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--data <json>', summary: 'JSON request body, or - to read stdin' },\n {\n flag: '--header <headers...>',\n summary: 'Extra header(s) as \"Name: value\"',\n },\n {\n flag: '--idempotency-key <key>',\n summary: 'Idempotency-Key header for safe POST retries',\n },\n ],\n examples: [\n 'brew-cli api GET /v1/fields',\n `brew-cli api POST /v1/contacts/search --data '{\"limit\":5}' --yes`,\n 'brew-cli api GET /v1/llms.txt',\n ],\n confirmSummary: ({ args }) => {\n const method = (args.method ?? '').toUpperCase()\n if (method === 'GET') {\n return\n }\n return `Send a raw ${method} request to ${args.path ?? ''}. The CLI cannot assess what this mutates.`\n },\n run: async ({ ctx, args, flags }) => {\n const method = parseMethod(args.method)\n const path = parsePath(args.path)\n const barePath = path.split('?')[0] ?? path\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n allowAnonymous: (ANONYMOUS_PATHS as readonly string[]).includes(barePath),\n })\n const body = await readBody(ctx, flags.data)\n if (method === 'GET' && body !== undefined) {\n throw new CliUsageError('GET requests cannot carry --data.')\n }\n const headers = buildRawHeaders({\n auth,\n path,\n hasJsonBody: body !== undefined,\n idempotencyKey:\n typeof flags.idempotencyKey === 'string'\n ? flags.idempotencyKey\n : undefined,\n })\n for (const header of readHeaderFlags(flags.header)) {\n const separator = header.indexOf(':')\n if (separator === -1) {\n throw new CliUsageError(\n `Invalid --header (expected \"Name: value\"): ${header}`\n )\n }\n headers.set(\n header.slice(0, separator).trim(),\n header.slice(separator + 1).trim()\n )\n }\n const response = await fetch(`${auth.apiUrl}${path}`, {\n method,\n headers,\n ...(body === undefined ? {} : { body }),\n })\n const text = await response.text()\n const parsed = tryParseJson(text)\n if (!response.ok) {\n throw responseToApiError(response, parsed)\n }\n if (parsed !== undefined) {\n return { data: parsed }\n }\n return { data: text, human: text }\n },\n})\n\nfunction parseMethod(value: string | undefined): ApiMethod {\n const method = (value ?? '').toUpperCase()\n if ((METHODS as readonly string[]).includes(method)) {\n return method as ApiMethod\n }\n throw new CliUsageError(\n `Unsupported method \"${value ?? ''}\". Expected one of: ${METHODS.join(', ')}`\n )\n}\n\nfunction parsePath(value: string | undefined): string {\n if (value === undefined || !value.startsWith('/')) {\n throw new CliUsageError('Path must start with \"/\", e.g. /v1/fields')\n }\n return value\n}\n\nasync function readBody(\n ctx: { readonly io: { readonly readStdin: () => Promise<string> } },\n data: unknown\n): Promise<string | undefined> {\n if (typeof data !== 'string') {\n return\n }\n const raw = data === '-' ? await ctx.io.readStdin() : data\n try {\n JSON.parse(raw)\n } catch {\n throw new CliUsageError('--data must be valid JSON (or - to read stdin)')\n }\n return raw\n}\n\nfunction readHeaderFlags(value: unknown): readonly string[] {\n if (Array.isArray(value)) {\n return value.filter((item): item is string => typeof item === 'string')\n }\n return typeof value === 'string' ? [value] : []\n}\n","import type { CreateApiKeyInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const apiKeysCreateCommand = defineCommand({\n path: ['api-keys', 'create'],\n summary:\n 'Mint an API key; the plaintext `key` is returned ONCE — this output is the only copy',\n sdkMethod: 'apiKeys.create',\n route: { method: 'POST', path: '/v1/api-keys' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Label for the key' },\n {\n flag: '--permissions <scopes...>',\n summary:\n 'all | contacts | emails | automations | transactional | domains | sends | audiences | brands (default: all)',\n },\n {\n flag: '--brand-id <brandId>',\n summary:\n 'Bind the NEW key to this brand id (omit for an organization-wide key); not the acting --brand',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli api-keys create --name CI --permissions emails domains',\n 'brew-cli api-keys create --name \"Acme key\" --brand-id kx7b3s7fapqz8mjm12ekz1kxdx87yceg',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: flagString(flags.name),\n permissions: toStringArray(flags.permissions),\n brandId: flagString(flags.brandId),\n })\n // The plaintext `key` is never shown again after this call — pass the\n // API response through verbatim (no masking) or the command loses its\n // only purpose.\n return {\n data: await ctx\n .client()\n .apiKeys.create(\n asSdkInput<CreateApiKeyInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const apiKeysDeleteCommand = defineCommand({\n path: ['api-keys', 'delete'],\n summary: 'Revoke an API key',\n sdkMethod: 'apiKeys.revoke',\n route: { method: 'DELETE', path: '/v1/api-keys/{keyId}' },\n commandClass: 'destructive',\n args: [{ name: 'keyId', summary: 'API key id to revoke', isRequired: true }],\n examples: ['brew-cli api-keys delete kd7b3s7fapqz8mjm12ekz1kxdx87yceg --yes'],\n confirmSummary: ({ args }) =>\n `Revoke API key ${args.keyId ?? ''}. Anything still using it starts failing immediately. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().apiKeys.revoke({ keyId: args.keyId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { renderTable } from '../../lib/output'\n\nexport const apiKeysListCommand = defineCommand({\n path: ['api-keys', 'list'],\n summary:\n 'List API keys in the organization (already-redacted `keyPreview`, never the secret)',\n sdkMethod: 'apiKeys.list',\n route: { method: 'GET', path: '/v1/api-keys' },\n commandClass: 'read',\n examples: ['brew-cli api-keys list', 'brew-cli api-keys list --json'],\n run: async ({ ctx }) => {\n const result = await ctx.client().apiKeys.list()\n return { data: result, human: renderApiKeys(result.data) }\n },\n})\n\nfunction renderApiKeys(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No API keys found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'keyId', header: 'KEY ID' },\n { key: 'name', header: 'NAME' },\n { key: 'keyPreview', header: 'KEY PREVIEW' },\n { key: 'status', header: 'STATUS' },\n { key: 'brandId', header: 'BRAND ID' },\n ])\n}\n","import type { CreateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const audiencesCreateCommand = defineCommand({\n path: ['audiences', 'create'],\n summary: 'Create an audience segment from a filter definition',\n sdkMethod: 'audiences.create',\n route: { method: 'POST', path: '/v1/audiences' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Audience name' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n `brew-cli audiences create --name VIP --input '{\"filters\":{\"filters\":[{\"field\":\"plan\",\"operator\":\"equals\",\"value\":\"vip\"}],\"logicalOperator\":\"and\"}}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n if (input.filters === undefined) {\n throw new CliUsageError(\n 'Audience filters are required — pass the filter definition via --input.'\n )\n }\n const result = await ctx\n .client()\n .audiences.create(\n asSdkInput<CreateAudienceInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const audiencesDeleteCommand = defineCommand({\n path: ['audiences', 'delete'],\n summary: 'Delete an audience segment (contacts are kept)',\n sdkMethod: 'audiences.delete',\n route: { method: 'DELETE', path: '/v1/audiences/{audienceId}' },\n commandClass: 'destructive',\n args: [\n { name: 'audienceId', summary: 'Audience id to delete', isRequired: true },\n ],\n examples: ['brew-cli audiences delete aud_3k9sQ --yes'],\n confirmSummary: ({ args }) =>\n `Delete audience ${args.audienceId ?? ''}. Contacts are kept; the segment definition is gone. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .audiences.delete({ audienceId: args.audienceId ?? '' }),\n }),\n})\n","import type { DuplicateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const audiencesDuplicateCommand = defineCommand({\n path: ['audiences', 'duplicate'],\n summary: 'Copy an audience segment (the copy gets a \"(copy)\" name)',\n sdkMethod: 'audiences.duplicate',\n route: { method: 'POST', path: '/v1/audiences/{audienceId}/duplicate' },\n commandClass: 'write',\n args: [\n {\n name: 'audienceId',\n summary: 'Audience id to duplicate',\n isRequired: true,\n },\n ],\n // The operation takes no request body — the API names the copy itself.\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli audiences duplicate aud_3k9sQ'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx.client().audiences.duplicate(\n asSdkInput<DuplicateAudienceInput>({\n audienceId: args.audienceId ?? '',\n }),\n requestOptions(flags)\n ),\n }),\n})\n","import type { AudienceFromEventsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const audiencesFromEventsCommand = defineCommand({\n path: ['audiences', 'from-events'],\n summary:\n 'Create a frozen audience snapshot from analytics events (async build)',\n sdkMethod: 'audiences.fromEvents',\n route: { method: 'POST', path: '/v1/audiences/from-events' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Audience name' },\n {\n flag: '--event-types <types...>',\n summary:\n 'Event type(s), repeatable: sent, delivered, delivery_delayed, opened, clicked, bounced, complained, failed, skipped, unsubscribed',\n },\n {\n flag: '--since <datetime>',\n summary: 'Cohort window start (ISO-8601, max 90 days back)',\n },\n {\n flag: '--until <datetime>',\n summary: 'Cohort window end (ISO-8601, default now)',\n },\n { flag: '--send-id <sendId>', summary: 'Scope to one campaign send' },\n { flag: '--email-id <emailId>', summary: 'Scope to one email design' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli audiences from-events --name \"Opened in July\" --event-types opened --since 2026-07-01T00:00:00Z --until 2026-08-01T00:00:00Z',\n 'brew-cli audiences from-events --event-types opened clicked --since 2026-07-01T00:00:00Z --input \\'{\"cohort\":{\"recipient\":[\"@acme.com\"]}}\\'',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n // Scalar flags override the cohort inside an --input body key-by-key.\n const cohort = mergeInput(input.cohort, {\n eventTypes: toStringArray(flags.eventTypes),\n from: flagString(flags.since),\n to: flagString(flags.until),\n sendId: flagString(flags.sendId),\n emailId: flagString(flags.emailId),\n })\n if (!Array.isArray(cohort.eventTypes) || cohort.eventTypes.length === 0) {\n throw new CliUsageError(\n '--event-types is required (or provide cohort.eventTypes via --input).'\n )\n }\n if (typeof cohort.from !== 'string' || cohort.from === '') {\n throw new CliUsageError(\n '--since is required (or provide cohort.from via --input).'\n )\n }\n return {\n data: await ctx\n .client()\n .audiences.fromEvents(\n asSdkInput<AudienceFromEventsInput>({ ...input, cohort }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const audiencesGetCommand = defineCommand({\n path: ['audiences', 'get'],\n summary: 'Fetch one audience segment by id — the bare row',\n sdkMethod: 'audiences.get',\n route: { method: 'GET', path: '/v1/audiences/{audienceId}' },\n commandClass: 'read',\n args: [\n { name: 'audienceId', summary: 'Audience id to fetch', isRequired: true },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: count, build',\n },\n ],\n examples: [\n 'brew-cli audiences get aud_3k9sQ',\n 'brew-cli audiences get aud_3k9sQ --include count,build',\n ],\n run: async ({ ctx, args, flags }) => {\n const include = flagString(flags.include)\n return {\n data: await ctx\n .client()\n .audiences.get(\n args.audienceId ?? '',\n include === undefined ? undefined : { include }\n ),\n }\n },\n})\n","import type { ListAudiencesInput } from '@brew.new/sdk'\nimport { includeRidesDetailRead, inputField } from '../../lib/compat'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const audiencesListCommand = defineCommand({\n path: ['audiences', 'list'],\n summary: 'List audience segments; one segment is `audiences get`',\n sdkMethod: 'audiences.list',\n route: { method: 'GET', path: '/v1/audiences' },\n commandClass: 'read',\n flags: [\n {\n flag: '--include <tokens>',\n summary:\n '0.6 flag: includes ride the detail read now (`audiences get --include count,build`)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli audiences list',\n 'brew-cli audiences list --limit 10',\n 'brew-cli audiences list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (\n (flagString(flags.include) ?? inputField(base, 'include')) !== undefined\n ) {\n throw includeRidesDetailRead('audiences get')\n }\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const audiences = ctx.client().audiences\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n audiences.list(\n asSdkInput<ListAudiencesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAudiences(rows),\n }\n }\n const result = await audiences.list(asSdkInput<ListAudiencesInput>(input))\n return { data: result, human: renderAudiences(result.data) }\n },\n})\n\nfunction renderAudiences(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No audiences found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'audienceId', header: 'AUDIENCE ID' },\n { key: 'audienceName', header: 'NAME' },\n { key: 'count', header: 'CONTACTS' },\n { key: 'updatedAt', header: 'UPDATED' },\n ])\n}\n","import type { UpdateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const audiencesUpdateCommand = defineCommand({\n path: ['audiences', 'update'],\n summary: 'Update an audience segment (name and/or filters)',\n sdkMethod: 'audiences.update',\n route: { method: 'PATCH', path: '/v1/audiences/{audienceId}' },\n commandClass: 'write',\n args: [\n { name: 'audienceId', summary: 'Audience id to update', isRequired: true },\n ],\n flags: [{ flag: '--name <name>', summary: 'New audience name' }, INPUT_FLAG],\n examples: [\n 'brew-cli audiences update aud_3k9sQ --name \"VIP customers\"',\n `brew-cli audiences update aud_3k9sQ --input '{\"filters\":{\"filters\":[{\"field\":\"plan\",\"operator\":\"equals\",\"value\":\"vip\"}],\"logicalOperator\":\"and\"}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass --name or --input.')\n }\n const result = await ctx.client().audiences.update(\n asSdkInput<UpdateAudienceInput>({\n ...input,\n audienceId: args.audienceId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../../lib/input'\n\nexport const automationsAudienceRunsCancelCommand = defineCommand({\n path: ['automations', 'audience-runs', 'cancel'],\n summary: 'Cancel a manual-audience run for good — it can never be resumed',\n sdkMethod: 'automations.audienceRuns.cancel',\n route: {\n method: 'POST',\n path: '/v1/automations/audience-runs/{audienceRunId}/cancel',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'audienceRunId',\n summary: 'Audience run id to cancel',\n isRequired: true,\n },\n ],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli automations audience-runs cancel arun_01HZ --yes'],\n confirmSummary: ({ args }) =>\n `Cancel audience run ${args.audienceRunId ?? ''} for good. Emails already sent are not recalled, and a canceled run cannot be resumed.`,\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .automations.audienceRuns.cancel(\n args.audienceRunId ?? '',\n requestOptions(flags)\n ),\n }),\n})\n","import { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../../lib/input'\n\n/**\n * The 0.6 verb-flag form of `automations audience-runs pause|resume|cancel`.\n * `POST …/control { action }` left the API in the v1 cleanup, and command\n * names are additive-only after release (AGENTS.md), so this stays as CLI\n * sugar dispatching to the three action commands' SDK methods, which\n * `derivedFrom` names. No `route`: the spec has none for it, and the three\n * it fans out to belong to the three commands.\n */\nexport const automationsAudienceRunsControlCommand = defineCommand({\n path: ['automations', 'audience-runs', 'control'],\n summary:\n 'Pause, resume, or cancel an in-flight manual-audience run (0.6 form of `audience-runs pause|resume|cancel`)',\n sdkMethod: null,\n derivedFrom: [\n 'automations.audienceRuns.pause',\n 'automations.audienceRuns.resume',\n 'automations.audienceRuns.cancel',\n ],\n commandClass: 'destructive',\n args: [\n {\n name: 'audienceRunId',\n summary: 'Audience run id to control',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--action <action>',\n summary: 'pause (resumable) | resume | cancel (final)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli automations audience-runs control arun_01HZ --action pause',\n 'brew-cli automations audience-runs control arun_01HZ --action cancel --yes',\n ],\n // Only cancel is irreversible; pause and resume proceed ungated.\n confirmSummary: ({ args, flags }) =>\n flagString(flags.action) === 'cancel'\n ? `Cancel audience run ${args.audienceRunId ?? ''} for good. Emails already sent are not recalled, and a canceled run cannot be resumed.`\n : undefined,\n run: async ({ ctx, args, flags }) => {\n const audienceRuns = ctx.client().automations.audienceRuns\n const audienceRunId = args.audienceRunId ?? ''\n const options = requestOptions(flags)\n switch (flagString(flags.action)) {\n case 'pause':\n return { data: await audienceRuns.pause(audienceRunId, options) }\n case 'resume':\n return { data: await audienceRuns.resume(audienceRunId, options) }\n case 'cancel':\n return { data: await audienceRuns.cancel(audienceRunId, options) }\n default:\n throw new CliUsageError(\n '--action is required: pause, resume, or cancel.'\n )\n }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\n\nexport const automationsAudienceRunsGetCommand = defineCommand({\n path: ['automations', 'audience-runs', 'get'],\n summary: 'Fetch one manual-audience run by id — the bare row',\n sdkMethod: 'automations.audienceRuns.get',\n route: {\n method: 'GET',\n path: '/v1/automations/audience-runs/{audienceRunId}',\n },\n commandClass: 'read',\n args: [\n {\n name: 'audienceRunId',\n summary: 'Audience run id to fetch',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations audience-runs get arun_01HZ'],\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.audienceRuns.get(args.audienceRunId ?? ''),\n }),\n})\n","import type { ListAudienceRunsInput } from '@brew.new/sdk'\nimport { inputField, singleRowPage } from '../../../lib/compat'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const automationsAudienceRunsListCommand = defineCommand({\n path: ['automations', 'audience-runs', 'list'],\n summary:\n 'List manual-audience runs, newest first; one run is `automations audience-runs get`',\n sdkMethod: 'automations.audienceRuns.list',\n route: { method: 'GET', path: '/v1/automations/audience-runs' },\n commandClass: 'read',\n flags: [\n {\n flag: '--automation <automationId>',\n summary: 'Only runs of this automation',\n },\n {\n flag: '--automation-id <automationId>',\n summary: '0.6 alias of --automation',\n },\n {\n flag: '--audience-run-id <audienceRunId>',\n summary:\n '0.6 shim: read ONE run as a single-row page (`automations audience-runs get` is the real read)',\n },\n {\n flag: '--status <status>',\n summary:\n 'queued | scheduled | running | paused | completed | failed | canceled',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations audience-runs list',\n 'brew-cli automations audience-runs list --automation am_123 --status running',\n ],\n run: async ({ ctx, flags }) => {\n const audienceRuns = ctx.client().automations.audienceRuns\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const audienceRunId =\n flagString(flags.audienceRunId) ?? inputField(base, 'audienceRunId')\n if (audienceRunId !== undefined) {\n const row = await audienceRuns.get(audienceRunId)\n return { data: singleRowPage(row), human: renderAudienceRuns([row]) }\n }\n const input = mergeInput(base, {\n automationId:\n flagString(flags.automation) ?? flagString(flags.automationId),\n status: flagString(flags.status),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n audienceRuns.list(\n asSdkInput<ListAudienceRunsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAudienceRuns(rows),\n }\n }\n const result = await audienceRuns.list(\n asSdkInput<ListAudienceRunsInput>(input)\n )\n return { data: result, human: renderAudienceRuns(result.data) }\n },\n})\n\nfunction renderAudienceRuns(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No audience runs found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'audienceRunId', header: 'AUDIENCE RUN' },\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'status', header: 'STATUS' },\n { key: 'totalRecipients', header: 'RECIPIENTS' },\n ])\n}\n","import { defineCommand } from '../../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../../lib/input'\n\nexport const automationsAudienceRunsPauseCommand = defineCommand({\n path: ['automations', 'audience-runs', 'pause'],\n summary:\n 'Pause a running manual-audience run at its next step boundary (resumable)',\n sdkMethod: 'automations.audienceRuns.pause',\n route: {\n method: 'POST',\n path: '/v1/automations/audience-runs/{audienceRunId}/pause',\n },\n commandClass: 'write',\n args: [\n {\n name: 'audienceRunId',\n summary: 'Audience run id to pause',\n isRequired: true,\n },\n ],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli automations audience-runs pause arun_01HZ'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .automations.audienceRuns.pause(\n args.audienceRunId ?? '',\n requestOptions(flags)\n ),\n }),\n})\n","import { defineCommand } from '../../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../../lib/input'\n\nexport const automationsAudienceRunsResumeCommand = defineCommand({\n path: ['automations', 'audience-runs', 'resume'],\n summary:\n 'Resume a paused manual-audience run, or restart a failed one from its first undelivered send',\n sdkMethod: 'automations.audienceRuns.resume',\n route: {\n method: 'POST',\n path: '/v1/automations/audience-runs/{audienceRunId}/resume',\n },\n commandClass: 'write',\n args: [\n {\n name: 'audienceRunId',\n summary: 'Audience run id to resume',\n isRequired: true,\n },\n ],\n flags: [IDEMPOTENCY_FLAG],\n // `resumedFrom` on the response reports which case ran: `paused` or\n // `failed`. A failed restart never resends a step the failed run finished.\n examples: ['brew-cli automations audience-runs resume arun_01HZ'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .automations.audienceRuns.resume(\n args.audienceRunId ?? '',\n requestOptions(flags)\n ),\n }),\n})\n","import type { CreateAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const automationsCreateCommand = defineCommand({\n path: ['automations', 'create'],\n summary: 'Create an automation from a graph JSON (starts unpublished)',\n sdkMethod: 'automations.create',\n route: { method: 'POST', path: '/v1/automations' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Automation name' },\n { flag: '--description <text>', summary: 'Automation description' },\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Trigger event id that starts the automation',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'cat welcome-flow.json | brew-cli automations create --input -',\n `brew-cli automations create --name \"Welcome flow\" --input '{\"triggerEventId\":\"tev_1\",\"nodes\":[],\"connections\":[]}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError(\n '--input is required — the automation graph JSON (name, triggerEventId, nodes, connections).'\n )\n }\n const input = mergeInput(base, {\n name: flagString(flags.name),\n description: flagString(flags.description),\n triggerEventId: flagString(flags.trigger),\n })\n const result = await ctx\n .client()\n .automations.create(\n asSdkInput<CreateAutomationInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const automationsDeleteCommand = defineCommand({\n path: ['automations', 'delete'],\n summary: 'Delete an automation and its version history (cascade)',\n sdkMethod: 'automations.delete',\n route: { method: 'DELETE', path: '/v1/automations/{automationId}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations delete am_123 --yes'],\n confirmSummary: ({ args }) =>\n `Delete automation ${args.automationId ?? ''} and its entire version history (cascade). This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.delete({ automationId: args.automationId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const automationsGetCommand = defineCommand({\n path: ['automations', 'get'],\n summary: 'Fetch one automation by id — the bare row, lean by default',\n sdkMethod: 'automations.get',\n route: { method: 'GET', path: '/v1/automations/{automationId}' },\n commandClass: 'read',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: graph, versions',\n },\n ],\n examples: [\n 'brew-cli automations get am_123',\n 'brew-cli automations get am_123 --include graph,versions',\n ],\n run: async ({ ctx, args, flags }) => {\n const include = flagString(flags.include)\n return {\n data: await ctx\n .client()\n .automations.get(\n args.automationId ?? '',\n include === undefined ? undefined : { include }\n ),\n }\n },\n})\n","import type { ListAutomationsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const automationsListCommand = defineCommand({\n path: ['automations', 'list'],\n summary: 'List automations (lean rows; `automations get` for the graph)',\n sdkMethod: 'automations.list',\n route: { method: 'GET', path: '/v1/automations' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli automations list',\n 'brew-cli automations list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const automations = ctx.client().automations\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n automations.list(\n asSdkInput<ListAutomationsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAutomations(rows),\n }\n }\n const result = await automations.list(\n asSdkInput<ListAutomationsInput>(input)\n )\n return { data: result, human: renderAutomations(result.data) }\n },\n})\n\nfunction renderAutomations(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automations found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'name', header: 'NAME' },\n { key: 'published', header: 'PUBLISHED' },\n { key: 'version', header: 'VERSION' },\n { key: 'triggerEventId', header: 'TRIGGER' },\n ])\n}\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const automationsPublishCommand = defineCommand({\n path: ['automations', 'publish'],\n summary:\n 'Publish an automation — arms it for live fires; does not itself send',\n sdkMethod: 'automations.publish',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to publish',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--automation-version <automationVersionId>',\n summary: 'Publish a specific historical version (default: latest)',\n },\n ],\n examples: [\n 'brew-cli automations publish am_123',\n 'brew-cli automations publish am_123 --automation-version amv_456',\n ],\n run: async ({ ctx, args, flags }) => {\n const automationVersionId = flagString(flags.automationVersion)\n const result = await ctx.client().automations.publish({\n automationId: args.automationId ?? '',\n ...(automationVersionId === undefined ? {} : { automationVersionId }),\n })\n return { data: result }\n },\n})\n","import type { RunAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const automationsRunCommand = defineCommand({\n path: ['automations', 'run'],\n summary: 'Run a manual-audience automation (live send; --dry-run previews)',\n sdkMethod: 'automations.run',\n route: { method: 'POST', path: '/v1/automations/{automationId}/run' },\n commandClass: 'destructive',\n args: [\n {\n name: 'automationId',\n summary: 'Manual-audience automation id to run',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--dry-run',\n summary: 'Preview the resolved plan without sending (skips the gate)',\n },\n {\n flag: '--schedule-at <iso>',\n summary: 'Launch at an ISO-8601 time instead of now',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli automations run auto_abc --dry-run',\n 'brew-cli automations run auto_abc --yes',\n 'brew-cli automations run auto_abc --schedule-at 2026-09-01T09:00:00Z --input \\'{\"gradualSend\":{\"startingPercentage\":10,\"incrementPercentage\":20,\"interval\":{\"value\":1,\"unit\":\"day\"},\"timeZone\":\"America/New_York\"}}\\' --yes',\n ],\n confirmSummary: ({ args, flags }) => {\n // The gate must reflect the MERGED request — an inline --input body can\n // carry dryRun/scheduledAt on its own. A dry run never gates.\n const inline = parseInlineInput(flags.input)\n if (flags.dryRun === true || inline?.dryRun === true) {\n return\n }\n const scheduleAt =\n flagString(flags.scheduleAt) ?? asString(inline?.scheduledAt)\n const timing = scheduleAt === undefined ? 'now' : `at ${scheduleAt}`\n return `Run automation ${args.automationId ?? ''} LIVE against its bound audience ${timing}. Real recipients receive mail; preview with --dry-run instead.`\n },\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n dryRun: flags.dryRun === true ? true : undefined,\n scheduledAt: flagString(flags.scheduleAt),\n })\n return {\n data: await ctx.client().automations.run(\n asSdkInput<RunAutomationInput>({\n ...input,\n automationId: args.automationId ?? '',\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n\n/** Best-effort parse of an inline --input body (stdin `-` stays opaque). */\nfunction parseInlineInput(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'string' || value === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(value)\n return parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n } catch {}\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n","import { defineCommand } from '../../../lib/define-command'\nimport {\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../../lib/input'\n\n/**\n * Operator cancel of ONE run of an event-triggered automation (or a test\n * run), by `automationRunId` — the same flat identity `runs list` uses.\n * Manual-audience launches are controlled with\n * `automations audience-runs pause|resume|cancel` instead.\n */\nexport const automationsRunsCancelCommand = defineCommand({\n path: ['automations', 'runs', 'cancel'],\n summary:\n 'Cancel one in-flight automation run (event execution or test run) — nothing further is sent, and it can never be resumed',\n sdkMethod: 'automations.runs.cancel',\n route: {\n method: 'POST',\n path: '/v1/automations/runs/{automationRunId}/cancel',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'automationRunId',\n summary:\n 'Run id to cancel (from `automations runs list`, a test start, or a fire response)',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--reason <text>', summary: 'Operator note stored on the run' },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli automations runs cancel run_9f2kX --reason \"wrong audience\" --yes',\n ],\n confirmSummary: ({ args }) =>\n `Cancel automation run ${args.automationRunId ?? ''}. Nothing further is sent; emails already delivered are not recalled, and a canceled run can never be resumed.`,\n run: async ({ ctx, args, flags }) => {\n const reason = flagString(flags.reason)\n const options = {\n ...requestOptions(flags),\n ...(reason === undefined ? {} : { reason }),\n }\n return {\n data: await ctx\n .client()\n .automations.runs.cancel(\n args.automationRunId ?? '',\n Object.keys(options).length === 0 ? undefined : options\n ),\n }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\nimport { flagString } from '../../../lib/input'\n\nexport const automationsRunsGetCommand = defineCommand({\n path: ['automations', 'runs', 'get'],\n summary: 'Fetch one automation run by id — the bare row',\n sdkMethod: 'automations.runs.get',\n route: { method: 'GET', path: '/v1/automations/runs/{automationRunId}' },\n commandClass: 'read',\n args: [\n {\n name: 'automationRunId',\n summary: 'Run id (from `automations runs list`, a test start, or a fire)',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Expansions: logs (newest 100 per-node execution logs)',\n },\n ],\n examples: [\n 'brew-cli automations runs get run_9f2kX',\n 'brew-cli automations runs get run_9f2kX --include logs',\n ],\n run: async ({ ctx, args, flags }) => {\n const include = flagString(flags.include)\n return {\n data: await ctx\n .client()\n .automations.runs.get(\n args.automationRunId ?? '',\n include === undefined ? undefined : { include }\n ),\n }\n },\n})\n","import type { ListAutomationRunsInput } from '@brew.new/sdk'\nimport {\n includeRidesDetailRead,\n inputField,\n singleRowPage,\n} from '../../../lib/compat'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const automationsRunsListCommand = defineCommand({\n path: ['automations', 'runs', 'list'],\n summary:\n 'List automation runs (live + test history); one run is `automations runs get`',\n sdkMethod: 'automations.runs.list',\n route: { method: 'GET', path: '/v1/automations/runs' },\n commandClass: 'read',\n flags: [\n { flag: '--automation <automationId>', summary: 'Filter by automation' },\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Filter by trigger event',\n },\n {\n flag: '--trigger-instance <triggerInstanceId>',\n summary: 'Filter by fired trigger instance',\n },\n {\n flag: '--status <status>',\n summary: 'queued | running | completed | failed | canceled',\n },\n { flag: '--mode <mode>', summary: 'live | test' },\n {\n flag: '--recipient <email>',\n summary:\n \"Only runs for this recipient (case-insensitive match on the run row's recipientEmail)\",\n },\n {\n flag: '--run <automationRunId>',\n summary:\n '0.6 shim: read ONE run as a single-row page (`automations runs get` is the real read)',\n },\n {\n flag: '--include <tokens>',\n summary: 'With --run only: detail includes (`logs`)',\n },\n { flag: '--since <datetime>', summary: 'Runs started at/after (ISO-8601)' },\n {\n flag: '--until <datetime>',\n summary: 'Runs started at/before (ISO-8601)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations runs list --automation am_123 --status failed',\n 'brew-cli automations runs list --trigger-instance tin_2f1c9d8a',\n ],\n run: async ({ ctx, flags }) => {\n const runs = ctx.client().automations.runs\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const runId = flagString(flags.run) ?? inputField(base, 'automationRunId')\n const include = flagString(flags.include) ?? inputField(base, 'include')\n if (runId !== undefined) {\n const row = await runs.get(\n runId,\n include === undefined ? undefined : { include }\n )\n return { data: singleRowPage(row), human: renderRuns([row]) }\n }\n if (include !== undefined) {\n throw includeRidesDetailRead('automations runs get', '--run')\n }\n const input = mergeInput(base, {\n automationId: flagString(flags.automation),\n triggerEventId: flagString(flags.trigger),\n triggerInstanceId: flagString(flags.triggerInstance),\n recipientEmail: flagString(flags.recipient),\n status: flagString(flags.status),\n mode: flagString(flags.mode),\n from: flagString(flags.since),\n to: flagString(flags.until),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n runs.list(\n asSdkInput<ListAutomationRunsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderRuns(rows),\n }\n }\n const result = await runs.list(asSdkInput<ListAutomationRunsInput>(input))\n return { data: result, human: renderRuns(result.data) }\n },\n})\n\nfunction renderRuns(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automation runs found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationRunId', header: 'RUN' },\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'status', header: 'STATUS' },\n { key: 'mode', header: 'MODE' },\n { key: 'recipientEmail', header: 'RECIPIENT' },\n ])\n}\n","import type { AutomationsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, INPUT_FLAG, readJsonFlag } from '../../lib/input'\n\ntype TestAutomationInput = Parameters<AutomationsResource['test']>[0]\n\nexport const automationsTestCommand = defineCommand({\n path: ['automations', 'test'],\n summary: 'Start a suppression-aware TEST run (no real mail is sent)',\n sdkMethod: 'automations.test',\n route: { method: 'POST', path: '/v1/automations/{automationId}/test' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to test',\n isRequired: true,\n },\n ],\n flags: [INPUT_FLAG],\n examples: [\n 'brew-cli automations test am_123',\n `brew-cli automations test am_123 --input '{\"userId\":\"u_1\"}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n // A bare object is sugar for the { payload } envelope the API takes.\n const body =\n base === undefined\n ? {}\n : typeof base === 'object' && base !== null && 'payload' in base\n ? (base as Record<string, unknown>)\n : { payload: base }\n const result = await ctx.client().automations.test(\n asSdkInput<TestAutomationInput>({\n ...body,\n automationId: args.automationId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\n\n/**\n * `state` is `received | verified | matched | partially_fired | fired |\n * rejected | dead_letter`: `fired` means every matched automation started,\n * `partially_fired` that some starts are still being retried, and\n * `rejected` carries a `rejectionReason`.\n */\nexport const automationsTriggerInstancesGetCommand = defineCommand({\n path: ['automations', 'trigger-instances', 'get'],\n summary:\n 'Fetch one fired-trigger instance by id — the bare row, with its lifecycle `state` and the runs it started',\n sdkMethod: 'automations.triggerInstances.get',\n route: {\n method: 'GET',\n path: '/v1/automations/trigger-instances/{triggerInstanceId}',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerInstanceId',\n summary: 'Instance id returned by a fire, or by the instances list',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations trigger-instances get tin_2f1c9d8a'],\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.triggerInstances.get(args.triggerInstanceId ?? ''),\n }),\n})\n","import type { components } from '../../../generated/openapi-types'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { rawRequest } from '../../../lib/raw-request'\n\ntype ContractGetResponse = components['schemas']['PayloadContractGetResponse']\ntype ContractValidateResponse =\n components['schemas']['PayloadContractValidateResponse']\n\nconst FORMAT_FLAG = {\n flag: '--format <format>',\n summary:\n 'Rendering: json (default, the contract object) or ts | zod | jsonschema | skill ({format, content})',\n} as const\n\nconst FORMATS = new Set(['json', 'ts', 'zod', 'jsonschema', 'skill'])\n\nconst ENFORCEMENT_MODES = new Set(['off', 'prune', 'strict'])\n\n/**\n * The validate preview knob is the VALIDATOR's enum — it is only ever\n * consulted once a contract is enforcing, so `off` is not representable\n * (platform `ContractEnforcementMode`).\n */\nconst VALIDATE_ENFORCEMENT_MODES = new Set(['prune', 'strict'])\n\nfunction formatQuery(value: unknown): string {\n const format = flagString(value)\n if (format === undefined) {\n return ''\n }\n if (!FORMATS.has(format)) {\n throw new CliUsageError(\n `Unknown --format '${format}' (expected json | ts | zod | jsonschema | skill).`\n )\n }\n return `?format=${format}`\n}\n\n/** Text formats print `content` raw on a TTY; `--json | jq -r .content` for pipes. */\nfunction contentHuman(body: { content?: string }): { human?: string } {\n return typeof body.content === 'string' ? { human: body.content } : {}\n}\n\nexport const automationsTriggersContractGetCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'get'],\n summary:\n 'Read a trigger payload contract: stored when declared, derived otherwise; --format renders ts/zod/jsonschema/skill',\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'GET',\n path: '/v1/automations/triggers/{triggerEventId}/contract',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…, or an integration composite id)',\n isRequired: true,\n },\n ],\n flags: [FORMAT_FLAG],\n examples: [\n 'brew-cli automations triggers contract get tri_signup',\n 'brew-cli automations triggers contract get tri_signup --format ts',\n 'brew-cli automations triggers contract get tri_signup --format skill --json | jq -r .content',\n ],\n run: async ({ ctx, args, flags }) => {\n const body = await rawRequest<ContractGetResponse>(ctx, {\n method: 'GET',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract${formatQuery(flags.format)}`,\n })\n return { data: body, ...contentHuman(body) }\n },\n})\n\nexport const automationsTriggersContractPutCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'put'],\n summary:\n 'Declare (or replace) the stored payload contract for a trigger — tree-validated before any write; omitting --enforcement leaves the stored setting unchanged',\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'PUT',\n path: '/v1/automations/triggers/{triggerEventId}/contract',\n },\n commandClass: 'write',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…)',\n isRequired: true,\n },\n ],\n flags: [\n INPUT_FLAG,\n {\n flag: '--enforcement <mode>',\n summary:\n 'off (advisory, the default) | prune (drop fields not on the list) | strict (reject a payload carrying them)',\n },\n ],\n examples: [\n `brew-cli automations triggers contract put tri_signup --input '{\"fields\":[{\"key\":\"email\",\"type\":\"string\",\"required\":true}]}'`,\n 'brew-cli automations triggers contract put tri_signup --enforcement strict',\n ],\n // Trigger contracts must keep a top-level required `email` string;\n // nested object/array fields need a Liquid-enabled workspace. The\n // response is the same body a follow-up `contract get` returns.\n run: async ({ ctx, args, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n // The platform PUT takes fields?, name?, enforcement? — each optional,\n // so an enforcement-only (or rename-only) patch is designed usage.\n if (input.fields !== undefined && !Array.isArray(input.fields)) {\n throw new CliUsageError(\n '--input .fields must be an array of contract field nodes.'\n )\n }\n // One knob. Omitting it leaves the stored setting alone.\n const enforcement = flagString(flags.enforcement)\n if (enforcement !== undefined && !ENFORCEMENT_MODES.has(enforcement)) {\n throw new CliUsageError(\n `Unknown --enforcement '${enforcement}' (expected off | prune | strict).`\n )\n }\n const requestBody = {\n ...input,\n ...(enforcement !== undefined ? { enforcement } : {}),\n }\n if (Object.keys(requestBody).length === 0) {\n throw new CliUsageError(\n 'Empty contract body — pass --input (fields and/or name) or --enforcement <mode>.'\n )\n }\n const body = await rawRequest<ContractGetResponse>(ctx, {\n method: 'PUT',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract`,\n body: requestBody,\n })\n return { data: body }\n },\n})\n\nexport const automationsTriggersContractValidateCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'validate'],\n summary:\n \"Dry-run a payload against a trigger's contract (the fire path's validator) — never fires; invalid payloads still exit 0\",\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'POST',\n path: '/v1/automations/triggers/{triggerEventId}/contract/validate',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…)',\n isRequired: true,\n },\n ],\n flags: [\n INPUT_FLAG,\n {\n flag: '--enforcement <mode>',\n summary: 'Preview a mode other than the stored one: prune | strict',\n },\n ],\n examples: [\n `brew-cli automations triggers contract validate tri_signup --input '{\"payload\":{\"email\":\"jane@example.com\"}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n const payload = input.payload ?? input\n const enforcement = flagString(flags.enforcement)\n if (\n enforcement !== undefined &&\n !VALIDATE_ENFORCEMENT_MODES.has(enforcement)\n ) {\n throw new CliUsageError(\n `Unknown --enforcement '${enforcement}' (expected prune | strict).`\n )\n }\n const body = await rawRequest<ContractValidateResponse>(ctx, {\n method: 'POST',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract/validate`,\n body: {\n payload,\n ...(enforcement !== undefined ? { enforcement } : {}),\n },\n })\n return { data: body }\n },\n})\n","import type { CreateTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const automationsTriggersCreateCommand = defineCommand({\n path: ['automations', 'triggers', 'create'],\n summary: 'Create a trigger event (title + typed payload schema)',\n sdkMethod: 'automations.triggers.create',\n route: { method: 'POST', path: '/v1/automations/triggers' },\n commandClass: 'write',\n flags: [\n { flag: '--title <title>', summary: 'Trigger event title' },\n { flag: '--description <text>', summary: 'Trigger event description' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n `brew-cli automations triggers create --title user.signup --input '{\"payloadSchema\":{\"type\":\"object\",\"fields\":[{\"key\":\"userId\",\"type\":\"string\",\"required\":true}]}}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n title: flagString(flags.title),\n description: flagString(flags.description),\n })\n if (typeof input.title !== 'string' || input.title === '') {\n throw new CliUsageError('A title is required (--title or --input).')\n }\n if (input.payloadSchema === undefined) {\n throw new CliUsageError(\n '--input with a payloadSchema is required (the typed contract fires are validated against).'\n )\n }\n const result = await ctx\n .client()\n .automations.triggers.create(\n asSdkInput<CreateTriggerInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\n\nexport const automationsTriggersDeleteCommand = defineCommand({\n path: ['automations', 'triggers', 'delete'],\n summary: 'Delete a trigger event (rejected while automations depend on it)',\n sdkMethod: 'automations.triggers.delete',\n route: {\n method: 'DELETE',\n path: '/v1/automations/triggers/{triggerEventId}',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations triggers delete tev_123 --yes'],\n confirmSummary: ({ args }) =>\n `Delete trigger event ${args.triggerEventId ?? ''}. This cannot be undone (the server rejects the delete while automations still depend on it).`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().automations.triggers.delete({\n triggerEventId: args.triggerEventId ?? '',\n }),\n }),\n})\n","import type { FireTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const automationsTriggersFireCommand = defineCommand({\n path: ['automations', 'triggers', 'fire'],\n summary: 'Fire a trigger event with a payload (starts LIVE runs)',\n sdkMethod: 'automations.triggers.fire',\n route: {\n method: 'POST',\n path: '/v1/automations/triggers/{triggerEventId}/fire',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to fire',\n isRequired: true,\n },\n ],\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli automations triggers fire tri_signup --input '{\"payload\":{\"email\":\"jane@example.com\"}}' --yes`,\n ],\n confirmSummary: ({ args }) =>\n `Fire trigger ${args.triggerEventId ?? ''} — starts REAL runs on every published automation listening to it.`,\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required — the trigger payload JSON.')\n }\n // A bare object is sugar for the { payload } envelope the API takes.\n const body =\n typeof base === 'object' && base !== null && 'payload' in base\n ? (base as Record<string, unknown>)\n : { payload: base }\n const result = await ctx.client().automations.triggers.fire(\n asSdkInput<FireTriggerInput>({\n ...body,\n triggerEventId: args.triggerEventId ?? '',\n }),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\nimport { flagString } from '../../../lib/input'\n\nexport const automationsTriggersGetCommand = defineCommand({\n path: ['automations', 'triggers', 'get'],\n summary: 'Fetch one trigger by id — the bare row with its payload schema',\n sdkMethod: 'automations.triggers.get',\n route: { method: 'GET', path: '/v1/automations/triggers/{triggerEventId}' },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…, or an integration composite id)',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Expansions: skill (a SKILL.md-shaped wiring brief)',\n },\n ],\n examples: [\n 'brew-cli automations triggers get tri_signup',\n 'brew-cli automations triggers get tri_signup --include skill',\n ],\n run: async ({ ctx, args, flags }) => {\n const include = flagString(flags.include)\n return {\n data: await ctx\n .client()\n .automations.triggers.get(\n args.triggerEventId ?? '',\n include === undefined ? undefined : { include }\n ),\n }\n },\n})\n","import type { ListTriggersInput } from '@brew.new/sdk'\nimport { inputField, singleRowPage } from '../../../lib/compat'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const automationsTriggersListCommand = defineCommand({\n path: ['automations', 'triggers', 'list'],\n summary:\n 'List trigger events (their payload schemas drive fires); one trigger is `automations triggers get`',\n sdkMethod: 'automations.triggers.list',\n route: { method: 'GET', path: '/v1/automations/triggers' },\n commandClass: 'read',\n flags: [\n {\n flag: '--trigger <triggerEventId>',\n summary:\n '0.6 shim: read ONE trigger as a single-row page (`automations triggers get` is the real read)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations triggers list',\n 'brew-cli automations triggers list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const triggers = ctx.client().automations.triggers\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const triggerEventId =\n flagString(flags.trigger) ?? inputField(base, 'triggerEventId')\n if (triggerEventId !== undefined) {\n const row = await triggers.get(triggerEventId)\n return { data: singleRowPage(row), human: renderTriggers([row]) }\n }\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n triggers.list(\n asSdkInput<ListTriggersInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderTriggers(rows),\n }\n }\n const result = await triggers.list(asSdkInput<ListTriggersInput>(input))\n return { data: result, human: renderTriggers(result.data) }\n },\n})\n\nfunction renderTriggers(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No trigger events found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'triggerEventId', header: 'TRIGGER' },\n { key: 'title', header: 'TITLE' },\n { key: 'provider', header: 'PROVIDER' },\n ])\n}\n","import { defineCommand } from '../../../lib/define-command'\n\nexport const automationsTriggersReadyCommand = defineCommand({\n path: ['automations', 'triggers', 'ready'],\n summary:\n 'Preflight a trigger without firing: key + scope + permissions pass/fail, the payload contract, and what a fire would start',\n sdkMethod: 'automations.triggers.readiness',\n route: {\n method: 'GET',\n path: '/v1/automations/triggers/{triggerEventId}/readiness',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…, or an integration composite id)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations triggers ready tri_signup'],\n // 200 `ready: true` means the exact credential in use can fire this\n // trigger. A `NO_PUBLISHED_AUTOMATION` blocker with `ready: false` means\n // fires are accepted and logged but start no runs until a wired\n // automation is published — still a 200, because a probe has to say why.\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.triggers.readiness(args.triggerEventId ?? ''),\n }),\n})\n","import type { PatchTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\n\nexport const automationsTriggersUpdateCommand = defineCommand({\n path: ['automations', 'triggers', 'update'],\n summary: 'Update a trigger event (title, description, payload schema)',\n sdkMethod: 'automations.triggers.patch',\n route: {\n method: 'PATCH',\n path: '/v1/automations/triggers/{triggerEventId}',\n },\n commandClass: 'write',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to update',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--title <title>', summary: 'New title' },\n { flag: '--description <text>', summary: 'New description' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations triggers update tev_123 --title user.signup.v2',\n `brew-cli automations triggers update tev_123 --input '{\"payloadSchema\":{\"type\":\"object\",\"fields\":[]}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n title: flagString(flags.title),\n description: flagString(flags.description),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().automations.triggers.patch(\n asSdkInput<PatchTriggerInput>({\n ...input,\n triggerEventId: args.triggerEventId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const automationsUnpublishCommand = defineCommand({\n path: ['automations', 'unpublish'],\n summary: 'Unpublish an automation so new trigger fires no longer start runs',\n sdkMethod: 'automations.unpublish',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to unpublish',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations unpublish am_123'],\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.unpublish({ automationId: args.automationId ?? '' }),\n }),\n})\n","import type { PatchAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const automationsUpdateCommand = defineCommand({\n path: ['automations', 'update'],\n summary: 'Update automation metadata and/or its graph (PATCH)',\n sdkMethod: 'automations.patch',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to update',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--name <name>', summary: 'New name' },\n { flag: '--description <text>', summary: 'New description' },\n { flag: '--trigger <triggerEventId>', summary: 'New trigger event id' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations update am_123 --name \"Welcome flow v2\"',\n 'cat graph.json | brew-cli automations update am_123 --input -',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: flagString(flags.name),\n description: flagString(flags.description),\n triggerEventId: flagString(flags.trigger),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().automations.patch(\n asSdkInput<PatchAutomationInput>({\n ...input,\n automationId: args.automationId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const brandGetCommand = defineCommand({\n path: ['brand', 'get'],\n summary: \"Fetch the key's brand + extraction readiness (`ready` flag)\",\n sdkMethod: 'brand.get',\n route: { method: 'GET', path: '/v1/brand' },\n commandClass: 'read',\n flags: [\n {\n flag: '--include <tokens>',\n summary:\n 'Comma-separated embeds: identity | emailDesign | imageStyle | logos',\n },\n ],\n examples: [\n 'brew-cli brand get',\n 'brew-cli brand get --include identity,logos',\n ],\n run: async ({ ctx, flags }) => {\n const include = flagString(flags.include)\n const result = await ctx.client().brand.get({\n ...(include === undefined ? {} : { include }),\n })\n return { data: result }\n },\n})\n","import type { ListBrandImagesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const brandGetImagesCommand = defineCommand({\n path: ['brand', 'get-images'],\n summary: \"Browse or semantically search the brand's image library\",\n sdkMethod: 'brand.getImages',\n route: { method: 'GET', path: '/v1/brand/images' },\n commandClass: 'read',\n flags: [\n {\n flag: '--query <text>',\n summary: 'Semantic search over image descriptions',\n },\n { flag: '--type <type>', summary: 'Filter by image category' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'Filter by aspect ratio (e.g. 16:9)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli brand get-images',\n 'brew-cli brand get-images --query \"team photo\" --aspect-ratio 16:9',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n q: flagString(flags.query),\n type: flagString(flags.type),\n aspectRatio: flagString(flags.aspectRatio),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const brand = ctx.client().brand\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n brand.getImages(\n asSdkInput<ListBrandImagesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderImages(rows),\n }\n }\n const result = await brand.getImages(\n asSdkInput<ListBrandImagesInput>(input)\n )\n return { data: result, human: renderImages(result.data) }\n },\n})\n\nfunction renderImages(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No brand images found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'url', header: 'URL' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'aspectRatio', header: 'ASPECT' },\n ])\n}\n","import type { UpdateBrandInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const brandUpdateCommand = defineCommand({\n path: ['brand', 'update'],\n summary: 'Update brand identity and/or design-system markdown (PATCH)',\n sdkMethod: 'brand.patch',\n route: { method: 'PATCH', path: '/v1/brand' },\n commandClass: 'write',\n flags: [INPUT_FLAG],\n examples: [\n `brew-cli brand update --input '{\"identity\":{\"tagline\":\"Brew better email\"}}'`,\n 'cat brand-patch.json | brew-cli brand update --input -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {})\n if (Object.keys(input).length === 0) {\n throw new CliUsageError(\n '--input is required — at least one of identity, emailDesign, imageStyle.'\n )\n }\n const result = await ctx\n .client()\n .brand.patch(asSdkInput<UpdateBrandInput>(input))\n return { data: result }\n },\n})\n","import type { CreateBrandInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const brandsCreateCommand = defineCommand({\n path: ['brands', 'create'],\n summary:\n 'Create a brand and start async extraction (needs an ORGANIZATION-scoped key); poll `brands get` until ready',\n sdkMethod: 'brands.create',\n route: { method: 'POST', path: '/v1/brands' },\n commandClass: 'write',\n flags: [\n { flag: '--url <url>', summary: 'Website to extract the brand from' },\n {\n flag: '--instructions <text>',\n summary: 'Guidance for the extraction (tone sources, brand color, …)',\n },\n {\n flag: '--include-paths <paths...>',\n summary: 'Site path(s) the crawl must include, repeatable',\n },\n {\n flag: '--exclude-paths <paths...>',\n summary: 'Site path(s) the crawl must skip, repeatable',\n },\n {\n flag: '--exclude-subdomains <subdomains...>',\n summary: 'Subdomain(s) the crawl must skip, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli brands create --url acme.com',\n 'brew-cli brands create --url acme.com --instructions \"Primary brand color is the deep navy in the header\"',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n url: flagString(flags.url),\n instructions: flagString(flags.instructions),\n includePaths: toStringArray(flags.includePaths),\n excludePaths: toStringArray(flags.excludePaths),\n excludeSubdomains: toStringArray(flags.excludeSubdomains),\n })\n if (typeof input.url !== 'string' || input.url === '') {\n throw new CliUsageError('--url is required (or provide it via --input).')\n }\n return {\n data: await ctx\n .client()\n .brands.create(\n asSdkInput<CreateBrandInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const brandsGetCommand = defineCommand({\n path: ['brands', 'get'],\n summary: \"One brand's lifecycle state (the extraction polling endpoint)\",\n sdkMethod: 'brands.get',\n route: { method: 'GET', path: '/v1/brands/{brandId}' },\n commandClass: 'read',\n args: [{ name: 'brandId', summary: 'Brand id to fetch', isRequired: true }],\n examples: ['brew-cli brands get kx7b3s7fapqz8mjm12ekz1kxdx87yceg'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().brands.get({ brandId: args.brandId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const brandsListCommand = defineCommand({\n path: ['brands', 'list'],\n summary: 'List every brand in the organization',\n sdkMethod: 'brands.list',\n route: { method: 'GET', path: '/v1/brands' },\n commandClass: 'read',\n examples: ['brew-cli brands list --json'],\n run: async ({ ctx }) => ({\n data: await ctx.client().brands.list(),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const chatsGetCommand = defineCommand({\n path: ['chats', 'get'],\n summary: 'Brand-scoped digest of a Brew chat (artifacts + transcript tail)',\n sdkMethod: 'chats.get',\n route: { method: 'GET', path: '/v1/chats/{chatId}' },\n commandClass: 'read',\n args: [\n {\n name: 'chatId',\n summary: 'Brew chat id (from the chat URL / the app)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli chats get Hk2mZ8t9QbY3sW1vR0pLd'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().chats.get(args.chatId ?? ''),\n }),\n})\n","import { maskApiKey } from '../lib/client'\nimport {\n configPath,\n isConfigKey,\n readConfig,\n updateConfig,\n} from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport type { CliContext } from '../lib/types'\n\nconst SETTABLE_KEYS = ['brandId', 'apiUrl'] as const\n\nexport const configListCommand = defineCommand({\n path: ['config', 'list'],\n summary: 'Show the stored configuration (API key masked)',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli config list'],\n run: async ({ ctx }) => ({ data: maskedConfig(ctx) }),\n})\n\nexport const configGetCommand = defineCommand({\n path: ['config', 'get'],\n summary: 'Read one stored configuration value',\n sdkMethod: null,\n commandClass: 'read',\n args: [\n { name: 'key', summary: 'brandId | apiUrl | apiKey', isRequired: true },\n ],\n examples: ['brew-cli config get brandId'],\n run: async ({ ctx, args }) => {\n const key = requireKnownKey(args.key)\n const value = maskedConfig(ctx)[key] ?? null\n return { data: { [key]: value } }\n },\n})\n\nexport const configSetCommand = defineCommand({\n path: ['config', 'set'],\n summary: 'Store a configuration value (brandId or apiUrl)',\n sdkMethod: null,\n commandClass: 'write',\n args: [\n { name: 'key', summary: 'brandId | apiUrl', isRequired: true },\n { name: 'value', summary: 'The value to store', isRequired: true },\n ],\n examples: ['brew-cli config set brandId bd_123'],\n run: async ({ ctx, args }) => {\n const key = requireSettableKey(args.key)\n const value = args.value ?? ''\n if (value === '') {\n throw new CliUsageError('A non-empty value is required.')\n }\n const path = updateConfig(ctx.io.env, { [key]: value })\n return { data: { [key]: value, configPath: path } }\n },\n})\n\nexport const configUnsetCommand = defineCommand({\n path: ['config', 'unset'],\n summary: 'Remove a stored configuration value (brandId or apiUrl)',\n sdkMethod: null,\n commandClass: 'write',\n args: [{ name: 'key', summary: 'brandId | apiUrl', isRequired: true }],\n examples: ['brew-cli config unset brandId'],\n run: async ({ ctx, args }) => {\n const key = requireSettableKey(args.key)\n const path = updateConfig(ctx.io.env, { [key]: undefined })\n return { data: { [key]: null, configPath: path } }\n },\n})\n\nfunction maskedConfig(ctx: CliContext): Record<string, string | undefined> {\n const stored = readConfig(ctx.io.env)\n return {\n ...stored,\n ...(stored.apiKey === undefined\n ? {}\n : { apiKey: maskApiKey(stored.apiKey) }),\n configPath: configPath(ctx.io.env),\n }\n}\n\nfunction requireKnownKey(\n value: string | undefined\n): 'apiKey' | 'apiUrl' | 'brandId' {\n if (value !== undefined && isConfigKey(value)) {\n return value\n }\n throw new CliUsageError('Unknown key. Expected brandId, apiUrl, or apiKey.')\n}\n\nfunction requireSettableKey(value: string | undefined): 'apiUrl' | 'brandId' {\n if (value === 'apiKey') {\n throw new CliUsageError(\n 'The API key is managed by `brew-cli login` / `brew-cli logout`.'\n )\n }\n const key = requireKnownKey(value)\n if ((SETTABLE_KEYS as readonly string[]).includes(key)) {\n return key as 'apiUrl' | 'brandId'\n }\n throw new CliUsageError('Unknown key. Expected brandId or apiUrl.')\n}\n","import type { CountContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseFilterFlags,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const contactsCountCommand = defineCommand({\n path: ['contacts', 'count'],\n summary: 'Count contacts matching a filter',\n sdkMethod: 'contacts.count',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n flags: [\n { flag: '--search <text>', summary: 'Free-text search' },\n {\n flag: '--filter <filters...>',\n summary: 'Structured filter field:operator[:value], repeatable',\n },\n { flag: '--audience <audienceId>', summary: 'Scope to one audience' },\n { flag: '--logic <logic>', summary: 'Filter combinator: and | or' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts count',\n 'brew-cli contacts count --filter subscribed:equals:true',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n search: flagString(flags.search),\n filters: parseFilterFlags(flags.filter),\n audienceId: flagString(flags.audience),\n logic: flagString(flags.logic),\n })\n return {\n data: await ctx\n .client()\n .contacts.count(asSdkInput<CountContactsInput>(input)),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const contactsDeleteCommand = defineCommand({\n path: ['contacts', 'delete'],\n summary: 'Delete one contact by email (idempotent)',\n sdkMethod: 'contacts.delete',\n route: { method: 'DELETE', path: '/v1/contacts/{email}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli contacts delete jane@example.com --yes'],\n confirmSummary: ({ args }) =>\n `Delete contact ${args.email ?? ''} from the active brand. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().contacts.delete({ email: args.email ?? '' }),\n }),\n})\n","import type { DeleteManyContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsDeleteManyCommand = defineCommand({\n path: ['contacts', 'delete-many'],\n summary: 'Delete up to 1000 contacts by email',\n sdkMethod: 'contacts.deleteMany',\n route: { method: 'POST', path: '/v1/contacts/batch-delete' },\n commandClass: 'destructive',\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli contacts delete-many --input '{\"emails\":[\"a@x.com\",\"b@x.com\"]}' --yes`,\n 'cat emails.json | brew-cli contacts delete-many --input - --yes',\n ],\n confirmSummary: ({ flags }) => {\n const count = inlineEmailCount(flags.input)\n return count === undefined\n ? 'Delete the contacts listed in --input. This cannot be undone.'\n : `Delete ${count} contact(s). This cannot be undone.`\n },\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required (JSON or - for stdin).')\n }\n const input = Array.isArray(base) ? { emails: base } : base\n const result = await ctx\n .client()\n .contacts.deleteMany(\n asSdkInput<DeleteManyContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n\nfunction inlineEmailCount(input: unknown): number | undefined {\n if (typeof input !== 'string' || input === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(input)\n if (Array.isArray(parsed)) {\n return parsed.length\n }\n if (\n parsed !== null &&\n typeof parsed === 'object' &&\n Array.isArray((parsed as { emails?: unknown }).emails)\n ) {\n return (parsed as { emails: unknown[] }).emails.length\n }\n } catch {}\n}\n","import { defineCommand } from '../../lib/define-command'\n\nexport const contactsGetCommand = defineCommand({\n path: ['contacts', 'get'],\n summary: 'Fetch one contact by email — the bare row',\n sdkMethod: 'contacts.get',\n route: { method: 'GET', path: '/v1/contacts/{email}' },\n commandClass: 'read',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact (the contact primary key)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli contacts get jane@example.com'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().contacts.get(args.email ?? ''),\n }),\n})\n","import type { ContactsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n parseKeyValues,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\ntype ImportCsvContactsInput = Parameters<ContactsResource['importCsv']>[0]\n\nexport const contactsImportCsvCommand = defineCommand({\n path: ['contacts', 'import-csv'],\n summary: 'Bulk-import contacts from a CSV file or stdin',\n sdkMethod: 'contacts.importCsv',\n route: { method: 'POST', path: '/v1/contacts/import-csv' },\n commandClass: 'write',\n flags: [\n { flag: '--file <path>', summary: 'CSV file to import, or - for stdin' },\n {\n flag: '--mapping <pairs...>',\n summary: 'Column mapping csvColumn=fieldName, repeatable',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts import-csv --file contacts.csv',\n 'cat contacts.csv | brew-cli contacts import-csv --file - --mapping Email=email',\n ],\n run: async ({ ctx, flags }) => {\n const csv = await readTextFlag(ctx, flags.file, '--file')\n if (csv === undefined || csv.trim() === '') {\n throw new CliUsageError(\n '--file is required (a CSV path, or - for stdin).'\n )\n }\n const mapping = parseKeyValues(flags.mapping, '--mapping')\n const result = await ctx.client().contacts.importCsv(\n asSdkInput<ImportCsvContactsInput>({\n csv,\n ...(mapping === undefined ? {} : { mapping }),\n }),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ListContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const contactsListCommand = defineCommand({\n path: ['contacts', 'list'],\n summary:\n 'List contacts, newest first — free-text search and one audience; typed clauses are `contacts search`',\n sdkMethod: 'contacts.list',\n route: { method: 'GET', path: '/v1/contacts' },\n commandClass: 'read',\n flags: [\n { flag: '--search <text>', summary: 'Free-text search' },\n {\n flag: '--audience <audienceId>',\n summary: 'Only members of this saved audience',\n },\n {\n flag: '--sort <field>',\n summary: 'Any core column or custom field (default createdAt)',\n },\n { flag: '--order <order>', summary: 'Sort order: asc | desc' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts list --limit 20',\n 'brew-cli contacts list --audience aud_3k9sQ --all --json',\n 'brew-cli contacts list --search acme --sort email --order asc',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n search: flagString(flags.search),\n audienceId: flagString(flags.audience),\n sort: flagString(flags.sort),\n order: flagString(flags.order),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const contacts = ctx.client().contacts\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n contacts.list(\n asSdkInput<ListContactsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderContacts(rows),\n }\n }\n const result = await contacts.list(asSdkInput<ListContactsInput>(input))\n return { data: result, human: renderContacts(result.data) }\n },\n})\n\nfunction renderContacts(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No contacts found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'email', header: 'EMAIL' },\n { key: 'firstName', header: 'FIRST' },\n { key: 'lastName', header: 'LAST' },\n { key: 'subscribed', header: 'SUBSCRIBED' },\n ])\n}\n","import type { SearchContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseFilterFlags,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const contactsSearchCommand = defineCommand({\n path: ['contacts', 'search'],\n summary: 'Search contacts with structured filters (the contacts read)',\n sdkMethod: 'contacts.search',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n flags: [\n { flag: '--search <text>', summary: 'Free-text search' },\n {\n flag: '--filter <filters...>',\n summary: 'Structured filter field:operator[:value], repeatable',\n },\n { flag: '--audience <audienceId>', summary: 'Scope to one audience' },\n { flag: '--logic <logic>', summary: 'Filter combinator: and | or' },\n { flag: '--sort <field>', summary: 'Sort field' },\n { flag: '--order <order>', summary: 'Sort order: asc | desc' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts search --filter email:equals:jane@example.com',\n 'brew-cli contacts search --search jane --limit 10',\n 'brew-cli contacts search --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n search: flagString(flags.search),\n filters: parseFilterFlags(flags.filter),\n audienceId: flagString(flags.audience),\n logic: flagString(flags.logic),\n sort: flagString(flags.sort),\n order: flagString(flags.order),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const contacts = ctx.client().contacts\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n contacts.search(\n asSdkInput<SearchContactsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderContacts(rows),\n }\n }\n const result = await contacts.search(asSdkInput<SearchContactsInput>(input))\n return { data: result, human: renderContacts(result.data) }\n },\n})\n\nfunction renderContacts(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No contacts matched.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'email', header: 'EMAIL' },\n { key: 'firstName', header: 'FIRST' },\n { key: 'lastName', header: 'LAST' },\n { key: 'subscribed', header: 'SUBSCRIBED' },\n ])\n}\n","import type { PatchContactInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseKeyValues,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const contactsUpdateCommand = defineCommand({\n path: ['contacts', 'update'],\n summary: 'Partially update one contact (PATCH; never retried)',\n sdkMethod: 'contacts.patch',\n route: { method: 'PATCH', path: '/v1/contacts/{email}' },\n commandClass: 'write',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--first-name <name>', summary: 'First name' },\n { flag: '--last-name <name>', summary: 'Last name' },\n {\n flag: '--subscribed <bool>',\n summary: 'Subscription state: true | false',\n },\n { flag: '--set <pairs...>', summary: 'Field key=value, repeatable' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts update jane@example.com --first-name Jane',\n 'brew-cli contacts update j@x.com --set plan=enterprise',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const fields = mergeInput(base, {\n firstName: flagString(flags.firstName),\n lastName: flagString(flags.lastName),\n subscribed: parseBool(flags.subscribed),\n ...(parseKeyValues(flags.set, '--set') ?? {}),\n })\n if (Object.keys(fields).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().contacts.patch(\n asSdkInput<PatchContactInput>({\n email: args.email ?? '',\n fields,\n })\n )\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--subscribed must be true or false')\n}\n","import type { UpsertContactInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n parseKeyValues,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsUpsertCommand = defineCommand({\n path: ['contacts', 'upsert'],\n summary: 'Create or update one contact by email',\n sdkMethod: 'contacts.upsert',\n route: { method: 'POST', path: '/v1/contacts' },\n commandClass: 'write',\n flags: [\n { flag: '--email <email>', summary: 'Email address (the identity)' },\n { flag: '--first-name <name>', summary: 'First name' },\n { flag: '--last-name <name>', summary: 'Last name' },\n {\n flag: '--subscribed <bool>',\n summary: 'Subscription state: true | false',\n },\n {\n flag: '--custom <pairs...>',\n summary: 'Custom field key=value, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts upsert --email jane@example.com --first-name Jane',\n 'brew-cli contacts upsert --email j@x.com --custom plan=pro --custom seats=4',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n email: flagString(flags.email),\n firstName: flagString(flags.firstName),\n lastName: flagString(flags.lastName),\n subscribed: parseBool(flags.subscribed),\n customFields: parseKeyValues(flags.custom, '--custom'),\n })\n if (typeof input.email !== 'string' || input.email === '') {\n throw new CliUsageError('An email is required (--email or --input).')\n }\n const result = await ctx\n .client()\n .contacts.upsert(\n asSdkInput<UpsertContactInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--subscribed must be true or false')\n}\n","import type { UpsertManyContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsUpsertManyCommand = defineCommand({\n path: ['contacts', 'upsert-many'],\n summary: 'Create or update a batch of contacts (up to 100 per call)',\n sdkMethod: 'contacts.upsertMany',\n route: { method: 'POST', path: '/v1/contacts' },\n commandClass: 'write',\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli contacts upsert-many --input '{\"contacts\":[{\"email\":\"a@x.com\"}]}'`,\n 'cat contacts.json | brew-cli contacts upsert-many --input -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required (JSON or - for stdin).')\n }\n const input = Array.isArray(base) ? { contacts: base } : base\n const result = await ctx\n .client()\n .contacts.upsertMany(\n asSdkInput<UpsertManyContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContactsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\ntype ValidateContactsInput = Parameters<ContactsResource['validate']>[0]\n\nexport const contactsValidateCommand = defineCommand({\n path: ['contacts', 'validate'],\n summary: 'Batch-validate email deliverability (no contacts created)',\n sdkMethod: 'contacts.validate',\n route: { method: 'POST', path: '/v1/contacts/validate' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--emails <emails...>',\n summary: 'Email address(es) to validate, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts validate --emails jane@example.com bob@example.com',\n `brew-cli contacts validate --input '{\"emails\":[\"jane@example.com\"]}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const fromFlags = toStringArray(flags.emails)\n const input =\n fromFlags === undefined\n ? Array.isArray(base)\n ? { emails: base }\n : base\n : { emails: fromFlags }\n if (input === undefined) {\n throw new CliUsageError('Pass --emails or --input.')\n }\n const result = await ctx\n .client()\n .contacts.validate(\n asSdkInput<ValidateContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentAddImageRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentAddImageCommand = defineCommand({\n path: ['content', 'add-image'],\n summary: 'Mirror an external image onto Brew-hosted storage',\n sdkMethod: 'content.addImage',\n route: { method: 'POST', path: '/v1/content/add-image' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--url <url>', summary: 'Image URL to mirror' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content add-image --url https://cdn.example.com/logo.png',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n imageUrl: flagString(flags.url),\n })\n if (typeof input.imageUrl !== 'string' || input.imageUrl === '') {\n throw new CliUsageError('An image URL is required (--url or --input).')\n }\n const result = await ctx\n .client()\n .content.addImage(\n asSdkInput<ContentAddImageRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentGenerateImageRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentGenerateImageCommand = defineCommand({\n path: ['content', 'generate-image'],\n summary: 'Generate or edit an image from a prompt',\n sdkMethod: 'content.generateImage',\n route: { method: 'POST', path: '/v1/content/generate-image' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--prompt <text>', summary: 'What to generate' },\n { flag: '--mode <mode>', summary: 'text-to-image | image-editing' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'e.g. 16:9, 3:2, 1:1, 9:16',\n },\n { flag: '--model <model>', summary: 'Image model override' },\n { flag: '--image1 <url>', summary: 'Source image for image-editing' },\n {\n flag: '--image2 <url>',\n summary: 'Second source image for image-editing',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content generate-image --prompt \"hero shot of a ceramic mug\" --aspect-ratio 16:9',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n mode: flagString(flags.mode),\n aspectRatio: flagString(flags.aspectRatio),\n model: flagString(flags.model),\n image1: flagString(flags.image1),\n image2: flagString(flags.image2),\n })\n if (typeof input.prompt !== 'string' || input.prompt === '') {\n throw new CliUsageError('A prompt is required (--prompt or --input).')\n }\n const result = await ctx\n .client()\n .content.generateImage(\n asSdkInput<ContentGenerateImageRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentGifRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentGifCommand = defineCommand({\n path: ['content', 'gif'],\n summary: 'Create an animated GIF from a prompt, image, or video',\n sdkMethod: 'content.gif',\n route: { method: 'POST', path: '/v1/content/gif' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--from <source>', summary: 'prompt | image | video' },\n { flag: '--prompt <text>', summary: 'What to animate' },\n { flag: '--image-url <url>', summary: 'Source image (from: image)' },\n { flag: '--video-url <url>', summary: 'Source video (from: video)' },\n { flag: '--duration <seconds>', summary: 'Clip duration in seconds' },\n { flag: '--fps <n>', summary: 'Frames per second' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'e.g. 16:9, 1:1, 9:16',\n },\n { flag: '--loop <bool>', summary: 'Loop the GIF: true | false' },\n { flag: '--width <n>', summary: 'Output width (from: video)' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content gif --prompt \"steam rising from a coffee cup\"',\n 'brew-cli content gif --image-url https://cdn.example.com/mug.png --prompt \"gentle zoom\"',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.from),\n prompt: flagString(flags.prompt),\n imageUrl: flagString(flags.imageUrl),\n videoUrl: flagString(flags.videoUrl),\n duration: flagNumber(flags.duration, '--duration'),\n fps: flagInt(flags.fps, '--fps'),\n aspectRatio: flagString(flags.aspectRatio),\n loop: parseBool(flags.loop),\n width: flagInt(flags.width, '--width'),\n })\n // The API requires the `from` discriminator; infer it from the source\n // that was provided so the obvious invocations just work.\n if (input.from === undefined) {\n if (typeof input.videoUrl === 'string') {\n input.from = 'video'\n } else if (typeof input.imageUrl === 'string') {\n input.from = 'image'\n } else if (typeof input.prompt === 'string') {\n input.from = 'prompt'\n }\n }\n if (input.from === undefined) {\n throw new CliUsageError(\n 'Pass --prompt, --image-url, or --video-url (or --input).'\n )\n }\n const result = await ctx\n .client()\n .content.gif(asSdkInput<ContentGifRequest>(input), requestOptions(flags))\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--loop must be true or false')\n}\n\nfunction flagNumber(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return\n }\n const parsed = Number(value)\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new CliUsageError(`${flagName} must be a positive number`)\n }\n return parsed\n}\n","import type { ContentHtmlToPngRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentHtmlToPngCommand = defineCommand({\n path: ['content', 'html-to-png'],\n summary: 'Render HTML to a hosted PNG',\n sdkMethod: 'content.htmlToPng',\n route: { method: 'POST', path: '/v1/content/html-to-png' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--file <path>',\n summary: 'HTML file to render, or - for stdin',\n },\n { flag: '--width <n>', summary: 'Viewport width in pixels' },\n { flag: '--max-height <n>', summary: 'Clip the render at this height' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content html-to-png --file email.html --width 600',\n 'cat snippet.html | brew-cli content html-to-png --file -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const html = await readTextFlag(ctx, flags.file, '--file')\n const input = mergeInput(base, {\n html,\n width: flagInt(flags.width, '--width'),\n maxHeight: flagInt(flags.maxHeight, '--max-height'),\n })\n if (typeof input.html !== 'string' || input.html === '') {\n throw new CliUsageError('HTML is required (--file <path|-> or --input).')\n }\n const result = await ctx\n .client()\n .content.htmlToPng(\n asSdkInput<ContentHtmlToPngRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentTransformRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentTransformCommand = defineCommand({\n path: ['content', 'transform'],\n summary: 'Optimize or resize a hosted image',\n sdkMethod: 'content.transform',\n route: { method: 'POST', path: '/v1/content/transform' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--url <url>', summary: 'Image URL to transform' },\n {\n flag: '--operation <op>',\n summary: 'optimize | resize (default: optimize)',\n },\n { flag: '--width <n>', summary: 'Target width (resize)' },\n { flag: '--height <n>', summary: 'Target height (resize)' },\n { flag: '--prompt <text>', summary: 'Guidance for the resize' },\n { flag: '--resolution <res>', summary: '1K | 2K | 4K (resize)' },\n {\n flag: '--output-format <format>',\n summary: 'png | jpeg | webp (resize)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content transform --url https://cdn.example.com/hero.png',\n 'brew-cli content transform --url https://cdn.example.com/hero.png --operation resize --width 1200 --height 630',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n operation: flagString(flags.operation),\n imageUrl: flagString(flags.url),\n width: flagInt(flags.width, '--width'),\n height: flagInt(flags.height, '--height'),\n prompt: flagString(flags.prompt),\n resolution: flagString(flags.resolution),\n outputFormat: flagString(flags.outputFormat),\n })\n if (typeof input.imageUrl !== 'string' || input.imageUrl === '') {\n throw new CliUsageError('An image URL is required (--url or --input).')\n }\n // The API requires the `operation` discriminator. Resize knobs imply\n // resize; the bare-URL case defaults to optimize (which accepts no\n // other fields on the strict schema).\n if (input.operation === undefined) {\n const hasResizeKnobs = [\n input.width,\n input.height,\n input.prompt,\n input.resolution,\n input.outputFormat,\n ].some((value) => value !== undefined)\n input.operation = hasResizeKnobs ? 'resize' : 'optimize'\n }\n const result = await ctx\n .client()\n .content.transform(\n asSdkInput<ContentTransformRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { components } from '../../generated/openapi-types'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { INPUT_FLAG, mergeInput, readJsonFlag } from '../../lib/input'\nimport { rawRequest } from '../../lib/raw-request'\n\ntype ContractInferResponse =\n components['schemas']['PayloadContractInferResponse']\n\nexport const contractsInferCommand = defineCommand({\n path: ['contracts', 'infer'],\n summary:\n 'Draft a payload contract from a real example payload — nothing is saved; PUT the draft on a trigger',\n sdkMethod: null,\n isRawTransport: true,\n route: { method: 'POST', path: '/v1/payload-contracts/infer' },\n commandClass: 'read',\n flags: [INPUT_FLAG],\n examples: [\n `brew-cli contracts infer --input '{\"email\":\"jane@example.com\",\"order\":{\"total\":9.5}}'`,\n ],\n // Accepts either the bare example object or `{ example: {...} }`.\n // Un-inferable spots (nulls, empty arrays) come back under `issues`.\n run: async ({ ctx, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n const example = input.example ?? input\n if (\n typeof example !== 'object' ||\n example === null ||\n Array.isArray(example) ||\n Object.keys(example).length === 0\n ) {\n throw new CliUsageError(\n '--input with a non-empty example object is required (the JSON your system sends).'\n )\n }\n const body = await rawRequest<ContractInferResponse>(ctx, {\n method: 'POST',\n path: '/v1/payload-contracts/infer',\n body: { example },\n })\n return { data: body }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\n/**\n * `brew-cli data run '<command>'` — the unified `db …` surface over the\n * brand's data (POST /v1/data): find/agg with --since/--until time\n * ranges + policy-gated writes, composable with jq/grep/sort pipes\n * inside the sandbox. Start with `db ls` and `db schema <table>`.\n *\n * A failed COMMAND is a normal HTTP 200 with `exitCode !== 0` and the\n * message in `output` — the command prints it and exits non-zero so\n * shell scripts compose.\n */\nexport const dataRunCommand = defineCommand({\n path: ['data', 'run'],\n summary: \"Run a `db …` command over the brand's data\",\n sdkMethod: 'data.run',\n route: { method: 'POST', path: '/v1/data' },\n commandClass: 'read',\n args: [\n {\n name: 'command',\n summary: \"The db command line, e.g. 'db find audiences --fields name'\",\n isRequired: true,\n },\n ],\n flags: [],\n examples: [\n \"brew-cli data run 'db ls'\",\n \"brew-cli data run 'db find contacts --since 30d --fields email --limit 20'\",\n \"brew-cli data run 'db agg analyticsEvents --since 7d --group-by eventType --bucket day'\",\n ],\n run: async ({ ctx, args }) => {\n const result = await ctx.client().data.run({\n command: args.command ?? '',\n })\n return {\n data: result,\n human: result.output,\n exitCode: result.exitCode === 0 ? 0 : 1,\n }\n },\n})\n","import type { HttpMethod } from './lib/define-command'\n\n/**\n * The two parity sentinels read these lists. Every entry is a deliberate,\n * reviewed decision — parity tests fail on anything unaccounted for, and\n * on entries that go stale (e.g. after an SDK upgrade closes a gap).\n */\n\nexport type SdkSkip = {\n /** Dotted SDK client path, e.g. `contacts.searchAll`. */\n readonly sdkPath: string\n readonly reason: string\n}\n\nexport type SpecSkip = {\n readonly method: HttpMethod\n readonly path: string\n readonly reason: string\n}\n\n/** SDK methods that intentionally have no dedicated CLI command. */\nexport const SDK_SKIP_LIST: readonly SdkSkip[] = [\n {\n sdkPath: 'automations.triggers.getContract',\n reason:\n 'covered by `automations triggers contract get` (raw route, bound pre-SDK-v9; SDK-method migration tracked separately)',\n },\n {\n sdkPath: 'automations.triggers.putContract',\n reason:\n 'covered by `automations triggers contract put` (raw route, bound pre-SDK-v9)',\n },\n {\n sdkPath: 'automations.triggers.validatePayload',\n reason:\n 'covered by `automations triggers contract validate` (raw route, bound pre-SDK-v9)',\n },\n {\n sdkPath: 'payloadContracts.infer',\n reason: 'covered by `contracts infer` (raw route, bound pre-SDK-v9)',\n },\n {\n sdkPath: 'contacts.searchAll',\n reason: 'auto-pager covered by `contacts search --all`',\n },\n {\n sdkPath: 'analytics.eventsAll',\n reason: 'auto-pager covered by `analytics events --all`',\n },\n {\n sdkPath: 'sends.listAll',\n reason: 'auto-pager covered by `sends list --all`',\n },\n {\n sdkPath: 'automations.triggerInstances.listAll',\n reason: 'auto-pager covered by `automations trigger-instances list --all`',\n },\n {\n sdkPath: 'brand.update',\n reason: 'SDK alias of brand.patch, exposed as `brand update`',\n },\n {\n sdkPath: 'withBrand',\n reason:\n 'client scoping helper activated by the global `--brand`; not an API command',\n },\n]\n\n/**\n * Spec operations with no CLI command yet. Kept exact: the parity test\n * fails if one of these gains SDK support without gaining a command.\n *\n * Empty as of 0.7.0: every v1 operation is bound, including the detail\n * reads, the sends root, trigger instances, trigger readiness, and the\n * run/audience-run lifecycle actions. 0.8.0 keeps it empty by binding the\n * saved-audit, rendering-job and template reads as raw routes ahead of\n * SDK 11.\n */\nexport const SPEC_SKIP_LIST: readonly SpecSkip[] = []\n","import { ALL_COMMANDS } from '../registry'\nimport { SDK_SKIP_LIST, SPEC_SKIP_LIST } from '../skip-list'\nimport { CLI_NAME, CLI_VERSION } from '../version'\nimport { GLOBAL_FLAGS } from './define-command'\n\n/**\n * The machine-readable surface contract printed by `brew-cli docs --agent`.\n * Additive-only: tests snapshot this shape, so removals or renames are\n * breaking changes by construction.\n */\nexport function buildManifest(): Record<string, unknown> {\n return {\n name: CLI_NAME,\n version: CLI_VERSION,\n baseUrlDefault: 'https://brew.new/api',\n env: {\n BREW_API_KEY: 'API key (overrides stored login; flags override both)',\n BREW_BRAND_ID: 'Brand id for organization-scoped keys',\n BREW_API_URL: 'API base URL',\n BREW_CLI_CONFIG_DIR: 'Config directory (default ~/.config/brew-cli)',\n },\n exitCodes: {\n '0': 'success',\n '1': 'API or runtime error',\n '2': 'usage error',\n '3': 'authentication error',\n '4': 'confirmation required (re-run with --yes)',\n },\n confirmationProtocol: {\n exitCode: 4,\n envelope: [\n 'confirmationRequired',\n 'command',\n 'summary',\n 'confirmCommand',\n ],\n override: '--yes',\n },\n globalFlags: GLOBAL_FLAGS.map((flag) => ({\n flag: flag.flag,\n summary: flag.summary,\n })),\n commands: ALL_COMMANDS.map((spec) => ({\n command: [CLI_NAME, ...spec.path].join(' '),\n summary: spec.summary,\n class: spec.commandClass,\n ...(spec.isCredited === true ? { credited: true } : {}),\n sdkMethod: spec.sdkMethod,\n ...(spec.isRawTransport === true ? { transport: 'raw' } : {}),\n ...(spec.derivedFrom === undefined\n ? {}\n : { derivedFrom: spec.derivedFrom }),\n ...(spec.route === undefined\n ? {}\n : { route: `${spec.route.method} ${spec.route.path}` }),\n args: (spec.args ?? []).map((arg) => ({\n name: arg.name,\n summary: arg.summary,\n required: arg.isRequired,\n })),\n flags: (spec.flags ?? []).map((flag) => ({\n flag: flag.flag,\n summary: flag.summary,\n })),\n confirmation: spec.confirmSummary !== undefined,\n examples: spec.examples,\n })),\n skips: {\n sdk: SDK_SKIP_LIST,\n spec: SPEC_SKIP_LIST,\n },\n }\n}\n","import { defineCommand } from '../lib/define-command'\nimport { buildManifest } from '../lib/manifest'\n\nconst DOCS_POINTERS = {\n documentation: 'https://docs.brew.new',\n openapiSpec: 'https://brew.new/openapi/public-api-v1.yaml',\n agentGuide: 'https://brew.new/api/v1/llms.txt',\n apiCatalog: 'https://brew.new/api/v1/help',\n createApiKeys: 'https://brew.new/settings/api',\n}\n\nexport const docsCommand = defineCommand({\n path: ['docs'],\n summary: 'Documentation pointers; --agent prints the command manifest',\n sdkMethod: null,\n commandClass: 'read',\n flags: [\n {\n flag: '--agent',\n summary: 'Print the machine-readable manifest of every command',\n },\n ],\n examples: ['brew-cli docs', 'brew-cli docs --agent'],\n run: async ({ flags }) => {\n if (flags.agent === true) {\n return { data: buildManifest() }\n }\n return {\n data: DOCS_POINTERS,\n human: Object.entries(DOCS_POINTERS)\n .map(([key, url]) => `${key.padEnd(16)} ${url}`)\n .join('\\n'),\n }\n },\n})\n\nexport const docsApiCommand = defineCommand({\n path: ['docs', 'api'],\n summary: 'Fetch the live machine-readable API catalog (GET /v1/help)',\n sdkMethod: 'help.get',\n route: { method: 'GET', path: '/v1/help' },\n commandClass: 'read',\n examples: ['brew-cli docs api --json'],\n run: async ({ ctx }) => ({\n data: await ctx.client({ allowAnonymous: true }).help.get(),\n }),\n})\n","import { BrewApiError } from '@brew.new/sdk'\nimport { maskApiKey, resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { CliApiError } from '../lib/errors'\nimport { ALL_COMMANDS } from '../registry'\n\n/** Discovery endpoints without a dedicated command route. */\nconst NON_COMMAND_OPS = new Set(['GET /v1/llms.txt'])\n\nexport const doctorCommand = defineCommand({\n path: ['doctor'],\n summary:\n 'Trust check: auth, API reachability, and installed-CLI vs live-API drift',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli doctor', 'brew-cli doctor --json'],\n run: async ({ ctx }) => {\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n allowAnonymous: true,\n })\n const isKeyPresent = auth.apiKeySource !== 'anonymous'\n const anonymous = ctx.client({ allowAnonymous: true })\n\n let isReachable = false\n let apiVersion: string | null = null\n let reachabilityError: string | null = null\n try {\n const health = (await anonymous.health.get()) as {\n status?: string\n version?: string\n }\n isReachable = health.status === 'ok'\n apiVersion = health.version ?? null\n } catch (error) {\n reachabilityError = error instanceof Error ? error.message : String(error)\n }\n\n let isAuthValid: boolean | null = null\n let plan: string | null = null\n if (isKeyPresent && isReachable) {\n try {\n const usage = (await ctx.client().usage.get()) as {\n plan?: { key?: string }\n }\n isAuthValid = true\n plan = usage.plan?.key ?? null\n } catch (error) {\n if (\n (error instanceof BrewApiError || error instanceof CliApiError) &&\n (error.status === 401 || error.status === 403)\n ) {\n isAuthValid = false\n }\n // Other failures leave auth unknown; reachability already reported.\n }\n }\n\n let missingLocally: readonly string[] = []\n let extraLocally: readonly string[] = []\n let isSurfaceChecked = false\n if (isReachable) {\n try {\n const help = (await anonymous.help.get()) as {\n endpoints?: ReadonlyArray<{ method?: string; path?: string }>\n }\n const liveOps = new Set(\n (help.endpoints ?? [])\n .filter((e) => e.method !== undefined && e.path !== undefined)\n .map((e) => `${e.method} ${e.path}`)\n )\n const localOps = new Set(\n ALL_COMMANDS.flatMap((spec) =>\n spec.route === undefined\n ? []\n : [`${spec.route.method} ${spec.route.path}`]\n )\n )\n missingLocally = [...liveOps].filter(\n (op) => !(localOps.has(op) || NON_COMMAND_OPS.has(op))\n )\n extraLocally = [...localOps].filter((op) => !liveOps.has(op))\n isSurfaceChecked = true\n } catch {\n // /v1/help unavailable — surface check stays unperformed.\n }\n }\n\n const isHealthy =\n isReachable &&\n isAuthValid !== false &&\n isSurfaceChecked &&\n missingLocally.length === 0\n const data = {\n ok: isHealthy,\n apiUrl: auth.apiUrl,\n apiVersion,\n reachable: isReachable,\n ...(reachabilityError === null ? {} : { reachabilityError }),\n apiKey: isKeyPresent ? maskApiKey(auth.apiKey) : null,\n apiKeySource: isKeyPresent ? auth.apiKeySource : null,\n authValid: isAuthValid,\n plan,\n brandId: auth.brandId ?? null,\n surface: {\n checked: isSurfaceChecked,\n commands: ALL_COMMANDS.length,\n missingLocally,\n extraLocally,\n },\n }\n const lines = [\n `${isReachable ? 'ok' : 'FAIL'} api ${auth.apiUrl} (${apiVersion ?? 'unreachable'})`,\n isKeyPresent\n ? `${isAuthValid === false ? 'FAIL' : isAuthValid === true ? 'ok' : '??'} auth ${maskApiKey(auth.apiKey)} via ${auth.apiKeySource}${plan === null ? '' : ` (${plan} plan)`}`\n : '-- no API key (run `brew-cli login` or set BREW_API_KEY)',\n isSurfaceChecked\n ? missingLocally.length === 0\n ? `ok surface in sync (${ALL_COMMANDS.length} commands cover the live API)`\n : `DRIFT live API has ${missingLocally.length} operation(s) this CLI lacks — update @brew.new/cli:\\n${missingLocally.map((op) => ` ${op}`).join('\\n')}`\n : '-- surface not checked (API unreachable)',\n ...(extraLocally.length > 0\n ? [\n `note ${extraLocally.length} local command route(s) unknown to this server (server behind the CLI?)`,\n ]\n : []),\n ]\n return {\n data,\n human: lines.join('\\n'),\n exitCode: isHealthy ? 0 : 1,\n }\n },\n})\n","import type { AddDomainInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const domainsAddCommand = defineCommand({\n path: ['domains', 'add'],\n summary: 'Add a sending domain (response lists the DNS records to set)',\n sdkMethod: 'domains.add',\n route: { method: 'POST', path: '/v1/domains' },\n commandClass: 'write',\n args: [\n {\n name: 'domain',\n summary: 'Domain name to add (e.g. mail.example.com)',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--region <region>', summary: 'Sending region (us-east-1)' },\n {\n flag: '--custom-return-path <subdomain>',\n summary: 'Custom Return-Path subdomain',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli domains add mail.example.com'],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: args.domain,\n region: flagString(flags.region),\n customReturnPath: flagString(flags.customReturnPath),\n })\n const result = await ctx\n .client()\n .domains.add(asSdkInput<AddDomainInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsDeleteCommand = defineCommand({\n path: ['domains', 'delete'],\n summary: 'Delete a sending domain',\n sdkMethod: 'domains.delete',\n route: { method: 'DELETE', path: '/v1/domains/{domainId}' },\n commandClass: 'destructive',\n args: [\n { name: 'domainId', summary: 'Domain id to delete', isRequired: true },\n ],\n examples: ['brew-cli domains delete dom_8s1Kj --yes'],\n confirmSummary: ({ args }) =>\n `Delete sending domain ${args.domainId ?? ''}. Future sends from it will fail until it is re-added and re-verified. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.delete({ domainId: args.domainId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsGetCommand = defineCommand({\n path: ['domains', 'get'],\n summary: 'Fetch one sending domain by id — the bare row',\n sdkMethod: 'domains.get',\n route: { method: 'GET', path: '/v1/domains/{domainId}' },\n commandClass: 'read',\n args: [{ name: 'domainId', summary: 'Domain id to fetch', isRequired: true }],\n examples: ['brew-cli domains get dom_3k9sQ'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.get(args.domainId ?? ''),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsHealthCommand = defineCommand({\n path: ['domains', 'health'],\n summary: 'Deliverability health: verdict, signals, DNS/auth, reputation',\n sdkMethod: 'domains.health',\n route: { method: 'GET', path: '/v1/domains/{domainId}/health' },\n commandClass: 'read',\n args: [\n { name: 'domainId', summary: 'Domain id to inspect', isRequired: true },\n ],\n examples: ['brew-cli domains health kx7bkh53hasmfeh5kd7sqgykt187g8ww'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.health({\n domainId: args.domainId ?? '',\n }),\n }),\n})\n","import type { ListDomainsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const domainsListCommand = defineCommand({\n path: ['domains', 'list'],\n summary: 'List sending domains with verification state and DNS records',\n sdkMethod: 'domains.list',\n route: { method: 'GET', path: '/v1/domains' },\n commandClass: 'read',\n flags: [\n {\n flag: '--sendable-only',\n summary: 'Only domains currently able to send',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli domains list',\n 'brew-cli domains list --sendable-only --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n sendableOnly: flags.sendableOnly === true ? true : undefined,\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const domains = ctx.client().domains\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n domains.list(\n asSdkInput<ListDomainsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderDomains(rows),\n }\n }\n const result = await domains.list(asSdkInput<ListDomainsInput>(input))\n return { data: result, human: renderDomains(result.data) }\n },\n})\n\nfunction renderDomains(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No sending domains found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'domainId', header: 'DOMAIN ID' },\n { key: 'name', header: 'NAME' },\n { key: 'status', header: 'STATUS' },\n { key: 'sendable', header: 'SENDABLE' },\n ])\n}\n","import type { UpdateDomainSettingsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const domainsUpdateCommand = defineCommand({\n path: ['domains', 'update'],\n summary: 'Update default sender settings for a domain',\n sdkMethod: 'domains.updateSettings',\n route: { method: 'PATCH', path: '/v1/domains/{domainId}' },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Domain id to update', isRequired: true },\n ],\n flags: [\n {\n flag: '--default-sender-name <name>',\n summary: 'Default From display name',\n },\n {\n flag: '--default-from-email <email>',\n summary: 'Default From address on this domain',\n },\n {\n flag: '--default-reply-to-email <email>',\n summary: 'Default Reply-To address',\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli domains update dom_8s1Kj --default-sender-name \"Brew Coffee\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n defaultSenderName: flagString(flags.defaultSenderName),\n defaultFromEmail: flagString(flags.defaultFromEmail),\n defaultReplyToEmail: flagString(flags.defaultReplyToEmail),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().domains.updateSettings(\n asSdkInput<UpdateDomainSettingsInput>({\n ...input,\n domainId: args.domainId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsVerifyCommand = defineCommand({\n path: ['domains', 'verify'],\n summary: 'Re-check DNS records and refresh domain verification',\n sdkMethod: 'domains.verify',\n route: { method: 'POST', path: '/v1/domains/{domainId}/verify' },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Domain id to verify', isRequired: true },\n ],\n examples: ['brew-cli domains verify dom_8s1Kj'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.verify({ domainId: args.domainId ?? '' }),\n }),\n})\n","import {\n AUDIT_EMAIL_DEFAULT_TIMEOUT_MS,\n type AuditEmailInput,\n} from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nconst SENDING_PURPOSES = new Set(['marketing', 'transactional'])\n\nexport { AUDIT_EMAIL_DEFAULT_TIMEOUT_MS }\n\nfunction optionalText(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\nexport const emailsAuditCommand = defineCommand({\n path: ['emails', 'audit'],\n summary:\n 'Audit raw email content for production readiness (5 credits when complete)',\n sdkMethod: 'emails.auditEmail',\n route: { method: 'POST', path: '/v1/emails/audit' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--file <path>',\n summary: 'Email HTML file to audit, or - for stdin',\n },\n { flag: '--subject <text>', summary: 'Inbox subject line' },\n {\n flag: '--preview-text <text>',\n summary: 'Inbox preview text; an explicit empty value stays empty',\n },\n {\n flag: '--sending-purpose <purpose>',\n summary: 'marketing | transactional (default: marketing)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails audit --file newsletter.html --subject \"August update\" --sending-purpose marketing',\n 'cat email.html | brew-cli emails audit --file - --subject \"Receipt\" --sending-purpose transactional',\n `brew-cli emails audit --input '{\"emailHtml\":\"<p>Hello</p>\",\"subject\":\"Hello\"}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const emailHtml = await readTextFlag(ctx, flags.file, '--file')\n const sendingPurpose = flagString(flags.sendingPurpose)\n if (sendingPurpose !== undefined && !SENDING_PURPOSES.has(sendingPurpose)) {\n throw new CliUsageError(\n `Unknown --sending-purpose '${sendingPurpose}' (expected marketing | transactional).`\n )\n }\n const input = mergeInput(base, {\n emailHtml,\n subject: optionalText(flags.subject),\n previewText: optionalText(flags.previewText),\n sendingPurpose,\n })\n if (typeof input.emailHtml !== 'string' || input.emailHtml.trim() === '') {\n throw new CliUsageError(\n '--file is required (a path, or - for stdin), or emailHtml via --input.'\n )\n }\n const signal = AbortSignal.timeout(AUDIT_EMAIL_DEFAULT_TIMEOUT_MS)\n try {\n const result = await ctx\n .client()\n .emails.auditEmail(asSdkInput<AuditEmailInput>(input), {\n signal,\n ...(requestOptions(flags) ?? {}),\n })\n return { data: result }\n } catch (error) {\n if (signal.aborted) {\n throw signal.reason\n }\n throw error\n }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype CloneEmailInput = Parameters<BrewClient['emails']['clone']>[0]\n\nexport const emailsCloneCommand = defineCommand({\n path: ['emails', 'clone'],\n summary: 'Clone a design into a new one (exact snapshot copy, no AI)',\n sdkMethod: 'emails.clone',\n route: { method: 'POST', path: '/v1/emails/{emailId}/clone' },\n commandClass: 'write',\n args: [{ name: 'emailId', summary: 'Design id to clone', isRequired: true }],\n flags: [\n {\n flag: '--email-version-id <id>',\n summary: 'Exact source version to clone (default: latest)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails clone eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails clone eml_2SmZOWV3ZQ7W5x6g3m4p --email-version-id emv_9f2kX',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailVersionId = flagString(flags.emailVersionId)\n return {\n data: await ctx.client().emails.clone(\n asSdkInput<CloneEmailInput>({\n emailId: args.emailId ?? '',\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { CreateInboxPlacementTestInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const emailsCreateInboxPlacementTestCommand = defineCommand({\n path: ['emails', 'create-inbox-placement-test'],\n summary:\n 'Seed-test where the design lands (inbox vs spam) via a real small send (10 credits)',\n sdkMethod: 'emails.inboxPlacementTests.create',\n route: { method: 'POST', path: '/v1/emails/{emailId}/inbox-placement-tests' },\n commandClass: 'write',\n isCredited: true,\n args: [{ name: 'emailId', summary: 'Design id to test', isRequired: true }],\n flags: [\n {\n flag: '--domain <domainId>',\n summary: 'Verified sending domain id the seed send goes out on',\n },\n {\n flag: '--subject <text>',\n summary: 'Seed-send subject (default: the email title)',\n },\n {\n flag: '--preview-text <text>',\n summary: 'Preheader override for this test',\n },\n {\n flag: '--email-version-id <id>',\n summary: 'Pin a specific design version (default: latest)',\n },\n {\n flag: '--providers <domains...>',\n summary:\n 'Restrict seed mailbox providers, repeatable (e.g. gmail.com outlook.com)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails create-inbox-placement-test eml_2SmZOWV3ZQ7W5x6g3m4p --domain kx7bkh53hasmfeh5kd7sqgykt187g8ww',\n 'brew-cli emails create-inbox-placement-test eml_2SmZOWV3ZQ7W5x6g3m4p --domain kx7bkh53hasmfeh5kd7sqgykt187g8ww --subject \"Variant B\" --providers gmail.com outlook.com',\n ],\n run: async ({ ctx, args, flags }) => {\n const domainId = flagString(flags.domain)\n if (domainId === undefined) {\n throw new CliUsageError(\n '--domain is required (a verified sending domain id; see `brew-cli domains list`).'\n )\n }\n const subject = flagString(flags.subject)\n const previewText = flagString(flags.previewText)\n const emailVersionId = flagString(flags.emailVersionId)\n const providers = toStringArray(flags.providers)\n return {\n // The API answers 202 with a pending test (status: \"queued\"); poll\n // `emails get-inbox-placement-results --test-id` for the outcome.\n data: await ctx.client().emails.inboxPlacementTests.create(\n asSdkInput<CreateInboxPlacementTestInput>({\n emailId: args.emailId ?? '',\n domainId,\n ...(subject === undefined ? {} : { subject }),\n ...(previewText === undefined ? {} : { previewText }),\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n ...(providers === undefined ? {} : { providers }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const emailsDeleteCommand = defineCommand({\n path: ['emails', 'delete'],\n summary: 'Hard-delete an email design and all its versions (idempotent)',\n sdkMethod: 'emails.delete',\n route: { method: 'DELETE', path: '/v1/emails/{emailId}' },\n commandClass: 'destructive',\n args: [{ name: 'emailId', summary: 'Design id to delete', isRequired: true }],\n examples: ['brew-cli emails delete eml_2SmZOWV3ZQ7W5x6g3m4p --yes'],\n confirmSummary: ({ args }) =>\n `Hard-delete email design ${args.emailId ?? ''} and ALL its versions. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().emails.delete({ emailId: args.emailId ?? '' }),\n }),\n})\n","import type { EditEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n toStringArray,\n} from '../../lib/input'\nimport { progress } from '../../lib/output'\n\n/**\n * What a PATCH without a prompt changes in place: no AI run, no new version,\n * no credits. The API needs a prompt or at least one of these.\n */\nconst ENVELOPE_FIELDS = ['title', 'subjectLine', 'groupId'] as const\n\nfunction isText(value: unknown): boolean {\n return typeof value === 'string' && value !== ''\n}\n\nexport const emailsEditCommand = defineCommand({\n path: ['emails', 'edit'],\n summary:\n 'AI-edit an email design, and/or set its subject line, title or group (free without a prompt)',\n sdkMethod: 'emails.edit',\n route: { method: 'PATCH', path: '/v1/emails/{emailId}' },\n commandClass: 'write',\n isCredited: true,\n args: [{ name: 'emailId', summary: 'Design id to edit', isRequired: true }],\n flags: [\n { flag: '--prompt <text>', summary: 'The edit instruction' },\n {\n flag: '--email-version-id <id>',\n summary: 'Edit from a specific version (default: latest); needs --prompt',\n },\n {\n flag: '--content-urls <urls...>',\n summary: 'Page URL(s) to pull copy and imagery from, repeatable',\n },\n {\n flag: '--subject-line <text>',\n summary:\n \"The design's default inbox subject line; alone it skips the AI run\",\n },\n {\n flag: '--title <text>',\n summary: 'Rename the design (its canvas name); alone it skips the AI run',\n },\n {\n flag: '--group-id <groupId>',\n summary:\n 'Move the design into this existing group; alone it skips the AI run',\n },\n {\n flag: '--ungroup',\n summary: 'Move the design to Ungrouped (groupId: null)',\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --prompt \"Tighten the hero copy\"',\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --subject-line \"Your September roundup\"',\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --title \"Fall sale v2\" --group-id grp_7Hq2',\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --ungroup',\n ],\n run: async ({ ctx, args, flags }) => {\n const groupId = flagString(flags.groupId)\n if (groupId !== undefined && flags.ungroup === true) {\n throw new CliUsageError(\n '--group-id and --ungroup conflict: pick one group move.'\n )\n }\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n emailVersionId: flagString(flags.emailVersionId),\n contentUrls: toStringArray(flags.contentUrls),\n subjectLine: flagString(flags.subjectLine),\n title: flagString(flags.title),\n groupId: flags.ungroup === true ? null : groupId,\n })\n const isPromptEdit = isText(input.prompt)\n // `groupId: null` is a real value: it moves the design to Ungrouped.\n const envelope = ENVELOPE_FIELDS.filter(\n (field) =>\n isText(input[field]) || (field === 'groupId' && input[field] === null)\n )\n if (!isPromptEdit && envelope.length === 0) {\n throw new CliUsageError(\n 'Pass --prompt, or at least one of --subject-line, --title, --group-id or --ungroup (or those fields via --input).'\n )\n }\n // Without a prompt the patch is deterministic server-side: no AI run, no\n // new version, and no credits, so it returns immediately.\n progress(\n ctx,\n isPromptEdit\n ? 'Editing email… (typically 30-90s)'\n : envelope.length === 1 && envelope[0] === 'subjectLine'\n ? 'Setting the subject line…'\n : 'Updating the design (no AI run)…'\n )\n const result = await ctx\n .client()\n .emails.edit(\n asSdkInput<EditEmailInput>({ ...input, emailId: args.emailId ?? '' }),\n { timeoutMs: 240_000 }\n )\n return { data: result }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype ExportEmailInput = Parameters<BrewClient['emails']['export']>[0]\n\nexport const emailsExportCommand = defineCommand({\n path: ['emails', 'export'],\n summary: 'Export a design to a connected ESP as a template (not a send)',\n sdkMethod: 'emails.export',\n route: { method: 'POST', path: '/v1/emails/{emailId}/export' },\n commandClass: 'write',\n args: [{ name: 'emailId', summary: 'Design id to export', isRequired: true }],\n flags: [\n {\n flag: '--provider <provider>',\n summary:\n 'Connected ESP: braze, hubspot, klaviyo, mailchimp, iterable, postmark, onesignal, mailgun, sendgrid',\n },\n {\n flag: '--template-name <name>',\n summary: 'Template name in the ESP (default: the email title)',\n },\n {\n flag: '--dry-run',\n summary:\n 'Validate design, ownership, and ESP connection without creating a template',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails export eml_2SmZOWV3ZQ7W5x6g3m4p --provider klaviyo',\n 'brew-cli emails export eml_2SmZOWV3ZQ7W5x6g3m4p --provider mailchimp --template-name \"Fall sale\" --dry-run',\n ],\n run: async ({ ctx, args, flags }) => {\n const provider = flagString(flags.provider)\n if (provider === undefined) {\n throw new CliUsageError(\n '--provider is required: braze, hubspot, klaviyo, mailchimp, iterable, postmark, onesignal, mailgun, or sendgrid.'\n )\n }\n const templateName = flagString(flags.templateName)\n return {\n data: await ctx.client().emails.export(\n asSdkInput<ExportEmailInput>({\n emailId: args.emailId ?? '',\n provider,\n ...(templateName === undefined ? {} : { templateName }),\n // The spec field is snake_case, unlike the rest of the API surface.\n ...(flags.dryRun === true ? { dryRun: true } : {}),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { GenerateEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\nimport { progress } from '../../lib/output'\n\nexport const emailsGenerateCommand = defineCommand({\n path: ['emails', 'generate'],\n summary: 'Generate a new on-brand email design from a prompt',\n sdkMethod: 'emails.generate',\n route: { method: 'POST', path: '/v1/emails' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--prompt <text>', summary: 'What the email should be' },\n {\n flag: '--reference-email-id <emailId>',\n summary: 'Existing design or template to base the layout on',\n },\n {\n flag: '--content-urls <urls...>',\n summary: 'Page URL(s) to pull copy and imagery from, repeatable',\n },\n {\n flag: '--group-id <groupId>',\n summary: 'Destination group id; omit or use ungrouped for Ungrouped',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails generate --prompt \"Product-launch email for the fall sale\"',\n 'brew-cli emails generate --prompt \"Welcome email\" --group-id grp_welcome',\n 'brew-cli emails generate --prompt \"Welcome email\" --subject-line \"Welcome to Brew\"',\n 'brew-cli emails generate --prompt \"Welcome email\" --content-urls https://example.com/pricing',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n referenceEmailId: flagString(flags.referenceEmailId),\n contentUrls: toStringArray(flags.contentUrls),\n groupId: flagString(flags.groupId),\n subjectLine: flagString(flags.subjectLine),\n })\n if (typeof input.prompt !== 'string' || input.prompt === '') {\n throw new CliUsageError(\n '--prompt is required (or provide it via --input).'\n )\n }\n progress(ctx, 'Generating email… (typically 30-90s)')\n const result = await ctx\n .client()\n .emails.generate(asSdkInput<GenerateEmailInput>(input), {\n timeoutMs: 240_000,\n ...(requestOptions(flags) ?? {}),\n })\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const emailsGetCommand = defineCommand({\n path: ['emails', 'get'],\n summary: 'Fetch one email design by id — the bare row',\n sdkMethod: 'emails.get',\n route: { method: 'GET', path: '/v1/emails/{emailId}' },\n commandClass: 'read',\n args: [\n {\n name: 'emailId',\n summary: 'Design id returned by emails generate/import',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: html, versions',\n },\n ],\n examples: [\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p --include html,versions',\n ],\n run: async ({ ctx, args, flags }) => {\n const include = flagString(flags.include)\n return {\n data: await ctx\n .client()\n .emails.get(\n args.emailId ?? '',\n include === undefined ? undefined : { include }\n ),\n }\n },\n})\n","import type { operations } from '../../generated/openapi-types'\nimport { defineCommand } from '../../lib/define-command'\nimport { flagInt, flagString } from '../../lib/input'\nimport { CURSOR_FLAG, LIMIT_FLAG } from '../../lib/paginate'\nimport { rawRequest } from '../../lib/raw-request'\n\ntype EmailAuditPage =\n operations['getEmailAudit']['responses'][200]['content']['application/json']\n\n/**\n * A saved audit, read back by the `auditId` that `emails audit` returned.\n * Raw route because `@brew.new/sdk` 10 has no method for it: once the CLI\n * adopts SDK 11, bind `emails.getAudit(auditId, { cursor, limit })` here and\n * drop `isRawTransport`.\n */\nexport const emailsGetAuditCommand = defineCommand({\n path: ['emails', 'get-audit'],\n summary:\n 'Read a saved email audit: one page of its findings (free; never reruns the audit)',\n sdkMethod: null,\n isRawTransport: true,\n route: { method: 'GET', path: '/v1/emails/audits/{auditId}' },\n commandClass: 'read',\n args: [\n {\n name: 'auditId',\n summary: 'The auditId `emails audit` returned (reports are kept 7 days)',\n isRequired: true,\n },\n ],\n flags: [LIMIT_FLAG, CURSOR_FLAG],\n examples: [\n 'brew-cli emails get-audit 6f1e2d3c-4b5a-4c7d-8e9f-0a1b2c3d4e5f',\n 'brew-cli emails get-audit 6f1e2d3c-4b5a-4c7d-8e9f-0a1b2c3d4e5f --limit 20',\n ],\n // The next page is `--cursor <pagination.cursor>`; `pagination.hasMore`\n // says whether one exists.\n run: async ({ ctx, args, flags }) => {\n const limit = flagInt(flags.limit, '--limit')\n const body = await rawRequest<EmailAuditPage>(ctx, {\n method: 'GET',\n path: `/v1/emails/audits/${encodeURIComponent(args.auditId ?? '')}`,\n query: {\n cursor: flagString(flags.cursor),\n limit: limit === undefined ? undefined : String(limit),\n },\n })\n return { data: body }\n },\n})\n","import type { operations } from '../../generated/openapi-types'\nimport { defineCommand } from '../../lib/define-command'\nimport { rawRequest } from '../../lib/raw-request'\n\ntype EmailClientPreviewJob =\n operations['getEmailRendering']['responses'][200]['content']['application/json']\n\n/**\n * Polls the rendering job `emails preview-clients` starts. Raw route because\n * `@brew.new/sdk` 10 has no method for it: once the CLI adopts SDK 11, bind\n * `emails.getClientPreview(previewId)` here and drop `isRawTransport`.\n */\nexport const emailsGetClientPreviewCommand = defineCommand({\n path: ['emails', 'get-client-preview'],\n summary:\n 'Poll a client-preview rendering job: per-client screenshot links once it settles (free; never re-renders)',\n sdkMethod: null,\n isRawTransport: true,\n route: { method: 'GET', path: '/v1/emails/client-previews/{previewId}' },\n commandClass: 'read',\n args: [\n {\n name: 'previewId',\n summary: 'The previewId `emails preview-clients` returned',\n isRequired: true,\n },\n ],\n examples: [\n 'brew-cli emails get-client-preview prv_0b7f3c1e-9a2d-4e8b-b6c5-3d1f2a9e8c47',\n \"brew-cli emails get-client-preview prv_0b7f3c1e-9a2d-4e8b-b6c5-3d1f2a9e8c47 --json | jq '.previews[] | {label, status, imageUrl}'\",\n ],\n // While `status` is `queued` or `running`, poll again after\n // `nextPollAfterMs`. It settles as `completed`, `partially_completed` or\n // `failed`; each client then carries its `imageUrl`, or a `reason` and\n // whether it is `retryable`.\n run: async ({ ctx, args }) => {\n const body = await rawRequest<EmailClientPreviewJob>(ctx, {\n method: 'GET',\n path: `/v1/emails/client-previews/${encodeURIComponent(args.previewId ?? '')}`,\n })\n return { data: body }\n },\n})\n","import type { ListInboxPlacementTestsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { CURSOR_FLAG, LIMIT_FLAG } from '../../lib/paginate'\n\nexport const emailsGetInboxPlacementResultsCommand = defineCommand({\n path: ['emails', 'get-inbox-placement-results'],\n summary:\n 'Inbox placement results: the recent tests, or one test with --test-id',\n sdkMethod: 'emails.inboxPlacementTests.list',\n route: { method: 'GET', path: '/v1/emails/{emailId}/inbox-placement-tests' },\n commandClass: 'read',\n args: [\n {\n name: 'emailId',\n summary: 'Design id the tests ran on',\n isRequired: true,\n },\n ],\n flags: [\n {\n // The list no longer filters by test id: --test-id reads the real\n // detail route, the same one `emails inbox-placement-tests get` binds.\n flag: '--test-id <id>',\n summary:\n 'One test: live status + per-provider placement (re-poll ~30s until completed)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails get-inbox-placement-results eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails get-inbox-placement-results eml_2SmZOWV3ZQ7W5x6g3m4p --test-id ibp_2f1c9d8a',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailId = args.emailId ?? ''\n const testId = flagString(flags.testId)\n const inboxPlacementTests = ctx.client().emails.inboxPlacementTests\n if (testId !== undefined) {\n return { data: await inboxPlacementTests.get(emailId, testId) }\n }\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n emailId,\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n return {\n data: await inboxPlacementTests.list(\n asSdkInput<ListInboxPlacementTestsInput>(input)\n ),\n }\n },\n})\n","import type { CreateEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const emailsGroupsCreateCommand = defineCommand({\n path: ['emails', 'groups', 'create'],\n summary: 'Create a named email folder (group)',\n sdkMethod: 'emailGroups.create',\n route: { method: 'POST', path: '/v1/email-groups' },\n commandClass: 'write',\n flags: [\n {\n flag: '--name <name>',\n summary: 'Folder label, 1-60 chars (Ungrouped is reserved)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli emails groups create --name Welcome'],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n return {\n data: await ctx\n .client()\n .emailGroups.create(\n asSdkInput<CreateEmailGroupInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { DeleteEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput } from '../../../lib/input'\n\nexport const emailsGroupsDeleteCommand = defineCommand({\n path: ['emails', 'groups', 'delete'],\n summary: 'Delete an email folder (group); its emails move to Ungrouped',\n sdkMethod: 'emailGroups.delete',\n route: { method: 'DELETE', path: '/v1/email-groups/{groupId}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'groupId',\n summary: 'Named group id (grp_*); Ungrouped cannot be deleted',\n isRequired: true,\n },\n ],\n examples: ['brew-cli emails groups delete grp_welcome --yes'],\n confirmSummary: ({ args }) =>\n `Delete email group ${args.groupId ?? ''}. Its emails move to Ungrouped; the folder itself cannot be recovered.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .emailGroups.delete(\n asSdkInput<DeleteEmailGroupInput>({ groupId: args.groupId ?? '' })\n ),\n }),\n})\n","import { defineCommand } from '../../../lib/define-command'\n\nexport const emailsGroupsGetCommand = defineCommand({\n path: ['emails', 'groups', 'get'],\n summary: 'Fetch one email group by id — the bare row',\n sdkMethod: 'emailGroups.get',\n route: { method: 'GET', path: '/v1/email-groups/{groupId}' },\n commandClass: 'read',\n args: [\n {\n name: 'groupId',\n summary: 'Group id (`grp_…`, or the literal `ungrouped`)',\n isRequired: true,\n },\n ],\n examples: [\n 'brew-cli emails groups get grp_2f1c9d8a',\n 'brew-cli emails groups get ungrouped',\n ],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().emailGroups.get(args.groupId ?? ''),\n }),\n})\n","import type { ListEmailGroupsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const emailsGroupsListCommand = defineCommand({\n path: ['emails', 'groups', 'list'],\n summary: 'List email groups in display order, including Ungrouped',\n sdkMethod: 'emailGroups.list',\n route: { method: 'GET', path: '/v1/email-groups' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli emails groups list',\n 'brew-cli emails groups list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const fetchPage = (cursor: string | undefined) =>\n ctx.client().emailGroups.list(\n asSdkInput<ListEmailGroupsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n if (flags.all === true) {\n const rows = await collectAll(ctx, fetchPage)\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEmailGroups(rows),\n }\n }\n const result = await fetchPage(undefined)\n return { data: result, human: renderEmailGroups(result.data) }\n },\n})\n\nfunction renderEmailGroups(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No email groups found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'groupId', header: 'GROUP ID' },\n { key: 'groupName', header: 'GROUP' },\n ])\n}\n","import type { UpdateEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\n\nexport const emailsGroupsUpdateCommand = defineCommand({\n path: ['emails', 'groups', 'update'],\n summary: 'Rename an email folder (group)',\n sdkMethod: 'emailGroups.update',\n route: { method: 'PATCH', path: '/v1/email-groups/{groupId}' },\n commandClass: 'write',\n args: [\n {\n name: 'groupId',\n summary: 'Named group id (grp_*); Ungrouped cannot be renamed',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--name <name>', summary: 'New folder label, 1-60 chars' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails groups update grp_welcome --name \"Welcome series\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n return {\n data: await ctx.client().emailGroups.update(\n asSdkInput<UpdateEmailGroupInput>({\n ...input,\n groupId: args.groupId ?? '',\n })\n ),\n }\n },\n})\n","import type { EmailImportInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const emailsImportCommand = defineCommand({\n path: ['emails', 'import'],\n summary: 'Import existing HTML, MJML, or JSX as a new editable design',\n sdkMethod: 'emails.import',\n route: { method: 'POST', path: '/v1/emails/import' },\n commandClass: 'write',\n flags: [\n {\n flag: '--file <path>',\n summary: 'Source file to import, or - for stdin',\n },\n { flag: '--format <format>', summary: 'Source format: html | mjml | jsx' },\n { flag: '--title <title>', summary: 'Design title' },\n {\n flag: '--base-url <url>',\n summary: 'Base URL for resolving relative asset links',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails import --file newsletter.html --format html --title \"Legacy newsletter\"',\n 'brew-cli emails import --file newsletter.html --format html --subject-line \"This month at Brew\"',\n 'cat email.html | brew-cli emails import --file - --format html',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const content = await readTextFlag(ctx, flags.file, '--file')\n const input = mergeInput(base, {\n content,\n format: flagString(flags.format),\n title: flagString(flags.title),\n baseUrl: flagString(flags.baseUrl),\n subjectLine: flagString(flags.subjectLine),\n })\n if (typeof input.content !== 'string' || input.content.trim() === '') {\n throw new CliUsageError(\n '--file is required (a path, or - for stdin), or content via --input.'\n )\n }\n if (typeof input.format !== 'string') {\n throw new CliUsageError('--format is required: html | mjml | jsx.')\n }\n const result = await ctx\n .client()\n .emails.import(asSdkInput<EmailImportInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype ImportFigmaInput = Parameters<BrewClient['emails']['importFigma']>[0]\n\nexport const emailsImportFigmaCommand = defineCommand({\n path: ['emails', 'import-figma'],\n summary:\n 'Convert one Figma frame into an editable design (deterministic, free)',\n sdkMethod: 'emails.importFigma',\n route: { method: 'POST', path: '/v1/emails/figma' },\n commandClass: 'write',\n flags: [\n {\n flag: '--url <figmaUrl>',\n summary: 'Figma frame link; must include a node-id query parameter',\n },\n {\n flag: '--title <title>',\n summary: 'Design title (default: the Figma frame name)',\n },\n {\n flag: '--format <format>',\n summary: 'Representation returned in content: jsx (default) or html',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails import-figma --url \"https://www.figma.com/design/abc123/Launch?node-id=1-2\"',\n 'brew-cli emails import-figma --url \"https://www.figma.com/design/abc123/Launch?node-id=1-2\" --subject-line \"Launch day is here\"',\n ],\n run: async ({ ctx, flags }) => {\n const figmaUrl = flagString(flags.url)\n if (figmaUrl === undefined) {\n throw new CliUsageError(\n '--url is required (a Figma frame link containing node-id).'\n )\n }\n const title = flagString(flags.title)\n const format = flagString(flags.format)\n const subjectLine = flagString(flags.subjectLine)\n return {\n data: await ctx.client().emails.importFigma(\n asSdkInput<ImportFigmaInput>({\n figmaUrl,\n ...(title === undefined ? {} : { title }),\n ...(format === undefined ? {} : { format }),\n ...(subjectLine === undefined ? {} : { subjectLine }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\n\nexport const emailsInboxPlacementTestsGetCommand = defineCommand({\n path: ['emails', 'inbox-placement-tests', 'get'],\n summary:\n 'Fetch one inbox-placement (seed) test — the bare row, re-poll ~30s until completed',\n sdkMethod: 'emails.inboxPlacementTests.get',\n route: {\n method: 'GET',\n path: '/v1/emails/{emailId}/inbox-placement-tests/{testId}',\n },\n commandClass: 'read',\n args: [\n {\n name: 'emailId',\n summary: 'Design id the test ran on',\n isRequired: true,\n },\n {\n name: 'testId',\n summary: 'Test id returned by `emails create-inbox-placement-test`',\n isRequired: true,\n },\n ],\n examples: [\n 'brew-cli emails inbox-placement-tests get eml_2SmZOWV3ZQ7W5x6g3m4p ibp_2f1c9d8a',\n ],\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .emails.inboxPlacementTests.get(args.emailId ?? '', args.testId ?? ''),\n }),\n})\n","import type { ListEmailsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const emailsListCommand = defineCommand({\n path: ['emails', 'list'],\n summary: 'List email designs; one design is `emails get`',\n sdkMethod: 'emails.list',\n route: { method: 'GET', path: '/v1/emails' },\n commandClass: 'read',\n flags: [\n {\n flag: '--status <status>',\n summary: 'Filter by status: generating | ready | failed',\n },\n {\n flag: '--group-id <groupId>',\n summary: 'Filter by one group id; use ungrouped for no saved group',\n },\n {\n flag: '--sort-by <field>',\n summary:\n 'Timestamp the page is ordered by and that --since/--until bound: updatedAt (default) | createdAt',\n },\n {\n flag: '--since <iso>',\n summary: 'Inclusive lower bound on the --sort-by timestamp (ISO-8601)',\n },\n {\n flag: '--until <iso>',\n summary: 'Inclusive upper bound on the --sort-by timestamp (ISO-8601)',\n },\n { flag: '--sort <field>', summary: '0.6 alias of --sort-by' },\n {\n flag: '--order <order>',\n summary: '0.6 flag: pages are newest first; only desc is accepted',\n },\n {\n flag: '--created-at-from <iso>',\n summary: '0.6 alias of --sort-by createdAt --since <iso>',\n },\n {\n flag: '--created-at-to <iso>',\n summary: '0.6 alias of --sort-by createdAt --until <iso>',\n },\n {\n flag: '--updated-at-from <iso>',\n summary: '0.6 alias of --sort-by updatedAt --since <iso>',\n },\n {\n flag: '--updated-at-to <iso>',\n summary: '0.6 alias of --sort-by updatedAt --until <iso>',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails list --status ready --limit 10',\n 'brew-cli emails list --group-id ungrouped',\n 'brew-cli emails list --sort-by createdAt --since 2026-08-01T00:00:00Z',\n 'brew-cli emails list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const legacy = legacyWindow(\n flags,\n flagString(flags.sortBy) ?? flagString(flags.sort)\n )\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n status: flagString(flags.status),\n groupId: flagString(flags.groupId),\n sortBy:\n flagString(flags.sortBy) ?? flagString(flags.sort) ?? legacy.sortBy,\n from: flagString(flags.since) ?? legacy.from,\n to: flagString(flags.until) ?? legacy.to,\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const emails = ctx.client().emails\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n emails.list(\n asSdkInput<ListEmailsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEmails(rows),\n }\n }\n const result = await emails.list(asSdkInput<ListEmailsInput>(input))\n return { data: result, human: renderEmails(result.data) }\n },\n})\n\n/**\n * 0.6 took a window per column (`--created-at-from`, `--updated-at-to`, …)\n * plus `--sort`/`--order`; the API now orders by ONE `sortBy` timestamp that\n * `from`/`to` bound, newest first. Fold the released flags onto that.\n */\nfunction legacyWindow(\n flags: Readonly<Record<string, unknown>>,\n explicitSortBy: string | undefined\n): {\n readonly sortBy: string | undefined\n readonly from: string | undefined\n readonly to: string | undefined\n} {\n const order = flagString(flags.order)\n if (order !== undefined && order !== 'desc') {\n throw new CliUsageError(\n 'GET /v1/emails pages newest first only; --order asc has no equivalent.'\n )\n }\n const created = {\n from: flagString(flags.createdAtFrom),\n to: flagString(flags.createdAtTo),\n }\n const updated = {\n from: flagString(flags.updatedAtFrom),\n to: flagString(flags.updatedAtTo),\n }\n const hasCreated = created.from !== undefined || created.to !== undefined\n const hasUpdated = updated.from !== undefined || updated.to !== undefined\n if (hasCreated && hasUpdated) {\n throw new CliUsageError(\n 'The API bounds one timestamp per page: pass --created-at-* or --updated-at-*, not both (or --sort-by with --since/--until).'\n )\n }\n if (!(hasCreated || hasUpdated)) {\n return { sortBy: undefined, from: undefined, to: undefined }\n }\n // The bound rides the ordering timestamp, so a window on one column\n // cannot be paired with an explicit sort on the other: silently moving\n // the bound would include or drop rows the caller did not ask about.\n const column = hasCreated ? 'createdAt' : 'updatedAt'\n if (explicitSortBy !== undefined && explicitSortBy !== column) {\n const prefix = hasCreated ? '--created-at-*' : '--updated-at-*'\n throw new CliUsageError(\n `${prefix} bounds ${column}, but the page is ordered by ${explicitSortBy}; the API bounds the --sort-by timestamp only.`\n )\n }\n return { sortBy: column, ...(hasCreated ? created : updated) }\n}\n\nfunction renderEmails(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No email designs found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'emailId', header: 'EMAIL ID' },\n { key: 'title', header: 'TITLE' },\n { key: 'status', header: 'STATUS' },\n { key: 'groupName', header: 'GROUP' },\n { key: 'updatedAt', header: 'UPDATED' },\n ])\n}\n","import type { PreviewEmailClientsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\nimport { progress } from '../../lib/output'\n\nexport const emailsPreviewClientsCommand = defineCommand({\n path: ['emails', 'preview-clients'],\n summary:\n 'Start a rendering job across real email clients (10 credits); poll it with `emails get-client-preview`',\n sdkMethod: 'emails.previewClients',\n route: { method: 'POST', path: '/v1/emails/{emailId}/client-previews' },\n commandClass: 'write',\n isCredited: true,\n args: [\n { name: 'emailId', summary: 'Design id to preview', isRequired: true },\n ],\n flags: [\n {\n flag: '--clients <ids...>',\n summary:\n 'Client id(s) to render, repeatable (e.g. applemail16 iphone16_18); default: a popular spread',\n },\n {\n flag: '--email-version-id <id>',\n summary: 'Render this saved version (default: the latest)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails preview-clients eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails preview-clients eml_2SmZOWV3ZQ7W5x6g3m4p --clients applemail16 outlook2021_win11_lm_dt',\n 'PREVIEW_ID=$(brew-cli emails preview-clients eml_2SmZOWV3ZQ7W5x6g3m4p --json | jq -r .previewId) && brew-cli emails get-client-preview \"$PREVIEW_ID\"',\n ],\n // The API answers 202 with the admitted job (or 200 with the existing job\n // for the same version and clients): `previewId`, its `status` and\n // per-client progress. Screenshots arrive on the job once it settles, so\n // `emails get-client-preview <previewId>` is how they are read.\n run: async ({ ctx, args, flags }) => {\n const clients = toStringArray(flags.clients)\n const emailVersionId = flagString(flags.emailVersionId)\n // SDK 10 posts every field but `emailId` as the body, so the version\n // reaches the API before the SDK 11 input type names it.\n const job = await ctx.client().emails.previewClients(\n asSdkInput<PreviewEmailClientsInput>({\n emailId: args.emailId ?? '',\n ...(clients === undefined ? {} : { clients }),\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n }),\n requestOptions(flags)\n )\n const hint = pollHint(job)\n if (hint !== undefined) {\n progress(ctx, hint)\n }\n return { data: job }\n },\n})\n\n/**\n * `@brew.new/sdk` 10 still types this response as the old blocking batch\n * (no `previewId`, `ready | partial`), so the job fields are read\n * defensively until the CLI adopts SDK 11.\n */\nfunction pollHint(job: unknown): string | undefined {\n if (\n typeof job !== 'object' ||\n job === null ||\n !('previewId' in job) ||\n !('status' in job)\n ) {\n return\n }\n const { previewId, status } = job\n if (\n typeof previewId !== 'string' ||\n (status !== 'queued' && status !== 'running')\n ) {\n return\n }\n return `Rendering job ${previewId} is ${status}. Poll it with: brew-cli emails get-client-preview ${previewId}`\n}\n","import { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { flagString, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const emailsRestoreCommand = defineCommand({\n path: ['emails', 'restore'],\n summary: 'Restore a previous version as the new latest (non-destructive)',\n sdkMethod: 'emails.restore',\n route: { method: 'POST', path: '/v1/emails/{emailId}/restore' },\n commandClass: 'write',\n args: [\n { name: 'emailId', summary: 'Design id to restore', isRequired: true },\n ],\n // --version is taken by the CLI itself, hence --to-version.\n flags: [\n {\n flag: '--to-version <emailVersionId>',\n summary:\n 'Version id to restore (from `emails get <emailId> --include versions`)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails restore eml_2SmZOWV3ZQ7W5x6g3m4p --to-version emv_7Hq2',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailVersionId = flagString(flags.toVersion)\n if (emailVersionId === undefined) {\n throw new CliUsageError(\n '--to-version is required (a version id; see `brew-cli emails get <emailId> --include versions`).'\n )\n }\n const result = await ctx\n .client()\n .emails.restore(\n { emailId: args.emailId ?? '', emailVersionId },\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { SendEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const emailsSendCommand = defineCommand({\n path: ['emails', 'send'],\n summary: 'Send an email: a real campaign, or a safe test with --test',\n sdkMethod: 'emails.send',\n route: { method: 'POST', path: '/v1/sends' },\n commandClass: 'destructive',\n args: [{ name: 'emailId', summary: 'Design id to send', isRequired: true }],\n flags: [\n {\n flag: '--test',\n summary: 'Test delivery to --to only; skips the confirmation gate',\n },\n {\n flag: '--to <emails...>',\n summary: 'Recipient(s): required for --test, ad-hoc list for campaigns',\n },\n { flag: '--subject <text>', summary: 'Subject line' },\n { flag: '--audience <audienceId>', summary: 'Campaign audience segment' },\n { flag: '--domain <domainId>', summary: 'Verified sending domain id' },\n {\n flag: '--schedule-at <iso>',\n summary: 'Schedule the campaign for an ISO-8601 time (default: now)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails send eml_1 --test --to qa@example.com --subject \"Preview\"',\n 'brew-cli emails send eml_1 --subject \"Fall sale\" --domain dom_1 --audience aud_1 --yes',\n 'brew-cli emails send eml_1 --subject \"Fall sale\" --domain dom_1 --audience aud_1 --schedule-at 2026-09-01T09:00:00Z --yes',\n ],\n confirmSummary: ({ args, flags }) => {\n // The gate must describe the MERGED send, not just the flags — an\n // --input body can carry test/audienceId/to/scheduledAt on its own.\n const inline = parseInlineInput(flags.input)\n const isTest = flags.test === true || inline?.test === true\n if (isTest) {\n return\n }\n const audience = flagString(flags.audience) ?? asString(inline?.audienceId)\n const scheduleAt =\n flagString(flags.scheduleAt) ?? asString(inline?.scheduledAt)\n const recipients = toStringArray(flags.to) ?? asRecipients(inline?.to)\n const target =\n audience === undefined\n ? recipients === undefined\n ? flags.input === '-'\n ? 'the recipients named in the --input body on stdin'\n : 'its recipients'\n : `${recipients.length} listed recipient(s)`\n : `audience ${audience}`\n const timing = scheduleAt === undefined ? 'now' : `at ${scheduleAt}`\n return `Send email ${args.emailId ?? ''} as a REAL campaign to ${target} ${timing}. Real recipients receive it; this cannot be undone.`\n },\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n emailId: args.emailId,\n test: flags.test === true ? true : undefined,\n subject: flagString(flags.subject),\n to: collapseRecipients(toStringArray(flags.to)),\n audienceId: flagString(flags.audience),\n domainId: flagString(flags.domain),\n scheduledAt: flagString(flags.scheduleAt),\n })\n if (typeof input.subject !== 'string' || input.subject === '') {\n throw new CliUsageError(\n '--subject is required (or provide it via --input).'\n )\n }\n if (input.test === true && input.to === undefined) {\n throw new CliUsageError('--to is required for a --test send.')\n }\n if (input.test !== true && typeof input.domainId !== 'string') {\n throw new CliUsageError(\n 'Campaign sends require --domain (a verified domain id); use --test for a test delivery.'\n )\n }\n const result = await ctx\n .client()\n .emails.send(asSdkInput<SendEmailInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n\nfunction collapseRecipients(\n values: readonly string[] | undefined\n): string | readonly string[] | undefined {\n if (values === undefined) {\n return\n }\n const [first] = values\n return values.length === 1 && first !== undefined ? first : values\n}\n\n/** Best-effort parse of an inline --input body (stdin `-` stays opaque). */\nfunction parseInlineInput(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'string' || value === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(value)\n return parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n } catch {}\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n\nfunction asRecipients(value: unknown): readonly string[] | undefined {\n if (typeof value === 'string' && value !== '') {\n return [value]\n }\n if (Array.isArray(value)) {\n const items = value.filter(\n (item): item is string => typeof item === 'string'\n )\n return items.length > 0 ? items : undefined\n }\n}\n","import type { CreateFieldInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { flagString, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nconst FIELD_TYPES = ['string', 'number', 'date', 'bool'] as const\n\nexport const fieldsCreateCommand = defineCommand({\n path: ['fields', 'create'],\n summary: 'Create a custom contact field',\n sdkMethod: 'fields.create',\n route: { method: 'POST', path: '/v1/fields' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Field name (camelCase)' },\n {\n flag: '--type <type>',\n summary: 'Field type: string | number | date | bool',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli fields create --name plan --type string'],\n run: async ({ ctx, flags }) => {\n const fieldName = flagString(flags.name)\n const fieldType = flagString(flags.type)\n if (fieldName === undefined || fieldType === undefined) {\n throw new CliUsageError('--name and --type are required.')\n }\n if (!(FIELD_TYPES as readonly string[]).includes(fieldType)) {\n throw new CliUsageError(\n `--type must be one of: ${FIELD_TYPES.join(', ')}`\n )\n }\n // Typed literal on purpose — no asSdkInput cast, so the compiler holds\n // this body to the generated contract (wire names are fieldName/fieldType).\n const input: CreateFieldInput = {\n fieldName,\n fieldType: fieldType as CreateFieldInput['fieldType'],\n }\n const result = await ctx\n .client()\n .fields.create(input, requestOptions(flags))\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const fieldsDeleteCommand = defineCommand({\n path: ['fields', 'delete'],\n summary: 'Delete a custom field definition',\n sdkMethod: 'fields.delete',\n route: { method: 'DELETE', path: '/v1/fields/{fieldName}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'fieldName',\n summary: 'Name of the field to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli fields delete plan --yes'],\n confirmSummary: ({ args }) =>\n `Delete the custom field definition \"${args.fieldName ?? ''}\". This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().fields.delete({ fieldName: args.fieldName ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const fieldsGetCommand = defineCommand({\n path: ['fields', 'get'],\n summary: 'Fetch one contact field definition by name — the bare row',\n sdkMethod: 'fields.get',\n route: { method: 'GET', path: '/v1/fields/{fieldName}' },\n commandClass: 'read',\n args: [\n {\n name: 'fieldName',\n summary: 'Field name (a core column or a custom field)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli fields get loyalty_tier'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().fields.get(args.fieldName ?? ''),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const fieldsListCommand = defineCommand({\n path: ['fields', 'list'],\n summary: 'List custom contact fields',\n sdkMethod: 'fields.list',\n route: { method: 'GET', path: '/v1/fields' },\n commandClass: 'read',\n examples: ['brew-cli fields list'],\n run: async ({ ctx }) => ({ data: await ctx.client().fields.list() }),\n})\n","import type { Flow } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\nimport { renderTable } from '../../lib/output'\n\n/**\n * One public flow by its brand domain: the bare row with `anchor` and every\n * step. `flows list` finds the slug; this reads the sequence. Organization-\n * wide, so the SDK never sends the brand binding.\n */\nexport const flowsGetCommand = defineCommand({\n path: ['flows', 'get'],\n summary:\n 'Fetch one public email flow by brand domain, with every step (day offset, wait, subject, template id)',\n sdkMethod: 'flows.get',\n route: { method: 'GET', path: '/v1/flows/{slug}' },\n commandClass: 'read',\n args: [\n {\n name: 'slug',\n summary: 'The brand domain a `flows list` card carries (e.g. brew.new)',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <keys>',\n summary:\n 'Comma-separated expansions: html (each step’s rendered HTML, best-effort per step)',\n },\n ],\n examples: [\n 'brew-cli flows get brew.new',\n 'brew-cli flows get brew.new --include html --json',\n ],\n run: async ({ ctx, args, flags }) => {\n const include = flagString(flags.include)\n const flow = await ctx\n .client()\n .flows.get(\n args.slug ?? '',\n include === undefined ? undefined : { include }\n )\n return { data: flow, human: renderSteps(flow) }\n },\n})\n\nfunction renderSteps(flow: Flow): string {\n const header = `${flow.title} — ${flow.brand.name} (${flow.slug}), ${flow.emailCount} emails over ${flow.spanDays} days${flow.anchor === undefined ? '' : `, day 0 = ${flow.anchor}`}`\n const table = renderTable(\n (flow.steps ?? []).map((step) => ({\n order: step.order,\n day: step.dayOffset,\n wait: step.delayDays,\n subject: step.subject,\n category: step.category,\n emailId: step.emailId,\n })),\n [\n { key: 'order', header: '#' },\n { key: 'day', header: 'DAY' },\n { key: 'wait', header: 'WAIT' },\n { key: 'subject', header: 'SUBJECT' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'emailId', header: 'TEMPLATE' },\n ]\n )\n return `${header}\\n\\n${table}`\n}\n","import type { Flow, ListFlowsInput } from '@brew.new/sdk'\nimport {\n includeRidesDetailRead,\n inputField,\n singleRowPage,\n} from '../../lib/compat'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\n/**\n * Public email flows: one brand's real onboarding or newsletter sequence,\n * with the day each email landed, as LIST cards. One flow with every step is\n * `flows get <slug>`.\n *\n * The route is organization-wide, so the SDK never sends the brand binding.\n */\nexport const flowsListCommand = defineCommand({\n path: ['flows', 'list'],\n summary:\n 'List public email flows (real multi-step sequences by brand) as cards; `flows get <slug>` reads one',\n sdkMethod: 'flows.list',\n route: { method: 'GET', path: '/v1/flows' },\n commandClass: 'read',\n flags: [\n {\n // --brand is taken by the global brand-selection flag.\n flag: '--brand-domain <domain>',\n summary: 'Filter the list by brand domain',\n },\n {\n flag: '--category <category>',\n summary: 'Filter by dominant step category (welcome, newsletter, …)',\n },\n {\n flag: '--type <type>',\n summary: 'Filter by how the sequence starts: signup | newsletter',\n },\n {\n flag: '--semantic <text>',\n summary: 'Semantic search over the sequences (relevance order)',\n },\n {\n flag: '--sort <order>',\n summary: 'List order: newest (default) | emails | span | remixes',\n },\n {\n flag: '--slug <domain>',\n summary:\n '0.6 shim: read ONE flow with its steps as a single-row page (`flows get <slug>` is the real read)',\n },\n {\n flag: '--include <keys>',\n summary: \"With --slug only: `html` adds each step's rendered HTML\",\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli flows list --type signup --sort emails',\n 'brew-cli flows list --brand-domain brew.new --json',\n 'brew-cli flows list --semantic \"developer onboarding drip\"',\n ],\n run: async ({ ctx, flags }) => {\n const flows = ctx.client().flows\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const slug = flagString(flags.slug) ?? inputField(base, 'slug')\n const include = flagString(flags.include) ?? inputField(base, 'include')\n if (slug !== undefined) {\n const flow = await flows.get(\n slug,\n include === undefined ? undefined : { include }\n )\n return { data: singleRowPage(flow), human: renderFlows([flow]) }\n }\n if (include !== undefined) {\n throw includeRidesDetailRead('flows get', '--slug')\n }\n const input = mergeInput(base, {\n brand: flagString(flags.brandDomain),\n category: flagString(flags.category),\n type: flagString(flags.type),\n semantic: flagString(flags.semantic),\n sort: flagString(flags.sort),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n flows.list(\n asSdkInput<ListFlowsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderFlows(rows),\n }\n }\n const result = await flows.list(asSdkInput<ListFlowsInput>(input))\n return { data: result, human: renderFlows(result.data) }\n },\n})\n\nfunction renderFlows(rows: ReadonlyArray<Flow>): string {\n if (rows.length === 0) {\n return 'No flows found.'\n }\n return renderTable(\n rows.map((row) => ({\n slug: row.slug,\n brand: row.brand.name,\n type: row.type,\n category: row.category,\n emails: row.emailCount,\n spanDays: row.spanDays,\n })),\n [\n { key: 'slug', header: 'SLUG' },\n { key: 'brand', header: 'BRAND' },\n { key: 'type', header: 'TYPE' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'emails', header: 'EMAILS' },\n { key: 'spanDays', header: 'SPAN (DAYS)' },\n ]\n )\n}\n","import { defineCommand } from '../lib/define-command'\n\nexport const healthCommand = defineCommand({\n path: ['health'],\n summary: 'Check Brew API liveness (no auth required)',\n sdkMethod: 'health.get',\n route: { method: 'GET', path: '/v1/health' },\n commandClass: 'read',\n examples: ['brew-cli health'],\n run: async ({ ctx }) => ({\n data: await ctx.client({ allowAnonymous: true }).health.get(),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { renderTable } from '../../lib/output'\n\nexport const integrationsListCommand = defineCommand({\n path: ['integrations', 'list'],\n summary:\n 'List the integration catalog with per-provider connected state (connect via Settings, not this CLI)',\n sdkMethod: 'integrations.list',\n route: { method: 'GET', path: '/v1/integrations' },\n commandClass: 'read',\n examples: ['brew-cli integrations list', 'brew-cli integrations list --json'],\n run: async ({ ctx }) => {\n const result = await ctx.client().integrations.list()\n return { data: result, human: renderIntegrations(result.data) }\n },\n})\n\nfunction renderIntegrations(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No integrations found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'provider', header: 'PROVIDER' },\n { key: 'name', header: 'NAME' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'connected', header: 'CONNECTED' },\n ])\n}\n","import {\n buildSdkClient,\n LOGIN_KEYS_URL,\n maskApiKey,\n resolveAuth,\n} from '../lib/client'\nimport { updateConfig } from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport { progress } from '../lib/output'\nimport type { CliContext } from '../lib/types'\n\nconst KEY_SHAPE = /^brew_[a-z0-9]{16,64}$/\n\nexport const loginCommand = defineCommand({\n path: ['login'],\n summary: 'Store an API key for this machine (validated against the API)',\n sdkMethod: null,\n commandClass: 'write',\n examples: [\n 'brew-cli login',\n 'brew-cli login --api-key brew_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n 'echo \"$BREW_API_KEY\" | brew-cli login',\n ],\n run: async ({ ctx }) => {\n const candidate = await readCandidateKey(ctx)\n if (!KEY_SHAPE.test(candidate)) {\n progress(\n ctx,\n 'Warning: key does not look like a Brew API key (brew_…); validating anyway.'\n )\n }\n const auth = resolveAuth({\n globals: { ...ctx.globals, apiKey: candidate },\n env: ctx.io.env,\n })\n // Throws a 401 BrewApiError (exit 3) when the key is invalid.\n await buildSdkClient(auth).usage.get()\n const path = updateConfig(ctx.io.env, { apiKey: candidate })\n progress(ctx, `Logged in. Key stored in ${path} (0600).`)\n return {\n data: {\n loggedIn: true,\n apiKey: maskApiKey(candidate),\n apiUrl: auth.apiUrl,\n configPath: path,\n },\n }\n },\n})\n\nasync function readCandidateKey(ctx: CliContext): Promise<string> {\n if (ctx.globals.apiKey !== undefined) {\n return ctx.globals.apiKey\n }\n if (!ctx.io.isTtyIn) {\n const piped = (await ctx.io.readStdin()).trim()\n if (piped !== '') {\n return piped\n }\n throw new CliUsageError(\n `No key provided. Pass --api-key or pipe the key on stdin. Create keys at ${LOGIN_KEYS_URL}`\n )\n }\n progress(ctx, `Create an API key at ${LOGIN_KEYS_URL}`)\n const answer = (await ctx.io.readLine('Paste your API key: ')).trim()\n if (answer === '') {\n throw new CliUsageError('No key entered.')\n }\n return answer\n}\n","import { readConfig, updateConfig } from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { progress } from '../lib/output'\n\nexport const logoutCommand = defineCommand({\n path: ['logout'],\n summary: 'Remove the stored API key from this machine',\n sdkMethod: null,\n commandClass: 'write',\n examples: ['brew-cli logout'],\n run: async ({ ctx }) => {\n const hadKey = readConfig(ctx.io.env).apiKey !== undefined\n const path = updateConfig(ctx.io.env, { apiKey: undefined })\n progress(ctx, hadKey ? 'Logged out.' : 'No stored key found.')\n return { data: { loggedOut: true, hadKey, configPath: path } }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const sendsCancelCommand = defineCommand({\n path: ['sends', 'cancel'],\n summary: 'Cancel a scheduled or queued send before it goes out',\n sdkMethod: 'sends.cancel',\n route: { method: 'POST', path: '/v1/sends/{sendId}/cancel' },\n commandClass: 'destructive',\n args: [{ name: 'sendId', summary: 'Send id to cancel', isRequired: true }],\n examples: ['brew-cli sends cancel snd_9f2kX --yes'],\n confirmSummary: ({ args }) =>\n `Cancel send ${args.sendId ?? ''}. A scheduled or queued campaign will not go out; delivery already in flight cannot be recalled.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().sends.cancel(args.sendId ?? ''),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const sendsGetCommand = defineCommand({\n path: ['sends', 'get'],\n summary: 'Fetch one send by id — the bare row with its lifetime stats',\n sdkMethod: 'sends.get',\n route: { method: 'GET', path: '/v1/sends/{sendId}' },\n commandClass: 'read',\n args: [{ name: 'sendId', summary: 'Send id to fetch', isRequired: true }],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: events',\n },\n ],\n examples: [\n 'brew-cli sends get snd_9f2kX',\n 'brew-cli sends get snd_9f2kX --include events',\n ],\n run: async ({ ctx, args, flags }) => {\n const include = flagString(flags.include)\n return {\n data: await ctx\n .client()\n .sends.get(\n args.sendId ?? '',\n include === undefined ? undefined : { include }\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const sendsPauseCommand = defineCommand({\n path: ['sends', 'pause'],\n summary: 'Pause an in-flight or scheduled send (resumable)',\n sdkMethod: 'sends.pause',\n route: { method: 'POST', path: '/v1/sends/{sendId}/pause' },\n commandClass: 'write',\n args: [{ name: 'sendId', summary: 'Send id to pause', isRequired: true }],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli sends pause snd_123'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .sends.pause(args.sendId ?? '', requestOptions(flags)),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const sendsResumeCommand = defineCommand({\n path: ['sends', 'resume'],\n summary:\n 'Resume a paused gradual send (the unsent tail is re-spread); the send reports `running` again',\n sdkMethod: 'sends.resume',\n route: { method: 'POST', path: '/v1/sends/{sendId}/resume' },\n commandClass: 'write',\n args: [{ name: 'sendId', summary: 'Send id to resume', isRequired: true }],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli sends resume snd_123'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .sends.resume(args.sendId ?? '', requestOptions(flags)),\n }),\n})\n","import type { operations } from '../../generated/openapi-types'\nimport { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\nimport { rawRequest } from '../../lib/raw-request'\n\ntype TemplateDetail =\n operations['getTemplate']['responses'][200]['content']['application/json']\n\n/**\n * One public gallery template. Organization-wide like `templates list`, so no\n * brand binding is sent. Raw route because `@brew.new/sdk` 10 has no method\n * for it: once the CLI adopts SDK 11, bind `templates.get(templateId,\n * { include })` here and drop `isRawTransport`.\n */\nexport const templatesGetCommand = defineCommand({\n path: ['templates', 'get'],\n summary:\n 'Fetch one public template: its links and the referenceEmailId to remix; --include html adds its HTML',\n sdkMethod: null,\n isRawTransport: true,\n route: { method: 'GET', path: '/v1/templates/{templateId}' },\n commandClass: 'read',\n args: [\n {\n name: 'templateId',\n summary: 'Template id: the TEMPLATE column (emailId) of `templates list`',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary:\n 'Expansions: html (the rendered HTML; a large page arrives as a content.url download link instead)',\n },\n ],\n examples: [\n 'brew-cli templates get seed-vercel-newsletter',\n 'brew-cli templates get seed-vercel-newsletter --include html --json',\n ],\n run: async ({ ctx, args, flags }) => {\n const body = await rawRequest<TemplateDetail>(ctx, {\n method: 'GET',\n path: `/v1/templates/${encodeURIComponent(args.templateId ?? '')}`,\n query: { include: flagString(flags.include) },\n })\n return { data: body }\n },\n})\n","import type { ListTemplatesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const templatesListCommand = defineCommand({\n path: ['templates', 'list'],\n summary: 'List public templates (each row carries the rendered html)',\n sdkMethod: 'templates.list',\n route: { method: 'GET', path: '/v1/templates' },\n commandClass: 'read',\n flags: [\n {\n // --brand is taken by the global brand-selection flag.\n flag: '--brand-name <name>',\n summary: 'Filter by gallery brand name',\n },\n { flag: '--category <category>', summary: 'Filter by category' },\n {\n flag: '--semantic <text>',\n summary: 'Semantic search over the gallery',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli templates list --category welcome',\n 'brew-cli templates list --semantic \"minimal product launch\" --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n brand: flagString(flags.brandName),\n category: flagString(flags.category),\n semantic: flagString(flags.semantic),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const templates = ctx.client().templates\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n templates.list(\n asSdkInput<ListTemplatesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderTemplates(rows),\n }\n }\n const result = await templates.list(asSdkInput<ListTemplatesInput>(input))\n return { data: result, human: renderTemplates(result.data) }\n },\n})\n\nfunction renderTemplates(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No templates found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'emailId', header: 'TEMPLATE' },\n { key: 'title', header: 'TITLE' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'brand', header: 'BRAND' },\n ])\n}\n","import { createHash } from 'node:crypto'\nimport { readFileSync, writeFileSync } from 'node:fs'\n\nimport type {\n ListTriggersInput,\n ListTriggersResponse,\n Trigger,\n} from '@brew.new/sdk'\nimport { defineCommand } from '../lib/define-command'\nimport { asSdkInput } from '../lib/input'\n\ntype TriggerRow = Trigger\n\n/**\n * `brew-cli types` — generate TypeScript payload contracts for this\n * workspace's triggers (declared `payloadSchema`). Deterministic output:\n * same inputs → the same bytes, with a content hash in the header so\n * `--check` works as a CI drift gate (exit 1 when the API's contracts no\n * longer match the committed file).\n */\n\nconst HEADER_PREFIX = '// brew:contracts sha256:'\n\n/**\n * THE canonical type-name rule, mirrored byte-for-byte from the app's\n * `lib/payload-contract/codegen.ts` (`contractTypeName`) so Copy-as, the\n * SKILL.md brief, and this file all mint the SAME identifier for one\n * contract: PascalCase(name || id) + `Payload`, digit-led names prefixed,\n * an existing `…Payload` suffix never doubled, symbol-only names →\n * `ContractPayload`.\n */\nfunction pascalCase(value: string): string {\n const cleaned = value.replace(/[^a-zA-Z0-9]+/g, ' ').trim()\n if (cleaned === '') {\n return 'Contract'\n }\n return cleaned\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n}\n\nfunction typeName(label: string): string {\n const base = pascalCase(label)\n if (/^[0-9]/.test(base)) {\n return `Payload${base}`\n }\n return base.endsWith('Payload') ? base : `${base}Payload`\n}\n\nconst IDENTIFIER_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/\n\nfunction propertyKey(key: string): string {\n return IDENTIFIER_RE.test(key) ? key : JSON.stringify(key)\n}\n\n/**\n * The full contract-node lattice the platform can emit — the app's\n * `ContractFieldNode` (lib/payload-contract/types.ts). Deliberately wider\n * than the vendored `TriggerPayloadField` so nested / enum nodes survive\n * a vendored-spec lag: the emitter reads the wire JSON, not the spec.\n */\ntype TriggerFieldNode = {\n key: string\n type: string\n required: boolean\n /** `type: 'enum'` (or an array of enums via `itemType`): allowed values. */\n enumValues?: ReadonlyArray<string>\n /** `object`: properties. `array` with object elements: element properties. */\n children?: ReadonlyArray<TriggerFieldNode>\n /** `array` with scalar elements: the element type. */\n itemType?: string\n}\n\n/**\n * Scalar mapping mirrored from the app's `lib/payload-contract/codegen.ts`\n * (`scalarTsType`): int/float → number, date → ISO string, enum → a\n * literal union when `enumValues` exist. A type this build does not know\n * (including the platform's derived-view `'unknown'`) is honestly\n * `unknown` — never a silently-wrong `string`.\n */\nfunction scalarTsType(type: string, node: TriggerFieldNode): string {\n switch (type) {\n case 'string':\n return 'string'\n case 'int':\n case 'float':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'date':\n // ISO-8601 date-time string on the wire.\n return 'string'\n case 'enum':\n return node.enumValues && node.enumValues.length > 0\n ? node.enumValues.map((value) => JSON.stringify(value)).join(' | ')\n : 'string'\n default:\n return 'unknown'\n }\n}\n\nfunction triggerFieldType(node: TriggerFieldNode, indent: string): string {\n if (node.type === 'object') {\n return triggerObjectLiteral(node.children ?? [], indent)\n }\n if (node.type === 'array') {\n if (node.children && node.children.length > 0) {\n return `Array<${triggerObjectLiteral(node.children, indent)}>`\n }\n const element = node.itemType\n ? scalarTsType(node.itemType, node)\n : 'unknown'\n return `Array<${element}>`\n }\n return scalarTsType(node.type, node)\n}\n\n/**\n * Nested emission mirrored from the app codegen's `tsObjectLiteral`:\n * field order as given, `?:` from `required`, two-space indent per level.\n * Flat contracts emit byte-identically to the pre-nested emitter (the\n * sha256 header + `--check` gates depend on that stability), which is\n * also why the app's per-field doc comments are NOT ported here.\n */\nfunction triggerObjectLiteral(\n nodes: ReadonlyArray<TriggerFieldNode>,\n indent: string\n): string {\n if (nodes.length === 0) {\n // Top level: zero declared fields means \"send nothing\". A NESTED\n // childless object is different: its inner shape is unknown, not\n // empty.\n return indent === '' ? 'Record<string, never>' : 'Record<string, unknown>'\n }\n const inner = `${indent} `\n const lines: Array<string> = ['{']\n for (const node of nodes) {\n const optional = node.required ? '' : '?'\n lines.push(\n `${inner}${propertyKey(node.key)}${optional}: ${triggerFieldType(node, inner)}`\n )\n }\n lines.push(`${indent}}`)\n return lines.join('\\n')\n}\n\nfunction emitTriggerType(trigger: TriggerRow, name: string): string {\n const fields: ReadonlyArray<TriggerFieldNode> =\n trigger.payloadSchema?.fields ?? []\n return [\n `/** Fire: POST /v1/automations/triggers/${trigger.triggerEventId}/fire — body { payload: ${name} } */`,\n `export type ${name} = ${triggerObjectLiteral(fields, '')}`,\n ].join('\\n')\n}\n\n/** Byte-stable ordering — `localeCompare` varies by host locale. */\nfunction byCodepoint(a: string, b: string): number {\n if (a < b) {\n return -1\n }\n return a > b ? 1 : 0\n}\n\n/**\n * Trigger titles share one flat namespace and carry no uniqueness\n * constraint — colliding names get the trigger id appended (then a\n * numeric suffix as a last resort) so the generated file always compiles.\n */\nfunction uniqueNames(\n entries: ReadonlyArray<{ label: string; id: string }>\n): Array<string> {\n const taken = new Map<string, number>()\n return entries.map(({ label, id }) => {\n let name = typeName(label)\n if (taken.has(name)) {\n const suffixed = `${name}${pascalCase(id)}`\n name = suffixed\n }\n while (taken.has(name)) {\n const bump = (taken.get(name) ?? 1) + 1\n taken.set(name, bump)\n name = `${name}${bump}`\n }\n taken.set(name, 1)\n return name\n })\n}\n\nfunction buildFileText(args: { triggers: ReadonlyArray<TriggerRow> }): string {\n const triggers = [...args.triggers].sort((a, b) =>\n byCodepoint(a.triggerEventId, b.triggerEventId)\n )\n // ONE name pass: same rule as the app (name || id), collisions\n // resolved deterministically.\n const names = uniqueNames(\n triggers.map((t) => ({ id: t.triggerEventId, label: t.title }))\n )\n const triggerBlocks = triggers.map((t, i) =>\n emitTriggerType(t, names[i] ?? typeName(t.title))\n )\n const body = [\n '// Generated by `brew-cli types` — do not edit by hand.',\n '// Re-run `brew-cli types` after changing a trigger schema; gate',\n '// drift in CI with `brew-cli types --check`.',\n '',\n triggerBlocks.join('\\n\\n'),\n '',\n ].join('\\n')\n const hash = createHash('sha256').update(body).digest('hex')\n return `${HEADER_PREFIX}${hash}\\n${body}`\n}\n\nexport const typesCommand = defineCommand({\n path: ['types'],\n summary:\n \"Generate TypeScript payload contracts for this workspace's triggers into your codebase; --check is the CI drift gate (exit 1 on drift). Needs the automations scope\",\n sdkMethod: null,\n derivedFrom: 'automations.triggers.list',\n route: { method: 'GET', path: '/v1/automations/triggers' },\n commandClass: 'read',\n flags: [\n {\n flag: '--out <file>',\n summary: 'Output file (default brew-contracts.ts)',\n defaultValue: 'brew-contracts.ts',\n },\n {\n flag: '--check',\n summary:\n 'Verify the output file is up to date instead of writing; exits 1 on drift',\n },\n ],\n examples: [\n 'brew-cli types',\n 'brew-cli types --out src/brew-contracts.ts',\n 'brew-cli types --check',\n ],\n run: async ({ ctx, flags }) => {\n // Follow the cursor to the end — a silent 100-trigger cap would make\n // `--check` certify an incomplete file (integration catalogs alone\n // can cross 100). The page ceiling is a runaway-loop backstop only.\n const triggers: Array<TriggerRow> = []\n let cursor: string | null = null\n for (let page = 0; page < 50; page++) {\n const listResponse: ListTriggersResponse = await ctx\n .client()\n .automations.triggers.list(\n asSdkInput<ListTriggersInput>({\n limit: 100,\n ...(cursor === null ? {} : { cursor }),\n })\n )\n triggers.push(...(listResponse.data ?? []))\n if (\n !listResponse.pagination?.hasMore ||\n !listResponse.pagination.cursor\n ) {\n break\n }\n cursor = listResponse.pagination.cursor\n }\n const text = buildFileText({ triggers })\n const outPath =\n typeof flags.out === 'string' ? flags.out : 'brew-contracts.ts'\n\n if (flags.check === true) {\n let existing: string | null = null\n try {\n existing = readFileSync(outPath, 'utf8')\n } catch {\n existing = null\n }\n // CRLF-tolerant: an autocrlf checkout must not read as drift.\n const normalize = (value: string) => value.replaceAll('\\r\\n', '\\n')\n if (existing === null || normalize(existing) !== normalize(text)) {\n return {\n data: { checked: outPath, upToDate: false },\n human:\n existing === null\n ? `${outPath} does not exist — run \\`brew-cli types\\` first.`\n : `${outPath} is stale — the workspace's payload contracts changed. Run \\`brew-cli types\\` to regenerate.`,\n // Documented drift contract: exit 1 (not the usage-error 2).\n exitCode: 1,\n }\n }\n return {\n data: { checked: outPath, upToDate: true },\n human: `${outPath} is up to date.`,\n }\n }\n\n writeFileSync(outPath, text)\n return {\n data: {\n out: outPath,\n triggers: triggers.length,\n },\n human: `Wrote ${outPath} (${triggers.length} trigger${triggers.length === 1 ? '' : 's'}).`,\n }\n },\n})\n","import { defineCommand } from '../lib/define-command'\n\nexport const usageCommand = defineCommand({\n path: ['usage'],\n summary: 'Show plan, credit balance, and email-send quota',\n sdkMethod: 'usage.get',\n route: { method: 'GET', path: '/v1/usage' },\n commandClass: 'read',\n examples: ['brew-cli usage', 'brew-cli usage --json'],\n run: async ({ ctx }) => ({ data: await ctx.client().usage.get() }),\n})\n","import { BrewApiError } from '@brew.new/sdk'\nimport { maskApiKey, resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { progress } from '../lib/output'\n\nexport const whoamiCommand = defineCommand({\n path: ['whoami'],\n summary: 'Show the resolved credential, brand, and API target',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli whoami', 'brew-cli whoami --json'],\n run: async ({ ctx }) => {\n const auth = resolveAuth({ globals: ctx.globals, env: ctx.io.env })\n // Invalid credentials must surface (exit 3), but a server-side outage\n // should not hide the local credential state — degrade to usage: null.\n let usage: unknown = null\n try {\n usage = await ctx.client().usage.get()\n } catch (error) {\n if (\n error instanceof BrewApiError &&\n (error.status === 401 || error.status === 403)\n ) {\n throw error\n }\n progress(\n ctx,\n 'Warning: could not reach /v1/usage — showing local credential state only.'\n )\n }\n return {\n data: {\n apiUrl: auth.apiUrl,\n apiKey: maskApiKey(auth.apiKey),\n apiKeySource: auth.apiKeySource,\n brandId: auth.brandId ?? null,\n usage,\n },\n }\n },\n})\n","import { analyticsAutomationsCommand } from './commands/analytics/automations'\nimport { analyticsCampaignsCommand } from './commands/analytics/campaigns'\nimport { analyticsEventsCommand } from './commands/analytics/events'\nimport { analyticsOverviewCommand } from './commands/analytics/overview'\nimport { analyticsSendsGetCommand } from './commands/analytics/sends/get'\nimport { analyticsSendsListCommand } from './commands/analytics/sends/list'\nimport { analyticsTriggerInstancesListCommand } from './commands/analytics/trigger-instances/list'\nimport { apiCommand } from './commands/api'\nimport { apiKeysCreateCommand } from './commands/api-keys/create'\nimport { apiKeysDeleteCommand } from './commands/api-keys/delete'\nimport { apiKeysListCommand } from './commands/api-keys/list'\nimport { audiencesCreateCommand } from './commands/audiences/create'\nimport { audiencesDeleteCommand } from './commands/audiences/delete'\nimport { audiencesDuplicateCommand } from './commands/audiences/duplicate'\nimport { audiencesFromEventsCommand } from './commands/audiences/from-events'\nimport { audiencesGetCommand } from './commands/audiences/get'\nimport { audiencesListCommand } from './commands/audiences/list'\nimport { audiencesUpdateCommand } from './commands/audiences/update'\nimport { automationsAudienceRunsCancelCommand } from './commands/automations/audience-runs/cancel'\nimport { automationsAudienceRunsControlCommand } from './commands/automations/audience-runs/control'\nimport { automationsAudienceRunsGetCommand } from './commands/automations/audience-runs/get'\nimport { automationsAudienceRunsListCommand } from './commands/automations/audience-runs/list'\nimport { automationsAudienceRunsPauseCommand } from './commands/automations/audience-runs/pause'\nimport { automationsAudienceRunsResumeCommand } from './commands/automations/audience-runs/resume'\nimport { automationsCreateCommand } from './commands/automations/create'\nimport { automationsDeleteCommand } from './commands/automations/delete'\nimport { automationsGetCommand } from './commands/automations/get'\nimport { automationsListCommand } from './commands/automations/list'\nimport { automationsPublishCommand } from './commands/automations/publish'\nimport { automationsRunCommand } from './commands/automations/run'\nimport { automationsRunsCancelCommand } from './commands/automations/runs/cancel'\nimport { automationsRunsGetCommand } from './commands/automations/runs/get'\nimport { automationsRunsListCommand } from './commands/automations/runs/list'\nimport { automationsTestCommand } from './commands/automations/test'\nimport { automationsTriggerInstancesGetCommand } from './commands/automations/trigger-instances/get'\nimport { automationsTriggerInstancesListCommand } from './commands/automations/trigger-instances/list'\nimport {\n automationsTriggersContractGetCommand,\n automationsTriggersContractPutCommand,\n automationsTriggersContractValidateCommand,\n} from './commands/automations/triggers/contract'\nimport { automationsTriggersCreateCommand } from './commands/automations/triggers/create'\nimport { automationsTriggersDeleteCommand } from './commands/automations/triggers/delete'\nimport { automationsTriggersFireCommand } from './commands/automations/triggers/fire'\nimport { automationsTriggersGetCommand } from './commands/automations/triggers/get'\nimport { automationsTriggersListCommand } from './commands/automations/triggers/list'\nimport { automationsTriggersReadyCommand } from './commands/automations/triggers/ready'\nimport { automationsTriggersUpdateCommand } from './commands/automations/triggers/update'\nimport { automationsUnpublishCommand } from './commands/automations/unpublish'\nimport { automationsUpdateCommand } from './commands/automations/update'\nimport { brandGetCommand } from './commands/brand/get'\nimport { brandGetImagesCommand } from './commands/brand/get-images'\nimport { brandUpdateCommand } from './commands/brand/update'\nimport { brandsCreateCommand } from './commands/brands/create'\nimport { brandsGetCommand } from './commands/brands/get'\nimport { brandsListCommand } from './commands/brands/list'\nimport { chatsGetCommand } from './commands/chats/get'\nimport {\n configGetCommand,\n configListCommand,\n configSetCommand,\n configUnsetCommand,\n} from './commands/config'\nimport { contactsCountCommand } from './commands/contacts/count'\nimport { contactsDeleteCommand } from './commands/contacts/delete'\nimport { contactsDeleteManyCommand } from './commands/contacts/delete-many'\nimport { contactsGetCommand } from './commands/contacts/get'\nimport { contactsImportCsvCommand } from './commands/contacts/import-csv'\nimport { contactsListCommand } from './commands/contacts/list'\nimport { contactsSearchCommand } from './commands/contacts/search'\nimport { contactsUpdateCommand } from './commands/contacts/update'\nimport { contactsUpsertCommand } from './commands/contacts/upsert'\nimport { contactsUpsertManyCommand } from './commands/contacts/upsert-many'\nimport { contactsValidateCommand } from './commands/contacts/validate'\nimport { contentAddImageCommand } from './commands/content/add-image'\nimport { contentGenerateImageCommand } from './commands/content/generate-image'\nimport { contentGifCommand } from './commands/content/gif'\nimport { contentHtmlToPngCommand } from './commands/content/html-to-png'\nimport { contentTransformCommand } from './commands/content/transform'\nimport { contractsInferCommand } from './commands/contracts/infer'\nimport { dataRunCommand } from './commands/data/run'\nimport { docsApiCommand, docsCommand } from './commands/docs'\nimport { doctorCommand } from './commands/doctor'\nimport { domainsAddCommand } from './commands/domains/add'\nimport { domainsDeleteCommand } from './commands/domains/delete'\nimport { domainsGetCommand } from './commands/domains/get'\nimport { domainsHealthCommand } from './commands/domains/health'\nimport { domainsListCommand } from './commands/domains/list'\nimport { domainsUpdateCommand } from './commands/domains/update'\nimport { domainsVerifyCommand } from './commands/domains/verify'\nimport { emailsAuditCommand } from './commands/emails/audit'\nimport { emailsCloneCommand } from './commands/emails/clone'\nimport { emailsCreateInboxPlacementTestCommand } from './commands/emails/create-inbox-placement-test'\nimport { emailsDeleteCommand } from './commands/emails/delete'\nimport { emailsEditCommand } from './commands/emails/edit'\nimport { emailsExportCommand } from './commands/emails/export'\nimport { emailsGenerateCommand } from './commands/emails/generate'\nimport { emailsGetCommand } from './commands/emails/get'\nimport { emailsGetAuditCommand } from './commands/emails/get-audit'\nimport { emailsGetClientPreviewCommand } from './commands/emails/get-client-preview'\nimport { emailsGetInboxPlacementResultsCommand } from './commands/emails/get-inbox-placement-results'\nimport { emailsGroupsCreateCommand } from './commands/emails/groups/create'\nimport { emailsGroupsDeleteCommand } from './commands/emails/groups/delete'\nimport { emailsGroupsGetCommand } from './commands/emails/groups/get'\nimport { emailsGroupsListCommand } from './commands/emails/groups/list'\nimport { emailsGroupsUpdateCommand } from './commands/emails/groups/update'\nimport { emailsImportCommand } from './commands/emails/import'\nimport { emailsImportFigmaCommand } from './commands/emails/import-figma'\nimport { emailsInboxPlacementTestsGetCommand } from './commands/emails/inbox-placement-tests/get'\nimport { emailsListCommand } from './commands/emails/list'\nimport { emailsPreviewClientsCommand } from './commands/emails/preview-clients'\nimport { emailsRestoreCommand } from './commands/emails/restore'\nimport { emailsSendCommand } from './commands/emails/send'\nimport { fieldsCreateCommand } from './commands/fields/create'\nimport { fieldsDeleteCommand } from './commands/fields/delete'\nimport { fieldsGetCommand } from './commands/fields/get'\nimport { fieldsListCommand } from './commands/fields/list'\nimport { flowsGetCommand } from './commands/flows/get'\nimport { flowsListCommand } from './commands/flows/list'\nimport { healthCommand } from './commands/health'\nimport { integrationsListCommand } from './commands/integrations/list'\nimport { loginCommand } from './commands/login'\nimport { logoutCommand } from './commands/logout'\nimport { sendsCancelCommand } from './commands/sends/cancel'\nimport { sendsGetCommand } from './commands/sends/get'\nimport { sendsListCommand } from './commands/sends/list'\nimport { sendsPauseCommand } from './commands/sends/pause'\nimport { sendsResumeCommand } from './commands/sends/resume'\nimport { templatesGetCommand } from './commands/templates/get'\nimport { templatesListCommand } from './commands/templates/list'\nimport { typesCommand } from './commands/types'\nimport { usageCommand } from './commands/usage'\nimport { whoamiCommand } from './commands/whoami'\nimport type { CommandSpec } from './lib/define-command'\n\n/**\n * Every command the CLI exposes, in help-display order. One entry per\n * command file; the parity tests hold this list to the SDK surface and\n * the vendored OpenAPI spec.\n */\nexport const ALL_COMMANDS: readonly CommandSpec[] = [\n loginCommand,\n logoutCommand,\n whoamiCommand,\n configListCommand,\n configGetCommand,\n configSetCommand,\n configUnsetCommand,\n contactsListCommand,\n contactsSearchCommand,\n contactsGetCommand,\n contactsCountCommand,\n contactsUpsertCommand,\n contactsUpsertManyCommand,\n contactsUpdateCommand,\n contactsDeleteCommand,\n contactsDeleteManyCommand,\n contactsValidateCommand,\n contactsImportCsvCommand,\n fieldsListCommand,\n fieldsGetCommand,\n fieldsCreateCommand,\n fieldsDeleteCommand,\n emailsListCommand,\n emailsGroupsListCommand,\n emailsGroupsGetCommand,\n emailsGroupsCreateCommand,\n emailsGroupsUpdateCommand,\n emailsGroupsDeleteCommand,\n emailsGetCommand,\n emailsGenerateCommand,\n emailsImportCommand,\n emailsImportFigmaCommand,\n emailsEditCommand,\n emailsCloneCommand,\n emailsRestoreCommand,\n emailsDeleteCommand,\n emailsExportCommand,\n emailsAuditCommand,\n emailsGetAuditCommand,\n emailsPreviewClientsCommand,\n emailsGetClientPreviewCommand,\n emailsCreateInboxPlacementTestCommand,\n emailsGetInboxPlacementResultsCommand,\n emailsInboxPlacementTestsGetCommand,\n emailsSendCommand,\n sendsListCommand,\n sendsGetCommand,\n sendsCancelCommand,\n sendsPauseCommand,\n sendsResumeCommand,\n typesCommand,\n audiencesListCommand,\n audiencesGetCommand,\n audiencesCreateCommand,\n audiencesUpdateCommand,\n audiencesDuplicateCommand,\n audiencesFromEventsCommand,\n audiencesDeleteCommand,\n automationsListCommand,\n automationsGetCommand,\n automationsCreateCommand,\n automationsUpdateCommand,\n automationsPublishCommand,\n automationsUnpublishCommand,\n automationsDeleteCommand,\n automationsTestCommand,\n automationsRunCommand,\n automationsTriggersListCommand,\n automationsTriggersGetCommand,\n automationsTriggersReadyCommand,\n automationsTriggersContractGetCommand,\n automationsTriggersContractPutCommand,\n automationsTriggersContractValidateCommand,\n contractsInferCommand,\n dataRunCommand,\n automationsTriggersCreateCommand,\n automationsTriggersUpdateCommand,\n automationsTriggersDeleteCommand,\n automationsTriggersFireCommand,\n automationsRunsListCommand,\n automationsRunsGetCommand,\n automationsRunsCancelCommand,\n automationsAudienceRunsListCommand,\n automationsAudienceRunsGetCommand,\n automationsAudienceRunsPauseCommand,\n automationsAudienceRunsResumeCommand,\n automationsAudienceRunsCancelCommand,\n automationsAudienceRunsControlCommand,\n automationsTriggerInstancesListCommand,\n automationsTriggerInstancesGetCommand,\n analyticsOverviewCommand,\n analyticsCampaignsCommand,\n analyticsAutomationsCommand,\n analyticsEventsCommand,\n analyticsSendsListCommand,\n analyticsSendsGetCommand,\n analyticsTriggerInstancesListCommand,\n brandGetCommand,\n brandUpdateCommand,\n brandGetImagesCommand,\n brandsListCommand,\n brandsGetCommand,\n brandsCreateCommand,\n apiKeysListCommand,\n apiKeysCreateCommand,\n apiKeysDeleteCommand,\n domainsListCommand,\n domainsGetCommand,\n domainsAddCommand,\n domainsVerifyCommand,\n domainsHealthCommand,\n domainsUpdateCommand,\n domainsDeleteCommand,\n contentGenerateImageCommand,\n contentGifCommand,\n contentTransformCommand,\n contentHtmlToPngCommand,\n contentAddImageCommand,\n templatesListCommand,\n templatesGetCommand,\n flowsListCommand,\n flowsGetCommand,\n integrationsListCommand,\n chatsGetCommand,\n healthCommand,\n usageCommand,\n doctorCommand,\n docsCommand,\n docsApiCommand,\n apiCommand,\n]\n","import { Command, CommanderError } from 'commander'\nimport { enforceConfirmation } from './lib/confirm'\nimport { makeContext, makeFallbackContext } from './lib/context'\nimport type { CommandSpec } from './lib/define-command'\nimport { GLOBAL_FLAGS } from './lib/define-command'\nimport {\n CliUsageError,\n EXIT_OK,\n EXIT_USAGE,\n printError,\n toExitCode,\n} from './lib/errors'\nimport { printData } from './lib/output'\nimport type { CliContext, CliIo } from './lib/types'\nimport { ALL_COMMANDS } from './registry'\nimport { CLI_NAME, CLI_VERSION } from './version'\n\nconst GROUP_SUMMARIES: Readonly<Record<string, string>> = {\n analytics: 'Reports: overview, events, and automation analytics',\n 'audience-runs': 'Manual-audience launches: read, pause, resume, cancel',\n 'api-keys': 'Manage organization API keys',\n audiences: 'Manage audience segments',\n automations: 'Manage automation graphs, triggers, and runs',\n brand: \"Read and update the active brand's design context\",\n brands: 'Organization-level brand lifecycle',\n chats: 'Read Brew chat context for hand-offs',\n config: 'Read and write stored CLI configuration',\n contacts: 'Manage contacts',\n content: 'Credit-metered content generation (images, GIFs, renders)',\n docs: 'Reference material for humans and agents',\n domains: 'Manage sending domains',\n emails: 'Manage email designs and send campaigns',\n fields: 'Manage custom contact fields',\n flows: 'Browse public email flows (real multi-step sequences by brand)',\n groups: 'Manage email folders (groups)',\n integrations: 'Read the connected-integration catalog',\n 'inbox-placement-tests': 'Inbox placement (seed) test results',\n sends: 'Read sends, and control one in flight or scheduled',\n templates: 'Browse the template gallery',\n contract: 'Stored payload contracts (get, put, validate)',\n contracts: 'Payload-contract helpers',\n triggers: 'Manage trigger events',\n runs: 'Automation run history, and cancel one in-flight run',\n 'trigger-instances': 'Fired trigger instances (the inbound-fire audit log)',\n}\n\nconst AGENT_HELP_FOOTER = `\nEnvironment:\n BREW_API_KEY API key (overrides stored login; flags override both)\n BREW_BRAND_ID Brand id for organization-scoped keys\n BREW_API_URL API base URL (default https://brew.new/api)\n BREW_CLI_CONFIG_DIR Config directory (default ~/.config/brew-cli)\n\nExit codes:\n 0 success · 1 API/runtime error · 2 usage error · 3 auth error\n 4 confirmation required (re-run with --yes)\n\nAgents: run \\`${CLI_NAME} docs --agent\\` for the machine-readable manifest.\n`\n\nexport async function run(\n argv: readonly string[],\n io: CliIo,\n commands: readonly CommandSpec[] = ALL_COMMANDS\n): Promise<number> {\n let activeContext: CliContext | undefined\n let commandExitCode: number | undefined\n // Commander's own stderr (usage errors, error-mode help) is buffered so\n // JSON mode can replace it with a structured envelope instead of mixing\n // free text and JSON on the same stream.\n const commanderStderr: string[] = []\n const program = buildProgram(\n io,\n argv,\n (ctx) => {\n activeContext = ctx\n },\n commands,\n (text) => {\n commanderStderr.push(text)\n },\n (code) => {\n commandExitCode = code\n }\n )\n const flushCommanderStderr = (): void => {\n for (const text of commanderStderr) {\n io.stderr.write(text)\n }\n commanderStderr.length = 0\n }\n try {\n await program.parseAsync([...argv], { from: 'user' })\n flushCommanderStderr()\n return commandExitCode ?? EXIT_OK\n } catch (error) {\n if (error instanceof CommanderError) {\n const ctx = activeContext ?? makeFallbackContext(io, argv)\n return handleCommanderError(error, ctx, flushCommanderStderr)\n }\n flushCommanderStderr()\n const ctx = activeContext ?? makeFallbackContext(io, argv)\n printError(ctx, error)\n return toExitCode(error)\n }\n}\n\nfunction handleCommanderError(\n error: CommanderError,\n ctx: CliContext,\n flush: () => void\n): number {\n const isHelpCode =\n error.code === 'commander.helpDisplayed' || error.code === 'commander.help'\n if (\n error.code === 'commander.version' ||\n (isHelpCode && error.exitCode === 0)\n ) {\n flush()\n return EXIT_OK\n }\n if (isHelpCode) {\n // Error-mode help: a group or bare invocation with no subcommand.\n if (ctx.mode === 'json') {\n printError(\n ctx,\n new CliUsageError('Incomplete command: a subcommand is required.')\n )\n } else {\n flush()\n }\n return EXIT_USAGE\n }\n if (ctx.mode === 'json') {\n printError(ctx, new CliUsageError(error.message.replace(/^error: /, '')))\n } else {\n flush()\n }\n return EXIT_USAGE\n}\n\nexport function buildProgram(\n io: CliIo,\n rawArgv: readonly string[],\n onContext?: (ctx: CliContext) => void,\n commands: readonly CommandSpec[] = ALL_COMMANDS,\n errSink?: (text: string) => void,\n onExitCode?: (code: number) => void\n): Command {\n const writeErr = errSink ?? ((text: string) => io.stderr.write(text))\n const program = new Command(CLI_NAME)\n .description('Agent-first CLI for the Brew public API (brew.new)')\n .version(CLI_VERSION, '--version', 'Print the CLI version')\n .exitOverride()\n .showSuggestionAfterError(false)\n .configureOutput({\n writeOut: (str) => {\n io.stdout.write(str)\n },\n writeErr: (str) => {\n writeErr(str)\n },\n })\n program.addHelpText('after', AGENT_HELP_FOOTER)\n // Global flags register on the root as well as every leaf so agents can\n // place them on either side of the subcommand (`brew-cli --json usage`\n // and `brew-cli usage --json` both work); optsWithGlobals merges them.\n for (const flag of GLOBAL_FLAGS) {\n program.option(flag.flag, flag.summary)\n }\n for (const spec of commands) {\n registerCommand(program, spec, io, rawArgv, onContext, onExitCode)\n }\n return program\n}\n\nfunction registerCommand(\n program: Command,\n spec: CommandSpec,\n io: CliIo,\n rawArgv: readonly string[],\n onContext?: (ctx: CliContext) => void,\n onExitCode?: (code: number) => void\n): void {\n const parent = resolveGroup(program, spec.path.slice(0, -1))\n const leafName = spec.path.at(-1)\n if (leafName === undefined) {\n throw new Error('command spec has an empty path')\n }\n const leaf = parent.command(leafName).description(spec.summary)\n for (const arg of spec.args ?? []) {\n const wrapped = arg.isRequired ? `<${arg.name}>` : `[${arg.name}]`\n leaf.argument(wrapped, arg.summary)\n }\n for (const flag of [...(spec.flags ?? []), ...GLOBAL_FLAGS]) {\n if (flag.defaultValue === undefined) {\n leaf.option(flag.flag, flag.summary)\n } else {\n leaf.option(flag.flag, flag.summary, flag.defaultValue)\n }\n }\n leaf.addHelpText('after', buildCommandHelpFooter(spec))\n leaf.action(async (...actionArgs: unknown[]) => {\n const command = actionArgs.at(-1) as Command\n // optsWithGlobals lets ancestors overwrite the leaf; re-apply the\n // leaf's own parsed values so the flag nearest the subcommand wins.\n const flags: Record<string, unknown> = {\n ...command.optsWithGlobals<Record<string, unknown>>(),\n }\n for (const [key, value] of Object.entries(\n command.opts<Record<string, unknown>>()\n )) {\n if (value !== undefined) {\n flags[key] = value\n }\n }\n const positional = (spec.args ?? []).reduce<Record<string, string>>(\n (acc, arg, index) => {\n const value = actionArgs[index]\n if (typeof value === 'string') {\n // An empty required id would otherwise build a malformed API path\n // (`/v1/x//action`) and surface as a confusing server-side 405.\n if (arg.isRequired && value.trim() === '') {\n throw new CliUsageError(`<${arg.name}> must not be empty.`)\n }\n acc[arg.name] = value\n }\n return acc\n },\n {}\n )\n const ctx = makeContext({ io, flags, rawArgv })\n onContext?.(ctx)\n const invocation = { ctx, args: positional, flags }\n await enforceConfirmation(spec, invocation)\n const outcome = await spec.run(invocation)\n if (outcome !== undefined) {\n printData(ctx, outcome.data, outcome.human)\n if (outcome.exitCode !== undefined && outcome.exitCode !== 0) {\n onExitCode?.(outcome.exitCode)\n }\n }\n })\n}\n\nfunction resolveGroup(program: Command, path: readonly string[]): Command {\n let current = program\n for (const segment of path) {\n const existing = current.commands.find((cmd) => cmd.name() === segment)\n if (existing) {\n current = existing\n continue\n }\n const summary = GROUP_SUMMARIES[segment] ?? ''\n current = current.command(segment).description(summary)\n // Groups accept the global flags too, so `brew-cli contacts --json list`\n // parses instead of failing with a misleading unknown-command error.\n for (const flag of GLOBAL_FLAGS) {\n current.option(flag.flag, flag.summary)\n }\n }\n return current\n}\n\nfunction buildCommandHelpFooter(spec: CommandSpec): string {\n const lines: string[] = ['']\n if (spec.route) {\n lines.push(`API route: ${spec.route.method} ${spec.route.path}`)\n }\n if (spec.commandClass === 'destructive') {\n lines.push('Destructive: requires --yes in non-interactive sessions.')\n }\n if (spec.isCredited === true) {\n lines.push('Credits: this operation consumes Brew credits.')\n }\n lines.push('', 'Examples:')\n for (const example of spec.examples) {\n lines.push(` ${example}`)\n }\n lines.push('')\n return lines.join('\\n')\n}\n","import { createInterface } from 'node:readline/promises'\nimport { run } from './cli'\nimport type { CliIo } from './lib/types'\n\nfunction realIo(): CliIo {\n return {\n stdout: process.stdout,\n stderr: process.stderr,\n isTtyOut: process.stdout.isTTY === true,\n isTtyIn: process.stdin.isTTY === true,\n env: process.env,\n readStdin: async () => {\n process.stdin.setEncoding('utf8')\n let data = ''\n for await (const chunk of process.stdin) {\n data += chunk\n }\n return data\n },\n readLine: async (prompt: string) => {\n const rl = createInterface({\n input: process.stdin,\n output: process.stderr,\n })\n try {\n return await rl.question(prompt)\n } finally {\n rl.close()\n }\n },\n }\n}\n\nprocess.exitCode = await run(process.argv.slice(2), realIo())\n"]}