@wave-av/cli 1.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli.ts","../src/commands/auth/index.ts","../src/lib/errors.ts","../src/lib/exit-codes.ts","../src/lib/environment.ts","../src/lib/suggestions.ts","../src/lib/output/table.ts","../src/lib/output/json.ts","../src/lib/output/yaml.ts","../src/lib/output/spinner.ts","../src/lib/output/confirm.ts","../src/lib/output/index.ts","../src/lib/auth/keychain.ts","../src/lib/config/manager.ts","../src/lib/config/schema.ts","../src/lib/auth/device-flow.ts","../src/commands/org/index.ts","../src/commands/config/index.ts","../src/commands/stream/index.ts","../src/lib/api-client.ts","../src/commands/studio/index.ts","../src/commands/clips/index.ts","../src/commands/editor/index.ts","../src/commands/voice/index.ts","../src/commands/phone/index.ts","../src/commands/collab/index.ts","../src/commands/captions/index.ts","../src/commands/chapters/index.ts","../src/commands/ai/index.ts","../src/commands/transcribe/index.ts","../src/commands/sentiment/index.ts","../src/commands/search/index.ts","../src/commands/scene/index.ts","../src/commands/fleet/index.ts","../src/commands/ghost/index.ts","../src/commands/mesh/index.ts","../src/commands/edge/index.ts","../src/commands/analytics/index.ts","../src/commands/prism/index.ts","../src/commands/zoom/index.ts","../src/commands/vault/index.ts","../src/commands/marketplace/index.ts","../src/commands/connect/index.ts","../src/commands/distribution/index.ts","../src/commands/desktop/index.ts","../src/commands/signage/index.ts","../src/commands/qr/index.ts","../src/commands/audience/index.ts","../src/commands/creator/index.ts","../src/commands/podcast/index.ts","../src/commands/slides/index.ts","../src/commands/usb/index.ts","../src/commands/notify/index.ts","../src/commands/drm/index.ts","../src/commands/billing/index.ts","../src/commands/listen/index.ts","../src/lib/sse-client.ts","../src/commands/logs/index.ts","../src/commands/trigger/index.ts","../src/commands/dev/index.ts","../src/commands/open/index.ts","../src/commands/init/index.ts","../src/lib/prompts.ts","../src/commands/admin/index.ts","../src/commands/doctor/index.ts","../src/commands/status/index.ts","../src/commands/completion/index.ts","../src/commands/api/index.ts","../src/commands/link/index.ts","../src/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { registerAuthCommands } from \"./commands/auth/index.js\";\nimport { registerOrgCommands } from \"./commands/org/index.js\";\nimport { registerConfigCommands } from \"./commands/config/index.js\";\nimport { registerStreamCommands } from \"./commands/stream/index.js\";\nimport { registerStudioCommands } from \"./commands/studio/index.js\";\nimport { registerClipCommands } from \"./commands/clips/index.js\";\nimport { registerEditorCommands } from \"./commands/editor/index.js\";\nimport { registerVoiceCommands } from \"./commands/voice/index.js\";\nimport { registerPhoneCommands } from \"./commands/phone/index.js\";\nimport { registerCollabCommands } from \"./commands/collab/index.js\";\nimport { registerCaptionsCommands } from \"./commands/captions/index.js\";\nimport { registerChaptersCommands } from \"./commands/chapters/index.js\";\nimport { registerAICommands } from \"./commands/ai/index.js\";\nimport { registerTranscribeCommands } from \"./commands/transcribe/index.js\";\nimport { registerSentimentCommands } from \"./commands/sentiment/index.js\";\nimport { registerSearchCommands } from \"./commands/search/index.js\";\nimport { registerSceneCommands } from \"./commands/scene/index.js\";\nimport { registerFleetCommands } from \"./commands/fleet/index.js\";\nimport { registerGhostCommands } from \"./commands/ghost/index.js\";\nimport { registerMeshCommands } from \"./commands/mesh/index.js\";\nimport { registerEdgeCommands } from \"./commands/edge/index.js\";\nimport { registerAnalyticsCommands } from \"./commands/analytics/index.js\";\nimport { registerPrismCommands } from \"./commands/prism/index.js\";\nimport { registerZoomCommands } from \"./commands/zoom/index.js\";\nimport { registerVaultCommands } from \"./commands/vault/index.js\";\nimport { registerMarketplaceCommands } from \"./commands/marketplace/index.js\";\nimport { registerConnectCommands } from \"./commands/connect/index.js\";\nimport { registerDistributionCommands } from \"./commands/distribution/index.js\";\nimport { registerDesktopCommands } from \"./commands/desktop/index.js\";\nimport { registerSignageCommands } from \"./commands/signage/index.js\";\nimport { registerQrCommands } from \"./commands/qr/index.js\";\nimport { registerAudienceCommands } from \"./commands/audience/index.js\";\nimport { registerCreatorCommands } from \"./commands/creator/index.js\";\nimport { registerPodcastCommands } from \"./commands/podcast/index.js\";\nimport { registerSlidesCommands } from \"./commands/slides/index.js\";\nimport { registerUsbCommands } from \"./commands/usb/index.js\";\nimport { registerNotifyCommands } from \"./commands/notify/index.js\";\nimport { registerDrmCommands } from \"./commands/drm/index.js\";\nimport { registerBillingCommands } from \"./commands/billing/index.js\";\nimport { registerListenCommands } from \"./commands/listen/index.js\";\nimport { registerLogsCommands } from \"./commands/logs/index.js\";\nimport { registerTriggerCommands } from \"./commands/trigger/index.js\";\nimport { registerDevCommands } from \"./commands/dev/index.js\";\nimport { registerOpenCommands } from \"./commands/open/index.js\";\nimport { registerInitCommands } from \"./commands/init/index.js\";\nimport { registerAdminCommands } from \"./commands/admin/index.js\";\nimport { registerDoctorCommands } from \"./commands/doctor/index.js\";\nimport { registerStatusCommands } from \"./commands/status/index.js\";\nimport { registerCompletionCommands } from \"./commands/completion/index.js\";\nimport { registerApiCommands } from \"./commands/api/index.js\";\nimport { registerLinkCommands } from \"./commands/link/index.js\";\nimport { detectEnvironment } from \"./lib/environment.js\";\n\nfunction printBanner(): void {\n // WAVE brand gradient: blue (#3366FF) -> purple (#7B41E8) -> cyan (#33BBCC)\n const b = chalk.hex(\"#3366FF\"); // primary blue\n const p = chalk.hex(\"#7B41E8\"); // secondary purple\n const c = chalk.hex(\"#33BBCC\"); // accent cyan\n const d = chalk.dim;\n\n console.log(\"\");\n console.log(` ${b(\"██╗ ██╗\")} ${p(\"█████╗ \")} ${p(\"██╗ ██╗\")} ${c(\"███████╗\")}`);\n console.log(` ${b(\"██║ ██║\")} ${p(\"██╔══██╗\")} ${p(\"██║ ██║\")} ${c(\"██╔════╝\")}`);\n console.log(` ${b(\"██║ █╗ ██║\")} ${p(\"███████║\")} ${p(\"██║ ██║\")} ${c(\"█████╗ \")}`);\n console.log(` ${b(\"██║███╗██║\")} ${p(\"██╔══██║\")} ${p(\"╚██╗ ██╔╝\")} ${c(\"██╔══╝ \")}`);\n console.log(` ${b(\"╚███╔███╔╝\")} ${p(\"██║ ██║\")} ${p(\" ╚████╔╝ \")} ${c(\"███████╗\")}`);\n console.log(` ${b(\" ╚══╝╚══╝ \")} ${p(\"╚═╝ ╚═╝\")} ${p(\" ╚═══╝ \")} ${c(\"╚══════╝\")}`);\n console.log(\"\");\n console.log(` ${d(\"Enterprise Streaming Platform\")} ${chalk.hex(\"#555\")(\"v1.0.0\")}`);\n console.log(` ${d(\"─\".repeat(45))}`);\n console.log(\"\");\n}\n\nexport function createProgram(): Command {\n const program = new Command();\n\n program\n .name(\"wave\")\n .description(\"WAVE CLI - Command-line interface for the WAVE streaming platform\")\n .version(\"1.0.0\", \"-v, --version\")\n .option(\"-o, --output <format>\", \"Output format: table, json, yaml\", \"table\")\n .option(\"--project <name>\", \"Override project context\")\n .option(\"--org <id>\", \"Override organization\")\n .option(\"-c, --confirm\", \"Skip confirmation prompts\")\n .option(\"--no-color\", \"Disable colored output\")\n .option(\"--debug\", \"Verbose debug logging\");\n\n // Auth & Config\n registerAuthCommands(program);\n registerOrgCommands(program);\n registerConfigCommands(program);\n registerInitCommands(program);\n registerLinkCommands(program);\n\n // Core APIs (P1)\n registerStreamCommands(program);\n registerStudioCommands(program);\n\n // Production (P1)\n registerClipCommands(program);\n registerEditorCommands(program);\n registerVoiceCommands(program);\n registerPhoneCommands(program);\n registerCollabCommands(program);\n registerCaptionsCommands(program);\n registerChaptersCommands(program);\n registerAICommands(program);\n registerTranscribeCommands(program);\n\n // Intelligence (P2)\n registerSentimentCommands(program);\n registerSearchCommands(program);\n registerSceneCommands(program);\n\n // Enterprise (P2)\n registerFleetCommands(program);\n registerGhostCommands(program);\n registerMeshCommands(program);\n registerEdgeCommands(program);\n registerAnalyticsCommands(program);\n registerPrismCommands(program);\n registerZoomCommands(program);\n\n // Content & Commerce (P3)\n registerVaultCommands(program);\n registerMarketplaceCommands(program);\n registerConnectCommands(program);\n registerDistributionCommands(program);\n registerDesktopCommands(program);\n registerSignageCommands(program);\n registerQrCommands(program);\n registerAudienceCommands(program);\n registerCreatorCommands(program);\n\n // Specialized (P4)\n registerPodcastCommands(program);\n registerSlidesCommands(program);\n registerUsbCommands(program);\n\n // Cross-cutting\n registerNotifyCommands(program);\n registerDrmCommands(program);\n registerBillingCommands(program);\n\n // Developer tools\n registerListenCommands(program);\n registerLogsCommands(program);\n registerTriggerCommands(program);\n registerDevCommands(program);\n registerOpenCommands(program);\n\n // Admin\n registerAdminCommands(program);\n\n // Diagnostics & utilities\n registerDoctorCommands(program);\n registerStatusCommands(program);\n registerCompletionCommands(program);\n registerApiCommands(program);\n\n // Skip banner for AI agents and CI (they prefer clean output)\n const env = detectEnvironment();\n if (!env.isAgent && !env.isCI) {\n const originalHelp = program.helpInformation.bind(program);\n program.helpInformation = function () {\n printBanner();\n return originalHelp();\n };\n }\n\n return program;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { storeApiKey, deleteApiKey, deleteAllKeys, getApiKey } from \"../../lib/auth/keychain.js\";\nimport { loadConfig, updateConfig } from \"../../lib/config/manager.js\";\nimport { startDeviceAuth, pollForToken } from \"../../lib/auth/device-flow.js\";\n\nexport function registerAuthCommands(program: Command): void {\n const auth = program.command(\"auth\").description(\"Manage authentication\");\n\n auth\n .command(\"login\")\n .description(\"Authenticate with the WAVE platform\")\n .option(\"--api-key <key>\", \"API key for non-interactive authentication\")\n .action(\n wrapCommand(async (opts) => {\n if (opts.apiKey) {\n const config = await loadConfig();\n const project = config.currentProject || \"default\";\n await storeApiKey(project, opts.apiKey);\n console.log(chalk.green(`API key stored for project \"${project}\".`));\n return;\n }\n\n // RFC 8628 Device Authorization Flow via the tested device-flow library\n const baseUrl = process.env[\"WAVE_BASE_URL\"] ?? \"https://wave.online\";\n\n const deviceAuth = await startDeviceAuth(baseUrl);\n const token = await pollForToken(\n baseUrl,\n deviceAuth.device_code,\n deviceAuth.interval,\n deviceAuth.expires_in,\n );\n\n // Store the API key and update config\n const project = \"default\";\n await storeApiKey(project, token.access_token);\n await updateConfig((config) => ({\n ...config,\n currentProject: project,\n }));\n\n console.log(chalk.green(\"\\nAuthentication complete. You can now use the WAVE CLI.\"));\n }),\n );\n\n auth\n .command(\"logout\")\n .description(\"Remove stored credentials\")\n .option(\"--all\", \"Remove credentials for all projects\")\n .action(\n wrapCommand(async (opts) => {\n if (opts.all) {\n await deleteAllKeys();\n console.log(chalk.green(\"All credentials removed.\"));\n } else {\n const config = await loadConfig();\n await deleteApiKey(config.currentProject);\n console.log(chalk.green(`Credentials removed for project \"${config.currentProject}\".`));\n }\n }),\n );\n\n auth\n .command(\"status\")\n .description(\"Show current authentication status\")\n .action(\n wrapCommand(async () => {\n const config = await loadConfig();\n const apiKey = await getApiKey(config.currentProject);\n const status = {\n project: config.currentProject,\n authenticated: !!apiKey,\n organization: config.projects[config.currentProject]?.organizationName ?? \"N/A\",\n organizationId: config.projects[config.currentProject]?.organizationId ?? \"N/A\",\n };\n formatOutput(status, program.opts());\n }),\n );\n\n // Top-level whoami alias\n program\n .command(\"whoami\")\n .description(\"Show the current authenticated user\")\n .action(\n wrapCommand(async () => {\n const config = await loadConfig();\n const project = config.currentProject || \"default\";\n const apiKey = await getApiKey(project);\n\n if (!apiKey) {\n console.error(chalk.red(\"Not authenticated. Run `wave auth login` first.\"));\n process.exit(1);\n }\n\n const baseUrl = config.projects[project]?.baseUrl ?? \"https://wave.online\";\n const res = await fetch(`${baseUrl}/api/v1/me`, {\n headers: { Authorization: `Bearer ${apiKey}` },\n });\n\n if (!res.ok) {\n console.error(\n chalk.red(\n \"Authentication invalid or expired. Run `wave auth login` to re-authenticate.\",\n ),\n );\n process.exit(1);\n }\n\n const user = (await res.json()) as {\n id?: string;\n email?: string;\n name?: string;\n organization?: string;\n };\n\n console.log(chalk.bold(\"\\n Authenticated as:\"));\n if (user.name) console.log(` Name: ${chalk.cyan(user.name)}`);\n if (user.email) console.log(` Email: ${chalk.cyan(user.email)}`);\n console.log(\n ` Org: ${chalk.cyan(user.organization ?? config.projects[project]?.organizationName ?? \"N/A\")}`,\n );\n console.log(` Project: ${chalk.cyan(project)}`);\n console.log(\"\");\n\n formatOutput(\n {\n project,\n name: user.name ?? \"N/A\",\n email: user.email ?? \"N/A\",\n organization: user.organization ?? config.projects[project]?.organizationName ?? \"N/A\",\n },\n program.opts(),\n );\n }),\n );\n}\n","import chalk from \"chalk\";\nimport { WaveError, RateLimitError } from \"@wave-av/sdk\";\nimport { EXIT_CODES } from \"./exit-codes.js\";\nimport { detectEnvironment } from \"./environment.js\";\nimport {\n getAuthSuggestions,\n getRateLimitSuggestions,\n toStructuredError,\n} from \"./suggestions.js\";\n\nexport function formatCLIError(error: unknown): { message: string; exitCode: number } {\n const env = detectEnvironment();\n\n if (error instanceof RateLimitError) {\n if (env.preferJson) {\n const structured = toStructuredError(\n \"RATE_LIMITED\",\n `Rate limit exceeded. Retry after ${error.retryAfter}ms.`,\n EXIT_CODES.RATE_LIMITED,\n [\n { message: \"Check your limits\", command: \"wave billing limits\" },\n { message: \"Upgrade your plan\", command: \"wave billing upgrade\" },\n ],\n error.requestId,\n );\n return { message: JSON.stringify(structured, null, 2), exitCode: EXIT_CODES.RATE_LIMITED };\n }\n return {\n message: getRateLimitSuggestions(),\n exitCode: EXIT_CODES.RATE_LIMITED,\n };\n }\n\n if (error instanceof WaveError) {\n const exitCode =\n error.statusCode === 401 ? EXIT_CODES.AUTH_REQUIRED :\n error.statusCode === 403 ? EXIT_CODES.PERMISSION_DENIED :\n error.statusCode === 404 ? EXIT_CODES.NOT_FOUND :\n error.statusCode === 422 ? EXIT_CODES.VALIDATION_ERROR :\n error.statusCode === 429 ? EXIT_CODES.RATE_LIMITED :\n EXIT_CODES.GENERAL_ERROR;\n\n if (env.preferJson) {\n const suggestions =\n error.statusCode === 401\n ? [{ message: \"Authenticate\", command: \"wave login\" }, { message: \"Use API key\", command: \"export WAVE_API_KEY=...\" }]\n : error.statusCode === 404\n ? [{ message: \"List resources\", command: \"wave <resource> list\" }]\n : [];\n const structured = toStructuredError(\n error.code,\n error.message,\n exitCode,\n suggestions,\n error.requestId,\n );\n return { message: JSON.stringify(structured, null, 2), exitCode };\n }\n\n if (error.statusCode === 401) {\n return { message: getAuthSuggestions(), exitCode };\n }\n\n const lines = [\n chalk.red(error.message),\n chalk.dim(` Code: ${error.code} | Status: ${error.statusCode}`),\n error.requestId ? chalk.dim(` Request ID: ${error.requestId}`) : \"\",\n error.retryable ? chalk.yellow(\" This error is retryable.\") : \"\",\n ].filter(Boolean);\n\n return { message: lines.join(\"\\n\"), exitCode };\n }\n\n if (error instanceof Error) {\n if (env.preferJson) {\n const structured = toStructuredError(\n \"CLI_ERROR\",\n error.message,\n EXIT_CODES.GENERAL_ERROR,\n [],\n );\n return { message: JSON.stringify(structured, null, 2), exitCode: EXIT_CODES.GENERAL_ERROR };\n }\n return {\n message: chalk.red(`Error: ${error.message}`),\n exitCode: EXIT_CODES.GENERAL_ERROR,\n };\n }\n\n return {\n message: chalk.red(`Unexpected error: ${String(error)}`),\n exitCode: EXIT_CODES.GENERAL_ERROR,\n };\n}\n\nexport function wrapCommand<T extends unknown[]>(\n fn: (...args: T) => Promise<void>,\n): (...args: T) => Promise<void> {\n return async (...args: T) => {\n try {\n await fn(...args);\n } catch (error) {\n const { message, exitCode } = formatCLIError(error);\n console.error(message);\n process.exit(exitCode);\n }\n };\n}\n","/**\n * Standardized exit codes for both humans and AI agents.\n * AI agents can parse these to determine the failure category\n * without needing to parse error messages.\n */\nexport const EXIT_CODES = {\n SUCCESS: 0,\n GENERAL_ERROR: 1,\n AUTH_REQUIRED: 2,\n AUTH_EXPIRED: 3,\n NOT_FOUND: 4,\n VALIDATION_ERROR: 5,\n RATE_LIMITED: 6,\n PERMISSION_DENIED: 7,\n NETWORK_ERROR: 8,\n CONFIG_ERROR: 9,\n TIMEOUT: 10,\n} as const;\n\nexport type ExitCode = (typeof EXIT_CODES)[keyof typeof EXIT_CODES];\n","/**\n * Environment detection for AI agents, CI/CD, and interactive terminals.\n * AI agents should set WAVE_AGENT=1 or CI=1 for optimal behavior.\n */\n\nexport interface Environment {\n /** Running in CI/CD pipeline */\n isCI: boolean;\n /** Running as an AI agent (Claude, GPT, etc.) */\n isAgent: boolean;\n /** Terminal is interactive (has TTY) */\n isInteractive: boolean;\n /** JSON output preferred (non-interactive or explicitly requested) */\n preferJson: boolean;\n /** Colors supported */\n supportsColor: boolean;\n /** Agent identifier if running as agent */\n agentName?: string;\n}\n\nexport function detectEnvironment(): Environment {\n const isCI = Boolean(\n process.env[\"CI\"] ||\n process.env[\"GITHUB_ACTIONS\"] ||\n process.env[\"VERCEL\"] ||\n process.env[\"BUILDKITE\"] ||\n process.env[\"GITLAB_CI\"] ||\n process.env[\"CIRCLECI\"],\n );\n\n const isAgent = Boolean(\n process.env[\"WAVE_AGENT\"] ||\n process.env[\"CLAUDE_CODE\"] ||\n process.env[\"CURSOR_SESSION\"] ||\n process.env[\"AIDER_SESSION\"] ||\n process.env[\"CONTINUE_SESSION\"],\n );\n\n const isInteractive = Boolean(process.stdin.isTTY) && !isCI && !isAgent;\n\n const preferJson =\n !isInteractive ||\n process.env[\"WAVE_OUTPUT_FORMAT\"] === \"json\" ||\n isAgent;\n\n const supportsColor =\n process.env[\"WAVE_NO_COLOR\"] !== \"1\" &&\n process.env[\"NO_COLOR\"] === undefined &&\n (process.env[\"FORCE_COLOR\"] !== undefined || Boolean(process.stdout.isTTY));\n\n const agentName =\n process.env[\"WAVE_AGENT_NAME\"] ||\n (process.env[\"CLAUDE_CODE\"] ? \"claude-code\" : undefined) ||\n (process.env[\"CURSOR_SESSION\"] ? \"cursor\" : undefined);\n\n return { isCI, isAgent, isInteractive, preferJson, supportsColor, agentName };\n}\n\n/**\n * Format output based on environment.\n * AI agents and CI get JSON; interactive terminals get tables.\n */\nexport function getDefaultOutputFormat(): \"json\" | \"table\" {\n const env = detectEnvironment();\n return env.preferJson ? \"json\" : \"table\";\n}\n","import chalk from \"chalk\";\n\n/**\n * Context-aware suggestions for common error scenarios.\n * Helps both human developers and AI agents recover from errors.\n */\n\ninterface Suggestion {\n message: string;\n command?: string;\n docs?: string;\n}\n\nconst AUTH_SUGGESTIONS: Suggestion[] = [\n { message: \"Authenticate with WAVE\", command: \"wave login\" },\n { message: \"Use an API key directly\", command: \"wave login --api-key <your-key>\" },\n { message: \"Set env var for CI/CD\", command: \"export WAVE_API_KEY=wave_live_...\" },\n];\n\nconst NOT_FOUND_SUGGESTIONS: Record<string, Suggestion[]> = {\n stream: [\n { message: \"List available streams\", command: \"wave stream list\" },\n { message: \"Create a new stream\", command: \"wave stream create --title 'My Stream'\" },\n ],\n studio: [\n { message: \"List productions\", command: \"wave studio list\" },\n { message: \"Create a production\", command: \"wave studio create --title 'My Production'\" },\n ],\n};\n\nconst RATE_LIMIT_SUGGESTIONS: Suggestion[] = [\n { message: \"Check your current limits\", command: \"wave billing limits\" },\n { message: \"Upgrade your plan\", command: \"wave billing upgrade\" },\n { message: \"Wait and retry (the CLI does this automatically)\" },\n];\n\nexport function formatSuggestion(suggestion: Suggestion): string {\n const parts = [` ${chalk.dim(\">\")} ${suggestion.message}`];\n if (suggestion.command) {\n parts.push(` ${chalk.cyan(\"$\")} ${chalk.bold(suggestion.command)}`);\n }\n if (suggestion.docs) {\n parts.push(` ${chalk.dim(suggestion.docs)}`);\n }\n return parts.join(\"\\n\");\n}\n\nexport function getAuthSuggestions(): string {\n const header = chalk.yellow(\"Not authenticated. Try one of:\");\n const suggestions = AUTH_SUGGESTIONS.map(formatSuggestion).join(\"\\n\\n\");\n return `${header}\\n\\n${suggestions}`;\n}\n\nexport function getNotFoundSuggestions(resource: string): string {\n const suggestions = NOT_FOUND_SUGGESTIONS[resource] ?? [\n { message: `List available ${resource}s`, command: `wave ${resource} list` },\n ];\n const header = chalk.yellow(`${resource} not found. Try:`);\n return `${header}\\n\\n${suggestions.map(formatSuggestion).join(\"\\n\\n\")}`;\n}\n\nexport function getRateLimitSuggestions(): string {\n const header = chalk.yellow(\"Rate limited. Options:\");\n return `${header}\\n\\n${RATE_LIMIT_SUGGESTIONS.map(formatSuggestion).join(\"\\n\\n\")}`;\n}\n\n/**\n * Machine-readable error for AI agents (JSON output mode)\n */\nexport interface StructuredError {\n error: {\n code: string;\n message: string;\n exit_code: number;\n suggestions: Array<{ message: string; command?: string; docs?: string }>;\n request_id?: string;\n };\n}\n\nexport function toStructuredError(\n code: string,\n message: string,\n exitCode: number,\n suggestions: Suggestion[],\n requestId?: string,\n): StructuredError {\n return {\n error: {\n code,\n message,\n exit_code: exitCode,\n suggestions,\n request_id: requestId,\n },\n };\n}\n","import Table from \"cli-table3\";\n\nexport function formatTable(data: Record<string, unknown>[], columns?: string[]): string {\n if (data.length === 0) {\n return \"No results found.\";\n }\n\n const cols = columns ?? Object.keys(data[0] ?? {});\n const table = new Table({\n head: cols,\n style: { head: [\"cyan\"] },\n });\n\n for (const row of data) {\n table.push(\n cols.map((col) => {\n const val = row[col];\n if (val === null || val === undefined) return \"\";\n if (typeof val === \"object\") return JSON.stringify(val);\n const str = String(val);\n return str.length > 60 ? str.slice(0, 57) + \"...\" : str;\n }),\n );\n }\n\n return table.toString();\n}\n\nexport function formatDetail(data: Record<string, unknown>): string {\n const table = new Table({\n style: { head: [\"cyan\"] },\n });\n\n for (const [key, value] of Object.entries(data)) {\n const val =\n value === null || value === undefined\n ? \"\"\n : typeof value === \"object\"\n ? JSON.stringify(value, null, 2)\n : String(value);\n table.push({ [key]: val });\n }\n\n return table.toString();\n}\n","import chalk from \"chalk\";\n\nexport function formatJson(data: unknown, colorize = true): string {\n const json = JSON.stringify(data, null, 2);\n if (!colorize) return json;\n\n return json.replace(/(\"(?:\\\\.|[^\"\\\\])*\")\\s*:/g, (_match, key: string) => `${chalk.cyan(key)}:`);\n}\n","import { stringify } from \"yaml\";\n\nexport function formatYaml(data: unknown): string {\n return stringify(data, { indent: 2 });\n}\n","import ora from \"ora\";\nimport type { Ora } from \"ora\";\n\nexport async function withSpinner<T>(message: string, fn: () => Promise<T>): Promise<T> {\n const spinner = ora(message).start();\n try {\n const result = await fn();\n spinner.succeed();\n return result;\n } catch (error) {\n spinner.fail();\n throw error;\n }\n}\n\nexport function startSpinner(message: string): Ora {\n return ora(message).start();\n}\n","import inquirer from \"inquirer\";\n\nexport async function confirmDestructive(\n action: string,\n resource: string,\n opts: { confirm?: boolean },\n): Promise<boolean> {\n if (opts.confirm) return true;\n\n const { confirmed } = await inquirer.prompt<{ confirmed: boolean }>([\n {\n type: \"confirm\",\n name: \"confirmed\",\n message: `Are you sure you want to ${action} ${resource}?`,\n default: false,\n },\n ]);\n\n return confirmed;\n}\n","import type { OutputFormat } from \"../../types/index.js\";\nimport { formatTable, formatDetail } from \"./table.js\";\nimport { formatJson } from \"./json.js\";\nimport { formatYaml } from \"./yaml.js\";\n\nexport { formatTable, formatDetail } from \"./table.js\";\nexport { formatJson } from \"./json.js\";\nexport { formatYaml } from \"./yaml.js\";\nexport { withSpinner, startSpinner } from \"./spinner.js\";\nexport { confirmDestructive } from \"./confirm.js\";\n\nexport function formatOutput(data: unknown, opts: { output?: OutputFormat } = {}): void {\n const format = opts.output ?? \"table\";\n\n switch (format) {\n case \"json\":\n console.log(formatJson(data));\n break;\n case \"yaml\":\n console.log(formatYaml(data));\n break;\n case \"table\":\n default:\n if (Array.isArray(data)) {\n console.log(formatTable(data as Record<string, unknown>[]));\n } else if (data && typeof data === \"object\") {\n console.log(formatDetail(data as Record<string, unknown>));\n } else {\n console.log(String(data));\n }\n break;\n }\n}\n","const SERVICE_NAME = \"wave-cli\";\n\ninterface KeytarLike {\n setPassword(service: string, account: string, password: string): Promise<void>;\n getPassword(service: string, account: string): Promise<string | null>;\n deletePassword(service: string, account: string): Promise<boolean>;\n findCredentials(service: string): Promise<Array<{ account: string; password: string }>>;\n}\n\nlet keytarModule: KeytarLike | null = null;\nlet keytarChecked = false;\n\nasync function getKeytar(): Promise<KeytarLike | null> {\n if (keytarChecked) return keytarModule;\n keytarChecked = true;\n try {\n keytarModule = (await import(\n /* webpackIgnore: true */ \"keytar\" as string\n )) as unknown as KeytarLike;\n return keytarModule;\n } catch {\n return null;\n }\n}\n\nexport async function storeApiKey(project: string, key: string): Promise<void> {\n const keytar = await getKeytar();\n if (keytar) {\n await keytar.setPassword(SERVICE_NAME, `apikey:${project}`, key);\n } else {\n await storeToFile(project, key);\n }\n}\n\nexport async function getApiKey(project: string): Promise<string | null> {\n const keytar = await getKeytar();\n if (keytar) {\n return keytar.getPassword(SERVICE_NAME, `apikey:${project}`);\n }\n return getFromFile(project);\n}\n\nexport async function deleteApiKey(project: string): Promise<void> {\n const keytar = await getKeytar();\n if (keytar) {\n await keytar.deletePassword(SERVICE_NAME, `apikey:${project}`);\n } else {\n await deleteFromFile(project);\n }\n}\n\nexport async function deleteAllKeys(): Promise<void> {\n const keytar = await getKeytar();\n if (keytar) {\n const credentials = await keytar.findCredentials(SERVICE_NAME);\n for (const cred of credentials) {\n await keytar.deletePassword(SERVICE_NAME, cred.account);\n }\n } else {\n await deleteAllFromFile();\n }\n}\n\n// File-based fallback when keytar is not available\nimport { readFile, writeFile, mkdir } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\nconst CRED_FILE = join(homedir(), \".wave\", \"credentials.json\");\n\nasync function loadCredentials(): Promise<Record<string, string>> {\n try {\n if (!existsSync(CRED_FILE)) return {};\n const raw = await readFile(CRED_FILE, \"utf-8\");\n return JSON.parse(raw) as Record<string, string>;\n } catch {\n return {};\n }\n}\n\nasync function saveCredentials(creds: Record<string, string>): Promise<void> {\n const dir = join(homedir(), \".wave\");\n if (!existsSync(dir)) {\n await mkdir(dir, { recursive: true });\n }\n await writeFile(CRED_FILE, JSON.stringify(creds, null, 2), {\n mode: 0o600,\n });\n}\n\nasync function storeToFile(project: string, key: string): Promise<void> {\n const creds = await loadCredentials();\n creds[project] = key;\n await saveCredentials(creds);\n}\n\nasync function getFromFile(project: string): Promise<string | null> {\n const creds = await loadCredentials();\n return creds[project] ?? null;\n}\n\nasync function deleteFromFile(project: string): Promise<void> {\n const creds = await loadCredentials();\n delete creds[project];\n await saveCredentials(creds);\n}\n\nasync function deleteAllFromFile(): Promise<void> {\n await saveCredentials({});\n}\n","import { readFile, writeFile, mkdir } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport type { WaveConfig } from \"../../types/index.js\";\nimport { waveConfigSchema, getDefaultConfig } from \"./schema.js\";\n\nconst CONFIG_DIR = join(homedir(), \".wave\");\nconst CONFIG_FILE = join(CONFIG_DIR, \"config.json\");\n\nexport function getConfigDir(): string {\n return CONFIG_DIR;\n}\n\nexport function getConfigPath(): string {\n return CONFIG_FILE;\n}\n\nexport async function loadConfig(): Promise<WaveConfig> {\n try {\n if (!existsSync(CONFIG_FILE)) {\n const defaults = getDefaultConfig();\n await saveConfig(defaults);\n return defaults;\n }\n const raw = await readFile(CONFIG_FILE, \"utf-8\");\n const parsed = JSON.parse(raw) as unknown;\n return waveConfigSchema.parse(parsed);\n } catch {\n const defaults = getDefaultConfig();\n await saveConfig(defaults);\n return defaults;\n }\n}\n\nexport async function saveConfig(config: WaveConfig): Promise<void> {\n const validated = waveConfigSchema.parse(config);\n if (!existsSync(CONFIG_DIR)) {\n await mkdir(CONFIG_DIR, { recursive: true });\n }\n const tmpPath = `${CONFIG_FILE}.tmp`;\n await writeFile(tmpPath, JSON.stringify(validated, null, 2) + \"\\n\", \"utf-8\");\n const { rename } = await import(\"node:fs/promises\");\n await rename(tmpPath, CONFIG_FILE);\n}\n\nexport async function updateConfig(\n updater: (config: WaveConfig) => WaveConfig,\n): Promise<WaveConfig> {\n const current = await loadConfig();\n const updated = updater(current);\n await saveConfig(updated);\n return updated;\n}\n","import { z } from \"zod\";\n\nconst projectConfigSchema = z.object({\n organizationId: z.string(),\n organizationName: z.string(),\n baseUrl: z.string().url().optional(),\n region: z.string().optional(),\n});\n\nexport const waveConfigSchema = z.object({\n version: z.string().default(\"1.0.0\"),\n currentProject: z.string().default(\"default\"),\n projects: z.record(z.string(), projectConfigSchema).default({}),\n defaults: z\n .object({\n outputFormat: z.enum([\"table\", \"json\", \"yaml\"]).default(\"table\"),\n protocol: z.string().optional(),\n color: z.enum([\"auto\", \"on\", \"off\"]).default(\"auto\"),\n })\n .default({}),\n telemetry: z\n .object({\n enabled: z.boolean().default(false),\n errorReporting: z.boolean().default(false),\n })\n .default({}),\n});\n\nexport type WaveConfigSchema = z.infer<typeof waveConfigSchema>;\n\nexport function getDefaultConfig(): WaveConfigSchema {\n return waveConfigSchema.parse({});\n}\n","/**\n * RFC 8628 Device Authorization Flow\n *\n * Implements the device authorization grant for CLI authentication.\n * The user is presented with a code and URL, authenticates in-browser,\n * and the CLI polls until the token is available.\n */\n\nimport open from \"open\";\nimport chalk from \"chalk\";\nimport type { DeviceAuthResponse, TokenResponse } from \"../../types/index.js\";\n\n/** Error codes returned by the device token endpoint */\nconst POLL_ERROR_AUTHORIZATION_PENDING = \"authorization_pending\";\nconst POLL_ERROR_SLOW_DOWN = \"slow_down\";\nconst POLL_ERROR_EXPIRED_TOKEN = \"expired_token\";\nconst POLL_ERROR_ACCESS_DENIED = \"access_denied\";\n\n/** Additional interval (ms) added when the server requests slow_down */\nconst SLOW_DOWN_INCREMENT_MS = 5000;\n\ninterface DeviceTokenErrorResponse {\n error: string;\n error_description?: string;\n}\n\n/**\n * Initiates the device authorization flow by requesting a device code\n * and user code from the authorization server.\n */\nexport async function startDeviceAuth(baseUrl: string): Promise<DeviceAuthResponse> {\n const url = `${baseUrl}/api/oauth/device/authorize`;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n client_id: \"wave-cli\",\n scope: \"openid profile email offline_access\",\n }),\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Device authorization request failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as DeviceAuthResponse;\n\n // Display the user code prominently\n console.log();\n console.log(chalk.bold(\" Open this URL in your browser to authenticate:\"));\n console.log();\n console.log(` ${chalk.cyan.underline(data.verification_uri)}`);\n console.log();\n console.log(chalk.bold(\" Enter this code when prompted:\"));\n console.log();\n console.log(` ${chalk.bold.yellow(data.user_code)}`);\n console.log();\n\n // Attempt to open the browser automatically\n const verificationUrl = data.verification_uri_complete ?? data.verification_uri;\n try {\n await open(verificationUrl);\n console.log(chalk.gray(\" Browser opened automatically.\"));\n } catch {\n console.log(\n chalk.gray(\" Could not open browser automatically. Please open the URL manually.\"),\n );\n }\n\n console.log();\n console.log(chalk.gray(\" Waiting for authentication...\"));\n console.log();\n\n return data;\n}\n\n/**\n * Polls the token endpoint until the user completes authentication,\n * the code expires, or the user denies access.\n *\n * Handles the following error responses per RFC 8628:\n * - authorization_pending: continue polling\n * - slow_down: increase interval by 5 seconds and continue\n * - expired_token: throw (user took too long)\n * - access_denied: throw (user denied access)\n */\nexport async function pollForToken(\n baseUrl: string,\n deviceCode: string,\n interval: number,\n expiresIn: number,\n): Promise<TokenResponse> {\n const url = `${baseUrl}/api/oauth/device/token`;\n const deadline = Date.now() + expiresIn * 1000;\n let pollIntervalMs = interval * 1000;\n\n while (Date.now() < deadline) {\n // Wait the required interval before polling\n await sleep(pollIntervalMs);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n grant_type: \"urn:ietf:params:oauth:grant-type:device_code\",\n device_code: deviceCode,\n client_id: \"wave-cli\",\n }),\n });\n\n // Successful token response\n if (response.ok) {\n const tokenData = (await response.json()) as TokenResponse;\n console.log(chalk.green(\" Authentication successful.\"));\n return tokenData;\n }\n\n // Parse the error response\n const errorBody = (await response.json()) as DeviceTokenErrorResponse;\n const errorCode = errorBody.error;\n\n switch (errorCode) {\n case POLL_ERROR_AUTHORIZATION_PENDING:\n // User hasn't completed auth yet, keep polling\n break;\n\n case POLL_ERROR_SLOW_DOWN:\n // Server requested we slow down\n pollIntervalMs += SLOW_DOWN_INCREMENT_MS;\n break;\n\n case POLL_ERROR_EXPIRED_TOKEN:\n throw new Error(\"Device code has expired. Please run the login command again.\");\n\n case POLL_ERROR_ACCESS_DENIED:\n throw new Error(\"Authentication was denied. Please try again.\");\n\n default:\n throw new Error(\n `Unexpected error during device flow: ${errorCode}${\n errorBody.error_description ? ` - ${errorBody.error_description}` : \"\"\n }`,\n );\n }\n }\n\n throw new Error(\"Device code has expired (timeout). Please run the login command again.\");\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { loadConfig, updateConfig } from \"../../lib/config/manager.js\";\n\nexport function registerOrgCommands(program: Command): void {\n const org = program.command(\"org\").description(\"Manage organizations\");\n\n org\n .command(\"list\")\n .description(\"List available organizations\")\n .action(\n wrapCommand(async () => {\n const config = await loadConfig();\n const orgs = Object.entries(config.projects).map(([name, project]) => ({\n name,\n organizationId: project.organizationId,\n organizationName: project.organizationName,\n current: name === config.currentProject ? \"*\" : \"\",\n }));\n formatOutput(orgs, program.opts());\n }),\n );\n\n org\n .command(\"switch <id>\")\n .description(\"Switch to a different organization\")\n .action(\n wrapCommand(async (id: string) => {\n const config = await loadConfig();\n const match = Object.entries(config.projects).find(\n ([name, project]) => name === id || project.organizationId === id,\n );\n\n if (!match) {\n throw new Error(\n `Organization \"${id}\" not found. Run ${chalk.bold(\"wave org list\")} to see available organizations.`,\n );\n }\n\n const [projectName] = match;\n await updateConfig((cfg) => ({\n ...cfg,\n currentProject: projectName,\n }));\n console.log(chalk.green(`Switched to organization \"${projectName}\".`));\n }),\n );\n\n org\n .command(\"current\")\n .description(\"Show the current organization\")\n .action(\n wrapCommand(async () => {\n const config = await loadConfig();\n const project = config.projects[config.currentProject];\n if (!project) {\n console.log(chalk.yellow(\"No organization configured. Run `wave login` first.\"));\n return;\n }\n formatOutput(\n {\n project: config.currentProject,\n organizationId: project.organizationId,\n organizationName: project.organizationName,\n region: project.region ?? \"auto\",\n },\n program.opts(),\n );\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { loadConfig, updateConfig, getConfigPath } from \"../../lib/config/manager.js\";\nimport { getDefaultConfig } from \"../../lib/config/schema.js\";\n\nexport function registerConfigCommands(program: Command): void {\n const config = program.command(\"config\").description(\"Manage CLI configuration\");\n\n config\n .command(\"list\")\n .description(\"List all configuration values\")\n .action(\n wrapCommand(async () => {\n const cfg = await loadConfig();\n console.log(chalk.gray(`Config file: ${getConfigPath()}\\n`));\n formatOutput(cfg, program.opts());\n }),\n );\n\n config\n .command(\"get <key>\")\n .description(\"Get a configuration value\")\n .action(\n wrapCommand(async (key: string) => {\n const cfg = await loadConfig();\n const value = getNestedValue(cfg, key);\n if (value === undefined) {\n throw new Error(`Configuration key \"${key}\" not found.`);\n }\n if (typeof value === \"object\" && value !== null) {\n formatOutput(value, program.opts());\n } else {\n console.log(String(value));\n }\n }),\n );\n\n config\n .command(\"set <key> <value>\")\n .description(\"Set a configuration value\")\n .action(\n wrapCommand(async (key: string, value: string) => {\n await updateConfig((cfg) => {\n const updated = { ...cfg };\n setNestedValue(updated, key, value);\n return updated;\n });\n console.log(chalk.green(`Set ${chalk.bold(key)} = ${value}`));\n }),\n );\n\n config\n .command(\"reset\")\n .description(\"Reset configuration to defaults\")\n .action(\n wrapCommand(async () => {\n const defaults = getDefaultConfig();\n await updateConfig(() => defaults);\n console.log(chalk.green(\"Configuration reset to defaults.\"));\n }),\n );\n}\n\nfunction getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const keys = path.split(\".\");\n let current: unknown = obj;\n for (const key of keys) {\n if (current === null || current === undefined || typeof current !== \"object\") {\n return undefined;\n }\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n}\n\nfunction setNestedValue(obj: Record<string, unknown>, path: string, value: string): void {\n const keys = path.split(\".\");\n let current: Record<string, unknown> = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (typeof current[key] !== \"object\" || current[key] === null) {\n current[key] = {};\n }\n current = current[key] as Record<string, unknown>;\n }\n const lastKey = keys[keys.length - 1];\n // Auto-parse booleans and numbers\n if (value === \"true\") current[lastKey] = true;\n else if (value === \"false\") current[lastKey] = false;\n else if (!isNaN(Number(value)) && value !== \"\") current[lastKey] = Number(value);\n else current[lastKey] = value;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\nexport function registerStreamCommands(program: Command): void {\n const stream = program.command(\"stream\").description(\"Manage live streams\");\n\n stream\n .command(\"create\")\n .description(\"Create a new live stream\")\n .requiredOption(\"--title <title>\", \"Stream title\")\n .option(\"--protocol <protocol>\", \"Streaming protocol (webrtc, srt, rtmp)\", \"webrtc\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.pipeline.create({\n title: opts.title,\n protocol: opts.protocol,\n });\n console.log(chalk.green(`Stream created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n stream\n .command(\"list\")\n .description(\"List all streams\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .option(\"--status <status>\", \"Filter by status\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const params: Record<string, unknown> = {\n limit: parseInt(opts.limit),\n };\n if (opts.status) params.status = opts.status;\n const result = await client.pipeline.list(params);\n formatOutput(result.data, program.opts());\n }),\n );\n\n stream\n .command(\"get <id>\")\n .description(\"Get stream details\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.pipeline.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n stream\n .command(\"update <id>\")\n .description(\"Update a stream\")\n .option(\"--title <title>\", \"New stream title\")\n .option(\"--protocol <protocol>\", \"New streaming protocol\")\n .action(\n wrapCommand(async (id: string, opts) => {\n const client = await getClient(program.opts());\n const updates: Record<string, unknown> = {};\n if (opts.title) updates.title = opts.title;\n if (opts.protocol) updates.protocol = opts.protocol;\n const result = await client.pipeline.update(id, updates);\n console.log(chalk.green(`Stream ${id} updated.`));\n formatOutput(result, program.opts());\n }),\n );\n\n stream\n .command(\"delete <id>\")\n .description(\"Delete a stream\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\"delete\", `stream ${id}`, program.opts());\n if (!confirmed) return;\n const client = await getClient(program.opts());\n await client.pipeline.delete(id);\n console.log(chalk.green(`Stream ${id} deleted.`));\n }),\n );\n\n stream\n .command(\"start <id>\")\n .description(\"Start a live stream\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.pipeline.start(id);\n console.log(chalk.green(`Stream ${id} started.`));\n formatOutput(result, program.opts());\n }),\n );\n\n stream\n .command(\"stop <id>\")\n .description(\"Stop a live stream\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\"stop\", `stream ${id}`, program.opts());\n if (!confirmed) return;\n const client = await getClient(program.opts());\n const result = await client.pipeline.stop(id);\n console.log(chalk.green(`Stream ${id} stopped.`));\n formatOutput(result, program.opts());\n }),\n );\n\n stream\n .command(\"restart <id>\")\n .description(\"Restart a live stream\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.pipeline.restart(id);\n console.log(chalk.green(`Stream ${id} restarted.`));\n formatOutput(result, program.opts());\n }),\n );\n\n stream\n .command(\"status <id>\")\n .description(\"Get stream status\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.pipeline.status(id);\n formatOutput(result, program.opts());\n }),\n );\n\n stream\n .command(\"viewers <id>\")\n .description(\"Get viewer count for a stream\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.pipeline.viewers(id);\n formatOutput(result, program.opts());\n }),\n );\n\n stream\n .command(\"metrics <id>\")\n .description(\"Get stream metrics\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.pipeline.metrics(id);\n formatOutput(result, program.opts());\n }),\n );\n\n stream\n .command(\"recordings <id>\")\n .description(\"List recordings for a stream\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.pipeline.recordings(id);\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Wave } from \"@wave-av/sdk\";\nimport chalk from \"chalk\";\nimport { loadConfig } from \"./config/manager.js\";\nimport { getApiKey } from \"./auth/keychain.js\";\n\nexport async function getClient(opts?: { org?: string; project?: string }): Promise<Wave> {\n // Environment variable override (for CI/CD)\n const envApiKey = process.env[\"WAVE_API_KEY\"];\n const envOrgId = process.env[\"WAVE_ORG_ID\"];\n const envBaseUrl = process.env[\"WAVE_BASE_URL\"];\n\n if (envApiKey) {\n return new Wave({\n apiKey: envApiKey,\n organizationId: envOrgId ?? opts?.org,\n baseUrl: envBaseUrl,\n });\n }\n\n const config = await loadConfig();\n const projectName = opts?.project ?? process.env[\"WAVE_PROJECT\"] ?? config.currentProject;\n\n const project = config.projects[projectName];\n if (!project) {\n console.error(\n chalk.red(\n `No project \"${projectName}\" configured. Run ${chalk.bold(\"wave login\")} to authenticate.`,\n ),\n );\n process.exit(1);\n }\n\n const apiKey = await getApiKey(projectName);\n if (!apiKey) {\n console.error(\n chalk.red(\n `No API key found for project \"${projectName}\". Run ${chalk.bold(\"wave login\")} to authenticate.`,\n ),\n );\n process.exit(1);\n }\n\n const client = new Wave({\n apiKey,\n organizationId: opts?.org ?? project.organizationId,\n baseUrl: project.baseUrl,\n customHeaders: {\n \"X-Wave-Source\": \"cli\",\n \"X-Wave-CLI-Version\": \"1.0.0\",\n },\n });\n\n // Wire SDK events to CLI UI\n client.client.on(\"rate_limit.hit\", (retryAfter: number) => {\n console.warn(chalk.yellow(`Rate limited. Retrying in ${retryAfter}ms...`));\n });\n\n client.client.on(\"request.retry\", (_url: string, _method: string, attempt: number) => {\n console.warn(chalk.gray(`Retry ${attempt}/3...`));\n });\n\n return client;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerStudioCommands(program: Command): void {\n const studio = program.command(\"studio\").description(\"Manage studio productions\");\n\n studio\n .command(\"create\")\n .description(\"Create a new studio production\")\n .requiredOption(\"--title <title>\", \"Production title\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.studio.create({ title: opts.title });\n console.log(chalk.green(`Studio production created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n studio\n .command(\"list\")\n .description(\"List studio productions\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.studio.list({ limit: parseInt(opts.limit) });\n formatOutput(result.data, program.opts());\n }),\n );\n\n studio\n .command(\"get <id>\")\n .description(\"Get studio production details\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.studio.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n studio\n .command(\"start <id>\")\n .description(\"Start a studio production\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.studio.start(id);\n console.log(chalk.green(`Studio production ${id} started.`));\n formatOutput(result, program.opts());\n }),\n );\n\n studio\n .command(\"stop <id>\")\n .description(\"Stop a studio production\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.studio.stop(id);\n console.log(chalk.green(`Studio production ${id} stopped.`));\n formatOutput(result, program.opts());\n }),\n );\n\n // Nested: scene commands\n const scene = studio.command(\"scene\").description(\"Manage studio scenes\");\n\n scene\n .command(\"list <productionId>\")\n .description(\"List scenes in a production\")\n .action(\n wrapCommand(async (productionId: string) => {\n const client = await getClient(program.opts());\n const result = await client.studio.scenes.list(productionId);\n formatOutput(result, program.opts());\n }),\n );\n\n scene\n .command(\"create <productionId>\")\n .description(\"Create a scene in a production\")\n .requiredOption(\"--name <name>\", \"Scene name\")\n .action(\n wrapCommand(async (productionId: string, opts) => {\n const client = await getClient(program.opts());\n const result = await client.studio.scenes.create(productionId, {\n name: opts.name,\n });\n console.log(chalk.green(`Scene created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n scene\n .command(\"activate <productionId> <sceneId>\")\n .description(\"Activate a scene in a production\")\n .action(\n wrapCommand(async (productionId: string, sceneId: string) => {\n const client = await getClient(program.opts());\n const result = await client.studio.scenes.activate(productionId, sceneId);\n console.log(chalk.green(`Scene ${sceneId} activated.`));\n formatOutput(result, program.opts());\n }),\n );\n\n // Nested: source commands\n const source = studio.command(\"source\").description(\"Manage studio sources\");\n\n source\n .command(\"list <productionId>\")\n .description(\"List sources in a production\")\n .action(\n wrapCommand(async (productionId: string) => {\n const client = await getClient(program.opts());\n const result = await client.studio.sources.list(productionId);\n formatOutput(result, program.opts());\n }),\n );\n\n source\n .command(\"add <productionId>\")\n .description(\"Add a source to a production\")\n .requiredOption(\"--type <type>\", \"Source type (camera, screen, url)\")\n .option(\"--url <url>\", \"Source URL for url type\")\n .option(\"--name <name>\", \"Source display name\")\n .action(\n wrapCommand(async (productionId: string, opts) => {\n const client = await getClient(program.opts());\n const result = await client.studio.sources.add(productionId, {\n type: opts.type,\n url: opts.url,\n name: opts.name,\n });\n console.log(chalk.green(`Source added: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerClipCommands(program: Command): void {\n const clip = program.command(\"clip\").description(\"Manage stream clips\");\n\n clip\n .command(\"create\")\n .description(\"Create a clip from a stream\")\n .requiredOption(\"--stream-id <streamId>\", \"Source stream ID\")\n .requiredOption(\"--start <start>\", \"Start time in seconds\")\n .requiredOption(\"--end <end>\", \"End time in seconds\")\n .option(\"--title <title>\", \"Clip title\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.clips.create({\n streamId: opts.streamId,\n start: parseFloat(opts.start),\n end: parseFloat(opts.end),\n title: opts.title,\n });\n console.log(chalk.green(`Clip created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n clip\n .command(\"list\")\n .description(\"List all clips\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.clips.list({ limit: parseInt(opts.limit) });\n formatOutput(result.data, program.opts());\n }),\n );\n\n clip\n .command(\"get <id>\")\n .description(\"Get clip details\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.clips.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n clip\n .command(\"export <id>\")\n .description(\"Export a clip\")\n .option(\"--format <format>\", \"Export format (mp4, webm, gif)\", \"mp4\")\n .action(\n wrapCommand(async (id: string, opts) => {\n const client = await getClient(program.opts());\n const result = await client.clips.export(id, { format: opts.format });\n console.log(chalk.green(`Clip ${id} export started.`));\n formatOutput(result, program.opts());\n }),\n );\n\n clip\n .command(\"download <id>\")\n .description(\"Download a clip to local filesystem\")\n .option(\"--output <path>\", \"Output file path\")\n .action(\n wrapCommand(async (id: string, opts) => {\n const client = await getClient(program.opts());\n const result = await client.clips.download(id, { output: opts.output });\n console.log(chalk.green(`Clip ${id} downloaded to ${result.path}`));\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerEditorCommands(program: Command): void {\n const editor = program.command(\"editor\").description(\"Manage video editor projects\");\n\n editor\n .command(\"create\")\n .description(\"Create a new editor project\")\n .requiredOption(\"--title <title>\", \"Project title\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.editor.create({ title: opts.title });\n console.log(chalk.green(`Editor project created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n editor\n .command(\"list\")\n .description(\"List editor projects\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.editor.list({ limit: parseInt(opts.limit) });\n formatOutput(result.data, program.opts());\n }),\n );\n\n editor\n .command(\"get <id>\")\n .description(\"Get editor project details\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.editor.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n editor\n .command(\"render <id>\")\n .description(\"Render an editor project\")\n .option(\"--format <format>\", \"Output format (mp4, webm, mov)\", \"mp4\")\n .action(\n wrapCommand(async (id: string, opts) => {\n const client = await getClient(program.opts());\n const result = await client.editor.render(id, { format: opts.format });\n console.log(chalk.green(`Render started for project ${id}.`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerVoiceCommands(program: Command): void {\n const voice = program.command(\"voice\").description(\"Voice synthesis and cloning\");\n\n voice\n .command(\"synthesize\")\n .description(\"Synthesize text to speech\")\n .requiredOption(\"--text <text>\", \"Text to synthesize\")\n .requiredOption(\"--voice-id <voiceId>\", \"Voice ID to use\")\n .option(\"--output <path>\", \"Output audio file path\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.voice.synthesize({\n text: opts.text,\n voiceId: opts.voiceId,\n output: opts.output,\n });\n console.log(chalk.green(\"Speech synthesized successfully.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n voice\n .command(\"clone\")\n .description(\"Clone a voice from a sample\")\n .requiredOption(\"--name <name>\", \"Name for the cloned voice\")\n .option(\"--sample <path>\", \"Path to voice sample audio file\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.voice.clone({\n name: opts.name,\n samplePath: opts.sample,\n });\n console.log(chalk.green(`Voice cloned: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n voice\n .command(\"list-voices\")\n .description(\"List available voices\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.voice.list();\n formatOutput(result.data, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerPhoneCommands(program: Command): void {\n const phone = program.command(\"phone\").description(\"Telephony and phone services\");\n\n phone\n .command(\"call\")\n .description(\"Initiate a phone call\")\n .requiredOption(\"--to <number>\", \"Destination phone number\")\n .requiredOption(\"--from <number>\", \"Source phone number\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.phone.call({\n to: opts.to,\n from: opts.from,\n });\n console.log(chalk.green(`Call initiated: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n // Conference subcommands\n const conference = phone.command(\"conference\").description(\"Manage conference calls\");\n\n conference\n .command(\"create\")\n .description(\"Create a conference call\")\n .option(\"--name <name>\", \"Conference name\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.phone.conferences.create({\n name: opts.name,\n });\n console.log(chalk.green(`Conference created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n conference\n .command(\"list\")\n .description(\"List conference calls\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.phone.conferences.list();\n formatOutput(result.data, program.opts());\n }),\n );\n\n // Numbers subcommands\n const numbers = phone.command(\"numbers\").description(\"Manage phone numbers\");\n\n numbers\n .command(\"list\")\n .description(\"List provisioned phone numbers\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.phone.numbers.list();\n formatOutput(result.data, program.opts());\n }),\n );\n\n numbers\n .command(\"provision\")\n .description(\"Provision a new phone number\")\n .option(\"--country <code>\", \"Country code\", \"US\")\n .option(\"--area-code <code>\", \"Area code\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.phone.numbers.provision({\n country: opts.country,\n areaCode: opts.areaCode,\n });\n console.log(chalk.green(`Number provisioned: ${result.number}`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerCollabCommands(program: Command): void {\n const collab = program.command(\"collab\").description(\"Real-time collaboration rooms\");\n\n const room = collab.command(\"room\").description(\"Manage collaboration rooms\");\n\n room\n .command(\"create\")\n .description(\"Create a collaboration room\")\n .option(\"--name <name>\", \"Room name\")\n .option(\"--max-participants <n>\", \"Maximum participants\", \"50\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.collab.rooms.create({\n name: opts.name,\n maxParticipants: parseInt(opts.maxParticipants),\n });\n console.log(chalk.green(`Room created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n room\n .command(\"list\")\n .description(\"List collaboration rooms\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.collab.rooms.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n room\n .command(\"join <id>\")\n .description(\"Join a collaboration room\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.collab.rooms.join(id);\n console.log(chalk.green(`Joined room ${id}.`));\n formatOutput(result, program.opts());\n }),\n );\n\n collab\n .command(\"invite\")\n .description(\"Invite a user to a collaboration room\")\n .requiredOption(\"--room-id <roomId>\", \"Room ID\")\n .requiredOption(\"--email <email>\", \"Email address to invite\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.collab.invite({\n roomId: opts.roomId,\n email: opts.email,\n });\n console.log(chalk.green(`Invitation sent to ${opts.email}.`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerCaptionsCommands(program: Command): void {\n const captions = program.command(\"captions\").description(\"Live captioning and subtitles\");\n\n captions\n .command(\"generate\")\n .description(\"Generate captions for a stream\")\n .requiredOption(\"--stream-id <streamId>\", \"Stream ID\")\n .option(\"--language <lang>\", \"Source language\", \"en\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.captions.generate({\n streamId: opts.streamId,\n language: opts.language,\n });\n console.log(chalk.green(\"Caption generation started.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n captions\n .command(\"translate\")\n .description(\"Translate captions to another language\")\n .requiredOption(\"--stream-id <streamId>\", \"Stream ID\")\n .requiredOption(\"--target-language <lang>\", \"Target language code\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.captions.translate({\n streamId: opts.streamId,\n targetLanguage: opts.targetLanguage,\n });\n console.log(chalk.green(`Translation to ${opts.targetLanguage} started.`));\n formatOutput(result, program.opts());\n }),\n );\n\n captions\n .command(\"burn-in\")\n .description(\"Burn captions into a recording\")\n .requiredOption(\"--recording-id <recordingId>\", \"Recording ID\")\n .option(\"--style <style>\", \"Caption style (default, cinematic, minimal)\", \"default\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.captions.burnIn({\n recordingId: opts.recordingId,\n style: opts.style,\n });\n console.log(chalk.green(\"Caption burn-in started.\"));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerChaptersCommands(program: Command): void {\n const chapters = program.command(\"chapters\").description(\"Chapter detection and management\");\n\n chapters\n .command(\"detect\")\n .description(\"Auto-detect chapters in a recording\")\n .requiredOption(\"--recording-id <recordingId>\", \"Recording ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.chapters.detect({\n recordingId: opts.recordingId,\n });\n console.log(chalk.green(\"Chapter detection started.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n chapters\n .command(\"create\")\n .description(\"Create a chapter manually\")\n .requiredOption(\"--recording-id <recordingId>\", \"Recording ID\")\n .requiredOption(\"--title <title>\", \"Chapter title\")\n .requiredOption(\"--timestamp <timestamp>\", \"Timestamp in seconds\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.chapters.create({\n recordingId: opts.recordingId,\n title: opts.title,\n timestamp: parseFloat(opts.timestamp),\n });\n console.log(chalk.green(`Chapter created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n chapters\n .command(\"list\")\n .description(\"List chapters for a recording\")\n .requiredOption(\"--recording-id <recordingId>\", \"Recording ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.chapters.list({\n recordingId: opts.recordingId,\n });\n formatOutput(result.data, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerAICommands(program: Command): void {\n const ai = program.command(\"ai\").description(\"AI-powered studio assistant\");\n\n const assistant = ai.command(\"assistant\").description(\"Studio AI assistant\");\n\n assistant\n .command(\"start\")\n .description(\"Start the AI assistant for a production\")\n .requiredOption(\"--production-id <productionId>\", \"Production ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.studioAI.start({\n productionId: opts.productionId,\n });\n console.log(chalk.green(\"AI assistant started.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n assistant\n .command(\"stop\")\n .description(\"Stop the AI assistant for a production\")\n .requiredOption(\"--production-id <productionId>\", \"Production ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.studioAI.stop({\n productionId: opts.productionId,\n });\n console.log(chalk.green(\"AI assistant stopped.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n ai.command(\"suggestions\")\n .description(\"Get AI suggestions for the current production\")\n .requiredOption(\"--production-id <productionId>\", \"Production ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.studioAI.suggestions({\n productionId: opts.productionId,\n });\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerTranscribeCommands(program: Command): void {\n const transcribe = program.command(\"transcribe\").description(\"Transcription services\");\n\n transcribe\n .command(\"create\")\n .description(\"Start a transcription job\")\n .requiredOption(\"--stream-id <streamId>\", \"Stream or recording ID\")\n .option(\"--language <lang>\", \"Source language\", \"en\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.transcribe.create({\n streamId: opts.streamId,\n language: opts.language,\n });\n console.log(chalk.green(`Transcription started: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n transcribe\n .command(\"get <id>\")\n .description(\"Get transcription status and results\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.transcribe.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n transcribe\n .command(\"export <id>\")\n .description(\"Export a transcription\")\n .option(\"--format <format>\", \"Export format (srt, vtt, txt, json)\", \"srt\")\n .action(\n wrapCommand(async (id: string, opts) => {\n const client = await getClient(program.opts());\n const result = await client.transcribe.export(id, {\n format: opts.format,\n });\n console.log(chalk.green(`Transcription exported as ${opts.format}.`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerSentimentCommands(program: Command): void {\n const sentiment = program.command(\"sentiment\").description(\"Sentiment analysis tools\");\n\n sentiment\n .command(\"analyze\")\n .description(\"Analyze sentiment of text\")\n .requiredOption(\"--text <text>\", \"Text to analyze\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.sentiment.analyze({ text: opts.text });\n formatOutput(result, program.opts());\n }),\n );\n\n sentiment\n .command(\"batch\")\n .description(\"Analyze sentiment of multiple texts from stdin\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.sentiment.batch();\n formatOutput(result, program.opts());\n }),\n );\n\n sentiment\n .command(\"trends\")\n .description(\"View sentiment trends over time\")\n .option(\"--stream-id <streamId>\", \"Filter by stream ID\")\n .option(\"--period <period>\", \"Time period (hour, day, week)\", \"day\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.sentiment.trends({\n streamId: opts.streamId,\n period: opts.period,\n });\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerSearchCommands(program: Command): void {\n const search = program\n .command(\"search\")\n .description(\"Content search across streams and recordings\");\n\n search\n .command(\"query\")\n .description(\"Search content by text query\")\n .requiredOption(\"--q <query>\", \"Search query\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.search.query({\n q: opts.q,\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n search\n .command(\"visual\")\n .description(\"Search by visual content\")\n .requiredOption(\"--q <query>\", \"Visual search query\")\n .option(\"--limit <n>\", \"Maximum results\", \"10\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.search.visual({\n q: opts.q,\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n search\n .command(\"audio\")\n .description(\"Search by audio content\")\n .requiredOption(\"--q <query>\", \"Audio search query\")\n .option(\"--limit <n>\", \"Maximum results\", \"10\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.search.audio({\n q: opts.q,\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n search\n .command(\"index\")\n .description(\"Index a recording for search\")\n .requiredOption(\"--recording-id <recordingId>\", \"Recording ID to index\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.search.index({\n recordingId: opts.recordingId,\n });\n console.log(chalk.green(\"Recording indexing started.\"));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerSceneCommands(program: Command): void {\n const scene = program.command(\"scene\").description(\"Scene detection and analysis\");\n\n scene\n .command(\"detect\")\n .description(\"Detect scenes in a recording\")\n .requiredOption(\"--recording-id <recordingId>\", \"Recording ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.scene.detect({\n recordingId: opts.recordingId,\n });\n console.log(chalk.green(\"Scene detection started.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n scene\n .command(\"list\")\n .description(\"List detected scenes\")\n .requiredOption(\"--recording-id <recordingId>\", \"Recording ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.scene.list({\n recordingId: opts.recordingId,\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n scene\n .command(\"compare\")\n .description(\"Compare scenes across recordings\")\n .requiredOption(\"--recording-ids <ids>\", \"Comma-separated recording IDs\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const recordingIds = (opts.recordingIds as string).split(\",\");\n const result = await client.scene.compare({ recordingIds });\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerFleetCommands(program: Command): void {\n const fleet = program.command(\"fleet\").description(\"Device fleet management\");\n\n fleet\n .command(\"list\")\n .description(\"List all devices in the fleet\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .option(\"--status <status>\", \"Filter by device status\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const params: Record<string, unknown> = {\n limit: parseInt(opts.limit),\n };\n if (opts.status) params.status = opts.status;\n const result = await client.fleet.list(params);\n formatOutput(result.data, program.opts());\n }),\n );\n\n fleet\n .command(\"get <id>\")\n .description(\"Get device details\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.fleet.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n fleet\n .command(\"command <id>\")\n .description(\"Send a command to a device\")\n .requiredOption(\"--action <action>\", \"Command action (reboot, update, configure)\")\n .option(\"--payload <json>\", \"JSON payload for the command\")\n .action(\n wrapCommand(async (id: string, opts) => {\n const client = await getClient(program.opts());\n const payload = opts.payload ? JSON.parse(opts.payload as string) : undefined;\n const result = await client.fleet.command(id, {\n action: opts.action,\n payload,\n });\n console.log(chalk.green(`Command sent to device ${id}.`));\n formatOutput(result, program.opts());\n }),\n );\n\n fleet\n .command(\"health <id>\")\n .description(\"Get device health status\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.fleet.health(id);\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerGhostCommands(program: Command): void {\n const ghost = program.command(\"ghost\").description(\"WAVE Autopilot AI director\");\n\n ghost\n .command(\"suggestions\")\n .description(\"Get AI production suggestions\")\n .requiredOption(\"--production-id <productionId>\", \"Production ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.ghost.suggestions({\n productionId: opts.productionId,\n });\n formatOutput(result, program.opts());\n }),\n );\n\n ghost\n .command(\"apply <id>\")\n .description(\"Apply an autopilot suggestion\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.ghost.apply(id);\n console.log(chalk.green(`Suggestion ${id} applied.`));\n formatOutput(result, program.opts());\n }),\n );\n\n ghost\n .command(\"history\")\n .description(\"View autopilot action history\")\n .option(\"--production-id <productionId>\", \"Filter by production ID\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.ghost.history({\n productionId: opts.productionId,\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\nexport function registerMeshCommands(program: Command): void {\n const mesh = program.command(\"mesh\").description(\"Multi-region mesh network and failover\");\n\n mesh\n .command(\"status\")\n .description(\"Show mesh network status\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.mesh.status();\n formatOutput(result, program.opts());\n }),\n );\n\n mesh\n .command(\"regions\")\n .description(\"List available mesh regions\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.mesh.regions();\n formatOutput(result.data, program.opts());\n }),\n );\n\n mesh\n .command(\"failover\")\n .description(\"Trigger a failover between regions\")\n .requiredOption(\"--from <region>\", \"Source region\")\n .requiredOption(\"--to <region>\", \"Target region\")\n .action(\n wrapCommand(async (opts) => {\n const confirmed = await confirmDestructive(\n \"failover\",\n `from ${opts.from} to ${opts.to}`,\n program.opts(),\n );\n if (!confirmed) return;\n const client = await getClient(program.opts());\n const result = await client.mesh.failover({\n from: opts.from,\n to: opts.to,\n });\n console.log(chalk.green(`Failover initiated: ${opts.from} -> ${opts.to}`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\nexport function registerEdgeCommands(program: Command): void {\n const edge = program.command(\"edge\").description(\"Edge processing and CDN management\");\n\n const cache = edge.command(\"cache\").description(\"Manage edge cache\");\n\n cache\n .command(\"status\")\n .description(\"Show edge cache status\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.edge.cache.status();\n formatOutput(result, program.opts());\n }),\n );\n\n cache\n .command(\"purge\")\n .description(\"Purge edge cache\")\n .option(\"--path <path>\", \"Specific path to purge (purges all if omitted)\")\n .action(\n wrapCommand(async (opts) => {\n const target = opts.path ?? \"all cache entries\";\n const confirmed = await confirmDestructive(\"purge\", target, program.opts());\n if (!confirmed) return;\n const client = await getClient(program.opts());\n const result = await client.edge.cache.purge({ path: opts.path });\n console.log(chalk.green(\"Cache purge initiated.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n const workers = edge.command(\"workers\").description(\"Manage edge workers\");\n\n workers\n .command(\"list\")\n .description(\"List edge workers\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.edge.workers.list();\n formatOutput(result.data, program.opts());\n }),\n );\n\n const rules = edge.command(\"rules\").description(\"Manage edge rules\");\n\n rules\n .command(\"list\")\n .description(\"List edge rules\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.edge.rules.list();\n formatOutput(result.data, program.opts());\n }),\n );\n\n rules\n .command(\"create\")\n .description(\"Create an edge rule\")\n .requiredOption(\"--pattern <pattern>\", \"URL pattern to match\")\n .requiredOption(\"--action <action>\", \"Rule action (cache, redirect, block)\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.edge.rules.create({\n pattern: opts.pattern,\n action: opts.action,\n });\n console.log(chalk.green(`Edge rule created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerAnalyticsCommands(program: Command): void {\n const analytics = program.command(\"analytics\").description(\"Streaming analytics and insights\");\n\n analytics\n .command(\"viewers\")\n .description(\"View audience analytics\")\n .option(\"--stream-id <streamId>\", \"Filter by stream ID\")\n .option(\"--period <period>\", \"Time period (hour, day, week, month)\", \"day\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.pulse.viewers({\n streamId: opts.streamId,\n period: opts.period,\n });\n formatOutput(result, program.opts());\n }),\n );\n\n analytics\n .command(\"revenue\")\n .description(\"View revenue analytics\")\n .option(\"--period <period>\", \"Time period (day, week, month)\", \"month\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.pulse.revenue({ period: opts.period });\n formatOutput(result, program.opts());\n }),\n );\n\n analytics\n .command(\"export\")\n .description(\"Export analytics data\")\n .option(\"--format <format>\", \"Export format (csv, json)\", \"csv\")\n .option(\"--period <period>\", \"Time period (day, week, month)\", \"month\")\n .option(\"--stream-id <streamId>\", \"Filter by stream ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.pulse.export({\n format: opts.format,\n period: opts.period,\n streamId: opts.streamId,\n });\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerPrismCommands(program: Command): void {\n const prism = program.command(\"prism\").description(\"Camera discovery and PTZ control\");\n\n prism\n .command(\"discover\")\n .description(\"Discover available cameras on the network\")\n .option(\"--timeout <ms>\", \"Discovery timeout in milliseconds\", \"5000\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.prism.discover({\n timeout: parseInt(opts.timeout),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n prism\n .command(\"create\")\n .description(\"Register a camera source\")\n .requiredOption(\"--source-type <type>\", \"Source type (ndi, srt, rtmp, usb)\")\n .option(\"--name <name>\", \"Camera display name\")\n .option(\"--url <url>\", \"Camera source URL\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.prism.create({\n sourceType: opts.sourceType,\n name: opts.name,\n url: opts.url,\n });\n console.log(chalk.green(`Camera registered: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n prism\n .command(\"ptz\")\n .description(\"Control camera PTZ (Pan-Tilt-Zoom)\")\n .requiredOption(\"--camera-id <cameraId>\", \"Camera ID\")\n .option(\"--pan <degrees>\", \"Pan angle in degrees\")\n .option(\"--tilt <degrees>\", \"Tilt angle in degrees\")\n .option(\"--zoom <level>\", \"Zoom level (0-100)\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const params: Record<string, unknown> = {\n cameraId: opts.cameraId,\n };\n if (opts.pan !== undefined) params.pan = parseFloat(opts.pan);\n if (opts.tilt !== undefined) params.tilt = parseFloat(opts.tilt);\n if (opts.zoom !== undefined) params.zoom = parseFloat(opts.zoom);\n const result = await client.prism.ptz(params);\n console.log(chalk.green(\"PTZ command sent.\"));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\ntype AnySDK = Record<string, Record<string, (...args: unknown[]) => Promise<unknown>>>;\n\nexport function registerZoomCommands(program: Command): void {\n const zoom = program.command(\"zoom\").description(\"Zoom meeting and webinar integration\");\n\n const meeting = zoom.command(\"meeting\").description(\"Manage Zoom meetings\");\n\n meeting\n .command(\"create\")\n .description(\"Create a Zoom meeting\")\n .requiredOption(\"--topic <topic>\", \"Meeting topic\")\n .option(\"--duration <minutes>\", \"Duration in minutes\", \"60\")\n .action(\n wrapCommand(async (opts) => {\n const client = (await getClient(program.opts())) as unknown as AnySDK;\n const result = await client.zoom.meetings.create({\n topic: opts.topic,\n duration: parseInt(opts.duration),\n });\n console.log(chalk.green(`Meeting created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n meeting\n .command(\"list\")\n .description(\"List Zoom meetings\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = (await getClient(program.opts())) as unknown as AnySDK;\n const result = await client.zoom.meetings.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n meeting\n .command(\"get <id>\")\n .description(\"Get Zoom meeting details\")\n .action(\n wrapCommand(async (id: string) => {\n const client = (await getClient(program.opts())) as unknown as AnySDK;\n const result = await client.zoom.meetings.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n meeting\n .command(\"delete <id>\")\n .description(\"Delete a Zoom meeting\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\"delete\", `Zoom meeting ${id}`, program.opts());\n if (!confirmed) return;\n const client = (await getClient(program.opts())) as unknown as AnySDK;\n await client.zoom.meetings.delete(id);\n console.log(chalk.green(`Meeting ${id} deleted.`));\n }),\n );\n\n // Recordings subcommands\n const recordings = zoom.command(\"recordings\").description(\"Manage Zoom recordings\");\n\n recordings\n .command(\"list\")\n .description(\"List Zoom recordings\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = (await getClient(program.opts())) as unknown as AnySDK;\n const result = await client.zoom.recordings.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n recordings\n .command(\"get <id>\")\n .description(\"Get Zoom recording details\")\n .action(\n wrapCommand(async (id: string) => {\n const client = (await getClient(program.opts())) as unknown as AnySDK;\n const result = await client.zoom.recordings.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n // Webinar subcommands\n const webinar = zoom.command(\"webinar\").description(\"Manage Zoom webinars\");\n\n webinar\n .command(\"create\")\n .description(\"Create a Zoom webinar\")\n .requiredOption(\"--topic <topic>\", \"Webinar topic\")\n .option(\"--duration <minutes>\", \"Duration in minutes\", \"60\")\n .action(\n wrapCommand(async (opts) => {\n const client = (await getClient(program.opts())) as unknown as AnySDK;\n const result = await client.zoom.webinars.create({\n topic: opts.topic,\n duration: parseInt(opts.duration),\n });\n console.log(chalk.green(`Webinar created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n webinar\n .command(\"list\")\n .description(\"List Zoom webinars\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = (await getClient(program.opts())) as unknown as AnySDK;\n const result = await client.zoom.webinars.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\nexport function registerVaultCommands(program: Command): void {\n const vault = program.command(\"vault\").description(\"Recording vault and archive management\");\n\n const recordings = vault.command(\"recordings\").description(\"Manage vault recordings\");\n\n recordings\n .command(\"list\")\n .description(\"List recordings in the vault\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .option(\"--status <status>\", \"Filter by status (active, archived)\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const params: Record<string, unknown> = {\n limit: parseInt(opts.limit),\n };\n if (opts.status) params.status = opts.status;\n const result = await client.vault.recordings.list(params);\n formatOutput(result.data, program.opts());\n }),\n );\n\n recordings\n .command(\"get <id>\")\n .description(\"Get recording details\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.vault.recordings.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n recordings\n .command(\"delete <id>\")\n .description(\"Delete a recording from the vault\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\n \"permanently delete\",\n `recording ${id}`,\n program.opts(),\n );\n if (!confirmed) return;\n const client = await getClient(program.opts());\n await client.vault.recordings.delete(id);\n console.log(chalk.green(`Recording ${id} deleted.`));\n }),\n );\n\n vault\n .command(\"archive <id>\")\n .description(\"Archive a recording to cold storage\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.vault.archive(id);\n console.log(chalk.green(`Recording ${id} archived.`));\n formatOutput(result, program.opts());\n }),\n );\n\n vault\n .command(\"restore <id>\")\n .description(\"Restore an archived recording\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.vault.restore(id);\n console.log(chalk.green(`Recording ${id} restoration started.`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerMarketplaceCommands(program: Command): void {\n const marketplace = program\n .command(\"marketplace\")\n .description(\"WAVE marketplace for plugins and extensions\");\n\n marketplace\n .command(\"search\")\n .description(\"Search the marketplace\")\n .requiredOption(\"--q <query>\", \"Search query\")\n .option(\"--category <category>\", \"Filter by category\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.marketplace.search({\n q: opts.q,\n category: opts.category,\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n marketplace\n .command(\"install <id>\")\n .description(\"Install a marketplace extension\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.marketplace.install(id);\n console.log(chalk.green(`Extension ${id} installed.`));\n formatOutput(result, program.opts());\n }),\n );\n\n marketplace\n .command(\"publish\")\n .description(\"Publish an extension to the marketplace\")\n .option(\"--path <path>\", \"Path to extension package\", \".\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.marketplace.publish({ path: opts.path });\n console.log(chalk.green(\"Extension published successfully.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n marketplace\n .command(\"list\")\n .description(\"List installed extensions\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.marketplace.list();\n formatOutput(result.data, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\nexport function registerConnectCommands(program: Command): void {\n const connect = program.command(\"connect\").description(\"Third-party integrations and connectors\");\n\n connect\n .command(\"integrations\")\n .description(\"List available integrations\")\n .option(\"--limit <n>\", \"Maximum results\", \"50\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.connect.integrations({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n connect\n .command(\"configure <id>\")\n .description(\"Configure an integration\")\n .option(\"--settings <json>\", \"JSON settings for the integration\")\n .action(\n wrapCommand(async (id: string, opts) => {\n const client = await getClient(program.opts());\n const settings = opts.settings ? JSON.parse(opts.settings as string) : undefined;\n const result = await client.connect.configure(id, { settings });\n console.log(chalk.green(`Integration ${id} configured.`));\n formatOutput(result, program.opts());\n }),\n );\n\n connect\n .command(\"status <id>\")\n .description(\"Get integration connection status\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.connect.status(id);\n formatOutput(result, program.opts());\n }),\n );\n\n connect\n .command(\"disconnect <id>\")\n .description(\"Disconnect an integration\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\n \"disconnect\",\n `integration ${id}`,\n program.opts(),\n );\n if (!confirmed) return;\n const client = await getClient(program.opts());\n await client.connect.disconnect(id);\n console.log(chalk.green(`Integration ${id} disconnected.`));\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\nexport function registerDistributionCommands(program: Command): void {\n const distribution = program\n .command(\"distribution\")\n .description(\"Multi-platform stream distribution\");\n\n distribution\n .command(\"simulcast\")\n .description(\"Set up simulcast for a stream\")\n .requiredOption(\"--stream-id <streamId>\", \"Stream ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.distribution.simulcast({\n streamId: opts.streamId,\n });\n console.log(chalk.green(\"Simulcast configured.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n const destinations = distribution\n .command(\"destinations\")\n .description(\"Manage distribution destinations\");\n\n destinations\n .command(\"list\")\n .description(\"List distribution destinations\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.distribution.destinations.list();\n formatOutput(result.data, program.opts());\n }),\n );\n\n destinations\n .command(\"add\")\n .description(\"Add a distribution destination\")\n .requiredOption(\"--platform <platform>\", \"Platform (youtube, twitch, facebook, custom)\")\n .requiredOption(\"--stream-key <key>\", \"Stream key for the platform\")\n .option(\"--url <url>\", \"Custom RTMP URL\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.distribution.destinations.add({\n platform: opts.platform,\n streamKey: opts.streamKey,\n url: opts.url,\n });\n console.log(chalk.green(`Destination added: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n destinations\n .command(\"remove <id>\")\n .description(\"Remove a distribution destination\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\"remove\", `destination ${id}`, program.opts());\n if (!confirmed) return;\n const client = await getClient(program.opts());\n await client.distribution.destinations.remove(id);\n console.log(chalk.green(`Destination ${id} removed.`));\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerDesktopCommands(program: Command): void {\n const desktop = program.command(\"desktop\").description(\"Desktop node management and pairing\");\n\n desktop\n .command(\"nodes\")\n .description(\"List connected desktop nodes\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.desktop.nodes();\n formatOutput(result.data, program.opts());\n }),\n );\n\n desktop\n .command(\"pair\")\n .description(\"Pair a desktop node\")\n .requiredOption(\"--code <code>\", \"Pairing code from the desktop application\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.desktop.pair({ code: opts.code });\n console.log(chalk.green(\"Desktop node paired successfully.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n desktop\n .command(\"status <id>\")\n .description(\"Get desktop node status\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.desktop.status(id);\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\nexport function registerSignageCommands(program: Command): void {\n const signage = program.command(\"signage\").description(\"Digital signage management\");\n\n const displays = signage.command(\"displays\").description(\"Manage signage displays\");\n\n displays\n .command(\"list\")\n .description(\"List registered displays\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.signage.displays.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n displays\n .command(\"register\")\n .description(\"Register a new display\")\n .requiredOption(\"--name <name>\", \"Display name\")\n .option(\"--location <location>\", \"Physical location\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.signage.displays.register({\n name: opts.name,\n location: opts.location,\n });\n console.log(chalk.green(`Display registered: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n const content = signage.command(\"content\").description(\"Manage signage content\");\n\n content\n .command(\"upload\")\n .description(\"Upload content for signage\")\n .requiredOption(\"--file <path>\", \"Path to content file\")\n .option(\"--name <name>\", \"Content name\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.signage.content.upload({\n file: opts.file,\n name: opts.name,\n });\n console.log(chalk.green(`Content uploaded: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n content\n .command(\"list\")\n .description(\"List signage content\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.signage.content.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n content\n .command(\"delete <id>\")\n .description(\"Delete signage content\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\"delete\", `content ${id}`, program.opts());\n if (!confirmed) return;\n const client = await getClient(program.opts());\n await client.signage.content.delete(id);\n console.log(chalk.green(`Content ${id} deleted.`));\n }),\n );\n\n const schedule = signage.command(\"schedule\").description(\"Manage content schedules\");\n\n schedule\n .command(\"create\")\n .description(\"Create a content schedule\")\n .requiredOption(\"--display-id <displayId>\", \"Target display ID\")\n .requiredOption(\"--content-id <contentId>\", \"Content ID to schedule\")\n .option(\"--start <datetime>\", \"Start datetime (ISO 8601)\")\n .option(\"--end <datetime>\", \"End datetime (ISO 8601)\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.signage.schedules.create({\n displayId: opts.displayId,\n contentId: opts.contentId,\n start: opts.start,\n end: opts.end,\n });\n console.log(chalk.green(`Schedule created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n schedule\n .command(\"list\")\n .description(\"List content schedules\")\n .option(\"--display-id <displayId>\", \"Filter by display ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.signage.schedules.list({\n displayId: opts.displayId,\n });\n formatOutput(result.data, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerQrCommands(program: Command): void {\n const qr = program.command(\"qr\").description(\"QR code generation and scanning\");\n\n qr.command(\"create\")\n .description(\"Generate a QR code\")\n .requiredOption(\"--data <data>\", \"Data to encode in the QR code\")\n .option(\"--format <format>\", \"Output format (png, svg)\", \"png\")\n .option(\"--size <size>\", \"QR code size in pixels\", \"256\")\n .option(\"--output <path>\", \"Output file path\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.qr.create({\n data: opts.data,\n format: opts.format,\n size: parseInt(opts.size),\n output: opts.output,\n });\n console.log(chalk.green(\"QR code generated.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n qr.command(\"scan\")\n .description(\"Scan a QR code from an image\")\n .requiredOption(\"--image-path <path>\", \"Path to image file containing QR code\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.qr.scan({ imagePath: opts.imagePath });\n formatOutput(result, program.opts());\n }),\n );\n\n qr.command(\"list\")\n .description(\"List generated QR codes\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.qr.list({ limit: parseInt(opts.limit) });\n formatOutput(result.data, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerAudienceCommands(program: Command): void {\n const audience = program.command(\"audience\").description(\"Audience engagement tools\");\n\n // Polls\n const polls = audience.command(\"polls\").description(\"Manage audience polls\");\n\n polls\n .command(\"create\")\n .description(\"Create an audience poll\")\n .requiredOption(\"--question <question>\", \"Poll question\")\n .requiredOption(\"--options <options>\", \"Comma-separated poll options\")\n .option(\"--stream-id <streamId>\", \"Attach to a stream\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const options = (opts.options as string).split(\",\").map((o: string) => o.trim());\n const result = await client.audience.polls.create({\n question: opts.question,\n options,\n streamId: opts.streamId,\n });\n console.log(chalk.green(`Poll created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n polls\n .command(\"list\")\n .description(\"List polls\")\n .option(\"--stream-id <streamId>\", \"Filter by stream ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.audience.polls.list({\n streamId: opts.streamId,\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n polls\n .command(\"results <id>\")\n .description(\"Get poll results\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.audience.polls.results(id);\n formatOutput(result, program.opts());\n }),\n );\n\n polls\n .command(\"close <id>\")\n .description(\"Close an active poll\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.audience.polls.close(id);\n console.log(chalk.green(`Poll ${id} closed.`));\n formatOutput(result, program.opts());\n }),\n );\n\n // Questions\n const questions = audience.command(\"questions\").description(\"Manage audience Q&A\");\n\n questions\n .command(\"create\")\n .description(\"Open a Q&A session\")\n .option(\"--stream-id <streamId>\", \"Attach to a stream\")\n .option(\"--moderated\", \"Enable moderation\", false)\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.audience.questions.create({\n streamId: opts.streamId,\n moderated: opts.moderated,\n });\n console.log(chalk.green(`Q&A session created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n questions\n .command(\"list\")\n .description(\"List questions in a Q&A session\")\n .requiredOption(\"--session-id <sessionId>\", \"Q&A session ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.audience.questions.list({\n sessionId: opts.sessionId,\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n // Reactions\n const reactions = audience.command(\"reactions\").description(\"Manage audience reactions\");\n\n reactions\n .command(\"enable\")\n .description(\"Enable reactions for a stream\")\n .requiredOption(\"--stream-id <streamId>\", \"Stream ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.audience.reactions.enable({\n streamId: opts.streamId,\n });\n console.log(chalk.green(\"Reactions enabled.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n reactions\n .command(\"disable\")\n .description(\"Disable reactions for a stream\")\n .requiredOption(\"--stream-id <streamId>\", \"Stream ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.audience.reactions.disable({\n streamId: opts.streamId,\n });\n console.log(chalk.green(\"Reactions disabled.\"));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerCreatorCommands(program: Command): void {\n const creator = program.command(\"creator\").description(\"Creator monetization and analytics\");\n\n creator\n .command(\"revenue\")\n .description(\"View revenue summary\")\n .option(\"--period <period>\", \"Time period (day, week, month)\", \"month\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.creator.revenue({ period: opts.period });\n formatOutput(result, program.opts());\n }),\n );\n\n const payouts = creator.command(\"payouts\").description(\"Manage payouts\");\n\n payouts\n .command(\"list\")\n .description(\"List payout history\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.creator.payouts.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n payouts\n .command(\"request\")\n .description(\"Request a payout\")\n .option(\"--amount <amount>\", \"Payout amount (uses full balance if omitted)\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const params: Record<string, unknown> = {};\n if (opts.amount) params.amount = parseFloat(opts.amount);\n const result = await client.creator.payouts.request(params);\n console.log(chalk.green(\"Payout requested.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n creator\n .command(\"analytics\")\n .description(\"View creator analytics\")\n .option(\"--period <period>\", \"Time period (day, week, month)\", \"month\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.creator.analytics({ period: opts.period });\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\nexport function registerPodcastCommands(program: Command): void {\n const podcast = program.command(\"podcast\").description(\"Podcast management\");\n\n const episodes = podcast.command(\"episodes\").description(\"Manage podcast episodes\");\n\n episodes\n .command(\"create\")\n .description(\"Create a podcast episode\")\n .requiredOption(\"--title <title>\", \"Episode title\")\n .option(\"--description <desc>\", \"Episode description\")\n .option(\"--audio <path>\", \"Path to audio file\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.podcast.episodes.create({\n title: opts.title,\n description: opts.description,\n audioPath: opts.audio,\n });\n console.log(chalk.green(`Episode created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n episodes\n .command(\"list\")\n .description(\"List podcast episodes\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.podcast.episodes.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n episodes\n .command(\"get <id>\")\n .description(\"Get episode details\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.podcast.episodes.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n episodes\n .command(\"publish <id>\")\n .description(\"Publish a podcast episode\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.podcast.episodes.publish(id);\n console.log(chalk.green(`Episode ${id} published.`));\n formatOutput(result, program.opts());\n }),\n );\n\n episodes\n .command(\"delete <id>\")\n .description(\"Delete a podcast episode\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\"delete\", `episode ${id}`, program.opts());\n if (!confirmed) return;\n const client = await getClient(program.opts());\n await client.podcast.episodes.delete(id);\n console.log(chalk.green(`Episode ${id} deleted.`));\n }),\n );\n\n // RSS\n const rss = podcast.command(\"rss\").description(\"Manage podcast RSS feed\");\n\n rss\n .command(\"generate\")\n .description(\"Generate an RSS feed\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.podcast.rss.generate();\n console.log(chalk.green(\"RSS feed generated.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n rss\n .command(\"get\")\n .description(\"Get the current RSS feed URL\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.podcast.rss.get();\n formatOutput(result, program.opts());\n }),\n );\n\n podcast\n .command(\"distribute\")\n .description(\"Distribute podcast to platforms\")\n .option(\"--platforms <platforms>\", \"Comma-separated platforms (spotify, apple, google)\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const platforms = opts.platforms\n ? (opts.platforms as string).split(\",\").map((p: string) => p.trim())\n : undefined;\n const result = await client.podcast.distribute({ platforms });\n console.log(chalk.green(\"Distribution initiated.\"));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerSlidesCommands(program: Command): void {\n const slides = program.command(\"slides\").description(\"Slide presentation tools\");\n\n slides\n .command(\"convert\")\n .description(\"Convert a presentation file for streaming\")\n .requiredOption(\"--input-file <path>\", \"Path to presentation file (pptx, pdf, keynote)\")\n .option(\"--output <path>\", \"Output directory\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.slides.convert({\n inputFile: opts.inputFile,\n output: opts.output,\n });\n console.log(chalk.green(\"Presentation converted.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n slides\n .command(\"present\")\n .description(\"Start a slide presentation in a production\")\n .requiredOption(\"--production-id <productionId>\", \"Production ID\")\n .option(\"--slide-deck <id>\", \"Slide deck ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.slides.present({\n productionId: opts.productionId,\n slideDeckId: opts.slideDeck,\n });\n console.log(chalk.green(\"Presentation started.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n slides\n .command(\"annotate\")\n .description(\"Enable slide annotations\")\n .requiredOption(\"--production-id <productionId>\", \"Production ID\")\n .option(\"--tool <tool>\", \"Annotation tool (pen, highlight, pointer)\", \"pen\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.slides.annotate({\n productionId: opts.productionId,\n tool: opts.tool,\n });\n console.log(chalk.green(\"Annotations enabled.\"));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerUsbCommands(program: Command): void {\n const usb = program.command(\"usb\").description(\"USB device relay and management\");\n\n const relay = usb.command(\"relay\").description(\"Manage USB relay\");\n\n relay\n .command(\"start\")\n .description(\"Start USB relay for virtual camera/microphone\")\n .option(\"--device <id>\", \"Specific device ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.usb.relay.start({ deviceId: opts.device });\n console.log(chalk.green(\"USB relay started.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n relay\n .command(\"stop\")\n .description(\"Stop USB relay\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.usb.relay.stop();\n console.log(chalk.green(\"USB relay stopped.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n usb\n .command(\"devices\")\n .description(\"List connected USB devices\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.usb.devices.list();\n formatOutput(result.data, program.opts());\n }),\n );\n\n usb\n .command(\"configure <id>\")\n .description(\"Configure a USB device\")\n .option(\"--settings <json>\", \"JSON settings for the device\")\n .action(\n wrapCommand(async (id: string, opts) => {\n const client = await getClient(program.opts());\n const settings = opts.settings ? JSON.parse(opts.settings as string) : undefined;\n const result = await client.usb.configure(id, { settings });\n console.log(chalk.green(`Device ${id} configured.`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nexport function registerNotifyCommands(program: Command): void {\n const notify = program.command(\"notify\").description(\"Notification management\");\n\n notify\n .command(\"send\")\n .description(\"Send a notification\")\n .requiredOption(\"--to <userId>\", \"Recipient user ID\")\n .requiredOption(\"--template <templateId>\", \"Notification template ID\")\n .option(\"--data <json>\", \"JSON data for template variables\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const data = opts.data ? JSON.parse(opts.data as string) : undefined;\n const result = await client.notifications.send({\n to: opts.to,\n template: opts.template,\n data,\n });\n console.log(chalk.green(\"Notification sent.\"));\n formatOutput(result, program.opts());\n }),\n );\n\n const templates = notify.command(\"templates\").description(\"Manage notification templates\");\n\n templates\n .command(\"list\")\n .description(\"List notification templates\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.notifications.templates.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n templates\n .command(\"get <id>\")\n .description(\"Get a notification template\")\n .action(\n wrapCommand(async (id: string) => {\n const client = await getClient(program.opts());\n const result = await client.notifications.templates.get(id);\n formatOutput(result, program.opts());\n }),\n );\n\n templates\n .command(\"create\")\n .description(\"Create a notification template\")\n .requiredOption(\"--name <name>\", \"Template name\")\n .requiredOption(\"--body <body>\", \"Template body\")\n .option(\"--subject <subject>\", \"Template subject (for email)\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.notifications.templates.create({\n name: opts.name,\n body: opts.body,\n subject: opts.subject,\n });\n console.log(chalk.green(`Template created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n const channels = notify.command(\"channels\").description(\"Manage notification channels\");\n\n channels\n .command(\"list\")\n .description(\"List notification channels\")\n .action(\n wrapCommand(async () => {\n const client = await getClient(program.opts());\n const result = await client.notifications.channels.list();\n formatOutput(result.data, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { confirmDestructive } from \"../../lib/output/index.js\";\n\nexport function registerDrmCommands(program: Command): void {\n const drm = program.command(\"drm\").description(\"Digital rights management\");\n\n // Licenses\n const licenses = drm.command(\"licenses\").description(\"Manage DRM licenses\");\n\n licenses\n .command(\"list\")\n .description(\"List DRM licenses\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.drm.licenses.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n licenses\n .command(\"create\")\n .description(\"Create a DRM license\")\n .requiredOption(\"--content-id <contentId>\", \"Content ID\")\n .requiredOption(\"--policy-id <policyId>\", \"Policy ID\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.drm.licenses.create({\n contentId: opts.contentId,\n policyId: opts.policyId,\n });\n console.log(chalk.green(`License created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n licenses\n .command(\"revoke <id>\")\n .description(\"Revoke a DRM license\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\"revoke\", `license ${id}`, program.opts());\n if (!confirmed) return;\n const client = await getClient(program.opts());\n await client.drm.licenses.revoke(id);\n console.log(chalk.green(`License ${id} revoked.`));\n }),\n );\n\n // Policies\n const policies = drm.command(\"policies\").description(\"Manage DRM policies\");\n\n policies\n .command(\"list\")\n .description(\"List DRM policies\")\n .option(\"--limit <n>\", \"Maximum results\", \"20\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const result = await client.drm.policies.list({\n limit: parseInt(opts.limit),\n });\n formatOutput(result.data, program.opts());\n }),\n );\n\n policies\n .command(\"create\")\n .description(\"Create a DRM policy\")\n .requiredOption(\"--name <name>\", \"Policy name\")\n .option(\"--rules <json>\", \"JSON rules for the policy\")\n .action(\n wrapCommand(async (opts) => {\n const client = await getClient(program.opts());\n const rules = opts.rules ? JSON.parse(opts.rules as string) : undefined;\n const result = await client.drm.policies.create({\n name: opts.name,\n rules,\n });\n console.log(chalk.green(`Policy created: ${result.id}`));\n formatOutput(result, program.opts());\n }),\n );\n\n policies\n .command(\"update <id>\")\n .description(\"Update a DRM policy\")\n .option(\"--name <name>\", \"New policy name\")\n .option(\"--rules <json>\", \"Updated JSON rules\")\n .action(\n wrapCommand(async (id: string, opts) => {\n const client = await getClient(program.opts());\n const updates: Record<string, unknown> = {};\n if (opts.name) updates.name = opts.name;\n if (opts.rules) updates.rules = JSON.parse(opts.rules as string);\n const result = await client.drm.policies.update(id, updates);\n console.log(chalk.green(`Policy ${id} updated.`));\n formatOutput(result, program.opts());\n }),\n );\n\n policies\n .command(\"delete <id>\")\n .description(\"Delete a DRM policy\")\n .action(\n wrapCommand(async (id: string) => {\n const confirmed = await confirmDestructive(\"delete\", `policy ${id}`, program.opts());\n if (!confirmed) return;\n const client = await getClient(program.opts());\n await client.drm.policies.delete(id);\n console.log(chalk.green(`Policy ${id} deleted.`));\n }),\n );\n\n // Keys\n const keys = drm.command(\"keys\").description(\"Manage encryption keys\");\n\n keys\n .command(\"rotate\")\n .description(\"Rotate encryption keys\")\n .option(\"--content-id <contentId>\", \"Rotate keys for specific content\")\n .action(\n wrapCommand(async (opts) => {\n const confirmed = await confirmDestructive(\n \"rotate encryption keys for\",\n opts.contentId ?? \"all content\",\n program.opts(),\n );\n if (!confirmed) return;\n const client = await getClient(program.opts());\n const result = await client.drm.keys.rotate({\n contentId: opts.contentId,\n });\n console.log(chalk.green(\"Key rotation initiated.\"));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { loadConfig } from \"../../lib/config/manager.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\n\nasync function billingFetch(\n path: string,\n opts?: { method?: string; body?: unknown },\n): Promise<unknown> {\n const config = await loadConfig();\n const project = config.projects[config.currentProject];\n const baseUrl = project?.baseUrl ?? process.env[\"WAVE_BASE_URL\"] ?? \"https://wave.online\";\n const apiKey = await getApiKey(config.currentProject);\n\n if (!apiKey) {\n throw new Error(`No API key found. Run ${chalk.bold(\"wave login\")} to authenticate.`);\n }\n\n const res = await fetch(`${baseUrl}${path}`, {\n method: opts?.method ?? \"GET\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n \"X-Wave-Source\": \"cli\",\n },\n body: opts?.body ? JSON.stringify(opts.body) : undefined,\n });\n\n if (!res.ok) {\n const error = (await res.json().catch(() => ({}))) as { message?: string };\n throw new Error(error.message ?? `Billing API error: ${res.status} ${res.statusText}`);\n }\n\n return res.json();\n}\n\nexport function registerBillingCommands(program: Command): void {\n const billing = program\n .command(\"billing\")\n .description(\"Billing, usage, and subscription management\");\n\n billing\n .command(\"status\")\n .description(\"Show current billing status and plan\")\n .action(\n wrapCommand(async () => {\n const result = await billingFetch(\"/api/billing/status\");\n formatOutput(result, program.opts());\n }),\n );\n\n billing\n .command(\"usage\")\n .description(\"Show current usage metrics\")\n .option(\"--period <period>\", \"Billing period (current, previous)\", \"current\")\n .action(\n wrapCommand(async (opts) => {\n const result = await billingFetch(`/api/billing/usage?period=${opts.period}`);\n formatOutput(result, program.opts());\n }),\n );\n\n billing\n .command(\"invoices\")\n .description(\"List billing invoices\")\n .option(\"--limit <n>\", \"Maximum results\", \"10\")\n .action(\n wrapCommand(async (opts) => {\n const result = await billingFetch(`/api/billing/invoices?limit=${opts.limit}`);\n formatOutput(result, program.opts());\n }),\n );\n\n billing\n .command(\"limits\")\n .description(\"Show current usage limits\")\n .action(\n wrapCommand(async () => {\n const result = await billingFetch(\"/api/billing/limits\");\n formatOutput(result, program.opts());\n }),\n );\n\n billing\n .command(\"portal\")\n .description(\"Open the billing portal in your browser\")\n .action(\n wrapCommand(async () => {\n const result = (await billingFetch(\"/api/billing/portal\", {\n method: \"POST\",\n })) as { url: string };\n const open = (await import(\"open\")).default;\n await open(result.url);\n console.log(chalk.green(\"Billing portal opened in your browser.\"));\n }),\n );\n\n billing\n .command(\"upgrade\")\n .description(\"View available upgrade options\")\n .action(\n wrapCommand(async () => {\n const result = await billingFetch(\"/api/billing/plans\");\n formatOutput(result, program.opts());\n console.log(chalk.gray(\"\\nTo upgrade, visit the billing portal: wave billing portal\"));\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { connectSSE, type SSEEvent } from \"../../lib/sse-client.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\nimport { loadConfig } from \"../../lib/config/manager.js\";\n\nexport function registerListenCommands(program: Command): void {\n program\n .command(\"listen\")\n .description(\"Listen for webhook events from WAVE\")\n .option(\"--forward-to <url>\", \"URL to forward events to\", \"http://localhost:3000/webhooks/wave\")\n .option(\"--events <pattern>\", \"Event pattern to listen for (e.g., stream.*)\")\n .action(\n wrapCommand(async (opts) => {\n const config = await loadConfig();\n const apiKey = await getApiKey(config.currentProject);\n if (!apiKey) {\n console.error(chalk.red(\"Not authenticated. Run `wave login` first.\"));\n process.exit(1);\n }\n\n const baseUrl = config.projects[config.currentProject]?.baseUrl ?? \"https://wave.online\";\n const params = new URLSearchParams();\n if (opts.events) params.set(\"events\", opts.events as string);\n const url = `${baseUrl}/api/webhooks/listen${params.toString() ? `?${params}` : \"\"}`;\n\n console.log(chalk.bold(\"WAVE Event Listener\\n\"));\n console.log(` Forward URL: ${chalk.cyan(opts.forwardTo)}`);\n if (opts.events) console.log(` Event filter: ${chalk.cyan(opts.events)}`);\n console.log(\"\");\n\n let eventCount = 0;\n const controller = await connectSSE(url, apiKey, {\n onConnect() {\n console.log(chalk.green(\" Connected to event stream.\"));\n console.log(chalk.gray(\" Waiting for events... (Ctrl+C to stop)\\n\"));\n },\n onEvent(event: SSEEvent) {\n if (event.event === \"connected\" || event.event === \"timeout\") return;\n if (event.event === \"webhook\") {\n eventCount++;\n const data = JSON.parse(event.data) as Record<string, unknown>;\n const timestamp = new Date().toISOString().slice(11, 23);\n const eventType = String(data.type ?? \"unknown\");\n console.log(`${chalk.gray(timestamp)} ${chalk.cyan(`[${eventType}]`)} ${chalk.white(JSON.stringify(data).slice(0, 120))}`);\n fetch(opts.forwardTo as string, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n }).catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(chalk.red(` Forward failed: ${msg}`));\n });\n }\n },\n onError(error: Error) { console.error(chalk.red(` Connection error: ${error.message}`)); },\n onClose() { console.log(chalk.gray(`\\n Disconnected. ${eventCount} events received.`)); },\n });\n\n await new Promise<void>((resolve) => {\n controller.signal.addEventListener(\"abort\", () => resolve());\n });\n }),\n );\n}\n","/**\n * SSE Client for WAVE CLI\n *\n * Connects to Server-Sent Events endpoints for real-time streaming.\n * Handles auto-reconnect with exponential backoff, clean shutdown,\n * and SSE protocol parsing (data, event, id, retry lines).\n */\n\nexport interface SSEEvent {\n id?: string;\n event?: string;\n data: string;\n retry?: number;\n}\n\nexport interface SSEClientOptions {\n onEvent: (event: SSEEvent) => void;\n onError?: (error: Error) => void;\n onClose?: () => void;\n onConnect?: () => void;\n /** Maximum reconnect attempts before giving up (default: 10) */\n maxReconnectAttempts?: number;\n /** Initial reconnect delay in ms (default: 1000) */\n initialReconnectDelay?: number;\n /** Maximum reconnect delay in ms (default: 30000) */\n maxReconnectDelay?: number;\n}\n\n/**\n * Connects to an SSE endpoint and streams events.\n *\n * @param url - The SSE endpoint URL\n * @param apiKey - Bearer token for authentication\n * @param options - Event handlers and configuration\n * @returns AbortController to disconnect the stream\n */\nexport async function connectSSE(\n url: string,\n apiKey: string,\n options: SSEClientOptions,\n): Promise<AbortController> {\n const controller = new AbortController();\n const maxAttempts = options.maxReconnectAttempts ?? 10;\n const initialDelay = options.initialReconnectDelay ?? 1000;\n const maxDelay = options.maxReconnectDelay ?? 30000;\n let reconnectAttempts = 0;\n let lastEventId: string | undefined;\n\n // Handle process signals for clean shutdown\n const cleanup = () => {\n controller.abort();\n };\n process.on(\"SIGINT\", cleanup);\n process.on(\"SIGTERM\", cleanup);\n\n async function connect(): Promise<void> {\n if (controller.signal.aborted) return;\n\n try {\n const headers: Record<string, string> = {\n Accept: \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Authorization: `Bearer ${apiKey}`,\n };\n\n if (lastEventId) {\n headers[\"Last-Event-ID\"] = lastEventId;\n }\n\n const response = await fetch(url, {\n headers,\n signal: controller.signal,\n });\n\n if (!response.ok) {\n throw new Error(`SSE connection failed: ${response.status} ${response.statusText}`);\n }\n\n if (!response.body) {\n throw new Error(\"SSE response has no body\");\n }\n\n // Reset reconnect attempts on successful connection\n reconnectAttempts = 0;\n options.onConnect?.();\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n // Current event being assembled\n let currentEvent: Partial<SSEEvent> = {};\n\n while (!controller.signal.aborted) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n // Process complete lines\n const lines = buffer.split(\"\\n\");\n // Keep the last incomplete line in the buffer\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (line === \"\") {\n // Empty line = end of event, dispatch it\n if (currentEvent.data !== undefined) {\n const event: SSEEvent = {\n id: currentEvent.id,\n event: currentEvent.event,\n data: currentEvent.data,\n retry: currentEvent.retry,\n };\n\n if (event.id) {\n lastEventId = event.id;\n }\n\n options.onEvent(event);\n }\n currentEvent = {};\n } else if (line.startsWith(\":\")) {\n // Comment line - ignore (heartbeat)\n } else if (line.startsWith(\"data:\")) {\n const value = line.slice(5).trimStart();\n currentEvent.data =\n currentEvent.data !== undefined ? `${currentEvent.data}\\n${value}` : value;\n } else if (line.startsWith(\"event:\")) {\n currentEvent.event = line.slice(6).trimStart();\n } else if (line.startsWith(\"id:\")) {\n currentEvent.id = line.slice(3).trimStart();\n } else if (line.startsWith(\"retry:\")) {\n const retry = parseInt(line.slice(6).trimStart(), 10);\n if (!isNaN(retry)) {\n currentEvent.retry = retry;\n }\n }\n }\n }\n } catch (error: unknown) {\n if (controller.signal.aborted) {\n // Intentional disconnect\n options.onClose?.();\n return;\n }\n\n const err = error instanceof Error ? error : new Error(String(error));\n options.onError?.(err);\n\n // Attempt reconnection with exponential backoff\n if (reconnectAttempts < maxAttempts) {\n reconnectAttempts++;\n const delay = Math.min(initialDelay * Math.pow(2, reconnectAttempts - 1), maxDelay);\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n if (!controller.signal.aborted) {\n return connect();\n }\n } else {\n options.onError?.(new Error(`Max reconnect attempts (${maxAttempts}) exceeded`));\n options.onClose?.();\n }\n }\n }\n\n // Start connection (non-blocking)\n connect().catch((error: unknown) => {\n const err = error instanceof Error ? error : new Error(String(error));\n options.onError?.(err);\n });\n\n // Clean up signal handlers when abort is called\n controller.signal.addEventListener(\"abort\", () => {\n process.removeListener(\"SIGINT\", cleanup);\n process.removeListener(\"SIGTERM\", cleanup);\n });\n\n return controller;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { connectSSE, type SSEEvent } from \"../../lib/sse-client.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\nimport { loadConfig } from \"../../lib/config/manager.js\";\n\nconst LEVEL_COLORS: Record<string, (text: string) => string> = {\n debug: chalk.gray,\n info: chalk.white,\n warn: chalk.yellow,\n error: chalk.red,\n};\n\nexport function registerLogsCommands(program: Command): void {\n const logs = program.command(\"logs\").description(\"Stream application logs\");\n\n logs\n .command(\"tail\")\n .description(\"Tail logs in real-time\")\n .option(\"--stream <id>\", \"Filter by stream ID\")\n .option(\"--level <level>\", \"Minimum log level (debug, info, warn, error)\", \"info\")\n .option(\"--since <duration>\", \"Show logs since duration (e.g., 5m, 1h)\", \"5m\")\n .action(\n wrapCommand(async (opts) => {\n const config = await loadConfig();\n const apiKey = await getApiKey(config.currentProject);\n\n if (!apiKey) {\n console.error(\n chalk.red(\"Not authenticated. Run `wave login` first.\"),\n );\n process.exit(1);\n }\n\n const baseUrl =\n config.projects[config.currentProject]?.baseUrl ?? \"https://wave.online\";\n const params = new URLSearchParams();\n params.set(\"level\", opts.level as string);\n if (opts.stream) params.set(\"stream\", opts.stream as string);\n if (opts.since) params.set(\"since\", opts.since as string);\n const url = `${baseUrl}/api/logs/stream?${params}`;\n\n console.log(chalk.bold(\"WAVE Log Tail\\n\"));\n console.log(` Level: ${chalk.cyan(opts.level)}`);\n console.log(` Since: ${chalk.cyan(opts.since)}`);\n if (opts.stream) {\n console.log(` Stream: ${chalk.cyan(opts.stream)}`);\n }\n console.log(\"\");\n\n let logCount = 0;\n\n const controller = await connectSSE(url, apiKey, {\n onConnect() {\n console.log(chalk.green(\" Connected to log stream.\"));\n console.log(chalk.gray(\" Tailing logs... (Ctrl+C to stop)\\n\"));\n },\n onEvent(event: SSEEvent) {\n if (event.event === \"connected\" || event.event === \"timeout\") {\n return;\n }\n\n if (event.event === \"log\") {\n logCount++;\n const data = JSON.parse(event.data) as Record<string, unknown>;\n const level = String(data.level ?? \"info\");\n const timestamp = new Date().toISOString().slice(11, 23);\n const message = String(data.message ?? \"\");\n const colorFn = LEVEL_COLORS[level] ?? chalk.white;\n\n console.log(\n `${chalk.gray(timestamp)} ${colorFn(level.toUpperCase().padEnd(5))} ${message}`,\n );\n }\n },\n onError(error: Error) {\n console.error(chalk.red(` Connection error: ${error.message}`));\n },\n onClose() {\n console.log(chalk.gray(`\\n Disconnected. ${logCount} log entries received.`));\n },\n });\n\n await new Promise<void>((resolve) => {\n controller.signal.addEventListener(\"abort\", () => resolve());\n });\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { loadConfig } from \"../../lib/config/manager.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\n\nexport function registerTriggerCommands(program: Command): void {\n program\n .command(\"trigger <event>\")\n .description(\"Trigger a WAVE event manually\")\n .option(\"--override <pairs...>\", \"Override event data (key=value pairs)\")\n .option(\"--list\", \"List available trigger events\")\n .action(\n wrapCommand(async (event: string, opts) => {\n const config = await loadConfig();\n const project = config.projects[config.currentProject];\n const baseUrl = project?.baseUrl ?? process.env[\"WAVE_BASE_URL\"] ?? \"https://wave.online\";\n const apiKey = await getApiKey(config.currentProject);\n\n if (!apiKey) {\n throw new Error(`No API key found. Run ${chalk.bold(\"wave login\")} to authenticate.`);\n }\n\n if (opts.list) {\n const res = await fetch(`${baseUrl}/api/cli/trigger`, {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"X-Wave-Source\": \"cli\",\n },\n });\n if (!res.ok) throw new Error(`Failed to list events: ${res.statusText}`);\n const events = await res.json();\n formatOutput(events, program.opts());\n return;\n }\n\n // Parse overrides\n const overrides: Record<string, string> = {};\n if (opts.override) {\n for (const pair of opts.override as string[]) {\n const [key, ...valueParts] = pair.split(\"=\");\n if (key && valueParts.length > 0) {\n overrides[key] = valueParts.join(\"=\");\n }\n }\n }\n\n const res = await fetch(`${baseUrl}/api/cli/trigger`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n \"X-Wave-Source\": \"cli\",\n },\n body: JSON.stringify({ event, data: overrides }),\n });\n\n if (!res.ok) {\n const error = (await res.json().catch(() => ({}))) as {\n message?: string;\n };\n throw new Error(error.message ?? `Failed to trigger event: ${res.statusText}`);\n }\n\n const result = await res.json();\n console.log(chalk.green(`Event \"${event}\" triggered.`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { readFile } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { connectSSE, type SSEEvent } from \"../../lib/sse-client.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\nimport { loadConfig } from \"../../lib/config/manager.js\";\n\nconst LEVEL_COLORS: Record<string, (text: string) => string> = {\n debug: chalk.gray,\n info: chalk.white,\n warn: chalk.yellow,\n error: chalk.red,\n};\n\ninterface ProjectLinkConfig {\n projectId: string;\n organizationId: string;\n projectName: string;\n}\n\n/**\n * Attempts to load `.wave/project.json` from the current directory.\n * Returns null if not found or invalid.\n */\nasync function loadProjectConfig(): Promise<ProjectLinkConfig | null> {\n const projectJsonPath = join(resolve(process.cwd()), \".wave\", \"project.json\");\n if (!existsSync(projectJsonPath)) {\n return null;\n }\n try {\n const raw = await readFile(projectJsonPath, \"utf-8\");\n const parsed = JSON.parse(raw) as Record<string, unknown>;\n if (\n typeof parsed.projectId === \"string\" &&\n typeof parsed.organizationId === \"string\" &&\n typeof parsed.projectName === \"string\"\n ) {\n return parsed as unknown as ProjectLinkConfig;\n }\n return null;\n } catch {\n return null;\n }\n}\n\n/**\n * Detects the local dev server port by inspecting the nearest package.json.\n * Looks for common port patterns in \"dev\" or \"start\" scripts.\n * Falls back to 3000 if no port is detected.\n */\nasync function detectLocalPort(): Promise<number> {\n const pkgPath = join(resolve(process.cwd()), \"package.json\");\n if (!existsSync(pkgPath)) {\n return 3000;\n }\n try {\n const raw = await readFile(pkgPath, \"utf-8\");\n const pkg = JSON.parse(raw) as Record<string, unknown>;\n const scripts = pkg.scripts as Record<string, string> | undefined;\n if (!scripts) return 3000;\n\n // Check dev and start scripts for port patterns\n const devScript = scripts.dev ?? scripts.start ?? \"\";\n // Match --port 3001, -p 4000, PORT=8080, :3001, etc.\n const portMatch = devScript.match(\n /(?:--port\\s+|(?:^|\\s)-p\\s+|PORT=|:)(\\d{4,5})/,\n );\n if (portMatch) {\n const port = parseInt(portMatch[1], 10);\n if (port > 0 && port < 65536) return port;\n }\n return 3000;\n } catch {\n return 3000;\n }\n}\n\nexport function registerDevCommands(program: Command): void {\n program\n .command(\"dev\")\n .description(\n \"Start unified development proxy (webhook forwarding + log streaming)\",\n )\n .option(\n \"--forward-to <url>\",\n \"URL to forward webhook events to (overrides auto-detected port)\",\n )\n .option(\"--port <number>\", \"Local server port (overrides auto-detection)\")\n .option(\n \"--log-level <level>\",\n \"Minimum log level (debug, info, warn, error)\",\n \"info\",\n )\n .option(\"--events <pattern>\", \"Event pattern to filter (e.g., stream.*)\")\n .action(\n wrapCommand(async (opts) => {\n const config = await loadConfig();\n const apiKey = await getApiKey(config.currentProject);\n if (!apiKey) {\n console.error(\n chalk.red(\"Not authenticated. Run `wave login` first.\"),\n );\n process.exit(1);\n }\n\n const baseUrl =\n config.projects[config.currentProject]?.baseUrl ??\n \"https://wave.online\";\n\n // Load project config from .wave/project.json if available\n const projectConfig = await loadProjectConfig();\n\n // Determine local port: explicit --port > --forward-to > auto-detect\n let forwardUrl: string;\n if (opts.forwardTo) {\n forwardUrl = opts.forwardTo as string;\n } else {\n const port = opts.port\n ? parseInt(opts.port as string, 10)\n : await detectLocalPort();\n forwardUrl = `http://localhost:${port}/webhooks/wave`;\n }\n\n // Display startup banner\n console.log(chalk.bold(\"WAVE Development Mode\\n\"));\n\n if (projectConfig) {\n console.log(\n ` Project: ${chalk.cyan(projectConfig.projectName)} ${chalk.dim(`(${projectConfig.projectId})`)}`,\n );\n } else {\n console.log(\n chalk.dim(\n \" No .wave/project.json found. Run `wave link` to connect a project.\",\n ),\n );\n }\n\n console.log(\n ` Webhook forwarding: ${chalk.cyan(forwardUrl)}`,\n );\n console.log(\n ` Log level: ${chalk.cyan(opts.logLevel)}`,\n );\n if (opts.events) {\n console.log(\n ` Event filter: ${chalk.cyan(opts.events)}`,\n );\n }\n console.log(\"\");\n console.log(chalk.dim(\" Starting development proxy...\\n\"));\n\n let webhookCount = 0;\n let logCount = 0;\n let errorCount = 0;\n\n // Build webhook SSE URL with optional event filter\n const webhookParams = new URLSearchParams();\n if (opts.events) webhookParams.set(\"events\", opts.events as string);\n const webhookUrl = `${baseUrl}/api/webhooks/listen${webhookParams.toString() ? `?${webhookParams}` : \"\"}`;\n\n const webhookController = await connectSSE(webhookUrl, apiKey, {\n onConnect() {\n console.log(\n chalk.green(\" [webhook] Connected to event stream\"),\n );\n },\n onEvent(event: SSEEvent) {\n if (event.event === \"connected\" || event.event === \"timeout\")\n return;\n if (event.event === \"webhook\") {\n webhookCount++;\n const data = JSON.parse(event.data) as Record<string, unknown>;\n const timestamp = new Date().toISOString().slice(11, 23);\n const eventType = String(data.type ?? \"unknown\");\n console.log(\n `${chalk.gray(timestamp)} ${chalk.magenta(\"[webhook]\")} ${chalk.cyan(eventType)} ${chalk.white(JSON.stringify(data).slice(0, 100))}`,\n );\n fetch(forwardUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n }).catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(\n `${chalk.gray(new Date().toISOString().slice(11, 23))} ${chalk.red(\"[error]\")} Forward failed: ${msg}`,\n );\n errorCount++;\n });\n }\n },\n onError(error: Error) {\n console.error(\n chalk.red(` [webhook] Error: ${error.message}`),\n );\n errorCount++;\n },\n });\n\n // Build log SSE URL with level filter\n const logParams = new URLSearchParams();\n logParams.set(\"level\", opts.logLevel as string);\n const logUrl = `${baseUrl}/api/logs/stream?${logParams}`;\n\n const logController = await connectSSE(logUrl, apiKey, {\n onConnect() {\n console.log(\n chalk.green(\" [log] Connected to log stream\"),\n );\n console.log(chalk.gray(\"\\n Ready. Ctrl+C to stop.\\n\"));\n },\n onEvent(event: SSEEvent) {\n if (event.event === \"connected\" || event.event === \"timeout\")\n return;\n if (event.event === \"log\") {\n logCount++;\n const data = JSON.parse(event.data) as Record<string, unknown>;\n const level = String(data.level ?? \"info\");\n const timestamp = new Date().toISOString().slice(11, 23);\n const message = String(data.message ?? \"\");\n const colorFn = LEVEL_COLORS[level] ?? chalk.white;\n console.log(\n `${chalk.gray(timestamp)} ${chalk.blue(\"[log]\")} ${colorFn(level.toUpperCase().padEnd(5))} ${message}`,\n );\n }\n },\n onError(error: Error) {\n console.error(\n chalk.red(` [log] Error: ${error.message}`),\n );\n errorCount++;\n },\n });\n\n // Wait for shutdown signal\n await new Promise<void>((resolve) => {\n const done = () => {\n webhookController.abort();\n logController.abort();\n resolve();\n };\n process.on(\"SIGINT\", done);\n process.on(\"SIGTERM\", done);\n });\n\n console.log(\n chalk.gray(\n `\\n Session ended. ${webhookCount} webhook events, ${logCount} log entries, ${errorCount} errors.`,\n ),\n );\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\nconst PAGE_MAP: Record<string, string> = {\n dashboard: \"https://wave.online/dashboard\",\n streams: \"https://wave.online/dashboard/streams\",\n studio: \"https://wave.online/dashboard/production\",\n settings: \"https://wave.online/dashboard/settings\",\n billing: \"https://wave.online/dashboard/settings/billing\",\n api: \"https://wave.online/dashboard/settings/api-keys\",\n docs: \"https://docs.wave.online\",\n status: \"https://status.wave.online\",\n marketplace: \"https://wave.online/marketplace\",\n fleet: \"https://wave.online/dashboard/fleet\",\n analytics: \"https://wave.online/dashboard/analytics\",\n recordings: \"https://wave.online/dashboard/recordings\",\n integrations: \"https://wave.online/dashboard/integrations\",\n};\n\nexport function registerOpenCommands(program: Command): void {\n program\n .command(\"open [page]\")\n .description(\"Open WAVE pages in your browser\")\n .action(\n wrapCommand(async (page?: string) => {\n if (!page) {\n console.log(chalk.bold(\"Available pages:\\n\"));\n for (const [name, url] of Object.entries(PAGE_MAP)) {\n console.log(` ${chalk.cyan(name.padEnd(16))} ${chalk.gray(url)}`);\n }\n console.log(chalk.gray(`\\nUsage: wave open <page>`));\n return;\n }\n\n const url = PAGE_MAP[page.toLowerCase()];\n if (!url) {\n console.error(\n chalk.red(\n `Unknown page \"${page}\". Run ${chalk.bold(\"wave open\")} to see available pages.`,\n ),\n );\n process.exit(1);\n }\n\n const open = (await import(\"open\")).default;\n await open(url);\n console.log(chalk.green(`Opened ${url}`));\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { writeFile, mkdir, readFile, readdir, copyFile } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport { join, dirname, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { spawnSync } from \"node:child_process\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { promptSelect, promptInput, promptConfirm } from \"../../lib/prompts.js\";\nimport { withSpinner } from \"../../lib/output/spinner.js\";\n\n/**\n * Template definition mapping user-facing names to filesystem template directories.\n */\ninterface TemplateDefinition {\n /** Display name shown in the interactive picker */\n name: string;\n /** Short description shown alongside the name */\n description: string;\n /** Directory name under packages/cli/templates/ */\n dirName: string;\n}\n\nconst TEMPLATES: TemplateDefinition[] = [\n {\n name: \"WebRTC Quickstart\",\n description: \"Browser-based live streaming with WebRTC\",\n dirName: \"webrtc-demo\",\n },\n {\n name: \"SRT Ingest\",\n description: \"Low-latency SRT ingest for professional streaming\",\n dirName: \"srt-contribution\",\n },\n {\n name: \"Webhook Handler\",\n description: \"Express server handling WAVE webhooks\",\n dirName: \"webhook-handler\",\n },\n {\n name: \"API Integration\",\n description: \"Node.js API integration boilerplate\",\n dirName: \"api-integration\",\n },\n {\n name: \"Studio Plugin\",\n description: \"Studio plugin for custom production features\",\n dirName: \"studio-plugin\",\n },\n];\n\n/**\n * Resolves the absolute path to the templates directory.\n * Works both in development (src/) and built (dist/) environments.\n */\nfunction getTemplatesDir(): string {\n const thisFile = fileURLToPath(import.meta.url);\n // Walk up from src/commands/init/ or dist/commands/init/ to package root\n const packageRoot = resolve(dirname(thisFile), \"..\", \"..\", \"..\");\n return join(packageRoot, \"templates\");\n}\n\n/**\n * Recursively copies a directory tree from src to dest.\n * Creates destination directories as needed.\n */\nasync function copyDir(src: string, dest: string): Promise<void> {\n await mkdir(dest, { recursive: true });\n const entries = await readdir(src, { withFileTypes: true });\n for (const entry of entries) {\n const srcPath = join(src, entry.name);\n const destPath = join(dest, entry.name);\n if (entry.isDirectory()) {\n await copyDir(srcPath, destPath);\n } else {\n await copyFile(srcPath, destPath);\n }\n }\n}\n\n/**\n * Rewrites the \"name\" field in a template's package.json to match the project name.\n */\nasync function rewritePackageName(projectDir: string, projectName: string): Promise<void> {\n const pkgPath = join(projectDir, \"package.json\");\n if (!existsSync(pkgPath)) return;\n\n const raw = await readFile(pkgPath, \"utf-8\");\n const pkg = JSON.parse(raw) as Record<string, unknown>;\n pkg[\"name\"] = projectName;\n await writeFile(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\", \"utf-8\");\n}\n\nexport function registerInitCommands(program: Command): void {\n program\n .command(\"init [name]\")\n .description(\"Initialize a new WAVE project\")\n .option(\"--template <template>\", \"Project template to use (skips interactive picker)\")\n .option(\"--no-install\", \"Skip dependency installation\")\n .action(\n wrapCommand(async (name: string | undefined, opts: { template?: string; install: boolean }) => {\n // 1. Template selection: use --template flag or interactive picker\n let selectedTemplate: TemplateDefinition;\n\n if (opts.template) {\n const match = TEMPLATES.find(\n (t) =>\n t.dirName === opts.template ||\n t.name.toLowerCase().replace(/\\s+/g, \"-\") === opts.template,\n );\n if (!match) {\n const valid = TEMPLATES.map((t) => t.dirName).join(\", \");\n throw new Error(\n `Unknown template \"${opts.template}\". Available templates: ${valid}`,\n );\n }\n selectedTemplate = match;\n } else {\n const choices = TEMPLATES.map((t) => ({\n name: `${t.name} - ${t.description}`,\n value: t,\n }));\n selectedTemplate = await promptSelect<TemplateDefinition>(\n \"Choose a template:\",\n choices,\n );\n }\n\n // 2. Project name: use argument or interactive prompt\n const projectName = name ?? (await promptInput(\"Project name:\", \"my-wave-project\"));\n const dir = join(process.cwd(), projectName);\n\n if (existsSync(dir)) {\n throw new Error(\n `Directory \"${projectName}\" already exists. Choose a different name or remove the directory.`,\n );\n }\n\n console.log(\n chalk.bold(\n `\\nCreating \"${projectName}\" with ${selectedTemplate.name} template...\\n`,\n ),\n );\n\n // 3. Scaffold the project from template files\n const templatesDir = getTemplatesDir();\n const templateDir = join(templatesDir, selectedTemplate.dirName);\n\n // Validate template directory exists and is within templates root\n const resolvedTemplateDir = resolve(templateDir);\n const resolvedTemplatesRoot = resolve(templatesDir);\n if (!resolvedTemplateDir.startsWith(resolvedTemplatesRoot)) {\n throw new Error(\"Invalid template path\");\n }\n\n const templateExists = existsSync(resolvedTemplateDir);\n\n await withSpinner(`Creating ${projectName}/`, async () => {\n if (templateExists) {\n // Copy template files into the new project directory\n await copyDir(resolvedTemplateDir, dir);\n } else {\n // Fallback: create minimal scaffold if template dir missing\n await mkdir(join(dir, \"src\"), { recursive: true });\n }\n\n // Rewrite package.json name to match project name\n await rewritePackageName(dir, projectName);\n\n // Generate wave.config.ts\n const configContent = `import { defineConfig } from \"@wave-av/sdk\";\n\nexport default defineConfig({\n project: \"${projectName}\",\n template: \"${selectedTemplate.dirName}\",\n streaming: {\n protocol: \"webrtc\",\n fallback: [\"srt\", \"rtmp\"],\n },\n});\n`;\n await writeFile(join(dir, \"wave.config.ts\"), configContent, \"utf-8\");\n\n // Generate .gitignore (append if template already has one)\n const gitignorePath = join(dir, \".gitignore\");\n const gitignoreContent = `.env.local\n.wave/\nnode_modules/\ndist/\n`;\n await writeFile(gitignorePath, gitignoreContent, \"utf-8\");\n\n // Generate README.md\n const readmeContent = `# ${projectName}\n\nCreated with [WAVE CLI](https://docs.wave.online/cli) using the **${selectedTemplate.name}** template.\n\n## Getting Started\n\n\\`\\`\\`bash\n# Set your API key\ncp .env.example .env.local\n# Edit .env.local with your WAVE API key from https://wave.online/dashboard/settings/api-keys\n\n# Install dependencies\nnpm install\n\n# Run the project\nnpm run dev\n\\`\\`\\`\n\n## Learn More\n\n- [WAVE Documentation](https://docs.wave.online)\n- [API Reference](https://docs.wave.online/api)\n- [SDK Reference](https://docs.wave.online/sdk)\n`;\n await writeFile(join(dir, \"README.md\"), readmeContent, \"utf-8\");\n });\n\n console.log(chalk.green(` Created ${projectName}/`));\n\n // 4. Optionally install dependencies\n if (opts.install) {\n const shouldInstall = await promptConfirm(\"Install dependencies?\", true);\n if (shouldInstall) {\n await withSpinner(\"Installing dependencies\", async () => {\n const result = spawnSync(\"npm\", [\"install\"], {\n cwd: dir,\n stdio: \"pipe\",\n shell: false,\n });\n if (result.status !== 0) {\n const stderr = result.stderr?.toString() ?? \"\";\n throw new Error(`npm install failed: ${stderr}`);\n }\n });\n console.log(chalk.green(\" Installed dependencies\"));\n }\n }\n\n // 5. Success output\n console.log(chalk.green(\"\\n Ready!\"));\n console.log(`\\nNext steps:`);\n console.log(` cd ${projectName}`);\n if (!opts.install) {\n console.log(` npm install`);\n }\n console.log(` wave login`);\n console.log(` npm run dev\\n`);\n }),\n );\n}\n","/**\n * Interactive Prompts\n *\n * Wrapper around inquirer for common prompt patterns.\n * Handles non-interactive (CI) environments by falling back\n * to default values or throwing descriptive errors.\n */\n\nimport inquirer from \"inquirer\";\n\n/**\n * Detects whether the current environment is non-interactive (e.g. CI, piped stdin).\n */\nfunction isNonInteractive(): boolean {\n return (\n Boolean(process.env[\"CI\"]) ||\n Boolean(process.env[\"WAVE_NON_INTERACTIVE\"]) ||\n !process.stdin.isTTY\n );\n}\n\n/**\n * Prompt the user to select from a list of choices.\n *\n * In non-interactive environments, returns the first choice's value.\n */\nexport async function promptSelect<T>(\n message: string,\n choices: Array<{ name: string; value: T }>,\n): Promise<T> {\n if (isNonInteractive()) {\n const first = choices[0];\n if (!first) {\n throw new Error(\n `Cannot prompt in non-interactive mode and no choices provided for: ${message}`,\n );\n }\n return first.value;\n }\n\n const { selection } = await inquirer.prompt<{ selection: T }>([\n {\n type: \"list\",\n name: \"selection\",\n message,\n choices,\n },\n ]);\n\n return selection;\n}\n\n/**\n * Prompt the user for a text input.\n *\n * In non-interactive environments, returns the default value or throws.\n */\nexport async function promptInput(message: string, defaultValue?: string): Promise<string> {\n if (isNonInteractive()) {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n throw new Error(\n `Cannot prompt in non-interactive mode and no default provided for: ${message}`,\n );\n }\n\n const { value } = await inquirer.prompt<{ value: string }>([\n {\n type: \"input\",\n name: \"value\",\n message,\n default: defaultValue,\n },\n ]);\n\n return value;\n}\n\n/**\n * Prompt the user for a password (input is masked).\n *\n * In non-interactive environments, always throws since passwords\n * should not have defaults.\n */\nexport async function promptPassword(message: string): Promise<string> {\n if (isNonInteractive()) {\n throw new Error(`Cannot prompt for password in non-interactive mode: ${message}`);\n }\n\n const { password } = await inquirer.prompt<{ password: string }>([\n {\n type: \"password\",\n name: \"password\",\n message,\n mask: \"*\",\n },\n ]);\n\n return password;\n}\n\n/**\n * Prompt the user with a yes/no confirmation.\n *\n * In non-interactive environments, returns the default value (or false).\n */\nexport async function promptConfirm(message: string, defaultValue?: boolean): Promise<boolean> {\n if (isNonInteractive()) {\n return defaultValue ?? false;\n }\n\n const { confirmed } = await inquirer.prompt<{ confirmed: boolean }>([\n {\n type: \"confirm\",\n name: \"confirmed\",\n message,\n default: defaultValue ?? false,\n },\n ]);\n\n return confirmed;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { loadConfig } from \"../../lib/config/manager.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\n\nasync function adminFetch(\n path: string,\n opts?: { method?: string; body?: unknown },\n): Promise<unknown> {\n const config = await loadConfig();\n const project = config.projects[config.currentProject];\n const baseUrl = project?.baseUrl ?? process.env[\"WAVE_BASE_URL\"] ?? \"https://wave.online\";\n const apiKey = await getApiKey(config.currentProject);\n\n if (!apiKey) {\n throw new Error(`No API key found. Run ${chalk.bold(\"wave login\")} to authenticate.`);\n }\n\n const res = await fetch(`${baseUrl}${path}`, {\n method: opts?.method ?? \"GET\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n \"X-Wave-Source\": \"cli\",\n },\n body: opts?.body ? JSON.stringify(opts.body) : undefined,\n });\n\n if (!res.ok) {\n const error = (await res.json().catch(() => ({}))) as { message?: string };\n throw new Error(error.message ?? `Admin API error: ${res.status} ${res.statusText}`);\n }\n\n return res.json();\n}\n\nexport function registerAdminCommands(program: Command): void {\n const admin = program\n .command(\"admin\")\n .description(\"Administrative commands (requires admin role)\");\n\n const jobs = admin.command(\"jobs\").description(\"Manage background jobs\");\n\n jobs\n .command(\"list\")\n .description(\"List background job functions\")\n .option(\"--status <status>\", \"Filter by status (active, paused, failed)\")\n .action(\n wrapCommand(async (opts) => {\n const params = new URLSearchParams();\n if (opts.status) params.set(\"status\", opts.status);\n const query = params.toString();\n const result = await adminFetch(`/api/admin/jobs${query ? `?${query}` : \"\"}`);\n formatOutput(result, program.opts());\n }),\n );\n\n jobs\n .command(\"trigger <functionId>\")\n .description(\"Manually trigger a background job function\")\n .option(\"--data <json>\", \"JSON data payload for the job\")\n .action(\n wrapCommand(async (functionId: string, opts) => {\n const data = opts.data ? JSON.parse(opts.data as string) : undefined;\n const result = await adminFetch(`/api/admin/jobs/${functionId}/trigger`, {\n method: \"POST\",\n body: data ? { data } : undefined,\n });\n console.log(chalk.green(`Job \"${functionId}\" triggered.`));\n formatOutput(result, program.opts());\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { loadConfig } from \"../../lib/config/manager.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { detectEnvironment } from \"../../lib/environment.js\";\n\ninterface CheckResult {\n name: string;\n status: \"pass\" | \"warn\" | \"fail\";\n message: string;\n fix?: string;\n}\n\nexport function registerDoctorCommands(program: Command): void {\n program\n .command(\"doctor\")\n .description(\"Check your WAVE CLI setup and diagnose issues\")\n .action(\n wrapCommand(async () => {\n const checks: CheckResult[] = [];\n\n // 1. Node.js version\n const nodeVersion = process.version;\n const major = parseInt(nodeVersion.slice(1).split(\".\")[0] ?? \"0\");\n checks.push({\n name: \"Node.js\",\n status: major >= 18 ? \"pass\" : \"fail\",\n message: `${nodeVersion} ${major >= 18 ? \"(supported)\" : \"(requires >=18)\"}`,\n fix: major < 18 ? \"Install Node.js 18+: https://nodejs.org\" : undefined,\n });\n\n // 2. Config file\n try {\n const config = await loadConfig();\n checks.push({\n name: \"Config\",\n status: \"pass\",\n message: `Loaded (project: ${config.currentProject})`,\n });\n } catch {\n checks.push({\n name: \"Config\",\n status: \"warn\",\n message: \"Could not load config (using defaults)\",\n fix: \"wave config list\",\n });\n }\n\n // 3. Authentication\n const config = await loadConfig();\n const apiKey = await getApiKey(config.currentProject);\n const envKey = process.env[\"WAVE_API_KEY\"];\n if (envKey) {\n checks.push({\n name: \"Auth\",\n status: \"pass\",\n message: `WAVE_API_KEY env var set (${envKey.slice(0, 12)}...)`,\n });\n } else if (apiKey) {\n checks.push({\n name: \"Auth\",\n status: \"pass\",\n message: `API key stored for \"${config.currentProject}\" (${apiKey.slice(0, 12)}...)`,\n });\n } else {\n checks.push({\n name: \"Auth\",\n status: \"fail\",\n message: \"No API key found\",\n fix: \"wave login\",\n });\n }\n\n // 4. Project configuration\n const projectCount = Object.keys(config.projects).length;\n checks.push({\n name: \"Projects\",\n status: projectCount > 0 ? \"pass\" : \"warn\",\n message:\n projectCount > 0\n ? `${projectCount} project(s) configured`\n : \"No projects configured\",\n fix: projectCount === 0 ? \"wave login --project-name production\" : undefined,\n });\n\n // 5. Environment detection\n const env = detectEnvironment();\n checks.push({\n name: \"Environment\",\n status: \"pass\",\n message: [\n env.isCI ? \"CI\" : env.isAgent ? `Agent (${env.agentName ?? \"unknown\"})` : \"Interactive\",\n env.supportsColor ? \"color\" : \"no-color\",\n env.preferJson ? \"json-mode\" : \"table-mode\",\n ].join(\", \"),\n });\n\n // 6. Telemetry\n checks.push({\n name: \"Telemetry\",\n status: \"pass\",\n message: config.telemetry.enabled ? \"Enabled (anonymous)\" : \"Disabled\",\n });\n\n // Output\n const opts = program.opts();\n if (opts.output === \"json\") {\n formatOutput(\n checks.map((c) => ({ ...c })),\n opts,\n );\n } else {\n console.log(chalk.bold(\"\\n WAVE CLI Doctor\\n\"));\n for (const check of checks) {\n const icon =\n check.status === \"pass\"\n ? chalk.green(\"✓\")\n : check.status === \"warn\"\n ? chalk.yellow(\"!\")\n : chalk.red(\"✗\");\n console.log(` ${icon} ${chalk.bold(check.name)}: ${check.message}`);\n if (check.fix) {\n console.log(` ${chalk.dim(\"Fix:\")} ${chalk.cyan(check.fix)}`);\n }\n }\n\n const failures = checks.filter((c) => c.status === \"fail\");\n const warnings = checks.filter((c) => c.status === \"warn\");\n console.log(\"\");\n if (failures.length === 0 && warnings.length === 0) {\n console.log(chalk.green(\" All checks passed! You're ready to go.\"));\n } else if (failures.length > 0) {\n console.log(\n chalk.red(` ${failures.length} issue(s) need attention.`),\n );\n }\n console.log(\"\");\n }\n }),\n );\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\nimport { loadConfig } from \"../../lib/config/manager.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\n\nexport function registerStatusCommands(program: Command): void {\n program\n .command(\"status\")\n .description(\"Show WAVE CLI status (auth, API health, current project)\")\n .action(\n wrapCommand(async () => {\n const config = await loadConfig();\n const project = config.currentProject || \"default\";\n const apiKey = await getApiKey(project);\n const baseUrl = config.projects[project]?.baseUrl ?? \"https://wave.online\";\n\n // Check auth status\n const authenticated = !!apiKey;\n\n // Check API health\n let apiHealthy = false;\n let apiLatencyMs: number | null = null;\n try {\n const start = Date.now();\n const res = await fetch(`${baseUrl}/api/health`, {\n signal: AbortSignal.timeout(5000),\n });\n apiLatencyMs = Date.now() - start;\n apiHealthy = res.ok;\n } catch {\n apiHealthy = false;\n }\n\n const status = {\n project,\n authenticated,\n organization: config.projects[project]?.organizationName ?? \"N/A\",\n apiEndpoint: baseUrl,\n apiHealthy,\n apiLatencyMs,\n };\n\n // Interactive display\n console.log(chalk.bold(\"\\nWAVE CLI Status\\n\"));\n console.log(\n ` Auth: ${authenticated ? chalk.green(\"Authenticated\") : chalk.red(\"Not authenticated\")}`,\n );\n console.log(` Project: ${chalk.cyan(project)}`);\n console.log(\n ` Org: ${chalk.cyan(config.projects[project]?.organizationName ?? \"N/A\")}`,\n );\n console.log(` Endpoint: ${chalk.cyan(baseUrl)}`);\n console.log(\n ` API: ${apiHealthy ? chalk.green(`Healthy (${apiLatencyMs}ms)`) : chalk.red(\"Unreachable\")}`,\n );\n console.log(\"\");\n\n if (!authenticated) {\n console.log(chalk.yellow(\" Run `wave auth login` to authenticate.\\n\"));\n }\n\n // Machine-readable output (--output json/yaml)\n formatOutput(status, program.opts());\n }),\n );\n}\n","// cspell:ignore COMPREPLY CWORD compgen compdef esac\nimport { Command } from \"commander\";\nimport { wrapCommand } from \"../../lib/errors.js\";\n\n/**\n * Shell completion scripts for the WAVE CLI.\n *\n * Usage:\n * eval \"$(wave completion bash)\"\n * eval \"$(wave completion zsh)\"\n * wave completion fish | source\n */\nexport function registerCompletionCommands(program: Command): void {\n const completion = program.command(\"completion\").description(\"Generate shell completion scripts\");\n\n completion\n .command(\"bash\")\n .description(\"Generate bash completion script\")\n .action(\n wrapCommand(async () => {\n console.log(generateBashCompletion(program));\n }),\n );\n\n completion\n .command(\"zsh\")\n .description(\"Generate zsh completion script\")\n .action(\n wrapCommand(async () => {\n console.log(generateZshCompletion(program));\n }),\n );\n\n completion\n .command(\"fish\")\n .description(\"Generate fish completion script\")\n .action(\n wrapCommand(async () => {\n console.log(generateFishCompletion(program));\n }),\n );\n}\n\nfunction getCommandNames(program: Command): string[] {\n return program.commands.map((cmd) => cmd.name());\n}\n\nfunction generateBashCompletion(program: Command): string {\n const commands = getCommandNames(program);\n return `# WAVE CLI bash completion\n# Add to ~/.bashrc: eval \"$(wave completion bash)\"\n\n_wave_completions() {\n local cur prev commands\n COMPREPLY=()\n cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n prev=\"\\${COMP_WORDS[COMP_CWORD-1]}\"\n\n commands=\"${commands.join(\" \")}\"\n\n if [[ \\${COMP_CWORD} -eq 1 ]]; then\n COMPREPLY=( $(compgen -W \"\\${commands}\" -- \"\\${cur}\") )\n return 0\n fi\n\n # Global options\n local global_opts=\"--output --project --org --confirm --color --debug --help --version\"\n COMPREPLY=( $(compgen -W \"\\${global_opts}\" -- \"\\${cur}\") )\n}\n\ncomplete -F _wave_completions wave`;\n}\n\nfunction generateZshCompletion(program: Command): string {\n const commands = getCommandNames(program);\n const cmdList = commands\n .map((name) => {\n const cmd = program.commands.find((c) => c.name() === name);\n const desc = cmd?.description() ?? name;\n return ` '${name}:${desc.replace(/'/g, \"'\\\\''\")}'`;\n })\n .join(\"\\n\");\n\n return `#compdef wave\n# WAVE CLI zsh completion\n# Add to ~/.zshrc: eval \"$(wave completion zsh)\"\n\n_wave() {\n local -a commands\n commands=(\n${cmdList}\n )\n\n _arguments -C \\\\\n '--output[Output format]:format:(table json yaml)' \\\\\n '--project[Project name]:project:' \\\\\n '--org[Organization]:org:' \\\\\n '--debug[Enable debug output]' \\\\\n '--help[Show help]' \\\\\n '--version[Show version]' \\\\\n '1:command:->command' \\\\\n '*::arg:->args'\n\n case $state in\n command)\n _describe 'command' commands\n ;;\n esac\n}\n\n_wave`;\n}\n\nfunction generateFishCompletion(program: Command): string {\n const commands = getCommandNames(program);\n const completions = commands\n .map((name) => {\n const cmd = program.commands.find((c) => c.name() === name);\n const desc = cmd?.description() ?? name;\n return `complete -c wave -n '__fish_use_subcommand' -a '${name}' -d '${desc.replace(/'/g, \"\\\\'\")}'`;\n })\n .join(\"\\n\");\n\n return `# WAVE CLI fish completion\n# Add to ~/.config/fish/completions/wave.fish: wave completion fish | source\n\n# Disable file completions for wave\ncomplete -c wave -f\n\n# Global options\ncomplete -c wave -l output -d 'Output format' -a 'table json yaml'\ncomplete -c wave -l project -d 'Project name'\ncomplete -c wave -l org -d 'Organization'\ncomplete -c wave -l debug -d 'Enable debug output'\ncomplete -c wave -l help -d 'Show help'\ncomplete -c wave -l version -d 'Show version'\n\n# Commands\n${completions}`;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { formatOutput } from \"../../lib/output/index.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\nimport { loadConfig } from \"../../lib/config/manager.js\";\n\nexport function registerApiCommands(program: Command): void {\n program\n .command(\"api <method> <path>\")\n .description(\"Make raw API requests (like gh api)\")\n .option(\"-d, --data <json>\", \"Request body (JSON)\")\n .option(\"-H, --header <header>\", \"Additional header (key:value)\", collectHeaders, [])\n .option(\"--paginate\", \"Auto-paginate and collect all results\")\n .action(\n wrapCommand(async (method: string, path: string, opts) => {\n const config = await loadConfig();\n const project = config.currentProject || \"default\";\n const apiKey = await getApiKey(project);\n\n if (!apiKey) {\n console.error(chalk.red(\"Not authenticated. Run `wave auth login` first.\"));\n process.exit(1);\n }\n\n const baseUrl = config.projects[project]?.baseUrl ?? \"https://wave.online\";\n const url = path.startsWith(\"http\")\n ? path\n : `${baseUrl}${path.startsWith(\"/\") ? path : `/${path}`}`;\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n \"User-Agent\": \"wave-cli/1.0.0\",\n };\n\n // Add custom headers\n for (const h of opts.header as string[]) {\n const [key, ...valueParts] = h.split(\":\");\n if (key && valueParts.length > 0) {\n headers[key.trim()] = valueParts.join(\":\").trim();\n }\n }\n\n const fetchOpts: RequestInit = {\n method: method.toUpperCase(),\n headers,\n };\n\n if (opts.data && [\"POST\", \"PUT\", \"PATCH\"].includes(method.toUpperCase())) {\n fetchOpts.body = opts.data as string;\n }\n\n const res = await fetch(url, fetchOpts);\n const contentType = res.headers.get(\"content-type\") ?? \"\";\n\n if (contentType.includes(\"application/json\")) {\n const data = await res.json();\n\n if (!res.ok) {\n console.error(chalk.red(`${res.status} ${res.statusText}`));\n console.error(JSON.stringify(data, null, 2));\n process.exit(1);\n }\n\n formatOutput(data, program.opts());\n } else {\n const text = await res.text();\n if (!res.ok) {\n console.error(chalk.red(`${res.status} ${res.statusText}`));\n console.error(text);\n process.exit(1);\n }\n console.log(text);\n }\n }),\n );\n}\n\nfunction collectHeaders(value: string, previous: string[]): string[] {\n return previous.concat([value]);\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { writeFile, mkdir, readFile, appendFile } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { wrapCommand } from \"../../lib/errors.js\";\nimport { getClient } from \"../../lib/api-client.js\";\nimport { promptSelect, promptInput } from \"../../lib/prompts.js\";\nimport { withSpinner } from \"../../lib/output/spinner.js\";\nimport { loadConfig, updateConfig } from \"../../lib/config/manager.js\";\nimport { getApiKey } from \"../../lib/auth/keychain.js\";\nimport type { PaginatedResponse } from \"@wave-av/sdk\";\n\ninterface Organization {\n id: string;\n name: string;\n}\n\ninterface Project {\n id: string;\n name: string;\n}\n\ninterface ProjectLinkConfig {\n projectId: string;\n organizationId: string;\n projectName: string;\n}\n\nconst CREATE_NEW_PROJECT_VALUE = \"__create_new__\";\n\nexport function registerLinkCommands(program: Command): void {\n program\n .command(\"link\")\n .description(\"Link the current directory to a WAVE project\")\n .option(\"--org <id>\", \"Organization ID (skip org selection prompt)\")\n .option(\"--project <id>\", \"Project ID (skip project selection prompt)\")\n .action(\n wrapCommand(async (opts) => {\n // 1. Verify authentication\n const config = await loadConfig();\n const configProjectName = config.currentProject || \"default\";\n const apiKey = await getApiKey(configProjectName);\n\n if (!apiKey) {\n console.error(\n chalk.red(\n `Not authenticated. Run ${chalk.bold(\"wave auth login\")} first.`,\n ),\n );\n process.exit(1);\n }\n\n const wave = await getClient({ org: opts.org });\n\n // 2. Fetch organizations via the SDK's underlying HTTP client\n const orgs = await withSpinner(\"Fetching organizations...\", async () => {\n const response = await wave.client.get<PaginatedResponse<Organization>>(\n \"/v1/organizations\",\n );\n return response.data;\n });\n\n if (!orgs || orgs.length === 0) {\n console.error(\n chalk.red(\n \"No organizations found. Create one at https://wave.online/dashboard/settings/organizations\",\n ),\n );\n process.exit(1);\n }\n\n // 3. Select organization\n let selectedOrg: Organization;\n if (opts.org) {\n const match = orgs.find((o) => o.id === opts.org);\n if (!match) {\n console.error(\n chalk.red(\n `Organization \"${opts.org}\" not found. Available organizations:\\n` +\n orgs.map((o) => ` ${o.name} (${o.id})`).join(\"\\n\"),\n ),\n );\n process.exit(1);\n }\n selectedOrg = match;\n } else {\n const orgId = await promptSelect(\n \"Select organization:\",\n orgs.map((o) => ({\n name: `${o.name} (${o.id})`,\n value: o.id,\n })),\n );\n selectedOrg = orgs.find((o) => o.id === orgId)!;\n }\n\n // 4. Fetch projects for the selected organization\n const projects = await withSpinner(\"Fetching projects...\", async () => {\n const response = await wave.client.get<PaginatedResponse<Project>>(\n \"/v1/projects\",\n {\n params: { organization_id: selectedOrg.id },\n },\n );\n return response.data;\n });\n\n // 5. Select or create project\n let selectedProject: Project;\n if (opts.project) {\n const match = projects?.find((p) => p.id === opts.project);\n if (!match) {\n console.error(\n chalk.red(\n `Project \"${opts.project}\" not found in organization \"${selectedOrg.name}\".`,\n ),\n );\n process.exit(1);\n }\n selectedProject = match;\n } else {\n const choices = [\n ...(projects ?? []).map((p) => ({\n name: `${p.name} (${p.id})`,\n value: p.id,\n })),\n {\n name: chalk.green(\"+ Create new project\"),\n value: CREATE_NEW_PROJECT_VALUE,\n },\n ];\n\n const projectId = await promptSelect(\"Select project:\", choices);\n\n if (projectId === CREATE_NEW_PROJECT_VALUE) {\n const newName = await promptInput(\"Project name:\");\n selectedProject = await withSpinner(\n \"Creating project...\",\n async () => {\n return wave.client.post<Project>(\"/v1/projects\", {\n organization_id: selectedOrg.id,\n name: newName,\n });\n },\n );\n } else {\n selectedProject = projects!.find((p) => p.id === projectId)!;\n }\n }\n\n // 6. Write .wave/project.json\n const cwd = resolve(process.cwd());\n const waveDirPath = join(cwd, \".wave\");\n const projectJsonPath = join(waveDirPath, \"project.json\");\n\n if (!existsSync(waveDirPath)) {\n await mkdir(waveDirPath, { recursive: true });\n }\n\n const linkConfig: ProjectLinkConfig = {\n projectId: selectedProject.id,\n organizationId: selectedOrg.id,\n projectName: selectedProject.name,\n };\n\n await writeFile(\n projectJsonPath,\n JSON.stringify(linkConfig, null, 2) + \"\\n\",\n \"utf-8\",\n );\n\n // 7. Add .wave/ to .gitignore if not already present\n const gitignorePath = join(cwd, \".gitignore\");\n await ensureGitignoreEntry(gitignorePath, \".wave/\");\n\n // 8. Update CLI config with the linked project context\n await updateConfig((cfg) => ({\n ...cfg,\n projects: {\n ...cfg.projects,\n [configProjectName]: {\n ...cfg.projects[configProjectName],\n organizationId: selectedOrg.id,\n organizationName: selectedOrg.name,\n },\n },\n }));\n\n console.log(\"\");\n console.log(\n chalk.green(\n `Linked to \"${selectedProject.name}\" (${selectedProject.id})`,\n ),\n );\n console.log(chalk.dim(`Created ${projectJsonPath}`));\n console.log(\"\");\n }),\n );\n}\n\nasync function ensureGitignoreEntry(\n gitignorePath: string,\n entry: string,\n): Promise<void> {\n if (existsSync(gitignorePath)) {\n const content = await readFile(gitignorePath, \"utf-8\");\n const lines = content.split(\"\\n\").map((l) => l.trim());\n if (lines.includes(entry)) {\n return;\n }\n // Append with a newline separator if file doesn't end with one\n const separator = content.endsWith(\"\\n\") ? \"\" : \"\\n\";\n await appendFile(gitignorePath, `${separator}${entry}\\n`, \"utf-8\");\n } else {\n await writeFile(gitignorePath, `${entry}\\n`, \"utf-8\");\n }\n}\n","import { createProgram } from \"./cli.js\";\n\nasync function main(): Promise<void> {\n const program = createProgram();\n await program.parseAsync(process.argv);\n}\n\nmain().catch((error: unknown) => {\n console.error(error instanceof Error ? error.message : \"An unexpected error occurred\");\n process.exit(1);\n});\n"],"mappings":"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","names":["chalk","chalk","chalk","chalk","chalk","readFile","writeFile","mkdir","existsSync","homedir","join","join","homedir","existsSync","readFile","mkdir","writeFile","chalk","resolve","project","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","open","chalk","value","resolve","chalk","resolve","chalk","chalk","resolve","chalk","chalk","res","chalk","readFile","existsSync","join","LEVEL_COLORS","chalk","join","existsSync","readFile","resolve","chalk","chalk","url","open","chalk","writeFile","mkdir","readFile","existsSync","join","resolve","inquirer","inquirer","resolve","join","mkdir","existsSync","readFile","writeFile","chalk","chalk","chalk","chalk","config","chalk","chalk","chalk","chalk","chalk","chalk","writeFile","mkdir","readFile","existsSync","join","resolve","chalk","resolve","join","existsSync","mkdir","writeFile","readFile","chalk"]}