@brew.new/cli 0.8.0 → 0.10.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/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"]}
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/transport.ts","../src/lib/context.ts","../src/lib/define-command.ts","../src/lib/input.ts","../src/lib/long-running.ts","../src/lib/paginate.ts","../src/commands/analytics/automations.ts","../src/commands/sends/list.ts","../src/commands/analytics/campaigns.ts","../src/commands/analytics/event-counts.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/count-by.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/unsubscribes/add.ts","../src/commands/domains/unsubscribes/export.ts","../src/commands/domains/unsubscribes/import.ts","../src/commands/domains/unsubscribes/list.ts","../src/commands/domains/unsubscribes/remove.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/lib/interrupt.ts","../src/bin.ts"],"names":["progress","readFileSync","isRecord","result","toFieldList","renderCounts","renderContacts","parseBool","GENERATE_IMAGE_DEFAULT_TIMEOUT_MS","GIF_DEFAULT_TIMEOUT_MS","BrewApiError","AUDIT_EMAIL_DEFAULT_TIMEOUT_MS","EDIT_EMAIL_DEFAULT_TIMEOUT_MS","GENERATE_EMAIL_DEFAULT_TIMEOUT_MS","IMPORT_EMAIL_DEFAULT_TIMEOUT_MS","IMPORT_FIGMA_DEFAULT_TIMEOUT_MS","PREVIEW_EMAIL_CLIENTS_DEFAULT_TIMEOUT_MS","parseInlineInput","asString","writeFileSync","code","ctx","interrupter"],"mappings":"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","file":"bin.js","sourcesContent":["import {\n BrewApiError,\n BrewConnectionError,\n BrewTimeoutError,\n} from '@brew.new/sdk'\nimport type { DrainProgress, RecordedRequest } from './transport'\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/** 128 + SIGINT, as a shell reports a Ctrl-C'd process. */\nexport const EXIT_INTERRUPTED = 130\n/** 128 + SIGTERM, as a shell reports a terminated process. */\nexport const EXIT_TERMINATED = 143\n\nexport type InterruptSignal = 'SIGINT' | 'SIGTERM'\n\nexport function exitCodeForSignal(signal: InterruptSignal): number {\n return signal === 'SIGINT' ? EXIT_INTERRUPTED : EXIT_TERMINATED\n}\n\n/**\n * The process received SIGINT or SIGTERM. It is the abort REASON of the\n * command's signal, so the SDK and the raw transport rethrow it as-is.\n */\nexport class CliInterruptError extends Error {\n readonly signal: InterruptSignal\n\n constructor(signal: InterruptSignal) {\n super(signal === 'SIGINT' ? 'Interrupted.' : 'Terminated.')\n this.name = 'CliInterruptError'\n this.signal = signal\n }\n}\n\n/**\n * A deadline the CLI owns ran out: the command's `--timeout` (or its\n * default), or one raw attempt's. Named `TimeoutError` like the platform's\n * and the SDK's, so every timeout check agrees.\n */\nexport class CliTimeoutError extends Error {\n readonly timeoutMs: number\n\n constructor(timeoutMs: number) {\n super(`No complete response within ${timeoutMs}ms.`)\n this.name = 'TimeoutError'\n this.timeoutMs = timeoutMs\n }\n}\n\n/** A raw request's connection failed or dropped before the body arrived. */\nexport class CliConnectionError extends Error {\n constructor(cause: unknown) {\n super('The connection failed before a complete response arrived.', {\n cause,\n })\n this.name = 'CliConnectionError'\n }\n}\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 CliInterruptError) {\n return exitCodeForSignal(error.signal)\n }\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 * When the outcome of a replaying write is unknown (a timeout, a dropped\n * connection, an interrupt, a 5xx): the key its request carried, and the\n * command that replays it instead of running it twice.\n */\n readonly idempotencyKey?: string\n readonly retryCommand?: string\n /** How far an interrupted `--all` drain got, and the cursor to resume at. */\n readonly progress?: DrainProgress\n}\n\n/**\n * What the CLI knows about the command that failed, for advice an error\n * alone cannot give: which request it was, whether it only read, whether its\n * route replays a keyed request, and the command line that would replay it.\n */\nexport type ErrorContext = {\n readonly request?: RecordedRequest\n readonly isRead?: boolean\n /** `true` when the route replays a request carrying the same key. */\n readonly replays?: boolean\n /** Builds the re-run command line for a key. */\n readonly retryCommand?: (idempotencyKey: string) => string\n /** The command read its body from stdin: the re-run needs it again. */\n readonly readsStdin?: boolean\n readonly drain?: DrainProgress\n}\n\nexport function toErrorEnvelope(\n error: unknown,\n context: ErrorContext = {}\n): CliErrorEnvelope {\n const envelope = baseEnvelope(error, context)\n const drain = context.drain\n return withReplayAdvice(\n drain === undefined ? envelope : { ...envelope, progress: drain },\n error,\n context\n )\n}\n\nfunction baseEnvelope(error: unknown, context: ErrorContext): CliErrorEnvelope {\n if (error instanceof CliInterruptError) {\n return {\n code: 'CLI_INTERRUPTED',\n type: 'cancelled',\n message: `${error.signal === 'SIGINT' ? 'Interrupted' : 'Terminated'} (${error.signal}) ${\n context.request === undefined\n ? 'before any request was sent.'\n : `while waiting for ${context.request.method} ${pathOnly(context.request.path)}.`\n }`,\n }\n }\n if (isTimeoutError(error)) {\n return {\n code: 'CLI_TIMEOUT',\n type: 'service_unavailable',\n message: timeoutMessage(error, context),\n suggestion:\n 'Retry the request. Reuse the same Idempotency-Key for a POST request.',\n }\n }\n if (\n error instanceof BrewConnectionError ||\n error instanceof CliConnectionError\n ) {\n const cause =\n error.cause instanceof Error && error.cause.message !== ''\n ? `: ${error.cause.message}`\n : ''\n return {\n code: 'CLI_CONNECTION',\n type: 'service_unavailable',\n message:\n error instanceof BrewConnectionError\n ? error.message\n : `${error.message.replace(/\\.$/, '')}${\n context.request === undefined\n ? ''\n : ` (${context.request.method} ${pathOnly(context.request.path)})`\n }${cause}.`,\n suggestion: 'Check the connection and retry the request.',\n }\n }\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 (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\nconst IN_PROGRESS_CODE = 'IDEMPOTENCY_IN_PROGRESS'\n\n/**\n * Advice for an UNKNOWN outcome — a timeout, a dropped connection, an\n * interrupt, a 5xx, or the API saying the first attempt is still running.\n * The server keeps working after the CLI disconnects, so a write may still\n * complete: the only safe re-run is one that replays it with the same key.\n * A definite answer (any other 4xx, a conflict that needs a NEW key) gets\n * no key: replaying it would fail the same way.\n */\nfunction withReplayAdvice(\n envelope: CliErrorEnvelope,\n error: unknown,\n context: ErrorContext\n): CliErrorEnvelope {\n if (!isUnknownOutcome(envelope)) {\n return envelope\n }\n const isInProgress =\n envelope.code === IN_PROGRESS_CODE ||\n (error instanceof BrewTimeoutError && error.inProgress) ||\n (error instanceof BrewConnectionError && error.inProgress)\n const holdNote = isInProgress\n ? ' The first attempt is still running on the server, which holds its key for up to 15 minutes: until then a replay answers 409 IDEMPOTENCY_IN_PROGRESS, so wait and re-run.'\n : ''\n if (context.request === undefined) {\n return envelope.code === 'CLI_INTERRUPTED'\n ? { ...envelope, suggestion: 'Nothing was sent.' }\n : envelope\n }\n if (context.isRead === true || context.request.method === 'GET') {\n return envelope.code === 'CLI_INTERRUPTED'\n ? { ...envelope, suggestion: 'It only reads; nothing was changed.' }\n : envelope\n }\n const key = errorIdempotencyKey(error) ?? context.request.idempotencyKey\n if (context.replays !== true || key === undefined) {\n return {\n ...envelope,\n suggestion: `${pathOnly(context.request.path)} may already have been changed, and this route does not replay a request: check its current state before running it again.`,\n }\n }\n const retryCommand = context.retryCommand?.(key)\n return {\n ...envelope,\n suggestion: `The API keeps working after the CLI disconnects, so this may still complete. Re-run with --idempotency-key ${key} to get its result instead of running it twice (the key replays for 24 hours${context.readsStdin === true ? '; pipe the same input to it again' : ''}).${holdNote}`,\n idempotencyKey: key,\n ...(retryCommand === undefined ? {} : { retryCommand }),\n }\n}\n\nfunction isUnknownOutcome(envelope: CliErrorEnvelope): boolean {\n if (\n envelope.code === 'CLI_INTERRUPTED' ||\n envelope.code === 'CLI_TIMEOUT' ||\n envelope.code === 'CLI_CONNECTION' ||\n envelope.code === IN_PROGRESS_CODE\n ) {\n return true\n }\n return envelope.status !== undefined && envelope.status >= 500\n}\n\nfunction errorIdempotencyKey(error: unknown): string | undefined {\n if (\n error instanceof BrewApiError ||\n error instanceof BrewTimeoutError ||\n error instanceof BrewConnectionError\n ) {\n return error.idempotencyKey\n }\n return undefined\n}\n\nfunction timeoutMessage(error: unknown, context: ErrorContext): string {\n if (error instanceof BrewTimeoutError) {\n return error.message\n }\n if (error instanceof CliTimeoutError) {\n const request = context.request\n return request === undefined\n ? error.message\n : `${error.message.replace(/\\.$/, '')} (${request.method} ${pathOnly(request.path)}).`\n }\n return 'The request timed out before the API responded.'\n}\n\n/** Drop the query string: it can carry an email address. */\nfunction pathOnly(path: string): string {\n return path.split('?')[0] ?? path\n}\n\nexport function printError(\n ctx: CliContext,\n error: unknown,\n context: ErrorContext = {}\n): 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, context)\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.retryCommand) {\n lines.push(`Re-run: ${envelope.retryCommand}`)\n }\n if (envelope.progress) {\n const { rowsFetched, pagesFetched, resumeCursor } = envelope.progress\n lines.push(\n `Fetched ${rowsFetched} rows in ${pagesFetched} pages before stopping${\n resumeCursor === undefined\n ? '.'\n : `; resume with --cursor ${resumeCursor} --all.`\n }`\n )\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\n/**\n * The SDK's `BrewTimeoutError`, the CLI's own `CliTimeoutError`, and the\n * platform's `AbortSignal.timeout` DOMException all name themselves\n * `TimeoutError`.\n */\nexport function isTimeoutError(error: unknown): boolean {\n return (\n error instanceof BrewTimeoutError ||\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 return ['brew-cli', ...rerunTokens(rawArgv), '--yes'].join(' ')\n}\n\n/**\n * The command line that replays an interrupted or timed-out write: the same\n * argv with the idempotency key its request carried, so the API returns the\n * first attempt's result instead of running it again.\n */\nexport function buildRetryCommand(\n rawArgv: readonly string[],\n idempotencyKey: string\n): string {\n return [\n 'brew-cli',\n ...rerunTokens(rawArgv, { dropIdempotencyKey: true }),\n '--idempotency-key',\n shellQuote(idempotencyKey),\n ].join(' ')\n}\n\n/**\n * argv, shell-quoted, for a command the caller will run again. Both\n * envelopes go to stdout and into agent transcripts, so a credential is\n * never echoed back: `--api-key` goes (the re-run resolves the key from env\n * or config) and so does any credential header passed to `api --header`.\n */\nfunction rerunTokens(\n rawArgv: readonly string[],\n options: { readonly dropIdempotencyKey?: boolean } = {}\n): string[] {\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 (\n token === '--api-key' ||\n (options.dropIdempotencyKey === true && token === '--idempotency-key')\n ) {\n index += 1\n continue\n }\n if (\n token.startsWith('--api-key=') ||\n (options.dropIdempotencyKey === true &&\n token.startsWith('--idempotency-key='))\n ) {\n continue\n }\n if (token.startsWith('--header=')) {\n if (!isCredentialHeader(token.slice('--header='.length))) {\n tokens.push(shellQuote(token))\n }\n continue\n }\n if (token === '--header') {\n // Variadic: every value up to the next flag belongs to it.\n const values: string[] = []\n while (\n index + 1 < rawArgv.length &&\n !(rawArgv[index + 1] ?? '').startsWith('-')\n ) {\n index += 1\n const value = rawArgv[index] ?? ''\n if (!isCredentialHeader(value)) {\n values.push(shellQuote(value))\n }\n }\n if (values.length > 0) {\n tokens.push('--header', ...values)\n }\n continue\n }\n tokens.push(shellQuote(token))\n }\n return tokens\n}\n\n/**\n * A header whose NAME says it can carry a credential: `Authorization` and\n * `Proxy-Authorization`, cookies, and any name mentioning an API key, auth,\n * a token, secret, password, session or signature. Dropping a harmless\n * header from a re-run costs less than printing a secret into a transcript.\n * `Idempotency-Key` is not a credential: the re-run needs it.\n */\nconst CREDENTIAL_HEADER_NAME =\n /authorization|cookie|api-?key|auth|token|secret|passw(or)?d|session|signature|credential/i\n\nfunction isCredentialHeader(header: string): boolean {\n const name = /^\\s*([^:\\s]+)\\s*:/.exec(header)?.[1]\n return name !== undefined && CREDENTIAL_HEADER_NAME.test(name)\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\n/** How a command's SDK client sends: its signal, deadlines and recorder. */\nexport type SdkTransport = {\n readonly signal: AbortSignal\n readonly fetch: typeof globalThis.fetch\n readonly timeoutMs: number | undefined\n readonly maxRetries: number | undefined\n}\n\nexport function buildSdkClient(\n auth: ResolvedAuth,\n transport: SdkTransport\n): 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 // Client-wide, so every call the command makes observes the interrupt\n // and the deadline without each command file threading a signal.\n signal: transport.signal,\n fetch: transport.fetch,\n ...(transport.timeoutMs === undefined\n ? {}\n : { timeoutMs: transport.timeoutMs }),\n ...(transport.maxRetries === undefined\n ? {}\n : { maxRetries: transport.maxRetries }),\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 { CliUsageError } from './errors'\n\n/**\n * Transport plumbing shared by every command: the whole-command deadline,\n * the `--timeout` / `--max-retries` parsing, and a record of the request in\n * flight so an interrupted or timed-out write can name the idempotency key\n * that replays it.\n */\n\n/**\n * A request's path as the API's routes name it — from `/v1/` on, query\n * included — whatever prefix the base URL adds (`/api`, a tunnel's path).\n */\nexport function apiPathOf(url: URL): string {\n const index = url.pathname.indexOf('/v1/')\n const path = index === -1 ? url.pathname : url.pathname.slice(index)\n return `${path}${url.search}`\n}\n\n/** The one request an envelope can talk about: the latest one sent. */\nexport type RecordedRequest = {\n readonly method: string\n /** Path and query, never the origin (the API URL can carry a port or tunnel). */\n readonly path: string\n readonly idempotencyKey: string | undefined\n}\n\n/** How far an `--all` drain got before it was stopped. */\nexport type DrainProgress = {\n readonly rowsFetched: number\n readonly pagesFetched: number\n readonly resumeCursor?: string\n}\n\nexport type TransportState = {\n /** The latest request sent (SDK or raw), for error envelopes. */\n readonly lastRequest: () => RecordedRequest | undefined\n /** How many HTTP attempts this command made. */\n readonly attempts: () => number\n readonly record: (request: RecordedRequest) => void\n readonly drain: () => DrainProgress | undefined\n readonly setDrain: (progress: DrainProgress) => void\n}\n\nexport function createTransportState(): TransportState {\n let lastRequest: RecordedRequest | undefined\n let attempts = 0\n let drain: DrainProgress | undefined\n return {\n lastRequest: () => lastRequest,\n attempts: () => attempts,\n record: (request) => {\n lastRequest = request\n attempts += 1\n },\n drain: () => drain,\n setDrain: (progress) => {\n drain = progress\n },\n }\n}\n\n/**\n * The SDK's public `fetch` hook, recording each attempt before sending it.\n * `globalThis.fetch` is resolved at CALL time, as the SDK's own default is,\n * so test interceptors installed after the client was built still apply.\n */\nexport function recordingFetch(state: TransportState): typeof globalThis.fetch {\n return (input, init) => {\n // An already-aborted fetch rejects without sending anything: it is not\n // a request the error envelope should say was in flight.\n if (init?.signal?.aborted === true) {\n return globalThis.fetch(input, init)\n }\n const url = new URL(\n typeof input === 'string' || input instanceof URL ? input : input.url\n )\n state.record({\n method: (init?.method ?? 'GET').toUpperCase(),\n path: apiPathOf(url),\n idempotencyKey:\n new Headers(init?.headers).get('idempotency-key') ?? undefined,\n })\n return globalThis.fetch(input, init)\n }\n}\n\n/**\n * `AbortSignal.any`, which landed in Node 20.3; `engines` says `>=20`, so\n * 20.0–20.2 get a listener-based equivalent (and a `release` to detach it).\n */\nexport function anySignal(signals: ReadonlyArray<AbortSignal | undefined>): {\n readonly signal: AbortSignal\n readonly release: () => void\n} {\n const present = signals.filter(\n (signal): signal is AbortSignal => signal !== undefined\n )\n const [only, ...rest] = present\n if (only !== undefined && rest.length === 0) {\n return { signal: only, release: () => undefined }\n }\n if (typeof AbortSignal.any === 'function') {\n return { signal: AbortSignal.any(present), release: () => undefined }\n }\n const controller = new AbortController()\n const alreadyAborted = present.find((signal) => signal.aborted)\n if (alreadyAborted !== undefined) {\n controller.abort(alreadyAborted.reason)\n return { signal: controller.signal, release: () => undefined }\n }\n const listeners = present.map((source) => {\n const onAbort = (): void => {\n controller.abort(source.reason)\n }\n source.addEventListener('abort', onAbort, { once: true })\n return { source, onAbort }\n })\n return {\n signal: controller.signal,\n release: () => {\n for (const { source, onAbort } of listeners) {\n source.removeEventListener('abort', onAbort)\n }\n },\n }\n}\n\nconst DURATION = /^(\\d+(?:\\.\\d+)?)(ms|s|m|h)?$/\nconst UNIT_MS = { ms: 1, s: 1000, m: 60_000, h: 3_600_000 } as const\nconst MAX_TIMEOUT_MS = 24 * 3_600_000\n\n/**\n * `--timeout 90`, `90s`, `1500ms`, `5m` or `1h`; a bare number is seconds.\n * Anything else, zero, or over a day is a usage error (exit 2).\n */\nexport function parseTimeoutFlag(value: unknown): number | undefined {\n if (value === undefined) {\n return\n }\n const match = typeof value === 'string' ? DURATION.exec(value.trim()) : null\n const unit = (match?.[2] ?? 's') as keyof typeof UNIT_MS\n const ms =\n match === null ? Number.NaN : Math.round(Number(match[1]) * UNIT_MS[unit])\n if (!(ms >= 1 && ms <= MAX_TIMEOUT_MS)) {\n throw new CliUsageError(\n `--timeout takes a positive duration up to 24h: 90, 90s, 1500ms or 5m (a bare number is seconds); got \"${String(value)}\".`\n )\n }\n return ms\n}\n\n/** `--max-retries` is a whole number from 0 to 10. */\nexport function parseMaxRetriesFlag(value: unknown): number | undefined {\n if (value === undefined) {\n return\n }\n const parsed =\n typeof value === 'string' && value.trim() !== ''\n ? Number(value)\n : Number.NaN\n if (!(Number.isInteger(parsed) && parsed >= 0 && parsed <= 10)) {\n throw new CliUsageError(\n `--max-retries takes a whole number from 0 to 10; got \"${String(value)}\".`\n )\n }\n return parsed\n}\n\n/**\n * The deadlines one command runs under.\n *\n * - `deadlineMs` bounds the WHOLE command — every attempt, retry, backoff,\n * `--all` page and response body — from the moment it starts (after any\n * confirmation prompt).\n * - `attemptMs` is the per-attempt `timeoutMs` handed to the SDK and the\n * raw transport.\n *\n * An explicit `--timeout` sets both and always wins, longer or shorter than\n * the command's own default. A long-running command's default sets the\n * deadline alone (the SDK already gives the call that long per attempt).\n * Neither: no command deadline, and the SDK's per-attempt default and retry\n * policy apply.\n */\nexport type Budget = {\n readonly deadlineMs: number | undefined\n readonly attemptMs: number | undefined\n}\n\nexport function resolveBudget(input: {\n readonly timeoutMs: number | undefined\n readonly defaultTimeoutMs: number | undefined\n}): Budget {\n if (input.timeoutMs !== undefined) {\n return { deadlineMs: input.timeoutMs, attemptMs: input.timeoutMs }\n }\n return { deadlineMs: input.defaultTimeoutMs, attemptMs: undefined }\n}\n","import type { BrewClient, SdkTransport } from './client'\nimport { buildSdkClient, resolveAuth } from './client'\nimport { CliTimeoutError } from './errors'\nimport { resolveOutputMode } from './output'\nimport {\n anySignal,\n createTransportState,\n parseMaxRetriesFlag,\n parseTimeoutFlag,\n recordingFetch,\n resolveBudget,\n} from './transport'\nimport type {\n CliContext,\n ClientOptions,\n CliIo,\n CommandTraits,\n GlobalFlags,\n} from './types'\n\nexport function makeContext(input: {\n readonly io: CliIo\n readonly flags: Readonly<Record<string, unknown>>\n readonly rawArgv: readonly string[]\n readonly traits?: CommandTraits\n}): CliContext {\n const globals = readGlobalFlags(input.flags)\n const mode = resolveOutputMode({\n isJsonFlag: globals.json,\n isTtyOut: input.io.isTtyOut,\n })\n const budget = resolveBudget({\n timeoutMs: globals.timeoutMs,\n defaultTimeoutMs: input.traits?.defaultTimeoutMs,\n })\n const deadline = new AbortController()\n let deadlineTimer: ReturnType<typeof setTimeout> | undefined\n const { signal } = anySignal([input.io.signal, deadline.signal])\n const transport = createTransportState()\n const cache = new Map<string, BrewClient>()\n const ctx: CliContext = {\n io: input.io,\n mode,\n globals,\n rawArgv: input.rawArgv,\n signal,\n budget,\n transport,\n traits: input.traits,\n startDeadline: () => {\n const ms = budget.deadlineMs\n if (ms === undefined || deadlineTimer !== undefined) {\n return\n }\n deadlineTimer = setTimeout(() => {\n deadline.abort(new CliTimeoutError(ms))\n }, ms)\n },\n stopDeadline: () => {\n if (deadlineTimer !== undefined) {\n clearTimeout(deadlineTimer)\n }\n },\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, sdkTransportFor(ctx))\n cache.set(key, client)\n return client\n },\n }\n return ctx\n}\n\n/**\n * The transport every SDK client of this command shares: the command's\n * signal (interrupt + deadline), the request recorder, and the per-attempt\n * `--timeout` / `--max-retries` when given.\n */\nexport function sdkTransportFor(ctx: CliContext): SdkTransport {\n return {\n signal: ctx.signal,\n fetch: recordingFetch(ctx.transport),\n timeoutMs: ctx.budget.attemptMs,\n maxRetries: ctx.globals.maxRetries,\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 timeoutMs: parseTimeoutFlag(flags.timeout),\n maxRetries: parseMaxRetriesFlag(flags.maxRetries),\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 * A long-running command's whole-command deadline when `--timeout` is not\n * given: the SDK's own per-call default for the same method (see\n * `lib/long-running.ts`). An explicit `--timeout` always wins.\n */\n readonly defaultTimeoutMs?: number\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 flag: '--timeout <duration>',\n summary:\n 'Give up after this long, retries and the response body included (90s, 1500ms, 5m)',\n },\n {\n flag: '--max-retries <n>',\n summary:\n 'Retries after a transient failure, 0-10 (default 2; raw requests make one attempt)',\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\n/**\n * `--idempotency-key` on a route that never replays a request\n * (`x-brew-idempotency: disabled`). Flags are additive-only after release, so\n * the flag stays and is still sent, but its help must not promise a safe\n * retry.\n */\nexport const NON_REPLAYING_IDEMPOTENCY_FLAG = {\n flag: '--idempotency-key <key>',\n summary:\n 'Accepted for compatibility only: this route never replays, so a retry runs again',\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 {\n AUDIT_EMAIL_DEFAULT_TIMEOUT_MS,\n EDIT_EMAIL_DEFAULT_TIMEOUT_MS,\n GENERATE_EMAIL_DEFAULT_TIMEOUT_MS,\n GENERATE_IMAGE_DEFAULT_TIMEOUT_MS,\n GIF_DEFAULT_TIMEOUT_MS,\n IMPORT_EMAIL_DEFAULT_TIMEOUT_MS,\n IMPORT_FIGMA_DEFAULT_TIMEOUT_MS,\n PREVIEW_EMAIL_CLIENTS_DEFAULT_TIMEOUT_MS,\n} from '@brew.new/sdk'\nimport type { HttpMethod } from './define-command'\n\n/**\n * Routes whose server work routinely outlasts the 30 s default, with the\n * SDK's own per-call default for each — one source for the numbers, so the\n * CLI never disagrees with the SDK about how long a generate may take.\n *\n * Commands declare these as `defaultTimeoutMs` (their whole-command\n * deadline), and the `api` escape hatch looks its route up here, so\n * `brew-cli api POST /v1/emails` waits as long as `emails generate` does.\n */\nexport const LONG_RUNNING_ROUTES: ReadonlyArray<{\n readonly method: HttpMethod\n readonly path: string\n readonly timeoutMs: number\n}> = [\n {\n method: 'POST',\n path: '/v1/emails',\n timeoutMs: GENERATE_EMAIL_DEFAULT_TIMEOUT_MS,\n },\n {\n method: 'PATCH',\n path: '/v1/emails/{emailId}',\n timeoutMs: EDIT_EMAIL_DEFAULT_TIMEOUT_MS,\n },\n {\n method: 'POST',\n path: '/v1/emails/audit',\n timeoutMs: AUDIT_EMAIL_DEFAULT_TIMEOUT_MS,\n },\n {\n method: 'POST',\n path: '/v1/emails/{emailId}/client-previews',\n timeoutMs: PREVIEW_EMAIL_CLIENTS_DEFAULT_TIMEOUT_MS,\n },\n {\n method: 'POST',\n path: '/v1/emails/import',\n timeoutMs: IMPORT_EMAIL_DEFAULT_TIMEOUT_MS,\n },\n {\n method: 'POST',\n path: '/v1/emails/figma',\n timeoutMs: IMPORT_FIGMA_DEFAULT_TIMEOUT_MS,\n },\n {\n method: 'POST',\n path: '/v1/content/gif',\n timeoutMs: GIF_DEFAULT_TIMEOUT_MS,\n },\n {\n method: 'POST',\n path: '/v1/content/generate-image',\n timeoutMs: GENERATE_IMAGE_DEFAULT_TIMEOUT_MS,\n },\n]\n\n/** The long-running default for a concrete request path, if it has one. */\nexport function longRunningTimeoutMs(input: {\n readonly method: string\n readonly path: string\n}): number | undefined {\n const bare = input.path.split('?')[0] ?? input.path\n return LONG_RUNNING_ROUTES.find(\n (route) =>\n route.method === input.method && matchesTemplate(route.path, bare)\n )?.timeoutMs\n}\n\n/** `/v1/emails/{emailId}` matches `/v1/emails/eml_1`, segment for segment. */\nexport function matchesTemplate(template: string, path: string): boolean {\n const want = template.split('/')\n const have = path.split('/')\n return (\n want.length === have.length &&\n want.every((segment, index) =>\n segment.startsWith('{') && segment.endsWith('}')\n ? (have[index] ?? '') !== ''\n : segment === have[index]\n )\n )\n}\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 *\n * An interrupt or `--timeout` stops the drain between pages as well as\n * mid-page. Rows fetched so far are NOT printed — a partial list would read\n * as the whole list — but the error reports how far it got and the cursor\n * to resume at.\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 let page: Page<T>\n try {\n ctx.signal.throwIfAborted()\n page = await fetchPage(cursor)\n } catch (error) {\n if (pageCount > 0) {\n ctx.transport.setDrain({\n rowsFetched: rows.length,\n pagesFetched: pageCount,\n ...(cursor === undefined ? {} : { resumeCursor: cursor }),\n })\n }\n throw error\n }\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 { EventCountsInput, EventCountsResponse } 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'\nimport { renderTable } from '../../lib/output'\n\n/**\n * Keys the events read takes for a page of ROWS that a grouped count\n * refuses, with the API's own reason. The SDK does not send them, so they\n * are refused here rather than silently dropped. (`limit` only sizes a page\n * and a count ignores it, as the API does.)\n */\nconst ROW_ONLY_KEYS: Readonly<Record<string, string>> = {\n cursor: 'A grouped count is not paged; drop `cursor`.',\n automationRunId:\n '`groupBy` and `bucket` count email events and do not combine with `automationRunId`.',\n}\n\n/** Grouped counts of the email events `analytics events` lists. */\nexport const analyticsEventCountsCommand = defineCommand({\n path: ['analytics', 'event-counts'],\n summary:\n 'Count email events per field and/or period (clicks per link, events per day, unsubscribe reasons)',\n sdkMethod: 'analytics.eventCounts',\n route: { method: 'GET', path: '/v1/analytics/events' },\n commandClass: 'read',\n flags: [\n {\n flag: '--group-by <fields>',\n summary:\n 'One or two comma-separated fields: eventType, emailId, automationId, sendId, source, link, recipientDomain, unsubscribeReason',\n },\n {\n flag: '--bucket <period>',\n summary: 'Count per UTC day, week (Monday start) or month',\n },\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n {\n flag: '--event-type <type>',\n summary: 'Only one email event type (e.g. clicked)',\n },\n { flag: '--send-id <sendId>', summary: 'Only one send' },\n { flag: '--email-id <emailId>', summary: 'Only one design' },\n {\n flag: '--recipient <rules>',\n summary:\n 'CSV of recipient rules (max 10): an address, @domain, or substring; prefix ! to exclude',\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics event-counts --send-id snd_123 --event-type clicked --group-by link',\n 'brew-cli analytics event-counts --group-by eventType --bucket day',\n 'brew-cli analytics event-counts --group-by unsubscribeReason --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n groupBy: flagString(flags.groupBy),\n bucket: flagString(flags.bucket),\n from: flagString(flags.since),\n to: flagString(flags.until),\n eventType: flagString(flags.eventType),\n sendId: flagString(flags.sendId),\n emailId: flagString(flags.emailId),\n recipient: flagString(flags.recipient),\n })\n if (input.groupBy === undefined && input.bucket === undefined) {\n throw new CliUsageError(\n 'Pass --group-by, --bucket, or both (`analytics events` lists the rows).'\n )\n }\n for (const [key, reason] of Object.entries(ROW_ONLY_KEYS)) {\n if (input[key] !== undefined) {\n throw new CliUsageError(reason)\n }\n }\n const { limit: _pageSize, ...counted } = input\n const body = await ctx.client().analytics.eventCounts(\n asSdkInput<EventCountsInput>({\n ...counted,\n ...(counted.groupBy === undefined\n ? {}\n : { groupBy: toFieldList(counted.groupBy) }),\n })\n )\n return { data: body, human: renderCounts(body) }\n },\n})\n\n/**\n * `--group-by eventType,link` (or a `groupBy` string in --input) becomes the\n * field list the SDK sends; an array from --input passes through. The API\n * validates the fields and how many.\n */\nfunction toFieldList(value: unknown): unknown {\n if (typeof value !== 'string') {\n return value\n }\n return value\n .split(',')\n .map((field) => field.trim())\n .filter((field) => field !== '')\n}\n\nfunction renderCounts(body: EventCountsResponse): string {\n if (body.groups.length === 0) {\n return `No events counted (total ${body.count}).`\n }\n const rows = body.groups.map((group) => ({\n group: Object.entries(group.key ?? {})\n .map(([field, value]) => `${field}=${String(value)}`)\n .join(' '),\n ...(group.bucket === undefined ? {} : { bucket: group.bucket }),\n count: group.count,\n }))\n // A --bucket-only count has no grouped fields: leave out an all-blank column.\n const table = renderTable(rows, [\n ...(rows.some((row) => row.group !== '')\n ? [{ key: 'group', header: 'GROUP' }]\n : []),\n ...(rows.some((row) => 'bucket' in row)\n ? [{ key: 'bucket', header: 'PERIOD' }]\n : []),\n { key: 'count', header: 'COUNT' },\n ])\n const footer = [\n `total ${body.count}`,\n body.otherCount > 0 ? `${body.otherCount} in unlisted groups` : '',\n body.truncated ? `truncated (counted from ${body.coveredFrom ?? '?'})` : '',\n ]\n .filter(Boolean)\n .join(' · ')\n return `${table}\\n${footer}`\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 type { HttpMethod } from './define-command'\nimport {\n CliApiError,\n CliConnectionError,\n CliTimeoutError,\n errorTypeForStatus,\n suggestionForStatus,\n} from './errors'\nimport { anySignal, apiPathOf } from './transport'\nimport type { CliContext } from './types'\n\n/** A raw attempt's deadline when neither `--timeout` nor a route default applies — the SDK's default. */\nexport const DEFAULT_ATTEMPT_TIMEOUT_MS = 30_000\n\n/**\n * One raw HTTP attempt, bounded end to end: a deadline that covers the\n * response BODY as well as the headers, the command's signal (interrupt and\n * `--timeout`), and a record of the request for error envelopes. A failure\n * is classified by what aborted, never by the error's name: the command's\n * own reason (interrupt or deadline) is rethrown as-is, this attempt's\n * deadline becomes a `CliTimeoutError`, anything else a `CliConnectionError`.\n */\nexport async function rawFetch(\n ctx: CliContext,\n request: {\n readonly method: HttpMethod\n readonly url: string\n readonly headers: Headers\n readonly body?: string\n readonly timeoutMs: number\n }\n): Promise<{ readonly response: Response; readonly text: string }> {\n const attempt = new AbortController()\n const timer = setTimeout(() => {\n attempt.abort(new CliTimeoutError(request.timeoutMs))\n }, request.timeoutMs)\n const combined = anySignal([ctx.signal, attempt.signal])\n const { signal } = combined\n if (signal.aborted) {\n clearTimeout(timer)\n combined.release()\n throw signal.reason\n }\n ctx.transport.record({\n method: request.method,\n path: apiPathOf(new URL(request.url)),\n idempotencyKey: request.headers.get('idempotency-key') ?? undefined,\n })\n try {\n const response = await fetch(request.url, {\n method: request.method,\n headers: request.headers,\n signal,\n ...(request.body === undefined ? {} : { body: request.body }),\n })\n return { response, text: await readBodyText(response, signal) }\n } catch (error) {\n if (signal.aborted) {\n throw signal.reason\n }\n throw new CliConnectionError(error)\n } finally {\n clearTimeout(timer)\n combined.release()\n }\n}\n\n/**\n * Read a body as text, ending the read the moment `signal` aborts. Cancels\n * its own reader rather than trusting the runtime to error the stream on\n * abort — a mocked body, or a runtime that does not, would otherwise hang\n * past the deadline.\n */\nasync function readBodyText(\n response: Response,\n signal: AbortSignal\n): Promise<string> {\n if (response.body === null) {\n return ''\n }\n const reader = response.body.getReader()\n const onAbort = (): void => {\n reader.cancel(signal.reason).catch(() => undefined)\n }\n signal.addEventListener('abort', onAbort, { once: true })\n const decoder = new TextDecoder()\n let text = ''\n try {\n for (;;) {\n const { done, value } = await reader.read()\n signal.throwIfAborted()\n if (done) {\n return text + decoder.decode()\n }\n text += decoder.decode(value, { stream: true })\n }\n } finally {\n signal.removeEventListener('abort', onAbort)\n }\n}\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), bounded by `rawFetch`'s deadline. POST\n * calls get an idempotency key automatically; a timed-out or interrupted\n * one reports that key (and the command that replays it), and callers can\n * pass their own to replay 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 }\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, text } = await rawFetch(ctx, {\n method: request.method,\n url: url.toString(),\n headers,\n ...(hasBody ? { body: JSON.stringify(request.body) } : {}),\n timeoutMs: ctx.budget.attemptMs ?? DEFAULT_ATTEMPT_TIMEOUT_MS,\n })\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 { longRunningTimeoutMs } from '../lib/long-running'\nimport {\n buildRawHeaders,\n DEFAULT_ATTEMPT_TIMEOUT_MS,\n rawFetch,\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:\n 'Idempotency-Key header for safe POST retries (a POST gets one generated otherwise)',\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 // A POST always carries a key — the user's, or one generated for this\n // invocation — so a timed-out or interrupted POST can be replayed with\n // it (the envelope prints it) instead of run twice. A key passed with\n // --header wins; the one reported is whatever was actually sent.\n const headers = buildRawHeaders({\n auth,\n path,\n hasJsonBody: body !== undefined,\n idempotencyKey:\n typeof flags.idempotencyKey === 'string' && flags.idempotencyKey !== ''\n ? flags.idempotencyKey\n : method === 'POST'\n ? crypto.randomUUID()\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, text } = await rawFetch(ctx, {\n method,\n url: `${auth.apiUrl}${path}`,\n headers,\n ...(body === undefined ? {} : { body }),\n // --timeout, else the SDK's own default for this route when it is a\n // long-running one (`api POST /v1/emails` waits as long as `emails\n // generate`), else the SDK's 30 s.\n timeoutMs:\n ctx.budget.attemptMs ??\n longRunningTimeoutMs({ method, path: barePath }) ??\n DEFAULT_ATTEMPT_TIMEOUT_MS,\n })\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 INPUT_FLAG,\n mergeInput,\n NON_REPLAYING_IDEMPOTENCY_FLAG,\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 // The route never replays (a replay would disclose the plaintext key\n // again): a retry mints a second key, whatever the key says.\n NON_REPLAYING_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 type { operations } from '../../generated/openapi-types'\nimport { defineCommand } from '../../lib/define-command'\nimport { flagInt, flagString } 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 { rawRequest } from '../../lib/raw-request'\n\ntype ApiKeysPage =\n operations['listApiKeys']['responses'][200]['content']['application/json']\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 flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG],\n examples: ['brew-cli api-keys list', 'brew-cli api-keys list --json'],\n run: async ({ ctx, flags }) => {\n const limit = flagInt(flags.limit, '--limit')\n const cursor = flagString(flags.cursor)\n if (limit === undefined && cursor === undefined && flags.all !== true) {\n const result = await ctx.client().apiKeys.list()\n return { data: result, human: renderApiKeys(result.data) }\n }\n // `@brew.new/sdk` 10's `apiKeys.list(options?)` takes no page input, so a\n // paged read goes through the raw transport.\n const page = (after: string | undefined) =>\n rawRequest<ApiKeysPage>(ctx, {\n method: 'GET',\n path: '/v1/api-keys',\n query: {\n limit: limit === undefined ? undefined : String(limit),\n cursor: after,\n },\n })\n if (flags.all === true) {\n const rows = await collectAll(ctx, (next) => page(next ?? cursor))\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderApiKeys(rows),\n }\n }\n const result = await page(cursor)\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 {\n flag: '--search <text>',\n summary: 'Only audiences whose name contains this text',\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 search: flagString(flags.search),\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 toStringArray,\n} from '../../lib/input'\n\nexport const audiencesUpdateCommand = defineCommand({\n path: ['audiences', 'update'],\n summary:\n 'Update an audience segment: its name, its filters, or its members by email',\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: [\n { flag: '--name <name>', summary: 'New audience name' },\n {\n flag: '--add-email <addresses...>',\n summary:\n 'Add these contacts by email, repeatable (refused when the filters cannot express it exactly)',\n },\n {\n flag: '--remove-email <addresses...>',\n summary: 'Remove these contacts by email, repeatable (same rule)',\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli audiences update aud_3k9sQ --name \"VIP customers\"',\n 'brew-cli audiences update aud_3k9sQ --add-email ada@example.com --remove-email bo@example.com',\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, {\n name: flagString(flags.name),\n addEmails: toStringArray(flags.addEmail),\n removeEmails: toStringArray(flags.removeEmail),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError(\n 'Nothing to update — pass --name, --add-email, --remove-email or --input.'\n )\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: [\n {\n flag: '--search <text>',\n summary: 'Only automations whose name matches these words',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\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 search: flagString(flags.search),\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 {\n GetTriggerContractInput,\n PutTriggerContractInput,\n ValidateTriggerPayloadInput,\n} 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\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 formatOption(value: unknown): string | undefined {\n const format = flagString(value)\n if (format !== undefined && !FORMATS.has(format)) {\n throw new CliUsageError(\n `Unknown --format '${format}' (expected json | ts | zod | jsonschema | skill).`\n )\n }\n return 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: 'automations.triggers.getContract',\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 format = formatOption(flags.format)\n const body = await ctx.client().automations.triggers.getContract(\n asSdkInput<GetTriggerContractInput>({\n triggerEventId: args.triggerEventId ?? '',\n ...(format === undefined ? {} : { format }),\n })\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: 'automations.triggers.putContract',\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 // The trigger id is spread LAST: a `triggerEventId` inside --input must\n // not retarget the call at another trigger.\n const body = await ctx.client().automations.triggers.putContract(\n asSdkInput<PutTriggerContractInput>({\n ...requestBody,\n triggerEventId: args.triggerEventId ?? '',\n })\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: 'automations.triggers.validatePayload',\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 ctx.client().automations.triggers.validatePayload(\n asSdkInput<ValidateTriggerPayloadInput>({\n triggerEventId: args.triggerEventId ?? '',\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 type { components } from '../../generated/openapi-types'\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\ntype BrandImagesPage = components['schemas']['BrandImagesResponse']\ntype BrandAsset = BrandImagesPage['data'][number]\n\n/**\n * Filters brew-v2#1713 retired (`type` became `kind`; `aspectRatio` went).\n * The SDK does not send them, so they are refused here, naming the way\n * forward, rather than silently dropped.\n */\nconst RETIRED_FILTERS: Readonly<Record<string, string>> = {\n type: '--type (type) was retired by the API: use --kind logo|brand|generated.',\n aspectRatio:\n '--aspect-ratio (aspectRatio) was retired by the API: every image carries its width and height.',\n}\n\nexport const brandGetImagesCommand = defineCommand({\n path: ['brand', 'get-images'],\n summary:\n \"Browse or semantically search the brand's assets (logos, brand images, images made with Brew)\",\n sdkMethod: 'brand.getImages',\n route: { method: 'GET', path: '/v1/brand/images' },\n commandClass: 'read',\n flags: [\n {\n flag: '--query <text>',\n summary:\n 'Semantic search over what the images show (1 credit per new search; logos are not searchable)',\n },\n {\n flag: '--kind <kind>',\n summary: 'logo, brand (from the site or uploaded) or generated',\n },\n {\n flag: '--sort <order>',\n summary: 'Browse order: newest (default) or oldest; ignored by --query',\n },\n {\n flag: '--type <type>',\n summary: 'Retired by the API: use --kind',\n },\n {\n flag: '--aspect-ratio <ratio>',\n summary:\n 'Retired by the API: rows carry width and height instead of a shape filter',\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 --kind generated --sort oldest --all',\n 'brew-cli brand get-images --query \"team photo\" --kind brand',\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 kind: flagString(flags.kind),\n sort: flagString(flags.sort),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n type: flagString(flags.type),\n aspectRatio: flagString(flags.aspectRatio),\n })\n // A retired filter from a flag or from --input fails here, naming the\n // way forward, instead of as a 400 from the API.\n for (const [key, message] of Object.entries(RETIRED_FILTERS)) {\n if (input[key] !== undefined) {\n throw new CliUsageError(message)\n }\n }\n // --kind and --sort pass through unchecked: the API validates them.\n const page = (cursor: string | undefined) =>\n ctx\n .client()\n .brand.getImages(\n asSdkInput<ListBrandImagesInput>(\n cursor === undefined ? input : { ...input, cursor }\n )\n )\n if (flags.all === true) {\n const rows = await collectAll(ctx, page)\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAssets(rows),\n }\n }\n const result = await page(undefined)\n return { data: result, human: renderAssets(result.data) }\n },\n})\n\nfunction renderAssets(rows: ReadonlyArray<BrandAsset>): string {\n if (rows.length === 0) {\n return 'No brand assets found.'\n }\n return renderTable(\n rows.map((row) => ({\n assetId: row.assetId,\n kind: row.kind,\n url: row.url,\n size:\n row.width !== undefined && row.height !== undefined\n ? `${row.width}x${row.height}`\n : '',\n added: row.addedAt ?? '',\n })),\n [\n { key: 'assetId', header: 'ASSET ID' },\n { key: 'kind', header: 'KIND' },\n { key: 'url', header: 'URL' },\n { key: 'size', header: 'SIZE' },\n { key: 'added', header: 'ADDED' },\n ]\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 type { ListBrandsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagInt, flagString } from '../../lib/input'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\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 flags: [\n {\n flag: '--status <status>',\n summary:\n 'Only brands in one lifecycle state: extracting | completed | failed | deleting',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n ],\n examples: [\n 'brew-cli brands list --json',\n 'brew-cli brands list --status completed',\n 'brew-cli brands list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const input = {\n status: flagString(flags.status),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n }\n const brands = ctx.client().brands\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n brands.list(\n asSdkInput<ListBrandsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n }\n }\n return { data: await brands.list(asSdkInput<ListBrandsInput>(input)) }\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 type {\n CountContactsByInput,\n CountContactsByResponse,\n} 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 parseFilterFlags,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\n\n/**\n * Exact contact counts per field value, per email domain, or per signup\n * period — the grouped form of `contacts count`, which returns only the\n * total.\n */\nexport const contactsCountByCommand = defineCommand({\n path: ['contacts', 'count-by'],\n summary:\n 'Count contacts per field value, email domain, or signup period (largest group first)',\n sdkMethod: 'contacts.countBy',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n flags: [\n {\n flag: '--group-by <fields>',\n summary:\n 'One or two comma-separated fields: a contact field, a custom field, or emailDomain',\n },\n {\n flag: '--bucket <period>',\n summary: 'Count per UTC day, week or month of createdAt',\n },\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-by --group-by emailDomain',\n 'brew-cli contacts count-by --bucket month --filter subscribed:equals:true',\n 'brew-cli contacts count-by --group-by country,plan --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n groupBy: flagString(flags.groupBy),\n bucket: flagString(flags.bucket),\n search: flagString(flags.search),\n filters: parseFilterFlags(flags.filter),\n audienceId: flagString(flags.audience),\n logic: flagString(flags.logic),\n })\n if (input.groupBy === undefined && input.bucket === undefined) {\n throw new CliUsageError(\n 'Pass --group-by, --bucket, or both (`contacts count` gives the total alone).'\n )\n }\n const body = await ctx.client().contacts.countBy(\n asSdkInput<CountContactsByInput>({\n ...input,\n ...(input.groupBy === undefined\n ? {}\n : { groupBy: toFieldList(input.groupBy) }),\n })\n )\n return { data: body, human: renderCounts(body) }\n },\n})\n\n/**\n * `--group-by country,plan` (or a `groupBy` string in --input) becomes the\n * field list; an array from --input passes through. The API validates the\n * fields and how many.\n */\nfunction toFieldList(value: unknown): unknown {\n if (typeof value !== 'string') {\n return value\n }\n return value\n .split(',')\n .map((field) => field.trim())\n .filter((field) => field !== '')\n}\n\nfunction renderCounts(body: CountContactsByResponse): string {\n const groups = body.groups ?? []\n if (groups.length === 0) {\n return `No contacts counted (total ${body.count}).`\n }\n const rows = groups.map((group) => ({\n group: Object.entries(group.key)\n .map(([field, value]) => `${field}=${String(value)}`)\n .join(' '),\n ...(group.bucket === undefined || group.bucket === null\n ? {}\n : { bucket: group.bucket }),\n count: group.count,\n }))\n // A --bucket-only count has no grouped fields: leave out an all-blank column.\n const table = renderTable(rows, [\n ...(rows.some((row) => row.group !== '')\n ? [{ key: 'group', header: 'GROUP' }]\n : []),\n ...(rows.some((row) => 'bucket' in row)\n ? [{ key: 'bucket', header: 'PERIOD' }]\n : []),\n { key: 'count', header: 'COUNT' },\n ])\n const otherCount = body.otherCount ?? 0\n const footer = [\n `total ${body.count}`,\n otherCount > 0 ? `${otherCount} in unlisted groups` : '',\n ]\n .filter(Boolean)\n .join(' · ')\n return `${table}\\n${footer}`\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 flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n parseKeyValues,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\n// SDK 10's `importCsv` types only `{ csv, mapping, validate }` but sends\n// its input as the body, so `dateOrder` and `consent` reach the API through\n// the boundary cast until the CLI adopts SDK 11.2.\ntype ImportCsvContactsInput = Parameters<ContactsResource['importCsv']>[0]\n\nexport const contactsImportCsvCommand = defineCommand({\n path: ['contacts', 'import-csv'],\n summary:\n 'Bulk-import contacts from a CSV file or stdin (free; --validate costs 2 credits per address)',\n sdkMethod: 'contacts.importCsv',\n route: { method: 'POST', path: '/v1/contacts/import-csv' },\n commandClass: 'write',\n flags: [\n {\n flag: '--file <path>',\n summary: 'CSV file to import, or - for stdin (or csv in --input)',\n },\n {\n flag: '--mapping <pairs...>',\n summary: 'Column mapping csvColumn=fieldName, repeatable',\n },\n {\n flag: '--date-order <order>',\n summary:\n 'month_first or day_first: how to read dates like 03/04/2026 (a day over 12 in the column wins; default month-first, with a DATE_ORDER_ASSUMED warning)',\n },\n {\n flag: '--validate',\n summary:\n 'Deliverability-check every imported address (2 credits per address)',\n },\n {\n flag: '--consent-source <source>',\n summary:\n 'Stamp a marketing consent record on every row: api, form or import (sets the source of a record given in --input)',\n },\n INPUT_FLAG,\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 'brew-cli contacts import-csv --file eu-signups.csv --date-order day_first --consent-source import',\n ],\n run: async ({ ctx, flags }) => {\n if (flags.input === '-' && flags.file === '-') {\n throw new CliUsageError('Only one of --input and --file can read stdin.')\n }\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const consentSource = flagString(flags.consentSource)\n const input = mergeInput(base, {\n csv: await readTextFlag(ctx, flags.file, '--file'),\n mapping: parseKeyValues(flags.mapping, '--mapping'),\n dateOrder: flagString(flags.dateOrder),\n validate: flags.validate === true ? true : undefined,\n })\n if (typeof input.csv !== 'string' || input.csv.trim() === '') {\n throw new CliUsageError(\n 'Pass the CSV with --file (a path, or - for stdin) or as csv in --input.'\n )\n }\n if (consentSource !== undefined) {\n // --consent-source sets the source; a record from --input keeps its\n // capturedAt, policyVersion and evidence.\n const record = input.consent\n input.consent = {\n ...(typeof record === 'object' && record !== null ? record : {}),\n source: consentSource,\n }\n }\n const result = await ctx\n .client()\n .contacts.importCsv(\n asSdkInput<ImportCsvContactsInput>(input),\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 { GENERATE_IMAGE_DEFAULT_TIMEOUT_MS } 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 defaultTimeoutMs: GENERATE_IMAGE_DEFAULT_TIMEOUT_MS,\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 { GIF_DEFAULT_TIMEOUT_MS } 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 defaultTimeoutMs: GIF_DEFAULT_TIMEOUT_MS,\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 { InferPayloadContractInput } 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 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: 'payloadContracts.infer',\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: {...} }`; only the\n // envelope carries `subjectKind` (a bare example may have its own field of\n // that name). Un-inferable spots (nulls, empty arrays) come back under\n // `issues`.\n run: async ({ ctx, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n const isEnvelope = input.example !== undefined\n const example = isEnvelope ? 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 // `subjectKind` passes through unchecked: the API validates it.\n const body = await ctx.client().payloadContracts.infer(\n asSdkInput<InferPayloadContractInput>({\n example,\n ...(isEnvelope && input.subjectKind !== undefined\n ? { subjectKind: input.subjectKind }\n : {}),\n })\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: '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. Since 0.10.0 (SDK 11.2) every one of\n * them goes through an SDK method except the paged `api-keys list` and\n * `integrations list` reads and the `api` escape hatch.\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 '130':\n 'interrupted by SIGINT (Ctrl-C); the CLI then re-raises the signal',\n '143': 'terminated by SIGTERM; the CLI then re-raises the signal',\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 type { CliContext } from '../lib/types'\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 rethrowIfStopped(ctx)\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 rethrowIfStopped(ctx)\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 rethrowIfStopped(ctx)\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\n/**\n * When the command itself is stopped — Ctrl-C, SIGTERM, or its own\n * `--timeout` running out — doctor stops with that envelope instead of\n * turning it into a \"not reachable\" finding (or skipping the auth check in\n * a report that still exits 0). A probe that fails on its own, including\n * the SDK's per-attempt timeout, stays a finding.\n */\nfunction rethrowIfStopped(ctx: CliContext): void {\n ctx.signal.throwIfAborted()\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 { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n IDEMPOTENCY_FLAG,\n requestOptions,\n toStringArray,\n} from '../../../lib/input'\n\n/** Suppress addresses from ONE marketing domain's mail. */\nexport const domainsUnsubscribesAddCommand = defineCommand({\n path: ['domains', 'unsubscribes', 'add'],\n summary:\n \"Add addresses to a marketing domain's unsubscribe list (that domain only)\",\n sdkMethod: 'domains.unsubscribes.add',\n route: { method: 'POST', path: '/v1/domains/{domainId}/unsubscribes' },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Marketing domain id', isRequired: true },\n ],\n flags: [\n {\n flag: '--email <addresses...>',\n summary: 'Address to suppress, repeatable (up to 1,000)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli domains unsubscribes add dom_123 --email ada@example.com --email bo@example.com',\n ],\n run: async ({ ctx, args, flags }) => {\n const emails = toStringArray(flags.email)\n if (emails === undefined) {\n throw new CliUsageError('Pass at least one --email.')\n }\n const body = await ctx\n .client()\n .domains.unsubscribes.add(\n { domainId: args.domainId ?? '', emails: [...emails] },\n requestOptions(flags)\n )\n return { data: body }\n },\n})\n","import type { ExportDomainUnsubscribesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput, flagString } from '../../../lib/input'\n\n/** A domain's list as CSV text. */\nexport const domainsUnsubscribesExportCommand = defineCommand({\n path: ['domains', 'unsubscribes', 'export'],\n summary: \"A domain's unsubscribe list as CSV (truncated when capped)\",\n sdkMethod: 'domains.unsubscribes.export',\n route: {\n method: 'GET',\n path: '/v1/domains/{domainId}/unsubscribes/export',\n },\n commandClass: 'read',\n args: [\n { name: 'domainId', summary: 'Marketing domain id', isRequired: true },\n ],\n flags: [\n {\n flag: '--scope <scope>',\n summary: 'any (default), domain or all',\n },\n ],\n examples: [\n 'brew-cli domains unsubscribes export dom_123 > optouts.csv',\n 'brew-cli domains unsubscribes export dom_123 --scope all --json',\n ],\n run: async ({ ctx, args, flags }) => {\n const scope = flagString(flags.scope)\n // --scope passes through unchecked: the API validates it.\n const body = await ctx.client().domains.unsubscribes.export(\n asSdkInput<ExportDomainUnsubscribesInput>({\n domainId: args.domainId ?? '',\n ...(scope === undefined ? {} : { scope }),\n })\n )\n return { data: body, human: body.csv }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n flagString,\n IDEMPOTENCY_FLAG,\n readTextFlag,\n requestOptions,\n} from '../../../lib/input'\n\n/** Add every address in a CSV to a domain's list. */\nexport const domainsUnsubscribesImportCommand = defineCommand({\n path: ['domains', 'unsubscribes', 'import'],\n summary: \"Add every address in a CSV to a domain's unsubscribe list\",\n sdkMethod: 'domains.unsubscribes.import',\n route: {\n method: 'POST',\n path: '/v1/domains/{domainId}/unsubscribes/import',\n },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Marketing domain id', isRequired: true },\n ],\n flags: [\n { flag: '--file <path>', summary: 'CSV file, or - for stdin' },\n {\n flag: '--column <header>',\n summary: 'The column holding the addresses (by header)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli domains unsubscribes import dom_123 --file optouts.csv --column Email',\n ],\n run: async ({ ctx, args, 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 column = flagString(flags.column)\n const body = await ctx.client().domains.unsubscribes.import(\n {\n domainId: args.domainId ?? '',\n csv,\n ...(column === undefined ? {} : { column }),\n },\n requestOptions(flags)\n )\n return { data: body }\n },\n})\n","import type { ListDomainUnsubscribesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput, flagInt, flagString } from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport { CURSOR_FLAG, LIMIT_FLAG } from '../../../lib/paginate'\n\n/** One page of a marketing domain's unsubscribe list. */\nexport const domainsUnsubscribesListCommand = defineCommand({\n path: ['domains', 'unsubscribes', 'list'],\n summary: \"One page of a marketing domain's unsubscribe list, newest first\",\n sdkMethod: 'domains.unsubscribes.list',\n route: { method: 'GET', path: '/v1/domains/{domainId}/unsubscribes' },\n commandClass: 'read',\n args: [\n { name: 'domainId', summary: 'Marketing domain id', isRequired: true },\n ],\n flags: [\n { flag: '--q <text>', summary: 'Search by address' },\n {\n flag: '--scope <scope>',\n summary:\n 'any (default), domain (this list only) or all (brand-wide opt-outs)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ],\n examples: [\n 'brew-cli domains unsubscribes list dom_123',\n 'brew-cli domains unsubscribes list dom_123 --scope domain --q ada',\n ],\n run: async ({ ctx, args, flags }) => {\n const limit = flagInt(flags.limit, '--limit')\n const q = flagString(flags.q)\n const scope = flagString(flags.scope)\n const cursor = flagString(flags.cursor)\n // --scope passes through unchecked: the API validates it.\n const body = await ctx.client().domains.unsubscribes.list(\n asSdkInput<ListDomainUnsubscribesInput>({\n domainId: args.domainId ?? '',\n ...(q === undefined ? {} : { q }),\n ...(scope === undefined ? {} : { scope }),\n ...(limit === undefined ? {} : { limit }),\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n return { data: body, human: renderRows(body.data) }\n },\n})\n\nfunction renderRows(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No unsubscribes on this list.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'email', header: 'EMAIL' },\n { key: 'scope', header: 'SCOPE' },\n { key: 'unsubscribedAt', header: 'UNSUBSCRIBED' },\n ])\n}\n","import { defineCommand } from '../../../lib/define-command'\n\n/** Take one address off a domain's list. */\nexport const domainsUnsubscribesRemoveCommand = defineCommand({\n path: ['domains', 'unsubscribes', 'remove'],\n summary:\n \"Take one address off a domain's unsubscribe list (never re-subscribes a brand-wide opt-out)\",\n sdkMethod: 'domains.unsubscribes.remove',\n route: {\n method: 'DELETE',\n path: '/v1/domains/{domainId}/unsubscribes/{email}',\n },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Marketing domain id', isRequired: true },\n { name: 'email', summary: 'Address to remove', isRequired: true },\n ],\n flags: [],\n examples: ['brew-cli domains unsubscribes remove dom_123 ada@example.com'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.unsubscribes.remove({\n domainId: args.domainId ?? '',\n email: args.email ?? '',\n }),\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 defaultTimeoutMs: AUDIT_EMAIL_DEFAULT_TIMEOUT_MS,\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 // The 65 s audit deadline is the command's `defaultTimeoutMs`: the\n // whole command, body read included, and `--timeout` overrides it.\n const result = await ctx\n .client()\n .emails.auditEmail(\n asSdkInput<AuditEmailInput>(input),\n requestOptions(flags)\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 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 {\n flag: '--title <title>',\n summary: 'Name for the clone (default: Copy of <source title>)',\n },\n {\n flag: '--group-id <groupId>',\n summary: 'File the clone under an existing group (grp_…), or ungrouped',\n },\n {\n flag: '--group-name <name>',\n summary:\n 'File the clone under a group found (or created) by this name; not with --group-id',\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 'brew-cli emails clone eml_2SmZOWV3ZQ7W5x6g3m4p --title \"Fall sale (B)\" --group-name \"Fall campaign\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailVersionId = flagString(flags.emailVersionId)\n const title = flagString(flags.title)\n const groupId = flagString(flags.groupId)\n const groupName = flagString(flags.groupName)\n if (groupId !== undefined && groupName !== undefined) {\n throw new CliUsageError('Pass --group-id or --group-name, not both.')\n }\n return {\n data: await ctx.client().emails.clone(\n asSdkInput<CloneEmailInput>({\n emailId: args.emailId ?? '',\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n ...(title === undefined ? {} : { title }),\n ...(groupId === undefined ? {} : { groupId }),\n ...(groupName === undefined ? {} : { groupName }),\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 { EDIT_EMAIL_DEFAULT_TIMEOUT_MS } 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 defaultTimeoutMs: EDIT_EMAIL_DEFAULT_TIMEOUT_MS,\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 )\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, brevo, hubspot, klaviyo, mailchimp, mailjet, 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: '--sender-email <email>',\n summary:\n 'Brevo or Mailjet: the active sender to use (omit when the account has exactly one)',\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, brevo, hubspot, klaviyo, mailchimp, mailjet, iterable, postmark, onesignal, mailgun, or sendgrid.'\n )\n }\n const templateName = flagString(flags.templateName)\n const senderEmail = flagString(flags.senderEmail)\n return {\n data: await ctx.client().emails.export(\n asSdkInput<ExportEmailInput>({\n emailId: args.emailId ?? '',\n provider,\n ...(templateName === undefined ? {} : { templateName }),\n ...(senderEmail === undefined ? {} : { senderEmail }),\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 { GENERATE_EMAIL_DEFAULT_TIMEOUT_MS } 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 defaultTimeoutMs: GENERATE_EMAIL_DEFAULT_TIMEOUT_MS,\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(\n asSdkInput<GenerateEmailInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } 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 — 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, text, links',\n },\n {\n flag: '--email-version-id <emailVersionId>',\n summary:\n 'Read this saved version instead of the current head (ids from --include versions)',\n },\n {\n flag: '--run-id <runId>',\n summary:\n 'Read the version a generate or edit run produced (the runId it returned)',\n },\n ],\n examples: [\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p --include html,versions',\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p --include text,links',\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p --email-version-id emv_2SmZOWV3ZQ7W5x6g3m4p --include html',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailId = args.emailId ?? ''\n const include = flagString(flags.include)\n const emailVersionId = flagString(flags.emailVersionId)\n const runId = flagString(flags.runId)\n if (emailVersionId !== undefined && runId !== undefined) {\n throw new CliUsageError(\n 'Pass --email-version-id or --run-id, not both: each selects the version to read.'\n )\n }\n return {\n data: await ctx.client().emails.get(emailId, {\n ...(include === undefined ? {} : { include }),\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n ...(runId === undefined ? {} : { runId }),\n }),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { flagInt, flagString } from '../../lib/input'\nimport { CURSOR_FLAG } from '../../lib/paginate'\n\n/** A saved audit, read back by the `auditId` that `emails audit` returned. */\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: 'emails.getAudit',\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 // Its own page size: a saved audit pages 1-50 findings (default 10), not\n // the shared list's 1-100.\n flags: [\n { flag: '--limit <n>', summary: 'Findings per page, 1-50 (default 10)' },\n CURSOR_FLAG,\n ],\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 cursor = flagString(flags.cursor)\n const body = await ctx.client().emails.getAudit(args.auditId ?? '', {\n ...(cursor === undefined ? {} : { cursor }),\n ...(limit === undefined ? {} : { limit }),\n })\n return { data: body }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\n/** Polls the rendering job `emails preview-clients` starts. */\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: 'emails.getClientPreview',\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 ctx\n .client()\n .emails.getClientPreview(args.previewId ?? '')\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 { IMPORT_EMAIL_DEFAULT_TIMEOUT_MS } 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 defaultTimeoutMs: IMPORT_EMAIL_DEFAULT_TIMEOUT_MS,\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 { IMPORT_FIGMA_DEFAULT_TIMEOUT_MS } 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 defaultTimeoutMs: IMPORT_FIGMA_DEFAULT_TIMEOUT_MS,\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 {\n flag: '--group-id <groupId>',\n summary: 'File the design under an existing group (grp_…), or ungrouped',\n },\n {\n flag: '--group-name <name>',\n summary:\n 'File the design under a group found (or created) by this name; not with --group-id',\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 const groupId = flagString(flags.groupId)\n const groupName = flagString(flags.groupName)\n if (groupId !== undefined && groupName !== undefined) {\n throw new CliUsageError('Pass --group-id or --group-name, not both.')\n }\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 ...(groupId === undefined ? {} : { groupId }),\n ...(groupName === undefined ? {} : { groupName }),\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: '--search <text>',\n summary:\n 'Only designs whose title contains this text, or whose title, subject, preview or text matches its words',\n },\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 search: flagString(flags.search),\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 { PREVIEW_EMAIL_CLIENTS_DEFAULT_TIMEOUT_MS } 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 defaultTimeoutMs: PREVIEW_EMAIL_CLIENTS_DEFAULT_TIMEOUT_MS,\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 type { ListFieldsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagInt, flagString } from '../../lib/input'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\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 flags: [\n {\n flag: '--include <tokens>',\n summary:\n 'Expansions: coverage (per-field fill stats: percent of contacts with a value, and top values)',\n },\n {\n flag: '--audience-id <audienceId>',\n summary:\n 'Scope --include coverage to one saved audience (ignored without it)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n ],\n examples: [\n 'brew-cli fields list',\n 'brew-cli fields list --include coverage',\n 'brew-cli fields list --include coverage --audience-id aud_2SmZOWV3ZQ7W5x6g3m4p --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const input = {\n include: flagString(flags.include),\n audienceId: flagString(flags.audienceId),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n }\n const fields = ctx.client().fields\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n fields.list(\n asSdkInput<ListFieldsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n }\n }\n return { data: await fields.list(asSdkInput<ListFieldsInput>(input)) }\n },\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 type { operations } from '../../generated/openapi-types'\nimport { defineCommand } from '../../lib/define-command'\nimport { flagInt, flagString } 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 { rawRequest } from '../../lib/raw-request'\n\ntype IntegrationsPage =\n operations['listIntegrations']['responses'][200]['content']['application/json']\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 flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG],\n examples: ['brew-cli integrations list', 'brew-cli integrations list --json'],\n run: async ({ ctx, flags }) => {\n const limit = flagInt(flags.limit, '--limit')\n const cursor = flagString(flags.cursor)\n if (limit === undefined && cursor === undefined && flags.all !== true) {\n const result = await ctx.client().integrations.list()\n return { data: result, human: renderIntegrations(result.data) }\n }\n // `@brew.new/sdk` 10's `integrations.list(options?)` takes no page input, so a\n // paged read goes through the raw transport.\n const page = (after: string | undefined) =>\n rawRequest<IntegrationsPage>(ctx, {\n method: 'GET',\n path: '/v1/integrations',\n query: {\n limit: limit === undefined ? undefined : String(limit),\n cursor: after,\n },\n })\n if (flags.all === true) {\n const rows = await collectAll(ctx, (next) => page(next ?? cursor))\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderIntegrations(rows),\n }\n }\n const result = await page(cursor)\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 { sdkTransportFor } from '../lib/context'\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, sdkTransportFor(ctx)).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 { TemplatesIncludeToken } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagString } from '../../lib/input'\n\n/**\n * One public gallery template. Organization-wide like `templates list`, so no\n * brand binding is sent (the SDK omits X-Brand-Id for templates).\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: 'templates.get',\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 include = flagString(flags.include)\n // The token passes through unchecked: the API validates it and names\n // the ones it takes.\n const body = await ctx\n .client()\n .templates.get(\n args.templateId ?? '',\n include === undefined\n ? undefined\n : { include: asSdkInput<TemplatesIncludeToken>(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 // `representation` may arrive through --input, so the SDK's return\n // type is the full-or-summary union; rows pass through verbatim.\n const rows = await collectAll<unknown>(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 // Ctrl-C, SIGTERM or the command's own --timeout stops it: none of\n // them is an outage to degrade around.\n ctx.signal.throwIfAborted()\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 { analyticsEventCountsCommand } from './commands/analytics/event-counts'\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 { contactsCountByCommand } from './commands/contacts/count-by'\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 { domainsUnsubscribesAddCommand } from './commands/domains/unsubscribes/add'\nimport { domainsUnsubscribesExportCommand } from './commands/domains/unsubscribes/export'\nimport { domainsUnsubscribesImportCommand } from './commands/domains/unsubscribes/import'\nimport { domainsUnsubscribesListCommand } from './commands/domains/unsubscribes/list'\nimport { domainsUnsubscribesRemoveCommand } from './commands/domains/unsubscribes/remove'\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 contactsCountByCommand,\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 analyticsEventCountsCommand,\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 domainsUnsubscribesListCommand,\n domainsUnsubscribesAddCommand,\n domainsUnsubscribesRemoveCommand,\n domainsUnsubscribesImportCommand,\n domainsUnsubscribesExportCommand,\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 { BrewApiError } from '@brew.new/sdk'\nimport { Command, CommanderError } from 'commander'\nimport { buildRetryCommand, 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 CliApiError,\n CliUsageError,\n type ErrorContext,\n EXIT_OK,\n EXIT_USAGE,\n printError,\n toExitCode,\n} from './lib/errors'\nimport { IDEMPOTENCY_FLAG } from './lib/input'\nimport { matchesTemplate } from './lib/long-running'\nimport { printData } from './lib/output'\nimport type { CliContext, CliIo, CommandTraits } 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 130 interrupted (SIGINT) · 143 terminated (SIGTERM)\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 const reported = reportedError(ctx, error)\n printError(ctx, reported, errorContextFor(ctx, commands))\n return toExitCode(reported)\n }\n}\n\n/**\n * Once the command's signal has aborted — an interrupt or the deadline —\n * its reason is what happened, whatever surfaced first: a prompt that threw\n * its own AbortError, a stream that closed. Only a real HTTP answer that\n * arrived before the abort keeps its own error.\n */\nfunction reportedError(ctx: CliContext, error: unknown): unknown {\n if (!ctx.signal.aborted) {\n return error\n }\n if (error instanceof BrewApiError || error instanceof CliApiError) {\n return error\n }\n return ctx.signal.reason\n}\n\n/** What the error envelope needs to know about the command that failed. */\nfunction errorContextFor(\n ctx: CliContext,\n commands: readonly CommandSpec[]\n): ErrorContext {\n const request = ctx.transport.lastRequest()\n const drain = ctx.transport.drain()\n // The command bound to the route the failed request actually hit — the\n // `api` escape hatch borrows its class and replay policy from it.\n const bound =\n request === undefined ? undefined : commandFor(request, commands)\n const isRead =\n bound === undefined ? ctx.traits?.isRead : bound.commandClass === 'read'\n return {\n ...(request === undefined ? {} : { request }),\n ...(drain === undefined ? {} : { drain }),\n ...(isRead === undefined ? {} : { isRead }),\n replays:\n bound === undefined\n ? ctx.traits?.replays === true\n : (bound.flags ?? []).includes(IDEMPOTENCY_FLAG),\n readsStdin: readsStdin(ctx.rawArgv),\n retryCommand: (key) => buildRetryCommand(ctx.rawArgv, key),\n }\n}\n\nfunction commandFor(\n request: { readonly method: string; readonly path: string },\n commands: readonly CommandSpec[]\n): CommandSpec | undefined {\n const apiPath = request.path.split('?')[0] ?? ''\n return commands.find(\n (spec) =>\n spec.route !== undefined &&\n spec.route.method === request.method &&\n matchesTemplate(spec.route.path, apiPath)\n )\n}\n\n/** `--input -`, `--file -` or `--data -`: the re-run needs the same stdin. */\nfunction readsStdin(rawArgv: readonly string[]): boolean {\n return rawArgv.some(\n (token, index) =>\n token === '-' &&\n ['--input', '--file', '--data'].includes(rawArgv[index - 1] ?? '')\n )\n}\n\nfunction traitsOf(spec: CommandSpec): CommandTraits {\n return {\n isRead: spec.commandClass === 'read',\n replays: (spec.flags ?? []).includes(IDEMPOTENCY_FLAG),\n defaultTimeoutMs: spec.defaultTimeoutMs,\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, traits: traitsOf(spec) })\n onContext?.(ctx)\n const invocation = { ctx, args: positional, flags }\n await enforceConfirmation(spec, invocation)\n // Armed only now: time a human spends at the y/N prompt is not the\n // request's.\n ctx.startDeadline()\n try {\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 } finally {\n ctx.stopDeadline()\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 {\n CliInterruptError,\n exitCodeForSignal,\n type InterruptSignal,\n} from './errors'\n\n/**\n * SIGINT (Ctrl-C) and SIGTERM (an agent harness or CI stopping the process)\n * become a cancel, not a crash: the first signal aborts the command's\n * signal with a `CliInterruptError`, the request in flight stops where it\n * is, and the command exits 130/143 with an envelope naming what was\n * interrupted — including the key that replays an interrupted write.\n *\n * A second signal, or the first one not taking effect within `graceMs`,\n * exits at once: Ctrl-C must never be ignorable.\n */\nexport type Interrupter = {\n readonly signal: AbortSignal\n /** For inputs that swallow the process signal (a raw-mode prompt). */\n readonly trigger: (signal: InterruptSignal) => void\n /** The first signal received, if any. */\n readonly received: () => InterruptSignal | undefined\n /** Cancel the grace timer once the command has finished on its own. */\n readonly settle: () => void\n}\n\nexport function createInterrupter(input: {\n readonly source: {\n on(event: InterruptSignal, listener: () => void): unknown\n }\n readonly stderr: NodeJS.WritableStream\n readonly exit: (code: number) => void\n readonly graceMs?: number\n}): Interrupter {\n const controller = new AbortController()\n const graceMs = input.graceMs ?? 3000\n let first: InterruptSignal | undefined\n let grace: ReturnType<typeof setTimeout> | undefined\n\n const forceExit = (signal: InterruptSignal, why: string): void => {\n input.stderr.write(`\\nbrew-cli: ${why}; exiting without waiting.\\n`)\n input.exit(exitCodeForSignal(signal))\n }\n\n const trigger = (signal: InterruptSignal): void => {\n if (first !== undefined) {\n forceExit(signal, `${signal} received twice`)\n return\n }\n first = signal\n controller.abort(new CliInterruptError(signal))\n grace = setTimeout(() => {\n forceExit(signal, `still stopping ${graceMs / 1000}s after ${signal}`)\n }, graceMs)\n // The grace timer must never be what keeps a finished process alive.\n grace.unref?.()\n }\n\n input.source.on('SIGINT', () => {\n trigger('SIGINT')\n })\n input.source.on('SIGTERM', () => {\n trigger('SIGTERM')\n })\n\n return {\n signal: controller.signal,\n trigger,\n received: () => first,\n settle: () => {\n if (grace !== undefined) {\n clearTimeout(grace)\n }\n },\n }\n}\n","import { createInterface } from 'node:readline/promises'\nimport { run } from './cli'\nimport { exitCodeForSignal } from './lib/errors'\nimport { createInterrupter, type Interrupter } from './lib/interrupt'\nimport type { CliIo } from './lib/types'\n\nfunction realIo(interrupter: Interrupter): CliIo {\n const { signal } = interrupter\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 signal,\n readStdin: async () => {\n // With a SIGINT listener installed, an open stdin would keep the\n // process alive after Ctrl-C: stop reading when the command aborts.\n const stop = (): void => {\n process.stdin.destroy()\n }\n signal.addEventListener('abort', stop, { once: true })\n process.stdin.setEncoding('utf8')\n let data = ''\n try {\n for await (const chunk of process.stdin) {\n data += chunk\n }\n } catch (error) {\n if (!signal.aborted) {\n throw error\n }\n } finally {\n signal.removeEventListener('abort', stop)\n }\n signal.throwIfAborted()\n return data\n },\n readLine: async (prompt: string) => {\n const rl = createInterface({\n input: process.stdin,\n output: process.stderr,\n })\n // A prompt sees Ctrl-C as its own SIGINT, not the process's.\n rl.on('SIGINT', () => {\n interrupter.trigger('SIGINT')\n })\n try {\n return await rl.question(prompt, { signal })\n } finally {\n rl.close()\n }\n },\n }\n}\n\nconst interrupter = createInterrupter({\n source: process,\n stderr: process.stderr,\n exit: (code) => process.exit(code),\n})\nconst code = await run(process.argv.slice(2), realIo(interrupter))\ninterrupter.settle()\nprocess.exitCode = code\n\n// Die BY the signal, not merely with 130/143: a shell loop such as\n// `for id in …; do brew-cli …; done` only stops on Ctrl-C when the child\n// was killed by SIGINT.\nconst received = interrupter.received()\nif (\n received !== undefined &&\n code === exitCodeForSignal(received) &&\n process.platform !== 'win32'\n) {\n // Pipes are asynchronous on macOS: let the envelope reach stderr first.\n await new Promise<void>((resolve) => {\n process.stderr.write('', () => {\n resolve()\n })\n })\n process.removeAllListeners(received)\n process.kill(process.pid, received)\n}\n"]}