@standardagents/cli 0.17.0-next.1e58032 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/logger.ts","../src/utils/bootstrap-state.ts","../src/utils/cli-auth-api.ts","../src/commands/scaffold.ts","../src/tui/init-ui.tsx","../src/commands/init.ts","../src/utils/project-auth-env.ts","../src/commands/login.ts","../src/utils/cli-auth-storage.ts","../src/commands/logout.ts","../src/commands/init-chat.ts","../src/commands/pack.ts","../src/commands/unpack.ts","../src/commands/deploy.ts","../src/tui/context.ts","../src/tui/home.tsx","../src/commands/skill.ts","../src/utils/models.ts","../src/commands/current-models.ts","../src/commands/available-models.ts","../src/commands/git-credential.ts","../src/commands/git-login.ts","../src/index.ts"],"names":["path","fs","child","spawn","os","supportFiles","upsertEnvLine","prompt","readline","projectPath","state","reused","DEV_VARS_FILENAME","fileURLToPath","runCommand","detectPackageManager","selectPackageManager","net","openBrowser","render","isStandardAgentsProject","chalk","useState","useApp","useInput","jsxs","Box","jsx","Text","provider","spawnSync","isInteractiveTerminal"],"mappings":"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","file":"index.js","sourcesContent":["import chalk from 'chalk';\n\nexport const logger = {\n success: (message: string) => {\n console.log(chalk.green('✓'), message);\n },\n error: (message: string) => {\n console.log(chalk.red('✗'), message);\n },\n warning: (message: string) => {\n console.log(chalk.yellow('⚠'), message);\n },\n info: (message: string) => {\n console.log(chalk.blue('ℹ'), message);\n },\n log: (message: string) => {\n console.log(message);\n },\n};\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nexport interface BootstrapSessionState {\n version: 1;\n endpoint: string;\n authenticated_at: number;\n /**\n * Session cookie pair returned by Platform API bootstrap consume/login.\n * Stored as \"session=<signed-id>\" for CLI-authenticated API requests.\n */\n session_cookie?: string;\n user: {\n id: string;\n email: string;\n role: string;\n };\n account: {\n id: string;\n slug?: string;\n tier?: string;\n };\n}\n\nconst STATE_RELATIVE_PATH = path.join('.agents', 'bootstrap-session.json');\n\nexport function getBootstrapStatePath(projectPath: string): string {\n return path.join(projectPath, STATE_RELATIVE_PATH);\n}\n\nexport function loadBootstrapState(projectPath: string): BootstrapSessionState | null {\n const statePath = getBootstrapStatePath(projectPath);\n if (!fs.existsSync(statePath)) return null;\n\n try {\n const parsed = JSON.parse(fs.readFileSync(statePath, 'utf-8')) as BootstrapSessionState;\n if (parsed.version !== 1) return null;\n if (!parsed.endpoint || !parsed.user?.id || !parsed.account?.id) return null;\n if (parsed.session_cookie !== undefined && typeof parsed.session_cookie !== 'string') return null;\n return parsed;\n } catch {\n return null;\n }\n}\n\nexport function persistBootstrapState(projectPath: string, state: BootstrapSessionState): void {\n const statePath = getBootstrapStatePath(projectPath);\n fs.mkdirSync(path.dirname(statePath), { recursive: true });\n fs.writeFileSync(statePath, JSON.stringify(state, null, 2) + '\\n', 'utf-8');\n}\n\nexport function clearBootstrapState(projectPath: string): void {\n const statePath = getBootstrapStatePath(projectPath);\n if (fs.existsSync(statePath)) {\n fs.unlinkSync(statePath);\n }\n}\n","import { spawn } from 'node:child_process';\n\nexport interface CliAuthStartResponse {\n session_id: string;\n auth_url: string;\n ws_url: string;\n expires_at: number;\n}\n\ninterface CliAuthWsAuthenticatedMessage {\n type: 'authenticated';\n session_id: string;\n bootstrap_code?: string;\n exchange_code?: string;\n command?: string;\n expires_at?: number;\n}\n\ninterface CliAuthWsTerminalMessage {\n type: 'cancelled' | 'expired';\n reason_code?: string;\n}\n\ntype CliAuthWsMessage =\n | CliAuthWsAuthenticatedMessage\n | CliAuthWsTerminalMessage\n | { type: string; [key: string]: unknown };\n\nexport interface CliAuthExchangeResponse {\n access_token: string;\n access_token_expires_at: number;\n refresh_token: string;\n refresh_token_expires_at: number;\n org: { id: string; slug: string; name: string };\n user: { id: string; email: string; role: string };\n}\n\nexport interface CliAuthRefreshResponse {\n access_token: string;\n access_token_expires_at: number;\n refresh_token: string;\n refresh_token_expires_at: number;\n org: { id: string; slug: string; name: string };\n user: { id: string; email: string; role: string };\n}\n\ninterface RuntimeWebSocket {\n send?: (data: string) => void;\n close(): void;\n onopen: (() => void) | null;\n onerror: ((event: unknown) => void) | null;\n onclose: ((event: unknown) => void) | null;\n onmessage: ((event: { data: unknown }) => void) | null;\n}\n\nfunction getWebSocketCtor(): ((url: string) => RuntimeWebSocket) {\n const maybeCtor = (globalThis as unknown as { WebSocket?: new (url: string) => RuntimeWebSocket }).WebSocket;\n if (!maybeCtor) {\n throw new Error('WebSocket is not available in this runtime');\n }\n return (url: string) => new maybeCtor(url);\n}\n\nfunction sendWsPoll(ws: RuntimeWebSocket): void {\n if (typeof ws.send !== 'function') return;\n try {\n ws.send(JSON.stringify({ type: 'poll' }));\n } catch {\n // no-op\n }\n}\n\nexport function resolvePlatformApiEndpoint(raw?: string): string {\n const fromPlatformEndpoint = process.env.PLATFORM_ENDPOINT;\n const fromLegacyEnv = process.env.STANDARDAGENTS_PLATFORM_API_URL;\n const endpoint = (raw || fromPlatformEndpoint || fromLegacyEnv || 'https://api.standardagents.ai').trim();\n if (!endpoint) return 'https://api.standardagents.ai';\n return endpoint.replace(/\\/+$/, '');\n}\n\nexport function resolvePlatformAuthBrowserUrl(rawApiEndpoint?: string): string {\n const explicit = (\n process.env.CLI_AUTH_BROWSER_URL\n || process.env.STANDARDAGENTS_AUTH_URL\n || process.env.PLATFORM_AUTH_PUBLIC_URL\n )?.trim();\n if (explicit) {\n return explicit.replace(/\\/+$/, '');\n }\n\n const apiEndpoint = resolvePlatformApiEndpoint(rawApiEndpoint);\n try {\n const url = new URL(apiEndpoint);\n if (url.hostname.startsWith('platform-api.')) {\n url.hostname = `platform-auth.${url.hostname.slice('platform-api.'.length)}`;\n return url.origin;\n }\n if (url.hostname.startsWith('api.')) {\n url.hostname = `auth.${url.hostname.slice('api.'.length)}`;\n return url.origin;\n }\n return url.origin;\n } catch {\n return 'https://auth.standardagents.ai';\n }\n}\n\nasync function parseError(response: Response): Promise<string> {\n const fallback = `Request failed (${response.status})`;\n try {\n const body = await response.json() as {\n error?: { code?: string; message?: string };\n };\n if (body.error?.code && body.error?.message) {\n return `${body.error.code}: ${body.error.message}`;\n }\n if (body.error?.message) {\n return body.error.message;\n }\n return fallback;\n } catch {\n return fallback;\n }\n}\n\nexport async function startCliAuthSession(endpoint: string): Promise<CliAuthStartResponse> {\n const response = await fetch(`${endpoint}/cli/auth/start`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n });\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n return response.json() as Promise<CliAuthStartResponse>;\n}\n\nexport async function cancelCliAuthSession(\n endpoint: string,\n sessionId: string,\n): Promise<void> {\n await fetch(`${endpoint}/cli/auth/cancel`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ session_id: sessionId }),\n }).catch(() => undefined);\n}\n\nexport async function exchangeCliAuthSession(\n endpoint: string,\n sessionId: string,\n exchangeCode: string,\n): Promise<CliAuthExchangeResponse> {\n const response = await fetch(`${endpoint}/cli/auth/exchange`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ session_id: sessionId, exchange_code: exchangeCode }),\n });\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n return response.json() as Promise<CliAuthExchangeResponse>;\n}\n\nexport async function refreshCliAuthToken(\n endpoint: string,\n refreshToken: string,\n): Promise<CliAuthRefreshResponse> {\n const response = await fetch(`${endpoint}/cli/auth/refresh`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ refresh_token: refreshToken }),\n });\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n return response.json() as Promise<CliAuthRefreshResponse>;\n}\n\nexport async function revokeCliAuthToken(\n endpoint: string,\n refreshToken: string,\n): Promise<void> {\n const response = await fetch(`${endpoint}/cli/auth/revoke`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ refresh_token: refreshToken }),\n });\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n}\n\nexport async function waitForCliAuthCompletion(\n wsUrl: string,\n expiresAt: number,\n): Promise<{ bootstrapCode: string; command?: string }> {\n const createWebSocket = getWebSocketCtor();\n const ws = createWebSocket(wsUrl);\n\n return new Promise((resolve, reject) => {\n let settled = false;\n const timeoutMs = Math.max(1_000, expiresAt - Date.now() + 5_000);\n const closeSocket = () => {\n try {\n ws.close();\n } catch {\n // no-op\n }\n };\n const heartbeat = setInterval(() => {\n if (settled) return;\n sendWsPoll(ws);\n }, 750);\n const timer = setTimeout(() => {\n if (settled) return;\n settled = true;\n clearInterval(heartbeat);\n closeSocket();\n reject(new Error('Authentication timed out. Run \"agents login\" to restart.'));\n }, timeoutMs);\n\n const settle = (fn: () => void) => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n clearInterval(heartbeat);\n closeSocket();\n fn();\n };\n\n ws.onopen = () => {\n // Prompt server-side delivery from websocket context.\n sendWsPoll(ws);\n };\n\n ws.onerror = () => {\n settle(() => reject(new Error('Failed to connect to auth session websocket.')));\n };\n\n ws.onclose = () => {\n settle(() => reject(new Error('Authentication session closed before completion.')));\n };\n\n ws.onmessage = (event: { data: unknown }) => {\n let message: CliAuthWsMessage;\n try {\n const raw = typeof event.data === 'string' ? event.data : String(event.data);\n message = JSON.parse(raw) as CliAuthWsMessage;\n } catch {\n return;\n }\n\n if (message.type === 'authenticated') {\n const bootstrapCode =\n typeof message.bootstrap_code === 'string'\n ? message.bootstrap_code\n : typeof message.exchange_code === 'string'\n ? message.exchange_code\n : '';\n\n if (!bootstrapCode) {\n settle(() => reject(new Error('Authentication completed without bootstrap code.')));\n return;\n }\n const command = typeof message.command === 'string' ? message.command : undefined;\n settle(() => resolve({ bootstrapCode, command }));\n return;\n }\n\n if (message.type === 'cancelled') {\n settle(() => reject(new Error('Authentication was cancelled. Run \"agents login\" to restart.')));\n return;\n }\n\n if (message.type === 'expired') {\n settle(() => reject(new Error('Authentication session expired. Run \"agents login\" to restart.')));\n }\n };\n });\n}\n\nexport function openBrowser(url: string): boolean {\n try {\n if (process.platform === 'darwin') {\n const child = spawn('open', [url], { detached: true, stdio: 'ignore' });\n child.unref();\n return true;\n }\n if (process.platform === 'win32') {\n const child = spawn('cmd', ['/c', 'start', '', url], { detached: true, stdio: 'ignore' });\n child.unref();\n return true;\n }\n const child = spawn('xdg-open', [url], { detached: true, stdio: 'ignore' });\n child.unref();\n return true;\n } catch {\n return false;\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { parse, modify, applyEdits } from 'jsonc-parser';\nimport { loadFile, writeFile } from 'magicast';\nimport { addVitePlugin } from 'magicast/helpers';\nimport {\n AGENT_DEFINITIONS_AGENTS_MD,\n API_AGENTS_MD,\n HOOKS_AGENTS_MD,\n MODELS_AGENTS_MD,\n PROMPTS_AGENTS_MD,\n ROOT_AGENTS_MD,\n TOOLS_AGENTS_MD,\n} from '@standardagents/agentbuilder-template';\nimport { logger } from '../utils/logger.js';\n\ninterface ScaffoldOptions {\n force?: boolean;\n}\n\ntype DependencySection = 'dependencies' | 'devDependencies';\n\ndeclare const __CLI_VERSION__: string;\n\nfunction getScaffoldStandardAgentsVersion(): string {\n if (process.env.STANDARDAGENTS_WORKSPACE === '1') {\n return 'workspace:*';\n }\n return typeof __CLI_VERSION__ === 'undefined' ? 'latest' : __CLI_VERSION__;\n}\n\nfunction findViteConfig(cwd: string): string | null {\n const candidates = ['vite.config.ts', 'vite.config.js', 'vite.config.mts', 'vite.config.mjs'];\n for (const candidate of candidates) {\n const configPath = path.join(cwd, candidate);\n if (fs.existsSync(configPath)) {\n return configPath;\n }\n }\n return null;\n}\n\nfunction dependencySectionFor(\n pkg: { dependencies?: Record<string, string>; devDependencies?: Record<string, string> },\n packageName: string,\n fallback: DependencySection,\n): DependencySection {\n if (pkg.dependencies?.[packageName] !== undefined) return 'dependencies';\n if (pkg.devDependencies?.[packageName] !== undefined) return 'devDependencies';\n return fallback;\n}\n\nfunction setPackageDependency(\n packageJsonText: string,\n section: DependencySection,\n packageName: string,\n version: string,\n): string {\n const edits = modify(packageJsonText, [section, packageName], version, {\n formattingOptions: { insertSpaces: true, tabSize: 2 },\n });\n return applyEdits(packageJsonText, edits);\n}\n\nexport function updatePackageDependencies(\n cwd: string,\n versions: {\n standardAgents?: string;\n } = {},\n): boolean {\n const packageJsonPath = path.join(cwd, 'package.json');\n if (!fs.existsSync(packageJsonPath)) {\n logger.warning('No package.json found. Install @standardagents/builder manually.');\n return false;\n }\n\n try {\n const text = fs.readFileSync(packageJsonPath, 'utf-8');\n const pkg = JSON.parse(text) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n };\n\n const desiredBuilderVersion = versions.standardAgents ?? getScaffoldStandardAgentsVersion();\n const builderSection = dependencySectionFor(pkg, '@standardagents/builder', 'dependencies');\n\n let result = text;\n let changed = false;\n\n if (pkg[builderSection]?.['@standardagents/builder'] !== desiredBuilderVersion) {\n result = setPackageDependency(result, builderSection, '@standardagents/builder', desiredBuilderVersion);\n changed = true;\n }\n\n if (!changed) {\n logger.info('package.json already has current Standard Agents dependencies');\n return true;\n }\n\n fs.writeFileSync(packageJsonPath, `${result.trimEnd()}\\n`, 'utf-8');\n logger.success('Updated package.json with current Standard Agents dependencies');\n return true;\n } catch (error) {\n logger.warning(`Could not update package.json dependencies: ${error}`);\n return false;\n }\n}\n\nasync function modifyViteConfig(configPath: string, force: boolean): Promise<boolean> {\n try {\n const mod = await loadFile(configPath);\n\n const code = fs.readFileSync(configPath, 'utf-8');\n const hasAgentBuilder = code.includes('@standardagents/builder') || code.includes('builder()') || code.includes('agentbuilder()');\n\n if (hasAgentBuilder && !force) {\n logger.info('Vite config already includes builder plugin');\n return true;\n }\n\n if (!hasAgentBuilder || force) {\n addVitePlugin(mod, {\n from: '@standardagents/builder',\n imported: 'builder',\n constructor: 'builder',\n });\n logger.success('Added builder plugin to vite.config');\n }\n\n await writeFile(mod, configPath);\n return true;\n } catch (error) {\n logger.warning(`Could not automatically modify vite.config: ${error}`);\n logger.log('');\n logger.log('Please manually add the following to your vite.config.ts:');\n logger.log('');\n logger.log(` import { builder } from '@standardagents/builder'`);\n logger.log('');\n logger.log(` plugins: [builder()]`);\n logger.log('');\n return false;\n }\n}\n\nfunction createDirectoriesAndDocs(cwd: string): void {\n function writeAgentsDocWithClaudeSymlink(dirPath: string, doc: string, label: string): void {\n const agentsDocPath = path.join(dirPath, 'AGENTS.md');\n const claudeDocPath = path.join(dirPath, 'CLAUDE.md');\n\n if (!fs.existsSync(agentsDocPath)) {\n fs.writeFileSync(agentsDocPath, doc, 'utf-8');\n logger.success(`Created ${label}/AGENTS.md`);\n }\n\n if (!fs.existsSync(claudeDocPath)) {\n fs.symlinkSync('AGENTS.md', claudeDocPath);\n logger.success(`Created ${label}/CLAUDE.md symlink`);\n }\n }\n\n // Create project root AGENTS.md and Claude compatibility symlink.\n writeAgentsDocWithClaudeSymlink(cwd, ROOT_AGENTS_MD, '.');\n\n // Create subdirectories with their AGENTS.md files and Claude compatibility symlinks.\n const directories = [\n { path: 'agents/agents', doc: AGENT_DEFINITIONS_AGENTS_MD },\n { path: 'agents/prompts', doc: PROMPTS_AGENTS_MD },\n { path: 'agents/models', doc: MODELS_AGENTS_MD },\n { path: 'agents/tools', doc: TOOLS_AGENTS_MD },\n { path: 'agents/hooks', doc: HOOKS_AGENTS_MD },\n { path: 'agents/api', doc: API_AGENTS_MD },\n ];\n\n for (const dir of directories) {\n const dirPath = path.join(cwd, dir.path);\n\n // Create directory\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n logger.success(`Created ${dir.path}`);\n }\n\n writeAgentsDocWithClaudeSymlink(dirPath, dir.doc, dir.path);\n }\n}\n\nfunction updateTsConfig(cwd: string): void {\n const tsconfigPath = path.join(cwd, 'tsconfig.json');\n\n if (!fs.existsSync(tsconfigPath)) {\n logger.info('No tsconfig.json found, skipping TypeScript configuration');\n return;\n }\n\n try {\n const text = fs.readFileSync(tsconfigPath, 'utf-8');\n const config = parse(text);\n let result = text;\n\n const types = config.compilerOptions?.types || [];\n const newTypes = [\n './.agents/types.d.ts',\n './.agents/virtual-module.d.ts'\n ].filter(t => !types.includes(t));\n\n if (newTypes.length > 0) {\n const allTypes = [...types, ...newTypes];\n const edits = modify(result, ['compilerOptions', 'types'], allTypes, {});\n result = applyEdits(result, edits);\n }\n\n const include = config.include || [];\n const newIncludes = ['agents', '.agents', 'vite.config.ts'].filter(i => !include.includes(i));\n\n if (newIncludes.length > 0) {\n const allIncludes = [...include, ...newIncludes];\n const edits = modify(result, ['include'], allIncludes, {});\n result = applyEdits(result, edits);\n }\n\n if (newTypes.length > 0 || newIncludes.length > 0) {\n fs.writeFileSync(tsconfigPath, result, 'utf-8');\n logger.success('Updated tsconfig.json with Standard Agents types');\n } else {\n logger.info('tsconfig.json already configured');\n }\n } catch (error) {\n logger.warning('Could not update tsconfig.json, you may need to add types manually');\n }\n}\n\nfunction cleanupViteDefaults(cwd: string): void {\n // Remove default Vite files that AgentBuilder no longer needs when scaffold is\n // used as a forced fresh-project conversion. AgentBuilder owns the whole app.\n const filesToRemove = [\n 'src/main.ts',\n 'src/style.css',\n 'src/counter.ts',\n 'src/typescript.svg',\n 'src/vite-env.d.ts',\n 'index.html',\n 'public/vite.svg',\n 'wrangler.jsonc',\n 'wrangler.json',\n 'worker/index.ts',\n 'agents/Thread.ts',\n 'agents/AgentBuilder.ts',\n ];\n\n const dirsToRemove = ['src', 'public', 'worker'];\n\n for (const file of filesToRemove) {\n const filePath = path.join(cwd, file);\n if (fs.existsSync(filePath)) {\n try {\n fs.unlinkSync(filePath);\n } catch {\n // Ignore errors\n }\n }\n }\n\n // Remove empty directories\n for (const dir of dirsToRemove) {\n const dirPath = path.join(cwd, dir);\n if (fs.existsSync(dirPath)) {\n try {\n const files = fs.readdirSync(dirPath);\n if (files.length === 0) {\n fs.rmdirSync(dirPath);\n }\n } catch {\n // Ignore errors\n }\n }\n }\n}\n\nexport async function scaffold(options: ScaffoldOptions = {}) {\n const cwd = process.cwd();\n const force = options.force || false;\n\n logger.info('Scaffolding Standard Agents...');\n logger.log('');\n\n // 1. Find and modify vite.config\n const viteConfigPath = findViteConfig(cwd);\n if (viteConfigPath) {\n await modifyViteConfig(viteConfigPath, force);\n } else {\n logger.warning('No vite.config found. Please create one with the agentbuilder plugin.');\n }\n\n // 2. Add or refresh package dependencies\n updatePackageDependencies(cwd);\n\n // 3. Create agent directories with documentation\n createDirectoriesAndDocs(cwd);\n\n // 4. Update tsconfig.json\n updateTsConfig(cwd);\n\n // 5. Clean up default Vite and legacy generated files only when explicitly forced.\n if (force) {\n cleanupViteDefaults(cwd);\n }\n\n logger.log('');\n logger.success('Standard Agents scaffolding complete!');\n logger.log('');\n logger.log('Your project structure:');\n logger.log('');\n logger.log(' AGENTS.md # Architecture documentation');\n logger.log(' CLAUDE.md -> AGENTS.md # Compatibility symlink');\n logger.log(' vite.config.ts # Uses builder(); Cloudflare config is generated');\n logger.log(' tsconfig.json # Includes agents and generated .agents types');\n logger.log(' agents/');\n logger.log(' ├── agents/ # Agent definitions');\n logger.log(' ├── prompts/ # Prompt definitions');\n logger.log(' ├── models/ # Model configurations');\n logger.log(' ├── tools/ # Custom tools');\n logger.log(' ├── hooks/ # Lifecycle hooks');\n logger.log(' └── api/ # Thread API endpoints');\n logger.log('');\n}\n","import React, { useMemo, useState } from 'react';\nimport { Box, Text, render, renderToString, useApp, useInput } from 'ink';\nimport { TextInput } from '@inkjs/ui';\n\nexport type InitPackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\nexport type InitAuthMode = 'standardagents' | 'local';\nexport type InitProgressStage = 'project' | 'auth' | 'env' | 'scaffold';\n\nconst STAGE_LABELS: Record<InitProgressStage, string> = {\n project: 'Project',\n auth: 'Auth',\n env: 'Env',\n scaffold: 'Scaffold',\n};\n\nconst STANDARDAGENTS_FLOW: InitProgressStage[] = ['project', 'auth', 'scaffold'];\nconst LOCAL_FLOW: InitProgressStage[] = ['project', 'auth', 'env', 'scaffold'];\n\nexport function getInitProgressStages(authMode: InitAuthMode = 'standardagents'): InitProgressStage[] {\n return authMode === 'local' ? LOCAL_FLOW : STANDARDAGENTS_FLOW;\n}\n\nexport function getInitStepInfo(stage: InitProgressStage, authMode: InitAuthMode = 'standardagents'): {\n step: number;\n total: number;\n labels: string[];\n} {\n const flow = getInitProgressStages(authMode);\n const stepIndex = flow.indexOf(stage);\n return {\n step: stepIndex === -1 ? 1 : stepIndex + 1,\n total: flow.length,\n labels: flow.map((item) => STAGE_LABELS[item]),\n };\n}\n\nexport interface InitStepFrameState {\n stage: InitProgressStage;\n title: string;\n subtitle?: string;\n projectName?: string;\n packageManager?: string;\n authMode?: InitAuthMode;\n}\n\nexport const AUTH_SIDE_BY_SIDE_MIN_COLUMNS = 110;\n\nexport function shouldUseSideBySideAuthCards(columns: number): boolean {\n return columns >= AUTH_SIDE_BY_SIDE_MIN_COLUMNS;\n}\n\nfunction clearInkScreen(stdout: NodeJS.WriteStream = process.stdout): void {\n stdout.write('\\x1b[2J\\x1b[H');\n}\n\nasync function settleStdinBeforePrompt(stdin: NodeJS.ReadStream = process.stdin): Promise<void> {\n if (!stdin.isTTY) return;\n\n stdin.pause();\n while (stdin.read() !== null) {\n // Drain any buffered key events (for example Enter from previous screen)\n }\n await new Promise<void>((resolve) => setTimeout(resolve, 0));\n while (stdin.read() !== null) {\n // One more pass after microtask boundary\n }\n}\n\ninterface SelectOption<T extends string> {\n value: T;\n label: string;\n description?: string;\n bullets?: string[];\n badge?: string;\n}\n\ninterface SelectPromptProps<T extends string> {\n title: string;\n subtitle?: string;\n footerHint?: string;\n options: SelectOption<T>[];\n defaultIndex?: number;\n horizontal?: boolean;\n density?: 'comfortable' | 'compact';\n onCancel?: () => void;\n onSubmit: (value: T) => void;\n}\n\nfunction Stepper({ activeStage, authMode }: { activeStage: InitProgressStage; authMode: InitAuthMode }) {\n const flow = getInitProgressStages(authMode);\n const activeIndex = flow.indexOf(activeStage);\n return (\n <Box flexDirection=\"row\" marginBottom={1}>\n {flow.map((stage, index) => {\n const label = STAGE_LABELS[stage];\n const isActive = index === activeIndex;\n const isDone = index < activeIndex;\n const fg = isActive ? 'black' : isDone ? 'green' : 'gray';\n const bg = isActive ? 'cyan' : undefined;\n const marker = isDone ? '✓' : isActive ? '●' : '·';\n return (\n <Box key={stage} marginRight={1}>\n <Text color={fg} backgroundColor={bg}>\n {' '}\n {marker} {label}{' '}\n </Text>\n </Box>\n );\n })}\n </Box>\n );\n}\n\nfunction InitStepFrame(props: InitStepFrameState) {\n const mode = props.authMode ?? 'standardagents';\n const { step, total } = getInitStepInfo(props.stage, mode);\n const metadata = useMemo(() => {\n const items: Array<{ id: 'project' | 'pm' | 'mode'; label: string; value: string }> = [];\n if (props.projectName) {\n items.push({ id: 'project', label: 'Project', value: props.projectName });\n }\n if (props.packageManager) {\n items.push({ id: 'pm', label: 'PM', value: props.packageManager });\n }\n if (props.authMode) {\n items.push({\n id: 'mode',\n label: 'Mode',\n value: props.authMode === 'standardagents' ? 'StandardAgents' : 'Local',\n });\n }\n return items;\n }, [props.authMode, props.packageManager, props.projectName]);\n\n return (\n <Box flexDirection=\"column\" paddingX={1}>\n <Box borderStyle=\"round\" borderColor=\"cyan\" paddingX={1} flexDirection=\"column\">\n <Text color=\"cyanBright\" bold>\n StandardAgents CLI\n </Text>\n <Text color=\"gray\">Init Wizard</Text>\n </Box>\n <Box marginTop={1}>\n <Stepper activeStage={props.stage} authMode={mode} />\n </Box>\n {metadata.length > 0 && (\n <Box marginBottom={1} flexDirection=\"row\">\n {metadata.map((item, index) => {\n const valueColor =\n item.id === 'project'\n ? 'whiteBright'\n : item.id === 'pm'\n ? 'magentaBright'\n : item.value === 'StandardAgents'\n ? 'greenBright'\n : 'yellowBright';\n return (\n <Box key={item.id} flexDirection=\"row\">\n <Text color=\"gray\">{item.label} </Text>\n <Text color={valueColor}>{item.value}</Text>\n {index < metadata.length - 1 ? <Text color=\"gray\"> • </Text> : null}\n </Box>\n );\n })}\n </Box>\n )}\n <Text color=\"whiteBright\" bold>\n Step {step}/{total}: {props.title}\n </Text>\n {props.subtitle ? <Text color=\"gray\">{props.subtitle}</Text> : null}\n </Box>\n );\n}\n\nfunction OptionCard<T extends string>({\n option,\n selected,\n width,\n}: {\n option: SelectOption<T>;\n selected: boolean;\n width: number;\n}) {\n const borderColor = selected ? 'cyan' : 'gray';\n const titleColor = selected ? 'cyanBright' : 'whiteBright';\n const textColor = selected ? 'whiteBright' : 'gray';\n\n return (\n <Box\n width={width}\n borderStyle=\"round\"\n borderColor={borderColor}\n flexDirection=\"column\"\n paddingX={1}\n paddingY={0}\n marginRight={1}\n >\n <Box>\n <Text color={titleColor} bold>\n {option.label}\n </Text>\n {option.badge ? (\n <Text color={selected ? 'cyanBright' : 'gray'}>{` ${option.badge}`}</Text>\n ) : null}\n </Box>\n {option.description ? (\n <Box marginTop={0}>\n <Text color={textColor}>{option.description}</Text>\n </Box>\n ) : null}\n {option.bullets?.map((line) => (\n <Text key={line} color={textColor}>\n {'• '}\n {line}\n </Text>\n ))}\n </Box>\n );\n}\n\nfunction SelectPrompt<T extends string>({\n title,\n subtitle,\n footerHint,\n options,\n defaultIndex = 0,\n horizontal = false,\n density = 'comfortable',\n onCancel,\n onSubmit,\n}: SelectPromptProps<T>) {\n const [selectedIndex, setSelectedIndex] = useState(defaultIndex);\n const { exit } = useApp();\n const width = process.stdout.columns ?? 120;\n const cardWidth = horizontal ? Math.max(34, Math.floor((width - 8) / options.length)) : Math.max(42, width - 6);\n\n useInput((input, key) => {\n if (key.upArrow || input === 'k' || key.leftArrow || input === 'h') {\n setSelectedIndex((prev) => (prev - 1 + options.length) % options.length);\n return;\n }\n if (key.downArrow || input === 'j' || key.rightArrow || input === 'l') {\n setSelectedIndex((prev) => (prev + 1) % options.length);\n return;\n }\n if (key.return) {\n onSubmit(options[selectedIndex].value);\n exit();\n return;\n }\n if (key.escape) {\n onCancel?.();\n exit();\n return;\n }\n if (key.ctrl && input === 'c') {\n process.exit(1);\n }\n });\n\n return (\n <Box flexDirection=\"column\" paddingX={1}>\n <Text color=\"whiteBright\" bold>\n {title}\n </Text>\n {subtitle ? <Text color=\"gray\">{subtitle}</Text> : null}\n {density === 'compact' ? (\n <Box marginTop={1} flexDirection=\"column\">\n {options.map((option, index) => {\n const selected = index === selectedIndex;\n return (\n <Box key={option.value} marginBottom={0}>\n <Text color={selected ? 'black' : 'white'} backgroundColor={selected ? 'cyan' : undefined} bold={selected}>\n {selected ? '›' : ' '} {option.label}\n {option.badge ? ` ${option.badge}` : ''}\n </Text>\n {option.description ? <Text color={selected ? 'cyan' : 'gray'}>{` ${option.description}`}</Text> : null}\n </Box>\n );\n })}\n </Box>\n ) : (\n <Box marginTop={1} flexDirection={horizontal ? 'row' : 'column'}>\n {options.map((option, index) => (\n <Box key={option.value} marginBottom={horizontal ? 0 : 1}>\n <OptionCard option={option} selected={index === selectedIndex} width={cardWidth} />\n </Box>\n ))}\n </Box>\n )}\n <Text color=\"gray\">{footerHint ?? 'Use arrows (or h/j/k/l) and Enter to continue.'}</Text>\n </Box>\n );\n}\n\nasync function runSelectPrompt<T extends string>(\n props: Omit<SelectPromptProps<T>, 'onSubmit'>,\n): Promise<T | null> {\n let resolved: T | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <SelectPrompt\n {...props}\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (resolved !== null) return resolved;\n if (cancelled) return null;\n return null;\n}\n\ninterface ProjectNamePromptProps {\n question: string;\n frame: InitStepFrameState;\n onCancel: () => void;\n onSubmit: (value: string) => void;\n}\n\nfunction ProjectNamePrompt({ question, frame, onCancel, onSubmit }: ProjectNamePromptProps) {\n const { exit } = useApp();\n const label = question.trim().replace(/:$/, '');\n\n useInput((input, key) => {\n if (key.ctrl && input === 'c') {\n process.exit(1);\n return;\n }\n if (key.escape) {\n onCancel();\n exit();\n return;\n }\n });\n\n return (\n <Box flexDirection=\"column\">\n <InitStepFrame {...frame} />\n <Box flexDirection=\"column\" paddingX={1} marginTop={1}>\n <Box borderStyle=\"round\" borderColor=\"cyan\" paddingX={1} marginTop={1}>\n <Text color=\"gray\">{label}: </Text>\n <TextInput\n placeholder=\"acme-agents\"\n onSubmit={(nextValue) => {\n const trimmed = nextValue.trim();\n if (!trimmed) {\n return;\n }\n onSubmit(trimmed);\n exit();\n }}\n />\n </Box>\n <Text color=\"gray\">Type to edit, Enter to continue.</Text>\n </Box>\n </Box>\n );\n}\n\nexport async function promptProjectNameWithInk(\n question: string,\n frame: InitStepFrameState,\n): Promise<string | null> {\n let resolved: string | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <ProjectNamePrompt\n question={question}\n frame={frame}\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (cancelled) return null;\n return resolved ?? '';\n}\n\nexport interface LocalEnvInput {\n openrouterKey: string;\n openaiKey: string;\n adminPassword: string;\n}\n\ninterface LocalEnvPromptProps {\n frame: Pick<InitStepFrameState, 'projectName' | 'packageManager' | 'authMode'>;\n onCancel: () => void;\n onSubmit: (value: LocalEnvInput) => void;\n}\n\nconst LOCAL_ENV_FIELDS = [\n {\n id: 'openrouter',\n title: 'OpenRouter API key',\n description: 'Optional. Needed for OpenRouter models.',\n placeholder: 'sk-or-v1-... (optional)',\n },\n {\n id: 'openai',\n title: 'OpenAI API key',\n description: 'Optional. Needed for OpenAI models.',\n placeholder: 'sk-... (optional)',\n },\n {\n id: 'password',\n title: 'Temporary admin password',\n description: 'Press Enter to use default: admin',\n placeholder: 'admin',\n },\n] as const;\n\ntype LocalEnvFieldId = (typeof LOCAL_ENV_FIELDS)[number]['id'];\n\nfunction LocalEnvPrompt({ frame, onCancel, onSubmit }: LocalEnvPromptProps) {\n const { exit } = useApp();\n const [fieldIndex, setFieldIndex] = useState(0);\n const [draft, setDraft] = useState<Record<LocalEnvFieldId, string>>({\n openrouter: '',\n openai: '',\n password: '',\n });\n const activeField = LOCAL_ENV_FIELDS[fieldIndex];\n\n useInput((input, key) => {\n if (key.ctrl && input === 'c') {\n process.exit(1);\n return;\n }\n if (key.escape) {\n onCancel();\n exit();\n return;\n }\n });\n\n const maskFieldValue = (fieldId: LocalEnvFieldId, value: string): string => {\n if (!value) return '';\n if (fieldId === 'password') return '•'.repeat(value.length);\n return value;\n };\n\n return (\n <Box flexDirection=\"column\">\n <InitStepFrame\n stage=\"env\"\n title=\"Environment setup\"\n subtitle=\"Add optional provider keys and local admin access.\"\n projectName={frame.projectName}\n packageManager={frame.packageManager}\n authMode={frame.authMode}\n />\n <Box marginTop={1} paddingX={1} flexDirection=\"column\">\n {LOCAL_ENV_FIELDS.map((field, index) => {\n const isActive = index === fieldIndex;\n const isComplete = index < fieldIndex;\n const marker = isComplete ? '✓' : isActive ? '›' : '·';\n return (\n <Box key={field.id} flexDirection=\"column\" marginBottom={1}>\n <Text color={isActive ? 'cyanBright' : isComplete ? 'greenBright' : 'gray'} bold={isActive}>\n {marker} {field.title}\n </Text>\n <Text color=\"gray\">{field.description}</Text>\n {isActive ? (\n <Box borderStyle=\"round\" borderColor=\"cyan\" paddingX={1}>\n <TextInput\n key={field.id}\n defaultValue={draft[field.id]}\n placeholder={field.placeholder}\n onSubmit={(nextValue) => {\n const trimmed = nextValue.trim();\n const nextDraft = { ...draft, [field.id]: trimmed };\n setDraft(nextDraft);\n\n if (fieldIndex < LOCAL_ENV_FIELDS.length - 1) {\n setFieldIndex(fieldIndex + 1);\n return;\n }\n\n onSubmit({\n openrouterKey: nextDraft.openrouter,\n openaiKey: nextDraft.openai,\n adminPassword: nextDraft.password || 'admin',\n });\n exit();\n }}\n />\n </Box>\n ) : (\n <Text color={isComplete ? 'white' : 'gray'}>\n {maskFieldValue(field.id, draft[field.id]) || '(not set)'}\n </Text>\n )}\n </Box>\n );\n })}\n </Box>\n <Box paddingX={1}>\n <Text color=\"gray\">Press Enter to continue each field.</Text>\n </Box>\n </Box>\n );\n}\n\nexport async function collectLocalEnvWithInk(\n frame: Pick<InitStepFrameState, 'projectName' | 'packageManager' | 'authMode'>,\n): Promise<LocalEnvInput | null> {\n let resolved: LocalEnvInput | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <LocalEnvPrompt\n frame={frame}\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (cancelled) return null;\n return resolved;\n}\n\nexport function renderInitStepFrame(state: InitStepFrameState): string {\n return renderToString(<InitStepFrame {...state} />);\n}\n\nexport function renderInitCompleteFrame(input: {\n useExistingProject: boolean;\n projectName: string;\n nextCommand: string;\n bootstrapSession: boolean;\n}): string {\n return renderToString(\n <Box flexDirection=\"column\" paddingX={1}>\n <Box borderStyle=\"round\" borderColor=\"green\" paddingX={1} flexDirection=\"column\">\n <Text color=\"greenBright\" bold>\n Init Complete\n </Text>\n <Text color=\"whiteBright\">\n {input.useExistingProject ? 'Project updated successfully.' : 'Project created successfully.'}\n </Text>\n </Box>\n <Box marginTop={1} flexDirection=\"column\">\n <Text color=\"cyanBright\" bold>\n Next steps\n </Text>\n {!input.useExistingProject ? <Text color=\"white\">{` cd ${input.projectName}`}</Text> : null}\n <Text color=\"white\">{` ${input.nextCommand}`}</Text>\n </Box>\n {!input.bootstrapSession ? (\n <Box marginTop={1} flexDirection=\"column\">\n <Text color=\"yellowBright\" bold>\n Local-only notes\n </Text>\n <Text color=\"gray\"> 1. Sign in locally with username `admin` and your temporary `SUPER_ADMIN_PASSWORD`.</Text>\n <Text color=\"gray\"> 2. Create a standard user account for yourself.</Text>\n <Text color=\"gray\"> 3. Remove `SUPER_ADMIN_PASSWORD` from `.dev.vars` once setup is complete.</Text>\n </Box>\n ) : null}\n <Box marginTop={1}>\n <Text color=\"gray\">Docs: https://standardagents.ai/docs</Text>\n </Box>\n </Box>,\n );\n}\n\nexport async function selectPackageManagerWithInk(\n detected: InitPackageManager,\n context: {\n projectName?: string;\n authMode?: InitAuthMode;\n } = {},\n): Promise<InitPackageManager | null> {\n const options: SelectOption<InitPackageManager>[] = [\n { value: 'npm', label: 'npm', description: 'Default Node package manager.', badge: detected === 'npm' ? '(detected)' : undefined },\n { value: 'pnpm', label: 'pnpm', description: 'Fast, space-efficient monorepo manager.', badge: detected === 'pnpm' ? '(detected)' : undefined },\n { value: 'yarn', label: 'yarn', description: 'Classic workspace package manager.', badge: detected === 'yarn' ? '(detected)' : undefined },\n { value: 'bun', label: 'bun', description: 'Bun runtime package manager.', badge: detected === 'bun' ? '(detected)' : undefined },\n ];\n\n function PackageManagerPrompt({\n onCancel,\n onSubmit,\n }: {\n onCancel: () => void;\n onSubmit: (value: InitPackageManager) => void;\n }) {\n const { exit } = useApp();\n const [selectedIndex, setSelectedIndex] = useState(\n Math.max(0, options.findIndex((option) => option.value === detected)),\n );\n const selectedPm = options[selectedIndex]?.value ?? detected;\n\n useInput((input, key) => {\n if (key.upArrow || input === 'k') {\n setSelectedIndex((prev) => (prev - 1 + options.length) % options.length);\n return;\n }\n if (key.downArrow || input === 'j') {\n setSelectedIndex((prev) => (prev + 1) % options.length);\n return;\n }\n if (key.return) {\n onSubmit(selectedPm);\n exit();\n return;\n }\n if (key.escape) {\n onCancel();\n exit();\n return;\n }\n if (key.ctrl && input === 'c') {\n process.exit(1);\n }\n });\n\n return (\n <Box flexDirection=\"column\">\n <InitStepFrame\n stage=\"project\"\n title=\"Creating project scaffold\"\n subtitle=\"Select package manager for install and scaffold commands.\"\n projectName={context.projectName}\n packageManager={selectedPm}\n authMode={context.authMode}\n />\n <Box marginTop={1} flexDirection=\"column\" paddingX={1}>\n {options.map((option, index) => {\n const selected = index === selectedIndex;\n return (\n <Box key={option.value} marginBottom={0}>\n <Text color={selected ? 'black' : 'white'} backgroundColor={selected ? 'cyan' : undefined} bold={selected}>\n {selected ? '›' : ' '} {option.label}\n {option.badge ? ` ${option.badge}` : ''}\n </Text>\n {option.description ? <Text color={selected ? 'cyan' : 'gray'}>{` ${option.description}`}</Text> : null}\n </Box>\n );\n })}\n </Box>\n <Box paddingX={1}>\n <Text color=\"gray\">Use arrows (or j/k), Enter to continue, Esc to return.</Text>\n </Box>\n </Box>\n );\n }\n\n let resolved: InitPackageManager | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <PackageManagerPrompt\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (cancelled) return null;\n return resolved;\n}\n\ninterface AuthModePromptProps {\n projectName?: string;\n packageManager?: string;\n onCancel: () => void;\n onSubmit: (value: InitAuthMode) => void;\n}\n\nfunction AuthModePrompt({ projectName, packageManager, onCancel, onSubmit }: AuthModePromptProps) {\n const { exit } = useApp();\n const options: SelectOption<InitAuthMode>[] = [\n {\n value: 'standardagents',\n label: 'StandardAgents',\n bullets: ['Free account', '$2 starting credit', 'Zero-config setup', 'Production deployments'],\n },\n {\n value: 'local',\n label: 'Local',\n bullets: ['Bring your own provider keys', 'Manual setup required', 'Local-only mode', 'Account required for production'],\n },\n ];\n const [selectedIndex, setSelectedIndex] = useState(0);\n const selectedMode = options[selectedIndex]?.value ?? 'standardagents';\n const columns = process.stdout.columns ?? 120;\n const horizontal = shouldUseSideBySideAuthCards(columns);\n const cardWidth = horizontal ? Math.max(34, Math.floor((columns - 8) / options.length)) : Math.max(42, columns - 6);\n\n useInput((input, key) => {\n if (key.upArrow || input === 'k' || key.leftArrow || input === 'h') {\n setSelectedIndex((prev) => (prev - 1 + options.length) % options.length);\n return;\n }\n if (key.downArrow || input === 'j' || key.rightArrow || input === 'l') {\n setSelectedIndex((prev) => (prev + 1) % options.length);\n return;\n }\n if (key.return) {\n onSubmit(selectedMode);\n exit();\n return;\n }\n if (key.escape) {\n onCancel();\n exit();\n return;\n }\n if (key.ctrl && input === 'c') {\n process.exit(1);\n }\n });\n\n return (\n <Box flexDirection=\"column\">\n <InitStepFrame\n stage=\"auth\"\n title=\"Account linking\"\n subtitle=\"Choose how this project should be configured.\"\n projectName={projectName}\n packageManager={packageManager}\n authMode={selectedMode}\n />\n <Box marginTop={1} paddingX={1} flexDirection={horizontal ? 'row' : 'column'}>\n {options.map((option, index) => (\n <Box key={option.value} marginBottom={horizontal ? 0 : 1}>\n <OptionCard option={option} selected={index === selectedIndex} width={cardWidth} />\n </Box>\n ))}\n </Box>\n <Box paddingX={1}>\n <Text color=\"gray\">Use Left/Right (or h/l), Enter to continue, Esc to return.</Text>\n </Box>\n </Box>\n );\n}\n\nexport async function selectInitAuthModeWithInk(context: {\n projectName?: string;\n packageManager?: string;\n} = {}): Promise<InitAuthMode | null> {\n let resolved: InitAuthMode | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <AuthModePrompt\n projectName={context.projectName}\n packageManager={context.packageManager}\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (cancelled) return null;\n return resolved;\n}\n","import path from 'node:path';\nimport fs from 'node:fs';\nimport crypto from 'node:crypto';\nimport os from 'node:os';\nimport net from 'node:net';\nimport readline from 'node:readline';\nimport { spawn } from 'node:child_process';\nimport { fileURLToPath } from 'node:url';\nimport {\n FIRST_PARTY_PROVIDER_PACKAGES,\n renderAgentBuilderSupportFiles,\n type PackageManager,\n} from '@standardagents/agentbuilder-template';\nimport { logger } from '../utils/logger.js';\nimport {\n loadBootstrapState,\n persistBootstrapState,\n type BootstrapSessionState,\n} from '../utils/bootstrap-state.js';\nimport {\n cancelCliAuthSession,\n openBrowser,\n resolvePlatformAuthBrowserUrl,\n startCliAuthSession,\n waitForCliAuthCompletion,\n} from '../utils/cli-auth-api.js';\nimport { scaffold } from './scaffold.js';\nimport {\n collectLocalEnvWithInk,\n getInitStepInfo,\n promptProjectNameWithInk,\n renderInitCompleteFrame,\n renderInitStepFrame,\n selectInitAuthModeWithInk,\n selectPackageManagerWithInk,\n shouldUseSideBySideAuthCards as shouldUseSideBySideAuthCardsInk,\n type InitAuthMode,\n type InitProgressStage,\n} from '../tui/init-ui.js';\n\nexport interface InitOptions {\n yes?: boolean;\n local?: boolean;\n cli?: boolean;\n returnToHomeOnCancel?: boolean; // internal: used when init is launched from the home TUI\n template?: string;\n bootstrap?: string;\n apiUrl?: string;\n endpoint?: string;\n packageManager?: string;\n workspace?: boolean;\n dev?: boolean; // --no-dev sets this false: clone + configure without starting the dev server\n}\n\ninterface PlatformCliStartResponse {\n session_id: string;\n auth_url: string;\n ws_url: string;\n status_url?: string;\n expires_at: number;\n}\n\ninterface PlatformProjectPayload {\n id: string;\n name: string;\n repo_clone_url: string;\n repo_html_url: string | null;\n git_extra_header?: string | null;\n default_branch: string;\n api_key: string;\n package_manager: string | null;\n}\n\ninterface PlatformAuthMessage {\n type: string;\n project?: PlatformProjectPayload;\n command?: string;\n bootstrap_code?: string;\n}\n\nexport interface PlatformAuthProgress {\n status: string;\n message: string;\n updated_at: number;\n}\n\ninterface PlatformAuthStatusResponse {\n status: 'pending' | 'completed' | 'expired' | 'cancelled';\n type?: 'project' | 'bootstrap';\n project?: PlatformProjectPayload;\n command?: string;\n bootstrap_code?: string;\n progress?: PlatformAuthProgress | null;\n}\n\ninterface BootstrapConsumeSuccess {\n session_cookie: string;\n user: {\n id: string;\n email: string;\n role: string;\n };\n account: {\n id: string;\n slug?: string;\n tier?: string;\n };\n}\n\nconst DEFAULT_PLATFORM_ENDPOINT = 'https://api.standardagents.ai';\nconst INIT_TUI_ENV_VAR = 'STANDARDAGENTS_INIT_TUI';\nconst GENERATED_STANDARD_AGENTS_PACKAGES = [\n '@standardagents/builder',\n '@standardagents/spec',\n ...FIRST_PARTY_PROVIDER_PACKAGES,\n] as const;\nconst PACKAGE_MANAGERS = ['npm', 'pnpm', 'yarn', 'bun'] as const;\ntype SupportedPackageManager = typeof PACKAGE_MANAGERS[number];\nconst DEFAULT_PLATFORM_GIT_HELPER_COMMAND = '!npx -y @standardagents/cli@latest git-credential';\nconst MISSING_PLATFORM_PROJECT_NAME_MESSAGE =\n 'The platform did not return a project name. Please run the init command again to start a new project setup.';\nconst LEGACY_BOOTSTRAP_RESPONSE_MESSAGE =\n 'The platform returned an older onboarding response. Please run the init command again to start a new project setup.';\nexport const INIT_WIZARD_RETURN_TO_HOME_EXIT_CODE = 90;\n\ninterface EnsureAuthResult {\n connected: boolean;\n mode: InitAuthMode;\n}\n\ninterface InitStepHeaderOptions {\n tuiMode?: boolean;\n projectName?: string;\n packageManager?: string;\n authMode?: InitAuthMode;\n}\n\nclass InitWizardReturnToHomeError extends Error {\n constructor() {\n super('Return to home');\n this.name = 'InitWizardReturnToHomeError';\n }\n}\n\nexport function isInitWizardReturnToHomeError(error: unknown): error is InitWizardReturnToHomeError {\n return error instanceof InitWizardReturnToHomeError;\n}\n\nfunction exitOrThrowReturnToHome(options: Pick<InitOptions, 'returnToHomeOnCancel'> = {}): never {\n if (options.returnToHomeOnCancel) {\n throw new InitWizardReturnToHomeError();\n }\n process.exit(INIT_WIZARD_RETURN_TO_HOME_EXIT_CODE);\n}\n\nasync function prompt(question: string): Promise<string> {\n if (process.stdin.isTTY && process.stdin.isRaw) {\n process.stdin.setRawMode(false);\n }\n process.stdin.resume();\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n let settled = false;\n const finalize = (answer: string) => {\n if (settled) return;\n settled = true;\n resolve(answer.trim());\n };\n\n rl.on('SIGINT', () => {\n process.stdout.write('\\n');\n process.exit(130);\n });\n\n rl.once('close', () => {\n if (!settled) {\n finalize('');\n }\n });\n\n rl.question(question, (answer) => {\n finalize(answer);\n rl.close();\n });\n });\n}\n\nexport function parseBootstrapCodeInput(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) return '';\n\n const flagMatch = trimmed.match(/--bootstrap(?:=|\\s+)(?:\"([^\"]+)\"|'([^']+)'|([^\\s]+))/);\n if (flagMatch) {\n return (flagMatch[1] || flagMatch[2] || flagMatch[3] || '').trim();\n }\n\n return trimmed;\n}\n\nexport function shouldSkipBrowserOpen(value?: string | null): boolean {\n return /^(none|false|0|off)$/i.test(value?.trim() ?? '');\n}\n\nfunction openUrl(url: string): void {\n const preferredBrowser = process.env.STANDARD_AGENTS_BROWSER?.trim() || process.env.BROWSER?.trim();\n if (shouldSkipBrowserOpen(preferredBrowser)) {\n return;\n }\n\n const command = process.platform === 'darwin'\n ? 'open'\n : process.platform === 'win32'\n ? 'cmd'\n : 'xdg-open';\n const args = process.platform === 'darwin' && preferredBrowser\n ? ['-a', preferredBrowser, url]\n : process.platform === 'win32'\n ? ['/c', 'start', '', url]\n : [url];\n const child = spawn(command, args, { stdio: 'ignore', detached: true });\n child.on('error', () => {\n // Browser handoff is best-effort; onboarding continues in the terminal.\n });\n child.unref();\n}\n\nasync function promptPassword(question: string): Promise<string> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n stdout.write(question);\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n let password = '';\n let settled = false;\n\n const cleanup = () => {\n if (stdin.isTTY) {\n stdin.setRawMode(wasRaw ?? false);\n }\n stdin.pause();\n stdin.removeListener('data', onData);\n stdin.removeListener('end', onEndOrClose);\n stdin.removeListener('close', onEndOrClose);\n };\n\n const finalize = (value: string) => {\n if (settled) return;\n settled = true;\n cleanup();\n resolve(value);\n };\n\n const onEndOrClose = () => {\n stdout.write('\\n');\n finalize(password);\n };\n\n const onData = (char: string) => {\n const c = char.toString();\n\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u0004': // Ctrl+D\n stdout.write('\\n');\n finalize(password);\n break;\n case '\\u0003': // Ctrl+C\n stdout.write('\\n');\n process.exit(1);\n break;\n case '\\u007F': // Backspace\n case '\\b':\n if (password.length > 0) {\n password = password.slice(0, -1);\n stdout.clearLine(0);\n stdout.cursorTo(0);\n stdout.write(question + '*'.repeat(password.length));\n }\n break;\n default:\n password += c;\n stdout.write('*');\n break;\n }\n };\n\n stdin.on('data', onData);\n stdin.once('end', onEndOrClose);\n stdin.once('close', onEndOrClose);\n });\n}\n\ninterface RunCommandOptions {\n quiet?: boolean;\n}\n\nconst SPINNER_FRAMES = ['-', '\\\\', '|', '/'] as const;\n\nasync function withTuiSpinner<T>(\n enabled: boolean,\n label: string,\n operation: () => Promise<T>,\n): Promise<T> {\n if (!enabled || !process.stdout.isTTY) {\n return operation();\n }\n\n let index = 0;\n process.stdout.write('\\n');\n const renderFrame = (prefix: string) => {\n process.stdout.write(`\\r${prefix} ${label}`);\n };\n\n renderFrame(SPINNER_FRAMES[index]);\n const timer = setInterval(() => {\n index = (index + 1) % SPINNER_FRAMES.length;\n renderFrame(SPINNER_FRAMES[index]);\n }, 80);\n\n try {\n const result = await operation();\n clearInterval(timer);\n renderFrame('✓');\n process.stdout.write('\\n');\n return result;\n } catch (error) {\n clearInterval(timer);\n renderFrame('!');\n process.stdout.write('\\n');\n throw error;\n }\n}\n\nfunction appendOutputTail(existing: string, chunk: string, maxLength = 8000): string {\n const combined = existing + chunk;\n if (combined.length <= maxLength) return combined;\n return combined.slice(combined.length - maxLength);\n}\n\nfunction runCommand(command: string, args: string[], cwd: string, options: RunCommandOptions = {}): Promise<void> {\n return new Promise((resolve, reject) => {\n const quiet = options.quiet ?? false;\n const child = spawn(command, args, {\n cwd,\n stdio: quiet ? ['ignore', 'pipe', 'pipe'] : 'inherit',\n shell: false,\n });\n\n let outputTail = '';\n if (quiet) {\n child.stdout?.on('data', (chunk: Buffer | string) => {\n outputTail = appendOutputTail(outputTail, chunk.toString());\n });\n child.stderr?.on('data', (chunk: Buffer | string) => {\n outputTail = appendOutputTail(outputTail, chunk.toString());\n });\n }\n\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n const details = outputTail.trim();\n if (details) {\n reject(new Error(`Command failed with exit code ${code}\\n${details}`));\n return;\n }\n reject(new Error(`Command failed with exit code ${code}`));\n }\n });\n\n child.on('error', reject);\n });\n}\n\nconst DEV_SERVER_LOG_FILE = '.agentbuilder-dev.log';\n\n// Starts the dev server detached, capturing its output to a log file so a\n// failed/slow startup can be surfaced to the user instead of vanishing.\nfunction startDetachedDevServer(command: string, args: string[], cwd: string): { logPath: string } {\n const logPath = path.join(cwd, DEV_SERVER_LOG_FILE);\n const logFd = fs.openSync(logPath, 'w');\n const child = spawn(command, args, {\n cwd,\n stdio: ['ignore', logFd, logFd],\n shell: false,\n detached: true,\n });\n child.unref();\n // The child keeps its own dup of the fd; close the parent copy.\n fs.closeSync(logFd);\n return { logPath };\n}\n\nfunction readLogTail(logPath: string, maxLines = 20): string {\n try {\n const text = fs.readFileSync(logPath, 'utf-8').trimEnd();\n if (!text) return '';\n return text.split('\\n').slice(-maxLines).join('\\n');\n } catch {\n return '';\n }\n}\n\nexport function devCommandHint(packageManager: SupportedPackageManager): string {\n if (packageManager === 'npm') return 'npm run dev';\n if (packageManager === 'bun') return 'bun run dev';\n return `${packageManager} dev`;\n}\n\nfunction canConnectToPort(port: number): Promise<boolean> {\n return new Promise((resolve) => {\n const socket = net.createConnection({ host: '127.0.0.1', port });\n socket.once('connect', () => {\n socket.destroy();\n resolve(true);\n });\n socket.once('error', () => resolve(false));\n socket.setTimeout(500, () => {\n socket.destroy();\n resolve(false);\n });\n });\n}\n\nasync function findAvailablePort(startPort: number): Promise<number> {\n for (let port = startPort; port < startPort + 100; port += 1) {\n if (!(await canConnectToPort(port))) return port;\n }\n throw new Error(`No available local dev port found near ${startPort}`);\n}\n\nexport function buildDevServerCommand(\n packageManager: SupportedPackageManager,\n port: number,\n): string[] {\n const viteArgs = ['--host', '127.0.0.1', '--port', String(port), '--strictPort'];\n return packageManager === 'npm'\n ? ['run', 'dev', '--', ...viteArgs]\n : ['dev', ...viteArgs];\n}\n\nexport async function waitForLocalDevServer(url: string, timeoutMs = 60_000): Promise<boolean> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n try {\n const response = await fetch(url, { cache: 'no-store' });\n if (response.ok) return true;\n } catch {\n // The dev server is still starting.\n }\n await sleep(500);\n }\n return false;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction toKebabCase(str: string): string {\n return str\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-') // Replace non-alphanumeric with hyphens\n .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens\n}\n\nexport function normalizeProjectName(raw: string): string {\n return toKebabCase(raw.trim());\n}\n\nfunction isNonEmptyDirectory(targetPath: string): boolean {\n if (!fs.existsSync(targetPath)) return false;\n const stat = fs.statSync(targetPath);\n if (!stat.isDirectory()) return false;\n return fs.readdirSync(targetPath).length > 0;\n}\n\nfunction hasBuilderDependency(targetPath: string): boolean {\n const packageJsonPath = path.join(targetPath, 'package.json');\n if (!fs.existsSync(packageJsonPath)) return false;\n\n try {\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')) as Record<string, any>;\n const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };\n return typeof deps === 'object' && Object.prototype.hasOwnProperty.call(deps, '@standardagents/builder');\n } catch {\n return false;\n }\n}\n\nexport function isStandardAgentsProjectDir(targetPath: string): boolean {\n const agentsDir = path.join(targetPath, 'agents');\n if (!fs.existsSync(agentsDir) || !fs.statSync(agentsDir).isDirectory()) {\n return false;\n }\n if (hasBuilderDependency(targetPath)) return true;\n\n return (\n fs.existsSync(path.join(targetPath, 'vite.config.ts')) &&\n fs.existsSync(path.join(targetPath, 'tsconfig.json'))\n );\n}\n\ninterface ProjectTarget {\n projectName: string;\n projectPath: string;\n existingBootstrapState: BootstrapSessionState | null;\n resumeBootstrap: boolean;\n useExistingProject: boolean;\n}\n\nexport async function resolveProjectTarget(\n cwd: string,\n initialProjectName: string | undefined,\n options: InitOptions,\n promptProjectName: (question: string) => Promise<string> = prompt,\n): Promise<ProjectTarget> {\n if (!initialProjectName && isStandardAgentsProjectDir(cwd)) {\n const dirName = path.basename(cwd) || 'standard-agents';\n const projectName = normalizeProjectName(dirName) || dirName;\n const existingBootstrapState = loadBootstrapState(cwd);\n return {\n projectName,\n projectPath: cwd,\n existingBootstrapState,\n resumeBootstrap: existingBootstrapState !== null,\n useExistingProject: true,\n };\n }\n let candidate = initialProjectName?.trim() ?? '';\n let hasPromptedOnce = false;\n\n while (true) {\n if (!candidate) {\n if (options.yes) {\n throw new Error('Project name is required');\n }\n candidate = (await promptProjectName(hasPromptedOnce ? 'Project name (try another): ' : 'Project name: ')).trim();\n hasPromptedOnce = true;\n continue;\n }\n\n const projectName = normalizeProjectName(candidate);\n if (!projectName) {\n if (options.yes) {\n throw new Error('Project name must include at least one letter or number');\n }\n logger.warning(`Project name \"${candidate}\" is invalid. Use letters and numbers.`);\n candidate = '';\n continue;\n }\n\n if (projectName !== candidate) {\n logger.info(`Using project directory \"${projectName}\"`);\n }\n\n const projectPath = path.join(cwd, projectName);\n const exists = fs.existsSync(projectPath);\n if (exists && !fs.statSync(projectPath).isDirectory()) {\n if (options.yes) {\n throw new Error(`Path \"${projectName}\" already exists and is not a directory`);\n }\n logger.warning(`Path \"${projectName}\" already exists and is not a directory.`);\n candidate = '';\n continue;\n }\n\n const existingBootstrapState = loadBootstrapState(projectPath);\n const resumeBootstrap = exists && existingBootstrapState !== null;\n const existingStandardAgentsProject = exists && isStandardAgentsProjectDir(projectPath);\n if (!resumeBootstrap && !existingStandardAgentsProject && isNonEmptyDirectory(projectPath)) {\n if (options.yes) {\n throw new Error(`Directory \"${projectName}\" already exists and is not empty`);\n }\n logger.warning(`Directory \"${projectName}\" already exists and is not empty.`);\n candidate = '';\n continue;\n }\n\n return {\n projectName,\n projectPath,\n existingBootstrapState,\n resumeBootstrap,\n useExistingProject: resumeBootstrap || existingStandardAgentsProject,\n };\n }\n}\n\nfunction detectPackageManager(): SupportedPackageManager {\n // Check environment variable first (most reliable when running via npx/pnpm exec)\n const userAgent = process.env.npm_config_user_agent;\n if (userAgent) {\n if (userAgent.includes('pnpm')) return 'pnpm';\n if (userAgent.includes('yarn')) return 'yarn';\n if (userAgent.includes('bun')) return 'bun';\n }\n\n // Check for lockfiles\n if (fs.existsSync('pnpm-lock.yaml')) return 'pnpm';\n if (fs.existsSync('yarn.lock')) return 'yarn';\n if (fs.existsSync('bun.lockb')) return 'bun';\n if (fs.existsSync('package-lock.json')) return 'npm';\n\n return 'npm';\n}\n\nexport function resolvePackageManager(\n requested: string | undefined,\n detected: SupportedPackageManager,\n): SupportedPackageManager {\n if (!requested) return detected;\n const normalized = requested.trim();\n if ((PACKAGE_MANAGERS as readonly string[]).includes(normalized)) {\n return normalized as SupportedPackageManager;\n }\n throw new Error('package-manager must be npm, pnpm, yarn, or bun');\n}\n\nexport function isInitTuiEnabled(options: Pick<InitOptions, 'yes' | 'cli'> = {}): boolean {\n if (options.yes) return false;\n if (options.cli) return false;\n if (!process.stdin.isTTY || !process.stdout.isTTY) return false;\n if (process.env[INIT_TUI_ENV_VAR] === '0') return false;\n return true;\n}\n\nfunction clearTerminalScreen(stdout: NodeJS.WriteStream = process.stdout): void {\n stdout.write('\\x1b[2J\\x1b[H');\n}\n\nfunction silenceLoggerOutput(enabled: boolean): () => void {\n if (!enabled) return () => {};\n\n const original = {\n success: logger.success,\n warning: logger.warning,\n info: logger.info,\n log: logger.log,\n };\n\n logger.success = () => {};\n logger.warning = () => {};\n logger.info = () => {};\n logger.log = () => {};\n\n return () => {\n logger.success = original.success;\n logger.warning = original.warning;\n logger.info = original.info;\n logger.log = original.log;\n };\n}\n\nfunction renderInitStepHeader(\n stage: InitProgressStage,\n title: string,\n subtitle?: string,\n options: InitStepHeaderOptions = {},\n): void {\n const mode = options.authMode ?? 'standardagents';\n const { step, total, labels } = getInitStepInfo(stage, mode);\n const progress = labels.map((label, index) => {\n const markerIndex = index + 1;\n if (markerIndex < step) return `✓ ${label}`;\n if (markerIndex === step) return `→ ${label}`;\n return `· ${label}`;\n }).join(' ');\n\n if (options.tuiMode) {\n clearTerminalScreen();\n process.stdout.write(\n renderInitStepFrame({\n stage,\n title,\n subtitle,\n projectName: options.projectName,\n packageManager: options.packageManager,\n authMode: options.authMode,\n }),\n );\n return;\n }\n\n logger.log('');\n logger.log(progress);\n logger.info(`Step ${step}/${total}: ${title}`);\n if (subtitle) {\n logger.log(subtitle);\n }\n logger.log('');\n}\n\nexport function shouldUseSideBySideAuthCards(columns: number): boolean {\n return shouldUseSideBySideAuthCardsInk(columns);\n}\n\nasync function selectInitAuthMode(context: {\n projectName?: string;\n packageManager?: string;\n} = {}): Promise<InitAuthMode> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n const answer = (await prompt('Setup mode: [S]tandardAgents or [L]ocal? (default: StandardAgents): ')).toLowerCase();\n if (answer === 'l' || answer === 'local') return 'local';\n return 'standardagents';\n }\n\n const selection = await selectInitAuthModeWithInk(context);\n if (!selection) {\n throw new InitWizardReturnToHomeError();\n }\n return selection;\n}\n\nasync function ensurePlatformAuth(\n options: InitOptions,\n quietLogs = false,\n context: {\n projectName?: string;\n packageManager?: string;\n } = {},\n): Promise<EnsureAuthResult> {\n const logInfo = (message: string) => {\n if (!quietLogs) logger.info(message);\n };\n const logWarning = (message: string) => {\n if (!quietLogs) logger.warning(message);\n };\n const logSuccess = (message: string) => {\n if (!quietLogs) logger.success(message);\n };\n const logLine = (message = '') => {\n if (!quietLogs) logger.log(message);\n };\n\n if (options.bootstrap?.trim()) {\n logInfo('Bootstrap code provided. Project will be connected during setup.');\n return { connected: true, mode: 'standardagents' };\n }\n\n if (options.yes) {\n logInfo('Skipping platform auth in non-interactive mode. Run \"agents login --bootstrap <code>\" later to connect.');\n return { connected: false, mode: 'local' };\n }\n\n const authMode = await selectInitAuthMode(context);\n if (authMode === 'local') {\n logInfo('Continuing in local-only mode. Run \"agents login --bootstrap <code>\" anytime to connect.');\n return { connected: false, mode: 'local' };\n }\n\n const endpoint = resolvePlatformEndpoint(options);\n let authAppUrl = resolvePlatformAuthBrowserUrl(endpoint);\n let sessionId: string | null = null;\n\n logLine('');\n logInfo('Starting StandardAgents account setup...');\n logLine(`Platform API: ${endpoint}`);\n\n try {\n const started = await startCliAuthSession(endpoint);\n sessionId = started.session_id;\n authAppUrl = started.auth_url;\n\n logLine(`Auth app: ${authAppUrl}`);\n logLine('');\n logLine('Complete login/signup in your browser. This window is waiting for realtime confirmation...');\n\n if (process.stdin.isTTY) {\n const opened = openBrowser(authAppUrl);\n if (opened) {\n logInfo('Opened browser for authentication.');\n } else {\n logWarning('Could not automatically open browser. Open the URL above manually.');\n }\n }\n\n try {\n const completion = await waitForCliAuthCompletion(started.ws_url, started.expires_at);\n options.bootstrap = completion.bootstrapCode;\n logSuccess('Authentication received from browser.');\n return { connected: true, mode: 'standardagents' };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Realtime auth handoff failed';\n logWarning(`${message} Switching to manual bootstrap command entry.`);\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to start realtime auth session';\n logWarning(`${message} Switching to manual bootstrap command entry.`);\n logLine(`Auth app: ${authAppUrl}`);\n }\n\n logLine('');\n const pasted = await prompt('Paste bootstrap code or full command (Enter to continue local-only): ');\n const bootstrapCode = parseBootstrapCodeInput(pasted);\n if (!bootstrapCode) {\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n logInfo('No bootstrap code provided. Continuing in local-only mode.');\n return { connected: false, mode: 'local' };\n }\n\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n options.bootstrap = bootstrapCode;\n logSuccess('Bootstrap code captured.');\n return { connected: true, mode: 'standardagents' };\n}\n\n// Injected at build time by tsup (see tsup.config.ts)\n// During publish, CLI_PUBLISH_VERSION env var is set to the actual version being published\ndeclare const __CLI_VERSION__: string;\ndeclare const __SIP_VERSION__: string;\n\nfunction getCliVersion(): string {\n return typeof __CLI_VERSION__ === 'undefined' ? 'latest' : __CLI_VERSION__;\n}\n\nfunction getSipVersion(): string {\n return typeof __SIP_VERSION__ === 'undefined' ? 'latest' : __SIP_VERSION__;\n}\n\nfunction shouldUseWorkspacePackages(options: Pick<InitOptions, 'workspace'>): boolean {\n return options.workspace === true || process.env.STANDARDAGENTS_WORKSPACE === '1';\n}\n\n/**\n * Resolve the package specifier used when installing @standardagents packages.\n *\n * - Workspace mode (`--workspace` or `STANDARDAGENTS_WORKSPACE=1`) uses `workspace:*`\n * and requires pnpm.\n * - Otherwise, install the exact CLI publish version.\n */\nexport function resolvePackageSpecifier(\n options: Pick<InitOptions, 'workspace'>,\n packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun',\n): string {\n if (!shouldUseWorkspacePackages(options)) {\n return getCliVersion();\n }\n\n if (packageManager !== 'pnpm') {\n throw new Error(\n 'Workspace package linking requires pnpm. Re-run with pnpm or remove --workspace.',\n );\n }\n\n return 'workspace:*';\n}\n\nexport function resolveStandardAgentsPackageSpecifier(\n packageName: string,\n packageSpecifier: string,\n): string {\n if (packageSpecifier === 'workspace:*' && packageName === '@standardagents/sip') {\n return getSipVersion();\n }\n\n return packageSpecifier;\n}\n\nfunction findWorkspaceRoot(startDir: string): string | null {\n let currentDir = startDir;\n\n while (true) {\n if (fs.existsSync(path.join(currentDir, 'pnpm-workspace.yaml'))) {\n return currentDir;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n return null;\n }\n\n currentDir = parentDir;\n }\n}\n\nexport function findStandardAgentsWorkspaceRoot(\n startDir = path.dirname(fileURLToPath(import.meta.url)),\n): string | null {\n const workspaceRoot = findWorkspaceRoot(startDir);\n if (!workspaceRoot) return null;\n\n const rootPackageJsonPath = path.join(workspaceRoot, 'package.json');\n if (!fs.existsSync(rootPackageJsonPath)) return null;\n\n try {\n const rootPackageJson = JSON.parse(fs.readFileSync(rootPackageJsonPath, 'utf-8')) as { name?: string };\n return rootPackageJson.name === 'standardagents' ? workspaceRoot : null;\n } catch {\n return null;\n }\n}\n\nexport function resolveStandardAgentsWorkspaceRoot(startDirs: string[] = [\n path.dirname(fileURLToPath(import.meta.url)),\n process.cwd(),\n]): string | null {\n const explicitRoot = process.env.STANDARDAGENTS_WORKSPACE_ROOT?.trim();\n if (explicitRoot) {\n const workspaceRoot = findStandardAgentsWorkspaceRoot(path.resolve(explicitRoot));\n if (workspaceRoot) return workspaceRoot;\n\n throw new Error(\n `STANDARDAGENTS_WORKSPACE_ROOT=${path.resolve(explicitRoot)} is not a Standard Agents workspace root`,\n );\n }\n\n for (const startDir of startDirs) {\n const workspaceRoot = findStandardAgentsWorkspaceRoot(startDir);\n if (workspaceRoot) return workspaceRoot;\n }\n\n return null;\n}\n\nfunction workspacePackageDir(workspaceRoot: string, packageName: string): string {\n return path.join(workspaceRoot, 'packages', packageName.replace('@standardagents/', ''));\n}\n\nfunction validateWorkspacePackageDir(packageName: string, packageDir: string): void {\n const dependencyPackageJsonPath = path.join(packageDir, 'package.json');\n if (!fs.existsSync(dependencyPackageJsonPath)) {\n throw new Error(`Could not find workspace package for ${packageName} at ${packageDir}`);\n }\n\n const dependencyPackageJson = JSON.parse(fs.readFileSync(dependencyPackageJsonPath, 'utf-8')) as {\n name?: string;\n };\n if (dependencyPackageJson.name !== packageName) {\n throw new Error(\n `Expected ${packageDir} to contain ${packageName}, found ${dependencyPackageJson.name ?? 'unknown package'}`,\n );\n }\n}\n\nexport function rewriteStandardAgentsDependenciesForWorkspace(\n projectPath: string,\n workspaceRoot: string,\n): string[] {\n const packageJsonPath = path.join(projectPath, 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')) as {\n dependencies?: Record<string, string>;\n };\n const dependencies = packageJson.dependencies ?? {};\n const linkedPackages: string[] = [];\n\n for (const packageName of GENERATED_STANDARD_AGENTS_PACKAGES) {\n if (!(packageName in dependencies)) continue;\n\n const packageDir = workspacePackageDir(workspaceRoot, packageName);\n validateWorkspacePackageDir(packageName, packageDir);\n\n dependencies[packageName] = `link:${packageDir}`;\n linkedPackages.push(packageName);\n }\n\n if (linkedPackages.length > 0) {\n packageJson.dependencies = dependencies;\n fs.writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf-8');\n }\n\n return linkedPackages;\n}\n\nfunction preparePlatformProjectDependencies(\n projectPath: string,\n packageManager: SupportedPackageManager,\n): string[] {\n if (process.env.STANDARDAGENTS_WORKSPACE !== '1') {\n return [];\n }\n if (packageManager !== 'pnpm') {\n throw new Error('STANDARDAGENTS_WORKSPACE=1 currently requires pnpm for local package linking');\n }\n\n const workspaceRoot = resolveStandardAgentsWorkspaceRoot();\n if (!workspaceRoot) {\n throw new Error('STANDARDAGENTS_WORKSPACE=1 was set, but no Standard Agents workspace root was found');\n }\n\n return rewriteStandardAgentsDependenciesForWorkspace(projectPath, workspaceRoot);\n}\n\nfunction shellQuote(value: string): string {\n return `\"${value.replace(/([\"\\\\$`])/g, '\\\\$1')}\"`\n}\n\nexport function findWorkspaceCommandRoot(projectPath: string): string | null {\n let current = path.dirname(projectPath);\n\n while (true) {\n const packageJsonPath = path.join(current, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n if (packageJson?.scripts && typeof packageJson.scripts['sandbox:hmr'] === 'string') {\n return current;\n }\n } catch {\n // Ignore invalid package.json files while walking upward.\n }\n }\n\n const parent = path.dirname(current);\n if (parent === current) {\n return null;\n }\n current = parent;\n }\n}\n\nexport function configureWorkspaceProjectScripts(projectPath: string, projectName: string): boolean {\n const packageJsonPath = path.join(projectPath, 'package.json');\n if (!fs.existsSync(packageJsonPath)) return false;\n\n const workspaceRoot = findWorkspaceCommandRoot(projectPath);\n if (!workspaceRoot) return false;\n\n const workspacePackageJsonPath = path.join(workspaceRoot, 'package.json');\n const workspacePackageJson = JSON.parse(fs.readFileSync(workspacePackageJsonPath, 'utf-8'));\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n const scripts =\n packageJson.scripts && typeof packageJson.scripts === 'object'\n ? packageJson.scripts\n : {};\n\n const relativeRoot = path.relative(projectPath, workspaceRoot) || '.';\n scripts['sandbox:hmr'] = `pnpm -C ${shellQuote(relativeRoot)} sandbox:hmr -- ${shellQuote(projectName)}`;\n if (workspacePackageJson?.scripts && typeof workspacePackageJson.scripts['cli:login:workspace'] === 'string') {\n scripts['cli:login:workspace'] = `pnpm -C ${shellQuote(relativeRoot)} cli:login:workspace -- ${shellQuote(projectName)}`;\n }\n packageJson.scripts = scripts;\n\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n return true;\n}\n\nexport function resolvePostInitRunCommand(\n packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun',\n projectPath: string,\n workspacePackages: boolean,\n): string {\n if (workspacePackages) {\n const packageJsonPath = path.join(projectPath, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n if (packageJson?.scripts && typeof packageJson.scripts['sandbox:hmr'] === 'string') {\n return packageManager === 'npm' ? 'npm run sandbox:hmr' : `${packageManager} sandbox:hmr`;\n }\n } catch {\n // Fall through to the standard dev command below.\n }\n }\n }\n\n return packageManager === 'npm' ? 'npm run dev' : `${packageManager} dev`;\n}\n\nasync function selectPackageManager(\n detected: 'npm' | 'pnpm' | 'yarn' | 'bun',\n context: {\n projectName?: string;\n authMode?: InitAuthMode;\n } = {},\n): Promise<'npm' | 'pnpm' | 'yarn' | 'bun'> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) return detected;\n const selection = await selectPackageManagerWithInk(detected, context);\n if (!selection) {\n throw new InitWizardReturnToHomeError();\n }\n return selection;\n}\n\nexport function resolvePlatformEndpoint(options: Pick<InitOptions, 'apiUrl' | 'endpoint'>): string {\n return options.endpoint || options.apiUrl || process.env.PLATFORM_ENDPOINT || DEFAULT_PLATFORM_ENDPOINT;\n}\n\nfunction isBootstrapConsumeSuccess(body: unknown): body is BootstrapConsumeSuccess {\n const candidate = body as BootstrapConsumeSuccess;\n return !!(\n candidate\n && candidate.user\n && typeof candidate.user.id === 'string'\n && typeof candidate.user.email === 'string'\n && typeof candidate.user.role === 'string'\n && candidate.account\n && typeof candidate.account.id === 'string'\n );\n}\n\nfunction formatBootstrapExchangeError(status: number, body: unknown): string {\n const payload = body as { error?: { message?: string }; message?: string };\n const message = payload?.error?.message || payload?.message;\n if (message) {\n return `Bootstrap exchange failed (${status}): ${message}`;\n }\n return `Bootstrap exchange failed (${status})`;\n}\n\nfunction extractSessionCookie(response: Response): string | null {\n const headersWithSetCookie = response.headers as Headers & {\n getSetCookie?: () => string[];\n };\n\n const extractFromLine = (value: string): string | null => {\n const trimmed = value.trim();\n if (!trimmed.toLowerCase().startsWith('session=')) return null;\n const semi = trimmed.indexOf(';');\n return semi === -1 ? trimmed : trimmed.slice(0, semi);\n };\n\n if (typeof headersWithSetCookie.getSetCookie === 'function') {\n for (const line of headersWithSetCookie.getSetCookie()) {\n const extracted = extractFromLine(line);\n if (extracted) return extracted;\n }\n }\n\n const combined = response.headers.get('set-cookie');\n if (!combined) return null;\n\n const combinedMatch = combined.match(/(?:^|,\\s*)(session=[^;,]+)/i);\n if (combinedMatch?.[1]) {\n return combinedMatch[1];\n }\n\n return extractFromLine(combined);\n}\n\nexport async function exchangeBootstrapCode(\n endpoint: string,\n code: string,\n fetchImpl: typeof fetch = fetch,\n): Promise<BootstrapConsumeSuccess> {\n const response = await fetchImpl(`${endpoint}/auth/bootstrap-code/consume`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ code }),\n });\n\n let body: unknown = {};\n try {\n body = await response.json();\n } catch {\n body = {};\n }\n\n if (!response.ok) {\n throw new Error(formatBootstrapExchangeError(response.status, body));\n }\n\n if (!isBootstrapConsumeSuccess(body)) {\n throw new Error('Bootstrap exchange failed: invalid response payload');\n }\n\n const sessionCookie = extractSessionCookie(response);\n if (!sessionCookie) {\n throw new Error('Bootstrap exchange failed: session cookie missing in response');\n }\n\n const parsed = body as Omit<BootstrapConsumeSuccess, 'session_cookie'>;\n return {\n session_cookie: sessionCookie,\n user: parsed.user,\n account: parsed.account,\n };\n}\n\nexport async function prepareBootstrapSession(\n projectPath: string,\n options: InitOptions,\n fetchImpl: typeof fetch = fetch,\n): Promise<{ state: BootstrapSessionState; resumed: boolean } | null> {\n const endpoint = resolvePlatformEndpoint(options);\n const existing = loadBootstrapState(projectPath);\n if (existing && existing.endpoint === endpoint) {\n return { state: existing, resumed: true };\n }\n\n const bootstrapCode = options.bootstrap?.trim();\n if (!bootstrapCode) return null;\n\n const consumed = await exchangeBootstrapCode(endpoint, bootstrapCode, fetchImpl);\n const state: BootstrapSessionState = {\n version: 1,\n endpoint,\n authenticated_at: Date.now(),\n session_cookie: consumed.session_cookie,\n user: consumed.user,\n account: consumed.account,\n };\n persistBootstrapState(projectPath, state);\n return { state, resumed: false };\n}\n\nexport function normalizeApiUrl(input?: string): string {\n return (\n input ||\n process.env.STANDARD_AGENTS_API_URL ||\n process.env.PLATFORM_ENDPOINT ||\n process.env.STANDARD_AGENTS_PLATFORM_URL ||\n DEFAULT_PLATFORM_ENDPOINT\n ).replace(/\\/+$/, '');\n}\n\nexport async function startPlatformCliSession(params: {\n endpoint: string;\n projectName?: string;\n packageManager: string;\n}): Promise<PlatformCliStartResponse> {\n const body: Record<string, string> = {\n machine_name: os.hostname(),\n package_manager: params.packageManager,\n };\n const projectName = params.projectName?.trim();\n if (projectName) {\n body.project_name = projectName;\n }\n\n let response: Response;\n try {\n response = await fetch(`${params.endpoint}/cli/auth/start`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n } catch (error) {\n throw new Error(\n `Could not reach the Standard Agents platform at ${params.endpoint}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n\n if (!response.ok) {\n const bodyText = await response.text().catch(() => '');\n throw new Error(`Platform auth failed to start (${response.status})${bodyText ? `: ${bodyText}` : ''}`);\n }\n\n return response.json() as Promise<PlatformCliStartResponse>;\n}\n\nexport function resolvePlatformProjectDirectoryName(\n project: { name: string },\n requestedProjectName?: string,\n): string {\n const platformName = project.name.trim();\n if (platformName) return platformName;\n\n const fallbackName = requestedProjectName?.trim();\n if (fallbackName) return fallbackName;\n\n throw new Error(MISSING_PLATFORM_PROJECT_NAME_MESSAGE);\n}\n\nexport function resolvePlatformProjectPackageManager(\n projectPackageManager: string | null | undefined,\n requestedPackageManager: SupportedPackageManager,\n): SupportedPackageManager {\n return resolvePackageManager(projectPackageManager ?? undefined, requestedPackageManager);\n}\n\nexport function sanitizeGitRemoteUrl(remoteUrl: string): string {\n try {\n const url = new URL(remoteUrl);\n url.username = '';\n url.password = '';\n return url.toString();\n } catch {\n return remoteUrl.replace(/\\/\\/[^/@\\s]+@/, '//');\n }\n}\n\nexport function cloneDisplayUrl(project: PlatformProjectPayload): string {\n return project.repo_html_url || sanitizeGitRemoteUrl(project.repo_clone_url);\n}\n\nexport function gitCloneArgs(project: PlatformProjectPayload, projectName: string): string[] {\n const args: string[] = [];\n if (project.git_extra_header) {\n args.push('-c', `http.extraHeader=${project.git_extra_header}`);\n }\n args.push('clone', project.repo_clone_url, projectName);\n return args;\n}\n\nexport function platformGitCredentialHelperCommand(cliEntry = process.argv[1] ?? ''): string {\n if (process.env.STANDARDAGENTS_WORKSPACE === '1' && cliEntry && fs.existsSync(cliEntry)) {\n return `!node ${shellQuote(path.resolve(cliEntry))} git-credential`;\n }\n if (process.env.STANDARD_AGENTS_GIT_HELPER?.trim()) {\n return process.env.STANDARD_AGENTS_GIT_HELPER.trim();\n }\n // Pin the helper to the CLI's own published version so prerelease installs\n // (e.g. @next) keep minting credentials with the matching CLI behavior.\n const cliVersion = getCliVersion();\n if (cliVersion !== 'latest') {\n return `!npx -y @standardagents/cli@${cliVersion} git-credential`;\n }\n return DEFAULT_PLATFORM_GIT_HELPER_COMMAND;\n}\n\nasync function configurePlatformGitCredentialHelper(projectPath: string): Promise<void> {\n await runCommand('git', ['config', 'credential.helper', platformGitCredentialHelperCommand()], projectPath);\n await runCommand('git', ['config', 'credential.useHttpPath', 'true'], projectPath);\n}\n\nfunction isRetryablePlatformAuthStatus(status: number): boolean {\n return status === 502 || status === 503 || status === 504;\n}\n\nexport async function waitForPlatformProjectStatus(\n statusUrl: string,\n expiresAt: number,\n options: {\n onProgress?: (progress: PlatformAuthProgress) => void;\n pollIntervalMs?: number;\n } = {},\n): Promise<PlatformProjectPayload> {\n let lastProgressKey = '';\n while (Date.now() < expiresAt) {\n const response = await fetch(statusUrl, {\n headers: { Accept: 'application/json' },\n });\n\n if (!response.ok) {\n if (isRetryablePlatformAuthStatus(response.status)) {\n await sleep(options.pollIntervalMs ?? 1_500);\n continue;\n }\n throw new Error(`Platform auth status failed (${response.status})`);\n }\n\n const status = await response.json() as PlatformAuthStatusResponse;\n if (status.progress?.message) {\n const progressKey = `${status.progress.status}:${status.progress.message}:${status.progress.updated_at}`;\n if (progressKey !== lastProgressKey) {\n lastProgressKey = progressKey;\n options.onProgress?.(status.progress);\n }\n }\n if (status.status === 'completed' && status.type === 'project' && status.project) {\n return status.project;\n }\n if (status.status === 'completed') {\n throw new Error(LEGACY_BOOTSTRAP_RESPONSE_MESSAGE);\n }\n if (status.status === 'expired') {\n throw new Error('Onboarding session expired. Run the init command again to start a new session.');\n }\n if (status.status === 'cancelled') {\n throw new Error('Onboarding was cancelled in the browser. Run the init command again when you are ready.');\n }\n\n await sleep(options.pollIntervalMs ?? 1_500);\n }\n\n throw new Error('Timed out waiting for platform project creation');\n}\n\nfunction waitForPlatformProjectWs(wsUrl: string, expiresAt: number): Promise<PlatformProjectPayload> {\n return new Promise((resolve, reject) => {\n const WebSocketCtor = globalThis.WebSocket;\n if (!WebSocketCtor) {\n reject(new Error('This Node.js runtime does not provide WebSocket support'));\n return;\n }\n\n const socket = new WebSocketCtor(wsUrl);\n const timeout = setTimeout(() => {\n socket.close();\n reject(new Error('Timed out waiting for platform project creation'));\n }, Math.max(1_000, expiresAt - Date.now()));\n\n socket.addEventListener('open', () => {\n socket.send(JSON.stringify({ type: 'ready' }));\n });\n\n socket.addEventListener('message', (event) => {\n const text = typeof event.data === 'string' ? event.data : '';\n const message = JSON.parse(text) as PlatformAuthMessage;\n if (message.type === 'authenticated' && message.project) {\n clearTimeout(timeout);\n socket.close();\n resolve(message.project);\n } else if (message.type === 'expired' || message.type === 'cancelled') {\n clearTimeout(timeout);\n socket.close();\n reject(new Error(\n message.type === 'expired'\n ? 'Onboarding session expired. Run the init command again to start a new session.'\n : 'Onboarding was cancelled in the browser. Run the init command again when you are ready.',\n ));\n } else if (message.command || message.bootstrap_code) {\n clearTimeout(timeout);\n socket.close();\n reject(new Error(LEGACY_BOOTSTRAP_RESPONSE_MESSAGE));\n }\n });\n\n socket.addEventListener('error', () => {\n clearTimeout(timeout);\n reject(new Error('Platform auth websocket failed'));\n });\n });\n}\n\nfunction waitForPlatformProject(\n session: PlatformCliStartResponse,\n onProgress?: (progress: PlatformAuthProgress) => void,\n): Promise<PlatformProjectPayload> {\n if (session.status_url) {\n return waitForPlatformProjectStatus(session.status_url, session.expires_at, { onProgress });\n }\n return waitForPlatformProjectWs(session.ws_url, session.expires_at);\n}\n\nfunction upsertEnvLine(lines: string[], key: string, value: string): string[] {\n return [\n ...lines.filter((line) => !line.startsWith(`${key}=`)),\n `${key}=${value}`,\n ];\n}\n\nfunction hasEnvLine(lines: string[], key: string): boolean {\n return lines.some((line) => line.startsWith(`${key}=`));\n}\n\nfunction appendGitignoreEntries(projectPath: string, heading: string, entries: string[]): void {\n const gitignorePath = path.join(projectPath, '.gitignore');\n const gitignoreContent = fs.existsSync(gitignorePath)\n ? fs.readFileSync(gitignorePath, 'utf-8')\n : '';\n const existingEntries = new Set(gitignoreContent.split(/\\r?\\n/));\n const missingEntries = entries.filter((entry) => !existingEntries.has(entry));\n if (missingEntries.length === 0) return;\n\n const prefix =\n gitignoreContent.length === 0\n ? ''\n : gitignoreContent.endsWith('\\n')\n ? '\\n'\n : '\\n\\n';\n fs.appendFileSync(gitignorePath, `${prefix}${heading}\\n${missingEntries.join('\\n')}\\n`);\n}\n\nexport function writeStandardAgentsSupportFiles(\n projectPath: string,\n params: {\n projectName: string;\n packageManager: SupportedPackageManager;\n },\n): string[] {\n const written: string[] = [];\n // Pin generated @standardagents/* dependencies to the CLI's own published\n // version so `npx @standardagents/cli@next init` produces a project on the\n // matching next-tagged releases instead of drifting back to `latest`.\n for (const supportFile of renderAgentBuilderSupportFiles({\n projectName: params.projectName,\n packageManager: params.packageManager as PackageManager,\n versions: {\n standardAgents: getCliVersion(),\n sip: getSipVersion(),\n },\n })) {\n const targetPath = path.join(projectPath, supportFile.path);\n if (fs.existsSync(targetPath)) continue;\n fs.mkdirSync(path.dirname(targetPath), { recursive: true });\n fs.writeFileSync(targetPath, supportFile.content, 'utf-8');\n written.push(supportFile.path);\n }\n\n if (written.includes('package.json')) {\n appendGitignoreEntries(projectPath, '# Standard Agents generated local support files', [\n 'package.json',\n 'package-lock.json',\n 'pnpm-lock.yaml',\n 'yarn.lock',\n 'bun.lock',\n 'bun.lockb',\n 'node_modules',\n ]);\n }\n\n // Local dev/build state must never be committed — builds run on the\n // Standard Agents platform from Artifacts git pushes, not on this machine.\n appendGitignoreEntries(projectPath, '# Standard Agents local dev state', [\n '.agents',\n '.wrangler',\n 'dist',\n ]);\n\n return written;\n}\n\nexport function supportFiles(options: { projectName?: string; packageManager?: string } = {}): void {\n let packageManager: SupportedPackageManager;\n try {\n packageManager = resolvePackageManager(options.packageManager, detectPackageManager());\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n\n const cwd = process.cwd();\n const projectName = normalizeProjectName(options.projectName ?? path.basename(cwd)) || 'standard-agents';\n const written = writeStandardAgentsSupportFiles(cwd, {\n projectName,\n packageManager,\n });\n if (written.length === 0) {\n logger.info('Standard Agents local support files already exist');\n return;\n }\n logger.success(`Wrote Standard Agents local support files: ${written.join(', ')}`);\n}\n\nexport function writeStandardAgentsEnv(projectPath: string, params: {\n apiKey: string;\n platformEndpoint: string;\n}): string {\n const envPath = path.join(projectPath, '.dev.vars');\n const existing = fs.existsSync(envPath) ? fs.readFileSync(envPath, 'utf-8') : '';\n let lines = existing\n .split(/\\r?\\n/)\n .filter((line) =>\n line.trim().length > 0 &&\n !line.startsWith('STANDARD_AGENTS_API_KEY=') &&\n !line.startsWith('PLATFORM_ENDPOINT=') &&\n !line.startsWith('STANDARD_AGENTS_API_URL=')\n );\n\n const needsEncryptionKey = !hasEnvLine(lines, 'ENCRYPTION_KEY');\n const needsAdminPassword = !hasEnvLine(lines, 'SUPER_ADMIN_PASSWORD');\n if (needsEncryptionKey || needsAdminPassword) {\n if (lines.length > 0) {\n lines.push('');\n }\n lines.push('# Local admin access');\n if (needsEncryptionKey) {\n lines.push(`ENCRYPTION_KEY=${crypto.randomBytes(32).toString('hex')}`);\n }\n if (needsAdminPassword) {\n lines.push('SUPER_ADMIN_PASSWORD=password');\n }\n }\n\n if (lines.length > 0) {\n lines.push('');\n }\n lines.push('# Standard Agents platform connection');\n lines = upsertEnvLine(lines, 'STANDARD_AGENTS_API_KEY', params.apiKey);\n lines = upsertEnvLine(lines, 'PLATFORM_ENDPOINT', params.platformEndpoint);\n lines = upsertEnvLine(lines, 'STANDARD_AGENTS_API_URL', params.platformEndpoint);\n fs.writeFileSync(envPath, lines.join('\\n').replace(/\\n{3,}/g, '\\n\\n').trim() + '\\n', 'utf-8');\n\n appendGitignoreEntries(projectPath, '# Standard Agents local platform token', ['.dev.vars']);\n\n return envPath;\n}\n\n// Bootstrap path: the project was already created in the browser, so exchange\n// the one-time code for a session, find the account's instance, and ask the\n// platform to re-issue clone credentials (fresh local API key + short-lived\n// git token). Returns the same payload shape the browser poll yields, so the\n// downstream clone/install/dev path is identical.\nexport async function resolveBootstrapProject(\n endpoint: string,\n code: string,\n fetchImpl: typeof fetch = fetch,\n): Promise<PlatformProjectPayload> {\n const consumed = await exchangeBootstrapCode(endpoint, code, fetchImpl);\n const cookie = consumed.session_cookie;\n\n const listResponse = await fetchImpl(`${endpoint}/projects`, {\n headers: { Accept: 'application/json', Cookie: cookie },\n });\n if (!listResponse.ok) {\n throw new Error(`Could not load your Standard Agents instance (${listResponse.status}).`);\n }\n const listBody = (await listResponse.json().catch(() => ({}))) as {\n projects?: Array<{ id?: unknown }>;\n };\n const projectId = listBody.projects?.find(\n (entry): entry is { id: string } => typeof entry?.id === 'string',\n )?.id;\n if (!projectId) {\n throw new Error('No Standard Agents instance found for this account. Create one in the dashboard first.');\n }\n\n const handoffResponse = await fetchImpl(`${endpoint}/projects/${projectId}/cli-handoff`, {\n method: 'POST',\n headers: { Accept: 'application/json', 'Content-Type': 'application/json', Cookie: cookie },\n body: '{}',\n });\n if (!handoffResponse.ok) {\n const text = await handoffResponse.text().catch(() => '');\n throw new Error(`Could not prepare your instance for local setup (${handoffResponse.status})${text ? `: ${text}` : ''}`);\n }\n const handoffBody = (await handoffResponse.json().catch(() => ({}))) as { project?: PlatformProjectPayload };\n if (!handoffBody.project?.repo_clone_url || !handoffBody.project.api_key) {\n throw new Error('Instance handoff response was missing clone details.');\n }\n return handoffBody.project;\n}\n\nasync function runPlatformInit(projectNameArg: string | undefined, options: InitOptions): Promise<void> {\n const cwd = process.cwd();\n\n let pm: SupportedPackageManager;\n try {\n pm = resolvePackageManager(options.packageManager, detectPackageManager());\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n\n const requestedProjectName = projectNameArg?.trim() || undefined;\n if (requestedProjectName && fs.existsSync(path.join(cwd, requestedProjectName))) {\n logger.error(`Directory \"${requestedProjectName}\" already exists`);\n process.exit(1);\n }\n\n const endpoint = normalizeApiUrl(options.apiUrl || options.endpoint);\n\n // A bootstrap code means the instance already exists (created in the browser),\n // so clone it directly. Otherwise run the interactive browser onboarding.\n let project: PlatformProjectPayload;\n if (options.bootstrap?.trim()) {\n logger.info('Connecting to your Standard Agents instance...');\n try {\n project = await resolveBootstrapProject(endpoint, options.bootstrap.trim());\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n } else {\n logger.info('Opening Standard Agents platform signup/login...');\n let session: PlatformCliStartResponse;\n try {\n session = await startPlatformCliSession({\n endpoint,\n projectName: requestedProjectName,\n packageManager: pm,\n });\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n\n openUrl(session.auth_url);\n logger.info('Finish the browser steps. I will stay here and continue automatically.');\n\n project = await waitForPlatformProject(session, (progress) => {\n logger.info(progress.message);\n });\n }\n const projectName = resolvePlatformProjectDirectoryName(project, requestedProjectName);\n const projectPackageManager = resolvePlatformProjectPackageManager(project.package_manager, pm);\n const projectPath = path.join(cwd, projectName);\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${projectName}\" already exists`);\n process.exit(1);\n }\n\n logger.success('Browser setup complete.');\n logger.info(`Cloning ${cloneDisplayUrl(project)}...`);\n await runCommand('git', gitCloneArgs(project, projectName), cwd);\n if (project.git_extra_header && project.repo_html_url) {\n await runCommand('git', ['remote', 'set-url', 'origin', project.repo_html_url], projectPath);\n }\n\n const supportFiles = writeStandardAgentsSupportFiles(projectPath, {\n projectName: project.name || projectName,\n packageManager: projectPackageManager,\n });\n if (supportFiles.length > 0) {\n logger.success(`Wrote generated local support files: ${supportFiles.join(', ')}.`);\n }\n\n const envPath = writeStandardAgentsEnv(projectPath, {\n apiKey: project.api_key,\n platformEndpoint: endpoint,\n });\n logger.success(`Wrote Standard Agents credentials to ${path.relative(cwd, envPath)}.`);\n if (project.git_extra_header) {\n await configurePlatformGitCredentialHelper(projectPath);\n logger.success('Configured git credentials for the platform repository.');\n }\n\n const linkedPackages = preparePlatformProjectDependencies(projectPath, projectPackageManager);\n if (linkedPackages.length > 0) {\n logger.info(`Workspace mode detected: linked ${linkedPackages.length} Standard Agents packages locally.`);\n }\n\n logger.info(`Installing dependencies with ${projectPackageManager}...`);\n await runCommand(projectPackageManager, ['install'], projectPath);\n\n const repoUrl = project.repo_html_url ?? project.repo_clone_url;\n const tokenLocation = path.relative(cwd, envPath);\n\n // --no-dev: clone + configure only (handy for CI/scripted setup).\n if (options.dev === false) {\n logger.success('Your Standard Agents instance is ready.');\n logger.log(`Repository: ${repoUrl}`);\n logger.log(`Local token: ${tokenLocation}`);\n logger.log('');\n logger.log('Start it whenever you like:');\n logger.log(` cd ${projectName}`);\n logger.log(` ${devCommandHint(projectPackageManager)}`);\n return;\n }\n\n const devPort = await findAvailablePort(5173);\n const devUrl = `http://127.0.0.1:${devPort}`;\n logger.info(`Starting local dev server at ${devUrl}...`);\n const { logPath } = startDetachedDevServer(\n projectPackageManager,\n buildDevServerCommand(projectPackageManager, devPort),\n projectPath,\n );\n const ready = await waitForLocalDevServer(devUrl);\n\n if (ready) {\n openUrl(devUrl);\n logger.success('Project is connected to Standard Agents.');\n logger.log(`Repository: ${repoUrl}`);\n logger.log(`Dev server: ${devUrl}`);\n logger.log(`Local token: ${tokenLocation}`);\n return;\n }\n\n // Clone + install + config all succeeded; only the dev server didn't come up\n // in time. Don't fail the whole setup — surface the cause and how to retry.\n logger.warning(`The dev server didn't respond at ${devUrl} within 60s.`);\n const tail = readLogTail(logPath);\n if (tail) {\n logger.log('');\n logger.log(`Last dev server output (full log: ${path.relative(cwd, logPath)}):`);\n logger.log(tail);\n }\n logger.log('');\n logger.success('Your Standard Agents instance is cloned, configured, and ready.');\n logger.log(`Repository: ${repoUrl}`);\n logger.log(`Local token: ${tokenLocation}`);\n logger.log('');\n logger.log('Once any error above is resolved, start it with:');\n logger.log(` cd ${projectName}`);\n logger.log(` ${devCommandHint(projectPackageManager)}`);\n}\n\nexport async function init(projectNameArg?: string, options: InitOptions = {}) {\n if (!options.local) {\n await runPlatformInit(projectNameArg, options);\n return;\n }\n\n const cwd = process.cwd();\n const detectedPm = detectPackageManager();\n const template = options.template || 'vanilla-ts';\n const initTuiMode = isInitTuiEnabled(options);\n if (initTuiMode) {\n clearTerminalScreen();\n }\n const logInfo = (message: string) => {\n if (!initTuiMode) logger.info(message);\n };\n const logWarning = (message: string) => {\n if (!initTuiMode) logger.warning(message);\n };\n const logSuccess = (message: string) => {\n if (!initTuiMode) logger.success(message);\n };\n const logLine = (message = '') => {\n if (!initTuiMode) logger.log(message);\n };\n\n let projectName = '';\n let projectPath = '';\n let existingBootstrapState: BootstrapSessionState | null = null;\n let resumeBootstrap = false;\n let useExistingProject = false;\n const headerOptions: InitStepHeaderOptions = { tuiMode: initTuiMode };\n const promptProjectName = async (question: string): Promise<string> => {\n if (!initTuiMode) {\n return prompt(question);\n }\n clearTerminalScreen();\n const value = await promptProjectNameWithInk(question, {\n stage: 'project',\n title: 'Creating project scaffold',\n subtitle: 'Choose the directory name for your new project.',\n projectName: headerOptions.projectName,\n packageManager: headerOptions.packageManager,\n authMode: headerOptions.authMode,\n });\n if (value === null) {\n throw new InitWizardReturnToHomeError();\n }\n return value;\n };\n try {\n const target = await resolveProjectTarget(cwd, projectNameArg, options, promptProjectName);\n projectName = target.projectName;\n projectPath = target.projectPath;\n existingBootstrapState = target.existingBootstrapState;\n resumeBootstrap = target.resumeBootstrap;\n useExistingProject = target.useExistingProject;\n headerOptions.projectName = projectName;\n } catch (error) {\n if (isInitWizardReturnToHomeError(error)) {\n exitOrThrowReturnToHome(options);\n }\n logger.error(error instanceof Error ? error.message : 'Project name is required');\n process.exit(1);\n }\n\n renderInitStepHeader(\n 'project',\n useExistingProject ? 'Inspecting existing project' : 'Creating project scaffold',\n useExistingProject\n ? `Using \"${projectName}\" in the current workspace.`\n : `Preparing \"${projectName}\" with template \"${template}\".`,\n headerOptions,\n );\n\n if (useExistingProject) {\n logInfo(`Using existing Standard Agents project \"${projectName}\"...`);\n } else {\n logInfo('Creating a new Standard Agents project...');\n }\n\n // Select package manager\n let pm: SupportedPackageManager;\n if (options.packageManager) {\n try {\n pm = resolvePackageManager(options.packageManager, detectedPm);\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n } else if (useExistingProject || options.yes) {\n pm = detectedPm;\n } else {\n try {\n pm = await selectPackageManager(detectedPm, {\n projectName: headerOptions.projectName,\n authMode: headerOptions.authMode,\n });\n } catch (error) {\n if (isInitWizardReturnToHomeError(error)) {\n exitOrThrowReturnToHome(options);\n }\n throw error;\n }\n logLine('');\n }\n\n headerOptions.packageManager = pm;\n logInfo(`Using package manager: ${pm}`);\n\n let packageSpecifier = '';\n try {\n packageSpecifier = resolvePackageSpecifier(options, pm);\n } catch (error) {\n logger.error(error instanceof Error ? error.message : 'Invalid package install mode');\n process.exit(1);\n }\n\n const providedBootstrap = options.bootstrap?.trim() ?? '';\n if (providedBootstrap) {\n logInfo('Bootstrap code supplied.');\n } else if (existingBootstrapState) {\n logInfo('Found existing StandardAgents auth session for this project.');\n } else {\n logInfo('No StandardAgents CLI auth session found.');\n }\n logLine('');\n\n const willShowAuthCardPrompt =\n initTuiMode &&\n !existingBootstrapState &&\n !providedBootstrap &&\n !options.yes;\n if (!willShowAuthCardPrompt) {\n renderInitStepHeader(\n 'auth',\n 'Account linking',\n existingBootstrapState\n ? 'Reusing saved project auth session if compatible with endpoint.'\n : 'Choose StandardAgents or Local mode.',\n headerOptions,\n );\n }\n\n let authResult: EnsureAuthResult = { connected: false, mode: 'local' };\n if (!existingBootstrapState) {\n try {\n authResult = await ensurePlatformAuth(options, initTuiMode, {\n projectName: headerOptions.projectName,\n packageManager: headerOptions.packageManager,\n });\n } catch (error) {\n if (isInitWizardReturnToHomeError(error)) {\n exitOrThrowReturnToHome(options);\n }\n throw error;\n }\n } else {\n authResult = { connected: true, mode: 'standardagents' };\n }\n headerOptions.authMode = authResult.mode;\n\n const bootstrapRequested = Boolean(options.bootstrap?.trim()) || existingBootstrapState !== null;\n if (!bootstrapRequested && authResult.mode === 'local') {\n logInfo('Continuing in Local mode (no org link yet).');\n }\n\n let bootstrapSession: BootstrapSessionState | null = null;\n const isManagedOrgMode = authResult.mode === 'standardagents';\n\n if (!isManagedOrgMode) {\n renderInitStepHeader(\n 'env',\n 'Environment setup',\n 'Collecting local credentials and writing .dev.vars.',\n headerOptions,\n );\n }\n\n // Generate encryption key\n const encryptionKey = crypto.randomBytes(32).toString('hex');\n\n // Ask for API keys and admin password\n let openrouterKey = '';\n let openaiKey = '';\n let adminPassword = '';\n\n if (isManagedOrgMode) {\n logInfo('Managed Standard Agents auth detected. Skipping local provider/admin prompts.');\n } else if (!options.yes) {\n if (initTuiMode) {\n const localEnvInput = await collectLocalEnvWithInk({\n projectName: headerOptions.projectName,\n packageManager: headerOptions.packageManager,\n authMode: headerOptions.authMode,\n });\n if (!localEnvInput) {\n exitOrThrowReturnToHome(options);\n }\n openrouterKey = localEnvInput.openrouterKey;\n openaiKey = localEnvInput.openaiKey;\n adminPassword = localEnvInput.adminPassword;\n } else {\n logLine('API keys are optional but required to use AI models.');\n logLine('You can add them later by editing .dev.vars');\n logLine('');\n\n openrouterKey = await prompt('OpenRouter API key (optional, press Enter to skip): ');\n openaiKey = await prompt('OpenAI API key (optional, press Enter to skip): ');\n\n logLine('');\n logLine('Set a temporary admin password for development access.');\n logLine('Press Enter to use the default password \"admin\".');\n logLine('');\n\n while (true) {\n adminPassword = await promptPassword('Temporary admin password: ');\n\n if (!adminPassword) {\n adminPassword = 'admin';\n break;\n }\n\n const confirmPassword = await promptPassword('Confirm password: ');\n\n if (adminPassword === confirmPassword) {\n break;\n } else {\n logWarning('Passwords do not match. Please try again.');\n logLine('');\n adminPassword = '';\n }\n }\n }\n }\n\n // Default admin password if not provided (for --yes flag)\n if (!isManagedOrgMode && !adminPassword) {\n adminPassword = 'admin';\n }\n\n renderInitStepHeader(\n 'scaffold',\n 'Scaffold project',\n 'Installing dependencies and applying Standard Agents project structure.',\n headerOptions,\n );\n\n if (!useExistingProject) {\n logInfo(`Running create-vite (${template})...`);\n\n try {\n await withTuiSpinner(initTuiMode, 'Creating Vite project...', async () => {\n // Determine the correct create command based on package manager\n // All package managers should use create-vite@latest to ensure the latest version\n // Use --no-interactive to skip prompts (like \"Install with npm and start now?\")\n let createCmd: string;\n let createArgs: string[];\n\n switch (pm) {\n case 'pnpm':\n createCmd = 'pnpm';\n createArgs = ['create', 'vite@latest', projectName, '--template', template, '--no-interactive'];\n break;\n case 'yarn':\n createCmd = 'yarn';\n createArgs = ['create', 'vite@latest', projectName, '--template', template, '--no-interactive'];\n break;\n case 'bun':\n createCmd = 'bun';\n createArgs = ['create', 'vite@latest', projectName, '--template', template, '--no-interactive'];\n break;\n default:\n createCmd = 'npm';\n createArgs = ['create', 'vite@latest', projectName, '--', '--template', template, '--no-interactive'];\n }\n\n await runCommand(createCmd, createArgs, cwd, { quiet: initTuiMode });\n });\n } catch (error) {\n logger.error(\n error instanceof Error\n ? `Failed to create Vite project: ${error.message}`\n : 'Failed to create Vite project',\n );\n process.exit(1);\n }\n\n // Create vite.config.ts if it doesn't exist (some templates may not include one)\n const viteConfigPath = path.join(projectPath, 'vite.config.ts');\n if (!fs.existsSync(viteConfigPath)) {\n const viteConfigContent = `import { defineConfig } from 'vite'\n\nexport default defineConfig({\n plugins: [],\n})\n`;\n fs.writeFileSync(viteConfigPath, viteConfigContent, 'utf-8');\n logSuccess('Created vite.config.ts');\n }\n\n } else if (resumeBootstrap) {\n logInfo(`Resuming bootstrap-authenticated init in existing directory \"${projectName}\"...`);\n } else {\n logInfo(`Detected existing Standard Agents project in \"${projectName}\".`);\n }\n\n // Update package.json name to kebab-case (handles spaces and special characters)\n // and inject local-only helper scripts when workspace mode is active.\n const packageJsonPath = path.join(projectPath, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n const kebabName = toKebabCase(projectName);\n if (packageJson.name !== kebabName) {\n packageJson.name = kebabName;\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n }\n\n if (packageSpecifier === 'workspace:*' && configureWorkspaceProjectScripts(projectPath, projectName)) {\n logInfo('Configured local workspace helper scripts for sandbox HMR and re-auth.');\n }\n }\n\n if (bootstrapRequested) {\n logInfo('Exchanging bootstrap code and persisting local project auth...');\n\n try {\n const prepared = await prepareBootstrapSession(projectPath, options);\n if (!prepared) {\n logger.error('No resumable bootstrap session found. Provide --bootstrap <code>.');\n process.exit(1);\n }\n bootstrapSession = prepared.state;\n if (prepared.resumed) {\n logSuccess('Reused existing authenticated bootstrap session');\n } else {\n logSuccess('Bootstrap code exchanged and local auth session persisted');\n }\n } catch (error) {\n logger.error(error instanceof Error ? error.message : 'Bootstrap exchange failed');\n process.exit(1);\n }\n }\n\n try {\n const installCmd = pm === 'npm' ? 'install' : 'add';\n\n if (packageSpecifier === 'workspace:*') {\n logInfo('Using local workspace @standardagents/* packages (workspace:*).');\n }\n\n await withTuiSpinner(initTuiMode, 'Installing dependencies...', async () => {\n // Build list of regular dependencies\n // All @standardagents packages are version-locked to CLI version\n // We explicitly install all packages at the exact version to avoid\n // npm/pnpm resolving transitive deps with semver ranges (which excludes prereleases)\n const standardAgentsPackage = (packageName: string) =>\n `${packageName}@${resolveStandardAgentsPackageSpecifier(packageName, packageSpecifier)}`;\n const deps = [\n standardAgentsPackage('@standardagents/builder'),\n standardAgentsPackage('@standardagents/spec'),\n standardAgentsPackage('@standardagents/sip'),\n 'zod'\n ];\n\n // Add provider packages based on API keys provided\n if (openaiKey) {\n deps.push(standardAgentsPackage('@standardagents/openai'));\n }\n if (openrouterKey) {\n deps.push(standardAgentsPackage('@standardagents/openrouter'));\n }\n\n // Install regular dependencies (builder needs to be in dependencies, not devDependencies)\n await runCommand(pm, [installCmd, ...deps], projectPath, { quiet: initTuiMode });\n });\n } catch (error) {\n logger.error(\n error instanceof Error\n ? `Failed to install dependencies: ${error.message}`\n : 'Failed to install dependencies',\n );\n process.exit(1);\n }\n\n // Change to project directory for scaffold\n process.chdir(projectPath);\n\n try {\n const restoreLogger = silenceLoggerOutput(initTuiMode);\n try {\n await withTuiSpinner(initTuiMode, 'Scaffolding project files...', async () => {\n await scaffold({ force: true });\n });\n } finally {\n restoreLogger();\n }\n } catch (error) {\n if (bootstrapSession) {\n logWarning(\n `Scaffold failed after bootstrap authentication. Resume by rerunning: npx @standardagents/cli init ${projectName}`,\n );\n }\n logger.error(\n error instanceof Error\n ? `Failed to scaffold Standard Agents project: ${error.message}`\n : 'Failed to scaffold Standard Agents project',\n );\n process.exit(1);\n }\n\n // Write .dev.vars file with collected environment variables\n logInfo('Writing environment configuration...');\n\n // Create .dev.vars file\n const devVarsLines: string[] = [\n '# Standard Agents Environment Variables',\n '# This file contains secrets for local development only',\n '# Do not commit this file to version control',\n '',\n '# Encryption key for secure data (auto-generated)',\n `ENCRYPTION_KEY=${encryptionKey}`,\n ];\n\n const resolvedPlatformEndpoint = resolvePlatformEndpoint(options);\n if (isManagedOrgMode || options.endpoint || options.apiUrl || process.env.PLATFORM_ENDPOINT) {\n devVarsLines.push(\n '',\n '# Platform API endpoint for account, billing, and deploy integration',\n `PLATFORM_ENDPOINT=${resolvedPlatformEndpoint}`,\n );\n }\n\n if (!isManagedOrgMode) {\n devVarsLines.push(\n '',\n '# Temporary admin password for development access',\n `SUPER_ADMIN_PASSWORD=${adminPassword}`,\n );\n }\n\n if (bootstrapSession) {\n devVarsLines.push(\n '',\n '# Bootstrap-authenticated org context',\n `STANDARDAGENTS_ORG_ACCOUNT_ID=${bootstrapSession.account.id}`,\n `STANDARDAGENTS_ORG_USER_ID=${bootstrapSession.user.id}`,\n `STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE=${bootstrapSession.session_cookie}`,\n );\n if (bootstrapSession.account.slug) {\n devVarsLines.push(`STANDARDAGENTS_ORG_SLUG=${bootstrapSession.account.slug}`);\n }\n }\n\n if (isManagedOrgMode) {\n devVarsLines.push(\n '',\n '# Managed org mode',\n '# Model access, proxy routing, and credit are handled by your Standard Agents account.',\n '# Optional local overrides:',\n '# OPENROUTER_API_KEY=your-openrouter-key',\n '# OPENAI_API_KEY=your-openai-key',\n );\n } else {\n devVarsLines.push(\n '',\n '# AI Provider API Keys',\n '# Uncomment and add your keys as needed',\n );\n\n if (openrouterKey) {\n devVarsLines.push(`OPENROUTER_API_KEY=${openrouterKey}`);\n } else {\n devVarsLines.push('# OPENROUTER_API_KEY=your-openrouter-key');\n }\n\n if (openaiKey) {\n devVarsLines.push(`OPENAI_API_KEY=${openaiKey}`);\n } else {\n devVarsLines.push('# OPENAI_API_KEY=your-openai-key');\n }\n }\n\n devVarsLines.push('');\n\n const devVarsPath = path.join(projectPath, '.dev.vars');\n fs.writeFileSync(devVarsPath, devVarsLines.join('\\n'), 'utf-8');\n logSuccess('Created .dev.vars with encryption key');\n\n // Add .dev.vars to .gitignore if it exists\n const gitignorePath = path.join(projectPath, '.gitignore');\n if (fs.existsSync(gitignorePath)) {\n const gitignoreContent = fs.readFileSync(gitignorePath, 'utf-8');\n if (!gitignoreContent.includes('.dev.vars')) {\n fs.appendFileSync(gitignorePath, '\\n# Local environment variables\\n.dev.vars\\n');\n logSuccess('Added .dev.vars to .gitignore');\n }\n }\n\n // Done!\n const nextRunCommand = resolvePostInitRunCommand(pm, projectPath, packageSpecifier === 'workspace:*');\n if (initTuiMode) {\n clearTerminalScreen();\n process.stdout.write(\n renderInitCompleteFrame({\n useExistingProject,\n projectName,\n nextCommand: nextRunCommand,\n bootstrapSession: Boolean(bootstrapSession),\n }),\n );\n return;\n }\n\n logger.log('');\n logger.success(useExistingProject ? 'Project updated successfully!' : 'Project created successfully!');\n logger.log('');\n logger.log('Next steps:');\n logger.log('');\n if (!useExistingProject) {\n logger.log(` cd ${projectName}`);\n }\n logger.log(` ${nextRunCommand}`);\n logger.log('');\n if (!bootstrapSession) {\n logger.log('Local-only mode notes:');\n logger.log(' 1. Sign in locally with username `admin` and your temporary `SUPER_ADMIN_PASSWORD`.');\n logger.log(' 2. Create a standard user account for yourself.');\n logger.log(' 3. Remove `SUPER_ADMIN_PASSWORD` from `.dev.vars` once setup is complete.');\n logger.log('');\n }\n logger.log('For more information, visit: https://standardagents.ai/docs');\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport type { BootstrapSessionState } from './bootstrap-state.js';\n\nconst DEV_VARS_FILENAME = '.dev.vars';\n\nexport const PROJECT_AUTH_ENV_KEYS = [\n 'STANDARDAGENTS_ORG_ACCOUNT_ID',\n 'STANDARDAGENTS_ORG_USER_ID',\n 'STANDARDAGENTS_ORG_SLUG',\n 'STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE',\n] as const;\n\nfunction upsertEnvLine(lines: string[], key: string, value: string): void {\n const nextLine = `${key}=${value}`;\n const index = lines.findIndex((line) => line.startsWith(`${key}=`));\n if (index >= 0) {\n lines[index] = nextLine;\n return;\n }\n lines.push(nextLine);\n}\n\nexport function syncProjectAuthEnv(\n projectPath: string,\n endpoint: string,\n state: BootstrapSessionState,\n): void {\n const devVarsPath = path.join(projectPath, DEV_VARS_FILENAME);\n const existing = fs.existsSync(devVarsPath)\n ? fs.readFileSync(devVarsPath, 'utf-8')\n : '';\n\n const lines = existing ? existing.split('\\n') : [];\n\n if (endpoint.trim()) {\n upsertEnvLine(lines, 'PLATFORM_ENDPOINT', endpoint.trim());\n }\n\n upsertEnvLine(lines, 'STANDARDAGENTS_ORG_ACCOUNT_ID', state.account.id);\n upsertEnvLine(lines, 'STANDARDAGENTS_ORG_USER_ID', state.user.id);\n if (state.account.slug) {\n upsertEnvLine(lines, 'STANDARDAGENTS_ORG_SLUG', state.account.slug);\n }\n if (state.session_cookie) {\n upsertEnvLine(lines, 'STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE', state.session_cookie);\n }\n\n const normalized = lines.join('\\n').replace(/\\n*$/, '\\n');\n fs.writeFileSync(devVarsPath, normalized, 'utf-8');\n}\n","import readline from 'node:readline';\nimport { logger } from '../utils/logger.js';\nimport {\n loadBootstrapState,\n persistBootstrapState,\n type BootstrapSessionState,\n} from '../utils/bootstrap-state.js';\nimport { syncProjectAuthEnv } from '../utils/project-auth-env.js';\nimport { exchangeBootstrapCode, parseBootstrapCodeInput, resolvePlatformEndpoint } from './init.js';\nimport {\n cancelCliAuthSession,\n openBrowser,\n resolvePlatformAuthBrowserUrl,\n startCliAuthSession,\n waitForCliAuthCompletion,\n} from '../utils/cli-auth-api.js';\n\nexport interface LoginOptions {\n bootstrap?: string;\n endpoint?: string;\n open?: boolean;\n exitOnError?: boolean;\n}\n\nasync function prompt(question: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nexport async function loginWithBootstrap(\n projectPath: string,\n options: LoginOptions,\n fetchImpl: typeof fetch = fetch,\n): Promise<{ state: BootstrapSessionState; reused: boolean }> {\n const endpoint = resolvePlatformEndpoint({ endpoint: options.endpoint });\n const existing = loadBootstrapState(projectPath);\n\n if (existing && existing.endpoint === endpoint && existing.session_cookie && !options.bootstrap?.trim()) {\n syncProjectAuthEnv(projectPath, endpoint, existing);\n return { state: existing, reused: true };\n }\n\n const bootstrapCode = options.bootstrap?.trim();\n if (!bootstrapCode) {\n if (existing && existing.endpoint === endpoint && !existing.session_cookie) {\n throw new Error(\n 'Stored org session is missing credentials. Re-authenticate with: npx @standardagents/cli login --bootstrap <code>',\n );\n }\n throw new Error('Bootstrap code required. Run: npx @standardagents/cli login --bootstrap <code>');\n }\n\n const state = await consumeBootstrapLogin({ ...options, endpoint, bootstrap: bootstrapCode }, fetchImpl);\n persistBootstrapState(projectPath, state);\n syncProjectAuthEnv(projectPath, endpoint, state);\n return { state, reused: false };\n}\n\nexport async function consumeBootstrapLogin(\n options: LoginOptions,\n fetchImpl: typeof fetch = fetch,\n): Promise<BootstrapSessionState> {\n const endpoint = resolvePlatformEndpoint({ endpoint: options.endpoint });\n const bootstrapCode = options.bootstrap?.trim();\n if (!bootstrapCode) {\n throw new Error('Bootstrap code required. Run: npx @standardagents/cli login --bootstrap <code>');\n }\n\n const consumed = await exchangeBootstrapCode(endpoint, bootstrapCode, fetchImpl);\n return {\n version: 1,\n endpoint,\n authenticated_at: Date.now(),\n session_cookie: consumed.session_cookie,\n user: consumed.user,\n account: consumed.account,\n };\n}\n\nasync function loginWithPlatform(options: LoginOptions): Promise<void> {\n const endpoint = resolvePlatformEndpoint({ endpoint: options.endpoint });\n let authAppUrl = resolvePlatformAuthBrowserUrl(endpoint);\n let sessionId: string | null = null;\n let wsUrl: string | null = null;\n let wsExpiresAt = 0;\n\n logger.log('');\n logger.info('Starting StandardAgents CLI authentication...');\n logger.log(`Platform API: ${endpoint}`);\n\n try {\n const started = await startCliAuthSession(endpoint);\n sessionId = started.session_id;\n authAppUrl = started.auth_url;\n wsUrl = started.ws_url;\n wsExpiresAt = started.expires_at;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to start realtime auth session';\n logger.warning(`${message} Switching to manual bootstrap command entry.`);\n }\n\n logger.log(`Auth app: ${authAppUrl}`);\n logger.log('');\n logger.log('Complete login/signup in your browser. This window is waiting for realtime confirmation...');\n\n if (options.open !== false) {\n const opened = openBrowser(authAppUrl);\n if (opened) {\n logger.info('Opened browser for authentication.');\n } else {\n logger.warning('Could not automatically open browser. Open the URL above manually.');\n }\n }\n\n if (!process.stdin.isTTY) {\n const message = 'Non-interactive shell detected. Run: npx @standardagents/cli login --bootstrap <code>';\n if (options.exitOnError === false) {\n throw new Error(message);\n }\n logger.error(message);\n process.exit(1);\n }\n\n if (wsUrl && wsExpiresAt > 0) {\n try {\n const completion = await waitForCliAuthCompletion(wsUrl, wsExpiresAt);\n const projectPath = process.cwd();\n const { state, reused } = await loginWithBootstrap(\n projectPath,\n { ...options, endpoint, bootstrap: completion.bootstrapCode },\n );\n\n logger.log('');\n if (reused) {\n logger.success('Already authenticated in this project.');\n } else {\n logger.success('Bootstrap login successful.');\n }\n logger.log(`Account: ${state.account.id}${state.account.slug ? ` (${state.account.slug})` : ''}`);\n logger.log(`User: ${state.user.email}`);\n logger.log('');\n return;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Realtime auth handoff failed';\n logger.warning(`${message} Enter bootstrap code manually to continue.`);\n }\n }\n\n logger.log('');\n const input = await prompt('Bootstrap code or command: ');\n const bootstrapCode = parseBootstrapCodeInput(input);\n if (!bootstrapCode) {\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n const message = 'No bootstrap code provided. Run: npx @standardagents/cli login --bootstrap <code>';\n if (options.exitOnError === false) {\n throw new Error(message);\n }\n logger.error(message);\n process.exit(1);\n }\n\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n const projectPath = process.cwd();\n const { state, reused } = await loginWithBootstrap(projectPath, { ...options, endpoint, bootstrap: bootstrapCode });\n logger.log('');\n if (reused) {\n logger.success('Already authenticated in this project.');\n } else {\n logger.success('Bootstrap login successful.');\n }\n logger.log(`Account: ${state.account.id}${state.account.slug ? ` (${state.account.slug})` : ''}`);\n logger.log(`User: ${state.user.email}`);\n logger.log('');\n}\n\nexport async function login(options: LoginOptions = {}): Promise<void> {\n const bootstrapCode = options.bootstrap?.trim();\n if (bootstrapCode) {\n const projectPath = process.cwd();\n try {\n const { state, reused } = await loginWithBootstrap(projectPath, options);\n logger.log('');\n if (reused) {\n logger.success('Already authenticated in this project.');\n } else {\n logger.success('Bootstrap login successful.');\n }\n logger.log(`Account: ${state.account.id}${state.account.slug ? ` (${state.account.slug})` : ''}`);\n logger.log(`User: ${state.user.email}`);\n logger.log('');\n return;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Login failed';\n if (options.exitOnError === false) {\n throw new Error(message);\n }\n logger.error(message);\n process.exit(1);\n }\n }\n\n await loginWithPlatform(options);\n}\n","import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { spawnSync } from 'node:child_process';\n\nconst KEYCHAIN_SERVICE = 'standardagents-cli';\n\nexport interface CliOrgAuthRecord {\n org_id: string;\n org_slug: string;\n org_name: string;\n user_id: string;\n user_email: string;\n token_storage: 'keychain' | 'file';\n keychain_account?: string;\n refresh_token?: string;\n updated_at: number;\n}\n\nexport interface CliAuthState {\n active_org_id: string | null;\n orgs: Record<string, CliOrgAuthRecord>;\n git_auth?: CliGitAuthRecord | null;\n}\n\nexport interface CliGitAuthRecord {\n version: 1;\n endpoint: string;\n session_cookie: string;\n account_id: string;\n account_slug?: string;\n user_id: string;\n user_email: string;\n updated_at: number;\n}\n\ninterface SaveCliAuthInput {\n org: { id: string; slug: string; name: string };\n user: { id: string; email: string };\n refreshToken: string;\n}\n\ninterface ResolveTargetResult {\n orgId: string;\n record: CliOrgAuthRecord;\n}\n\nfunction configDir(): string {\n if (process.platform === 'win32') {\n const appData = process.env.APPDATA;\n if (appData) return path.join(appData, 'standardagents');\n }\n const xdgConfig = process.env.XDG_CONFIG_HOME;\n if (xdgConfig) return path.join(xdgConfig, 'standardagents');\n return path.join(os.homedir(), '.config', 'standardagents');\n}\n\nfunction stateFilePath(): string {\n return path.join(configDir(), 'auth-state.json');\n}\n\nfunction ensureStateDir(): void {\n fs.mkdirSync(path.dirname(stateFilePath()), { recursive: true });\n}\n\nfunction securityCommand(\n args: string[],\n): { ok: boolean; stdout: string; stderr: string } {\n const result = spawnSync('security', args, { encoding: 'utf8' });\n if (result.error) {\n return { ok: false, stdout: '', stderr: result.error.message };\n }\n return {\n ok: result.status === 0,\n stdout: (result.stdout || '').trim(),\n stderr: (result.stderr || '').trim(),\n };\n}\n\nfunction keychainAccountForOrg(orgId: string): string {\n return `org:${orgId}`;\n}\n\nfunction storeInKeychain(orgId: string, refreshToken: string): { ok: boolean; account: string } {\n if (process.platform !== 'darwin') {\n return { ok: false, account: keychainAccountForOrg(orgId) };\n }\n\n const account = keychainAccountForOrg(orgId);\n const command = securityCommand([\n 'add-generic-password',\n '-a',\n account,\n '-s',\n KEYCHAIN_SERVICE,\n '-w',\n refreshToken,\n '-U',\n ]);\n return { ok: command.ok, account };\n}\n\nfunction deleteFromKeychain(orgId: string): void {\n if (process.platform !== 'darwin') return;\n const account = keychainAccountForOrg(orgId);\n securityCommand([\n 'delete-generic-password',\n '-a',\n account,\n '-s',\n KEYCHAIN_SERVICE,\n ]);\n}\n\nfunction readFromKeychain(orgId: string): string | null {\n if (process.platform !== 'darwin') return null;\n const account = keychainAccountForOrg(orgId);\n const command = securityCommand([\n 'find-generic-password',\n '-a',\n account,\n '-s',\n KEYCHAIN_SERVICE,\n '-w',\n ]);\n if (!command.ok || !command.stdout) return null;\n return command.stdout;\n}\n\nexport function readCliAuthState(): CliAuthState {\n const file = stateFilePath();\n if (!fs.existsSync(file)) {\n return { active_org_id: null, orgs: {} };\n }\n\n try {\n const parsed = JSON.parse(fs.readFileSync(file, 'utf8')) as Partial<CliAuthState>;\n return {\n active_org_id: parsed.active_org_id ?? null,\n orgs: parsed.orgs ?? {},\n git_auth: parseCliGitAuthRecord(parsed.git_auth),\n };\n } catch {\n return { active_org_id: null, orgs: {} };\n }\n}\n\nfunction parseCliGitAuthRecord(value: unknown): CliGitAuthRecord | null {\n if (!value || typeof value !== 'object') return null;\n const candidate = value as Partial<CliGitAuthRecord>;\n if (candidate.version !== 1) return null;\n if (\n typeof candidate.endpoint !== 'string' ||\n typeof candidate.session_cookie !== 'string' ||\n typeof candidate.account_id !== 'string' ||\n typeof candidate.user_id !== 'string' ||\n typeof candidate.user_email !== 'string' ||\n typeof candidate.updated_at !== 'number'\n ) {\n return null;\n }\n return {\n version: 1,\n endpoint: candidate.endpoint,\n session_cookie: candidate.session_cookie,\n account_id: candidate.account_id,\n account_slug: typeof candidate.account_slug === 'string' ? candidate.account_slug : undefined,\n user_id: candidate.user_id,\n user_email: candidate.user_email,\n updated_at: candidate.updated_at,\n };\n}\n\nfunction writeCliAuthState(state: CliAuthState): void {\n ensureStateDir();\n fs.writeFileSync(stateFilePath(), JSON.stringify(state, null, 2) + '\\n', 'utf8');\n}\n\nexport function hasStoredCliAuth(): boolean {\n const state = readCliAuthState();\n return Object.keys(state.orgs).length > 0;\n}\n\nexport function saveCliGitAuth(input: {\n endpoint: string;\n sessionCookie: string;\n account: { id: string; slug?: string };\n user: { id: string; email: string };\n}): CliGitAuthRecord {\n const state = readCliAuthState();\n const record: CliGitAuthRecord = {\n version: 1,\n endpoint: input.endpoint.replace(/\\/+$/, ''),\n session_cookie: input.sessionCookie,\n account_id: input.account.id,\n account_slug: input.account.slug,\n user_id: input.user.id,\n user_email: input.user.email,\n updated_at: Date.now(),\n };\n state.git_auth = record;\n writeCliAuthState(state);\n return record;\n}\n\nexport function resolveCliGitAuth(): CliGitAuthRecord | null {\n return readCliAuthState().git_auth ?? null;\n}\n\nexport function clearCliGitAuth(): CliGitAuthRecord | null {\n const state = readCliAuthState();\n const existing = state.git_auth ?? null;\n state.git_auth = null;\n writeCliAuthState(state);\n return existing;\n}\n\nexport function saveCliAuth(input: SaveCliAuthInput): { storage: 'keychain' | 'file' } {\n const state = readCliAuthState();\n const now = Date.now();\n const keychain = storeInKeychain(input.org.id, input.refreshToken);\n const allowPlaintextFallback = process.env.STANDARDAGENTS_ALLOW_PLAINTEXT_TOKEN === '1';\n\n let token_storage: 'keychain' | 'file';\n let keychain_account: string | undefined;\n let refresh_token: string | undefined;\n\n if (keychain.ok) {\n token_storage = 'keychain';\n keychain_account = keychain.account;\n } else if (allowPlaintextFallback) {\n token_storage = 'file';\n refresh_token = input.refreshToken;\n } else {\n throw new Error(\n 'Unable to store refresh token in keychain. Set STANDARDAGENTS_ALLOW_PLAINTEXT_TOKEN=1 for explicit file fallback or use STANDARDAGENTS_TOKEN in CI.',\n );\n }\n\n state.orgs[input.org.id] = {\n org_id: input.org.id,\n org_slug: input.org.slug,\n org_name: input.org.name,\n user_id: input.user.id,\n user_email: input.user.email,\n token_storage,\n keychain_account,\n refresh_token,\n updated_at: now,\n };\n state.active_org_id = input.org.id;\n writeCliAuthState(state);\n\n return { storage: token_storage };\n}\n\nfunction resolveTargetOrgId(state: CliAuthState, orgInput?: string): string | null {\n if (orgInput) {\n const trimmed = orgInput.trim();\n if (!trimmed) return null;\n\n if (state.orgs[trimmed]) return trimmed;\n\n const match = Object.values(state.orgs).find(\n (record) => record.org_slug === trimmed,\n );\n return match?.org_id ?? null;\n }\n\n if (state.active_org_id && state.orgs[state.active_org_id]) {\n return state.active_org_id;\n }\n\n const first = Object.keys(state.orgs)[0];\n return first ?? null;\n}\n\nfunction resolveTargetRecord(state: CliAuthState, orgInput?: string): ResolveTargetResult | null {\n const orgId = resolveTargetOrgId(state, orgInput);\n if (!orgId) return null;\n const record = state.orgs[orgId];\n if (!record) return null;\n return { orgId, record };\n}\n\nexport function resolveStoredCliAuth(orgInput?: string): CliOrgAuthRecord | null {\n const state = readCliAuthState();\n const resolved = resolveTargetRecord(state, orgInput);\n return resolved?.record ?? null;\n}\n\nexport function readStoredRefreshToken(orgInput?: string): {\n record: CliOrgAuthRecord;\n refreshToken: string;\n} | null {\n const explicit = process.env.STANDARDAGENTS_TOKEN?.trim();\n if (explicit) {\n return {\n record: {\n org_id: 'env',\n org_slug: 'env',\n org_name: 'Environment token',\n user_id: 'env',\n user_email: 'env',\n token_storage: 'file',\n updated_at: Date.now(),\n },\n refreshToken: explicit,\n };\n }\n\n const state = readCliAuthState();\n const resolved = resolveTargetRecord(state, orgInput);\n if (!resolved) return null;\n const { record } = resolved;\n\n if (record.token_storage === 'file') {\n if (!record.refresh_token) return null;\n return { record, refreshToken: record.refresh_token };\n }\n\n const keychainToken = readFromKeychain(record.org_id);\n if (!keychainToken) return null;\n return { record, refreshToken: keychainToken };\n}\n\nexport function updateStoredRefreshToken(\n orgId: string,\n refreshToken: string,\n): { storage: 'keychain' | 'file' } {\n const state = readCliAuthState();\n const existing = state.orgs[orgId];\n if (!existing) {\n throw new Error(`No stored auth session found for org \"${orgId}\".`);\n }\n\n const allowPlaintextFallback = process.env.STANDARDAGENTS_ALLOW_PLAINTEXT_TOKEN === '1';\n let storage: 'keychain' | 'file';\n if (existing.token_storage === 'keychain') {\n const keychainWrite = storeInKeychain(orgId, refreshToken);\n if (keychainWrite.ok) {\n storage = 'keychain';\n existing.keychain_account = keychainWrite.account;\n existing.refresh_token = undefined;\n } else if (allowPlaintextFallback) {\n storage = 'file';\n existing.token_storage = 'file';\n existing.keychain_account = undefined;\n existing.refresh_token = refreshToken;\n } else {\n throw new Error(\n 'Unable to rotate refresh token in keychain. Set STANDARDAGENTS_ALLOW_PLAINTEXT_TOKEN=1 for explicit file fallback.',\n );\n }\n } else {\n storage = 'file';\n existing.refresh_token = refreshToken;\n }\n\n existing.updated_at = Date.now();\n state.orgs[orgId] = existing;\n writeCliAuthState(state);\n\n return { storage };\n}\n\nexport function clearCliAuth(orgInput?: string): CliOrgAuthRecord | null {\n const state = readCliAuthState();\n const resolved = resolveTargetRecord(state, orgInput);\n if (!resolved) return null;\n const { orgId: targetOrgId, record } = resolved;\n\n if (record.token_storage === 'keychain') {\n deleteFromKeychain(targetOrgId);\n }\n\n delete state.orgs[targetOrgId];\n\n if (state.active_org_id === targetOrgId) {\n const next = Object.keys(state.orgs)[0];\n state.active_org_id = next ?? null;\n }\n\n writeCliAuthState(state);\n return record;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { logger } from '../utils/logger.js';\nimport {\n clearBootstrapState,\n getBootstrapStatePath,\n} from '../utils/bootstrap-state.js';\nimport { resolvePlatformApiEndpoint, revokeCliAuthToken } from '../utils/cli-auth-api.js';\nimport {\n clearCliAuth,\n hasStoredCliAuth,\n readStoredRefreshToken,\n} from '../utils/cli-auth-storage.js';\nimport { PROJECT_AUTH_ENV_KEYS } from '../utils/project-auth-env.js';\n\nconst ORG_CONTEXT_KEYS: ReadonlySet<string> = new Set(PROJECT_AUTH_ENV_KEYS);\n\nconst DEV_VARS_FILENAME = '.dev.vars';\n\ninterface LogoutOptions {\n org?: string;\n endpoint?: string;\n}\n\nexport function stripOrgContextFromDevVars(content: string): { updated: string; removed: boolean } {\n const lines = content.split('\\n');\n let removed = false;\n const kept = lines.filter((line) => {\n const eqIndex = line.indexOf('=');\n if (eqIndex <= 0) return true;\n const key = line.slice(0, eqIndex).trim();\n if (ORG_CONTEXT_KEYS.has(key)) {\n removed = true;\n return false;\n }\n return true;\n });\n\n return { updated: kept.join('\\n'), removed };\n}\n\nexport function clearLocalOrgContext(projectPath: string): { stateCleared: boolean; envCleared: boolean } {\n const statePath = getBootstrapStatePath(projectPath);\n const stateCleared = fs.existsSync(statePath);\n clearBootstrapState(projectPath);\n\n const devVarsPath = path.join(projectPath, DEV_VARS_FILENAME);\n if (!fs.existsSync(devVarsPath)) {\n return { stateCleared, envCleared: false };\n }\n\n const content = fs.readFileSync(devVarsPath, 'utf-8');\n const stripped = stripOrgContextFromDevVars(content);\n if (!stripped.removed) {\n return { stateCleared, envCleared: false };\n }\n\n fs.writeFileSync(devVarsPath, stripped.updated, 'utf-8');\n return { stateCleared, envCleared: true };\n}\n\nfunction logLocalClearResult(result: { stateCleared: boolean; envCleared: boolean }): void {\n if (!result.stateCleared && !result.envCleared) {\n logger.info('No local org-scoped session found to clear.');\n return;\n }\n logger.success('Cleared local org-scoped session state.');\n}\n\nexport async function logout(options: LogoutOptions = {}): Promise<void> {\n const projectPath = process.cwd();\n const localResult = clearLocalOrgContext(projectPath);\n\n const storedAuth = hasStoredCliAuth();\n const tokenPayload = readStoredRefreshToken(options.org);\n\n if (!storedAuth && !tokenPayload) {\n logger.info('No stored CLI auth session found.');\n logLocalClearResult(localResult);\n return;\n }\n\n const endpoint = resolvePlatformApiEndpoint(options.endpoint);\n\n if (tokenPayload) {\n try {\n await revokeCliAuthToken(endpoint, tokenPayload.refreshToken);\n } catch (error) {\n if (error instanceof Error) {\n logger.warning(`Token revocation failed: ${error.message}`);\n } else {\n logger.warning('Token revocation failed');\n }\n }\n }\n\n if (!storedAuth) {\n logger.info('Refresh token came from STANDARDAGENTS_TOKEN. Unset it in your shell to fully logout.');\n logLocalClearResult(localResult);\n return;\n }\n\n const removed = clearCliAuth(options.org);\n if (!removed && options.org) {\n logger.error(`No stored auth session found for \"${options.org}\".`);\n process.exit(1);\n }\n\n if (!removed) {\n logger.info('No stored CLI auth session found.');\n logLocalClearResult(localResult);\n return;\n }\n\n logger.success(`Logged out from org \"${removed.org_slug}\" (${removed.user_email}).`);\n logLocalClearResult(localResult);\n}\n","import path from 'node:path';\nimport fs from 'node:fs';\nimport net from 'node:net';\nimport readline from 'node:readline';\nimport { spawn } from 'node:child_process';\nimport { fileURLToPath } from 'node:url';\nimport { logger } from '../utils/logger.js';\n\ninterface InitChatOptions {\n yes?: boolean;\n framework?: 'vite' | 'nextjs';\n}\n\ntype Framework = 'vite' | 'nextjs';\ntype PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\n\n/**\n * Get the @standardagents/react version to use based on the CLI's version.\n * If CLI is running a prerelease (e.g., 0.11.0-next.1), use that tag.\n * Otherwise, use the exact CLI version.\n */\nfunction getReactPackageVersion(): string {\n try {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n // dist/index.js -> ../package.json\n const pkgPath = path.resolve(__dirname, '../package.json');\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n const version = pkg.version as string;\n\n const prereleaseMatch = version.match(/-([a-z]+)\\./i);\n if (prereleaseMatch) {\n return prereleaseMatch[1];\n }\n\n return `^${version}`;\n } catch {\n return 'latest';\n }\n}\n\n/**\n * Get the path to the chat source directory bundled with the CLI\n */\nfunction getChatSourceDir(): string {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n // dist/index.js -> ../chat\n return path.resolve(__dirname, '../chat');\n}\n\nasync function prompt(question: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nasync function promptPassword(question: string): Promise<string> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n stdout.write(question);\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n let password = '';\n\n const redraw = () => {\n stdout.clearLine(0);\n stdout.cursorTo(0);\n stdout.write(question + '*'.repeat(password.length));\n };\n\n const onData = (data: string) => {\n const str = data.toString();\n\n for (let i = 0; i < str.length; i++) {\n const c = str[i];\n\n if (c === '\\x1B') {\n if (str[i + 1] === '[') {\n i += 2;\n continue;\n }\n continue;\n }\n\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u0004':\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\n');\n resolve(password);\n return;\n case '\\u0003':\n stdout.write('\\n');\n process.exit(1);\n break;\n case '\\u007F':\n case '\\b':\n if (password.length > 0) {\n password = password.slice(0, -1);\n redraw();\n }\n break;\n default:\n if (c.charCodeAt(0) >= 32) {\n password += c;\n stdout.write('*');\n }\n break;\n }\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\nfunction runCommand(command: string, args: string[], cwd: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: 'inherit',\n shell: false,\n });\n\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Command failed with exit code ${code}`));\n }\n });\n\n child.on('error', reject);\n });\n}\n\nfunction detectPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent;\n if (userAgent) {\n if (userAgent.includes('pnpm')) return 'pnpm';\n if (userAgent.includes('yarn')) return 'yarn';\n if (userAgent.includes('bun')) return 'bun';\n }\n\n if (fs.existsSync('pnpm-lock.yaml')) return 'pnpm';\n if (fs.existsSync('yarn.lock')) return 'yarn';\n if (fs.existsSync('bun.lockb')) return 'bun';\n if (fs.existsSync('package-lock.json')) return 'npm';\n\n return 'npm';\n}\n\nasync function selectPackageManager(detected: PackageManager): Promise<PackageManager> {\n const options: PackageManager[] = ['npm', 'pnpm', 'yarn', 'bun'];\n const detectedIndex = options.indexOf(detected);\n\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n let selectedIndex = detectedIndex;\n\n const renderOptions = () => {\n stdout.write('\\x1B[?25l');\n stdout.write(`\\x1B[${options.length + 1}A`);\n stdout.write('\\x1B[0J');\n\n stdout.write('Select a package manager:\\n');\n options.forEach((opt, i) => {\n const marker = i === detectedIndex ? ' (detected)' : '';\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${opt}${marker}\\x1B[0m\\n`);\n });\n };\n\n stdout.write('Select a package manager:\\n');\n options.forEach((opt, i) => {\n const marker = i === detectedIndex ? ' (detected)' : '';\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${opt}${marker}\\x1B[0m\\n`);\n });\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h');\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') {\n selectedIndex = (selectedIndex - 1 + options.length) % options.length;\n renderOptions();\n } else if (key === '\\x1B[B' || key === 'j') {\n selectedIndex = (selectedIndex + 1) % options.length;\n renderOptions();\n } else if (key === '\\r' || key === '\\n') {\n cleanup();\n resolve(options[selectedIndex]);\n } else if (key === '\\x03') {\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\nasync function selectFramework(): Promise<Framework> {\n const options: { value: Framework; label: string }[] = [\n { value: 'vite', label: 'Vite (React + TypeScript)' },\n { value: 'nextjs', label: 'Next.js (App Router)' },\n ];\n\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n let selectedIndex = 0;\n\n const renderOptions = () => {\n stdout.write('\\x1B[?25l');\n stdout.write(`\\x1B[${options.length + 1}A`);\n stdout.write('\\x1B[0J');\n\n stdout.write('Select a framework:\\n');\n options.forEach((opt, i) => {\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${opt.label}\\x1B[0m\\n`);\n });\n };\n\n stdout.write('Select a framework:\\n');\n options.forEach((opt, i) => {\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${opt.label}\\x1B[0m\\n`);\n });\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h');\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') {\n selectedIndex = (selectedIndex - 1 + options.length) % options.length;\n renderOptions();\n } else if (key === '\\x1B[B' || key === 'j') {\n selectedIndex = (selectedIndex + 1) % options.length;\n renderOptions();\n } else if (key === '\\r' || key === '\\n') {\n cleanup();\n resolve(options[selectedIndex].value);\n } else if (key === '\\x03') {\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\nfunction isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function isPortOpen(port: number): Promise<boolean> {\n const tryConnect = (host: string): Promise<boolean> => {\n return new Promise((resolve) => {\n const socket = new net.Socket();\n socket.setTimeout(200);\n\n socket.on('connect', () => {\n socket.destroy();\n resolve(true);\n });\n\n socket.on('timeout', () => {\n socket.destroy();\n resolve(false);\n });\n\n socket.on('error', () => {\n socket.destroy();\n resolve(false);\n });\n\n socket.connect(port, host);\n });\n };\n\n if (await tryConnect('127.0.0.1')) return true;\n if (await tryConnect('::1')) return true;\n return false;\n}\n\nasync function isAgentbuilderInstance(url: string): Promise<boolean> {\n try {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 1000);\n\n const response = await fetch(`${url}/api/agents`, {\n signal: controller.signal,\n headers: { 'Accept': 'application/json' },\n });\n\n clearTimeout(timeout);\n\n if (response.status === 401) {\n return true;\n }\n\n if (response.ok) {\n const data = await response.json();\n return Array.isArray(data.agents);\n }\n return false;\n } catch {\n return false;\n }\n}\n\nasync function detectAgentbuilderInstance(): Promise<string | null> {\n const portsToScan = [\n 5173, 5174, 5175, 5176, 5177, 5178, 5179, 5180,\n 3000, 3001, 3002, 3003,\n 8080, 8000, 4000,\n ];\n\n logger.log('\\x1B[90mScanning for running agentbuilder instance...\\x1B[0m');\n\n const openPorts: number[] = [];\n\n await Promise.all(\n portsToScan.map(async (port) => {\n if (await isPortOpen(port)) {\n openPorts.push(port);\n }\n })\n );\n\n for (const port of openPorts.sort((a, b) => a - b)) {\n const url = `http://localhost:${port}`;\n if (await isAgentbuilderInstance(url)) {\n return url;\n }\n }\n\n return null;\n}\n\n/**\n * Copy a directory recursively, skipping certain files/folders\n */\nfunction copyDir(src: string, dest: string, skip: string[] = []) {\n if (!fs.existsSync(dest)) {\n fs.mkdirSync(dest, { recursive: true });\n }\n\n const entries = fs.readdirSync(src, { withFileTypes: true });\n\n for (const entry of entries) {\n if (skip.includes(entry.name)) continue;\n\n const srcPath = path.join(src, entry.name);\n const destPath = path.join(dest, entry.name);\n\n if (entry.isDirectory()) {\n copyDir(srcPath, destPath, skip);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n\n/**\n * Update package.json with correct SDK version and project name\n */\nfunction updatePackageJson(filePath: string, projectName: string, reactVersion: string) {\n const pkg = JSON.parse(fs.readFileSync(filePath, 'utf-8'));\n\n // Update name\n pkg.name = projectName;\n\n // Update @standardagents/react version\n if (pkg.dependencies?.['@standardagents/react']) {\n pkg.dependencies['@standardagents/react'] = reactVersion;\n }\n\n // Remove private flag for user projects\n delete pkg.private;\n\n // Remove workspace-specific scripts\n delete pkg.scripts?.['dev:next'];\n delete pkg.scripts?.['build:next'];\n\n fs.writeFileSync(filePath, JSON.stringify(pkg, null, 2) + '\\n', 'utf-8');\n}\n\n/**\n * Update package.json for Next.js project\n */\nfunction updateNextPackageJson(filePath: string, projectName: string, reactVersion: string) {\n const pkg = JSON.parse(fs.readFileSync(filePath, 'utf-8'));\n\n // Update name\n pkg.name = projectName;\n\n // Update @standardagents/react version\n if (pkg.dependencies?.['@standardagents/react']) {\n pkg.dependencies['@standardagents/react'] = reactVersion;\n }\n\n // Remove private flag for user projects\n delete pkg.private;\n\n // Update scripts for Next.js only\n pkg.scripts = {\n dev: 'next dev',\n build: 'next build',\n start: 'next start',\n lint: 'next lint',\n };\n\n // Remove vite-specific deps\n delete pkg.devDependencies?.['@tailwindcss/vite'];\n delete pkg.devDependencies?.['@vitejs/plugin-react'];\n delete pkg.devDependencies?.['vite'];\n\n fs.writeFileSync(filePath, JSON.stringify(pkg, null, 2) + '\\n', 'utf-8');\n}\n\nexport async function initChat(projectNameArg?: string, options: InitChatOptions = {}) {\n const cwd = process.cwd();\n const chatSourceDir = getChatSourceDir();\n\n // Check if chat source exists\n if (!fs.existsSync(chatSourceDir)) {\n logger.error('Chat source files not found. This CLI installation may be corrupted.');\n process.exit(1);\n }\n\n logger.log('');\n logger.info('Scaffolding a frontend chat application...');\n logger.log('');\n\n // Get project name\n let projectName = projectNameArg;\n\n if (!projectName && !options.yes) {\n projectName = await prompt('Project name: ');\n }\n\n if (!projectName) {\n logger.error('Project name is required');\n process.exit(1);\n }\n\n const projectPath = path.join(cwd, projectName);\n\n // Check if directory already exists\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${projectName}\" already exists`);\n process.exit(1);\n }\n\n // Step 1: Select framework\n let framework: Framework;\n if (options.framework) {\n framework = options.framework;\n } else if (options.yes) {\n framework = 'vite';\n } else {\n framework = await selectFramework();\n logger.log('');\n }\n\n // Step 2: Get Agentbuilder URL\n let serverUrl: string;\n if (options.yes) {\n serverUrl = 'http://localhost:5173';\n } else {\n const detectedUrl = await detectAgentbuilderInstance();\n\n if (detectedUrl) {\n logger.success(`Found agentbuilder at ${detectedUrl}`);\n const urlInput = await prompt(`Agentbuilder dev server URL [${detectedUrl}]: `);\n serverUrl = urlInput || detectedUrl;\n } else {\n logger.log('\\x1B[90mNo running agentbuilder instance found\\x1B[0m');\n const urlInput = await prompt('Agentbuilder dev server URL [http://localhost:5173]: ');\n serverUrl = urlInput || 'http://localhost:5173';\n }\n\n if (!isValidUrl(serverUrl)) {\n logger.error('Invalid URL format');\n process.exit(1);\n }\n }\n\n // Select package manager\n const detectedPm = detectPackageManager();\n let pm: PackageManager;\n if (options.yes) {\n pm = detectedPm;\n } else {\n pm = await selectPackageManager(detectedPm);\n logger.log('');\n }\n\n logger.log('');\n logger.info(`Creating ${framework === 'vite' ? 'Vite' : 'Next.js'} project...`);\n logger.log('');\n\n // Create project directory\n fs.mkdirSync(projectPath, { recursive: true });\n\n // Get React package version\n const reactVersion = getReactPackageVersion();\n\n // Copy source files based on framework\n if (framework === 'vite') {\n await scaffoldVite(projectPath, chatSourceDir, projectName, serverUrl, reactVersion);\n } else {\n await scaffoldNextjs(projectPath, chatSourceDir, projectName, serverUrl, reactVersion);\n }\n\n // Install dependencies\n logger.log('');\n logger.info('Installing dependencies...');\n logger.log('');\n\n try {\n await runCommand(pm, pm === 'npm' ? ['install'] : ['install'], projectPath);\n } catch (error) {\n logger.error('Failed to install dependencies');\n process.exit(1);\n }\n\n // Success message\n logger.log('');\n logger.success('Chat UI scaffolded successfully!');\n logger.log('');\n\n // Start dev server\n logger.info('Starting development server...');\n logger.log('');\n\n const devArgs = pm === 'npm' ? ['run', 'dev'] : ['dev'];\n const devProcess = spawn(pm, devArgs, {\n cwd: projectPath,\n stdio: ['inherit', 'pipe', 'pipe'],\n shell: false,\n });\n\n let browserOpened = false;\n const openBrowser = (url: string) => {\n if (browserOpened) return;\n browserOpened = true;\n const openCmd = process.platform === 'darwin' ? 'open' :\n process.platform === 'win32' ? 'start' : 'xdg-open';\n spawn(openCmd, [url], { stdio: 'ignore', detached: true }).unref();\n };\n\n devProcess.stdout?.on('data', (data: Buffer) => {\n const text = data.toString();\n process.stdout.write(data);\n\n const urlMatch = text.match(/Local:\\s+(https?:\\/\\/localhost:\\d+\\/?)/);\n if (urlMatch && !browserOpened) {\n openBrowser(urlMatch[1]);\n }\n });\n\n devProcess.stderr?.on('data', (data: Buffer) => {\n process.stderr.write(data);\n });\n\n devProcess.on('error', (error) => {\n logger.error(`Failed to start dev server: ${error.message}`);\n process.exit(1);\n });\n}\n\nasync function scaffoldVite(\n projectPath: string,\n chatSourceDir: string,\n projectName: string,\n serverUrl: string,\n reactVersion: string\n) {\n // Copy shared source files\n copyDir(path.join(chatSourceDir, 'src'), path.join(projectPath, 'src'), []);\n logger.success('Copied src/');\n\n // Copy vite-specific files to root\n const viteDir = path.join(chatSourceDir, 'vite');\n\n // Copy and update index.html to point to src/main.tsx\n let indexHtml = fs.readFileSync(path.join(viteDir, 'index.html'), 'utf-8');\n indexHtml = indexHtml.replace('src=\"/main.tsx\"', 'src=\"/src/main.tsx\"');\n fs.writeFileSync(path.join(projectPath, 'index.html'), indexHtml, 'utf-8');\n logger.success('Created index.html');\n\n fs.copyFileSync(path.join(viteDir, 'main.tsx'), path.join(projectPath, 'src', 'main.tsx'));\n logger.success('Created src/main.tsx');\n\n // Read and adapt vite.config.ts (remove root and adjust paths)\n let viteConfig = fs.readFileSync(path.join(viteDir, 'vite.config.ts'), 'utf-8');\n // Simplify config for standalone project\n viteConfig = `import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport tailwindcss from '@tailwindcss/vite'\n\nexport default defineConfig({\n plugins: [\n react(),\n tailwindcss(),\n ],\n})\n`;\n fs.writeFileSync(path.join(projectPath, 'vite.config.ts'), viteConfig, 'utf-8');\n logger.success('Created vite.config.ts');\n\n // Copy and update tsconfig\n fs.copyFileSync(path.join(chatSourceDir, 'tsconfig.json'), path.join(projectPath, 'tsconfig.json'));\n // Update tsconfig to remove vite-specific include\n const tsconfig = JSON.parse(fs.readFileSync(path.join(projectPath, 'tsconfig.json'), 'utf-8'));\n tsconfig.include = ['src'];\n delete tsconfig.compilerOptions?.paths;\n fs.writeFileSync(path.join(projectPath, 'tsconfig.json'), JSON.stringify(tsconfig, null, 2) + '\\n', 'utf-8');\n logger.success('Created tsconfig.json');\n\n // Copy and update package.json\n fs.copyFileSync(path.join(chatSourceDir, 'package.json'), path.join(projectPath, 'package.json'));\n // Read, modify, and write package.json\n const pkg = JSON.parse(fs.readFileSync(path.join(projectPath, 'package.json'), 'utf-8'));\n pkg.name = projectName;\n pkg.scripts = {\n dev: 'vite',\n build: 'vite build',\n preview: 'vite preview',\n };\n delete pkg.private;\n // Update @standardagents/react version\n if (pkg.dependencies?.['@standardagents/react']) {\n pkg.dependencies['@standardagents/react'] = reactVersion;\n }\n // Remove next.js deps\n delete pkg.dependencies?.['next'];\n delete pkg.devDependencies?.['@tailwindcss/postcss'];\n delete pkg.devDependencies?.['postcss'];\n fs.writeFileSync(path.join(projectPath, 'package.json'), JSON.stringify(pkg, null, 2) + '\\n', 'utf-8');\n logger.success('Created package.json');\n\n // Create .env\n const envContent = `# Agentbuilder connection\nVITE_AGENTBUILDER_URL=${serverUrl}\n`;\n fs.writeFileSync(path.join(projectPath, '.env'), envContent, 'utf-8');\n logger.success('Created .env');\n\n // Create .gitignore\n fs.writeFileSync(path.join(projectPath, '.gitignore'), `node_modules\ndist\n.env\n`, 'utf-8');\n logger.success('Created .gitignore');\n\n // Update main.tsx paths (it expects ../src/ but now they're in same dir)\n let mainTsx = fs.readFileSync(path.join(projectPath, 'src', 'main.tsx'), 'utf-8');\n mainTsx = mainTsx\n .replace(/from '\\.\\.\\/src\\//g, \"from './\")\n .replace(/import '\\.\\.\\/src\\//g, \"import './\");\n fs.writeFileSync(path.join(projectPath, 'src', 'main.tsx'), mainTsx, 'utf-8');\n\n // Copy favicon\n if (fs.existsSync(path.join(viteDir, 'favicon.svg'))) {\n fs.copyFileSync(path.join(viteDir, 'favicon.svg'), path.join(projectPath, 'favicon.svg'));\n logger.success('Created favicon.svg');\n }\n}\n\nasync function scaffoldNextjs(\n projectPath: string,\n chatSourceDir: string,\n projectName: string,\n serverUrl: string,\n reactVersion: string\n) {\n // Copy shared source files to src/\n copyDir(path.join(chatSourceDir, 'src'), path.join(projectPath, 'src'), []);\n logger.success('Copied src/');\n\n // Copy next-specific files\n const nextDir = path.join(chatSourceDir, 'next');\n\n // Copy app directory\n copyDir(path.join(nextDir, 'app'), path.join(projectPath, 'app'), []);\n logger.success('Copied app/');\n\n // Copy next.config.ts\n fs.copyFileSync(path.join(nextDir, 'next.config.ts'), path.join(projectPath, 'next.config.ts'));\n logger.success('Created next.config.ts');\n\n // Copy postcss.config.mjs\n fs.copyFileSync(path.join(nextDir, 'postcss.config.mjs'), path.join(projectPath, 'postcss.config.mjs'));\n logger.success('Created postcss.config.mjs');\n\n // Create tsconfig.json for Next.js\n const tsconfig = {\n compilerOptions: {\n target: \"ES2017\",\n lib: [\"dom\", \"dom.iterable\", \"esnext\"],\n allowJs: true,\n skipLibCheck: true,\n strict: true,\n noEmit: true,\n esModuleInterop: true,\n module: \"esnext\",\n moduleResolution: \"bundler\",\n resolveJsonModule: true,\n isolatedModules: true,\n jsx: \"preserve\",\n incremental: true,\n plugins: [{ name: \"next\" }],\n paths: {\n \"@/*\": [\"./src/*\"]\n }\n },\n include: [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n exclude: [\"node_modules\"]\n };\n fs.writeFileSync(path.join(projectPath, 'tsconfig.json'), JSON.stringify(tsconfig, null, 2) + '\\n', 'utf-8');\n logger.success('Created tsconfig.json');\n\n // Create package.json for Next.js\n const pkg = JSON.parse(fs.readFileSync(path.join(chatSourceDir, 'package.json'), 'utf-8'));\n pkg.name = projectName;\n pkg.scripts = {\n dev: 'next dev',\n build: 'next build',\n start: 'next start',\n };\n delete pkg.private;\n // Update @standardagents/react version\n if (pkg.dependencies?.['@standardagents/react']) {\n pkg.dependencies['@standardagents/react'] = reactVersion;\n }\n // Remove vite-specific deps\n delete pkg.devDependencies?.['@tailwindcss/vite'];\n delete pkg.devDependencies?.['@vitejs/plugin-react'];\n delete pkg.devDependencies?.['vite'];\n fs.writeFileSync(path.join(projectPath, 'package.json'), JSON.stringify(pkg, null, 2) + '\\n', 'utf-8');\n logger.success('Created package.json');\n\n // Create .env.local\n const envContent = `# Agentbuilder connection\nNEXT_PUBLIC_AGENTBUILDER_URL=${serverUrl}\n`;\n fs.writeFileSync(path.join(projectPath, '.env.local'), envContent, 'utf-8');\n logger.success('Created .env.local');\n\n // Create .gitignore\n fs.writeFileSync(path.join(projectPath, '.gitignore'), `node_modules\n.next\nout\n.env.local\n`, 'utf-8');\n logger.success('Created .gitignore');\n\n // Update layout.tsx paths\n let layoutTsx = fs.readFileSync(path.join(projectPath, 'app', 'layout.tsx'), 'utf-8');\n layoutTsx = layoutTsx.replace(/from '\\.\\.\\/\\.\\.\\/src\\//g, \"from '../src/\");\n fs.writeFileSync(path.join(projectPath, 'app', 'layout.tsx'), layoutTsx, 'utf-8');\n\n // Update page.tsx paths\n let pageTsx = fs.readFileSync(path.join(projectPath, 'app', 'page.tsx'), 'utf-8');\n pageTsx = pageTsx.replace(/from '\\.\\.\\/\\.\\.\\/src\\//g, \"from '../src/\");\n fs.writeFileSync(path.join(projectPath, 'app', 'page.tsx'), pageTsx, 'utf-8');\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { logger } from '../utils/logger.js';\n\n/**\n * Item selection state for extract/copy decision\n */\ninterface SelectionItem {\n name: string;\n type: 'agent' | 'prompt' | 'tool' | 'model' | 'hook';\n filePath: string;\n mode: 'extract' | 'copy';\n isShared: boolean;\n sharedWith: string[];\n}\n\n/**\n * Interactive select prompt for choosing from a list of options.\n */\nasync function selectAgent(agents: string[]): Promise<string> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n let selectedIndex = 0;\n\n const renderOptions = () => {\n stdout.write('\\x1B[?25l'); // Hide cursor\n stdout.write(`\\x1B[${agents.length + 1}A`); // Move up\n stdout.write('\\x1B[0J'); // Clear from cursor to end\n\n stdout.write('Select an agent to pack (use arrows, enter to confirm):\\n');\n agents.forEach((agent, i) => {\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${agent}\\x1B[0m\\n`);\n });\n };\n\n // Initial render\n stdout.write('Select an agent to pack (use arrows, enter to confirm):\\n');\n agents.forEach((agent, i) => {\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${agent}\\x1B[0m\\n`);\n });\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h'); // Show cursor\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') { // Up arrow or k\n selectedIndex = (selectedIndex - 1 + agents.length) % agents.length;\n renderOptions();\n } else if (key === '\\x1B[B' || key === 'j') { // Down arrow or j\n selectedIndex = (selectedIndex + 1) % agents.length;\n renderOptions();\n } else if (key === '\\r' || key === '\\n') { // Enter\n cleanup();\n resolve(agents[selectedIndex]);\n } else if (key === '\\x03') { // Ctrl+C\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\n/**\n * Interactive item mode selector for extract/copy decisions.\n */\nasync function selectItemModes(\n items: SelectionItem[],\n _agentName: string\n): Promise<SelectionItem[]> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n let selectedIndex = 0;\n\n const getDisplayLines = () => {\n const lines: string[] = [];\n lines.push('');\n lines.push('Remove originals? (space to toggle, enter to confirm)');\n lines.push('');\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const isSelected = i === selectedIndex;\n const cursor = isSelected ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const modeText = item.mode === 'extract'\n ? '\\x1B[32m(extract)\\x1B[0m'\n : '\\x1B[90m(copy)\\x1B[0m';\n\n lines.push(`${cursor} ${item.name} \\x1B[90m(${item.type})\\x1B[0m ${modeText}`);\n }\n\n lines.push('');\n return lines;\n };\n\n const render = (initial = false) => {\n const lines = getDisplayLines();\n if (!initial) {\n stdout.write('\\x1B[?25l');\n stdout.write(`\\x1B[${lines.length}A`);\n stdout.write('\\x1B[0J');\n }\n stdout.write(lines.join('\\n') + '\\n');\n };\n\n render(true);\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h');\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') {\n selectedIndex = (selectedIndex - 1 + items.length) % items.length;\n render();\n } else if (key === '\\x1B[B' || key === 'j') {\n selectedIndex = (selectedIndex + 1) % items.length;\n render();\n } else if (key === ' ') {\n items[selectedIndex].mode = items[selectedIndex].mode === 'extract' ? 'copy' : 'extract';\n render();\n } else if (key === '\\r' || key === '\\n') {\n cleanup();\n resolve(items);\n } else if (key === '\\x03') {\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\ninterface PackOptions {\n output?: string;\n npm?: boolean;\n version?: string;\n noRemove?: boolean;\n noInteractive?: boolean;\n}\n\n/**\n * Check if this is a valid Standard Agents project.\n */\nfunction isStandardAgentsProject(): boolean {\n // Check for agents directory\n if (!fs.existsSync('agents')) {\n return false;\n }\n\n // Check for @standardagents/builder dependency\n try {\n const pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf-8'));\n const deps = { ...pkgJson.dependencies, ...pkgJson.devDependencies };\n return '@standardagents/builder' in deps;\n } catch {\n return false;\n }\n}\n\n/**\n * Pack an agent with all its dependencies.\n */\nexport async function pack(agentName: string | undefined, options: PackOptions) {\n logger.info('Packing agent...\\n');\n\n // Verify this is a Standard Agents project\n if (!isStandardAgentsProject()) {\n logger.error('This does not appear to be a Standard Agents project.');\n logger.info('Make sure you have @standardagents/builder installed and an agents/ directory.');\n process.exit(1);\n }\n\n const rootDir = process.cwd();\n\n // Dynamic import of packing service (uses separate entry point without Cloudflare deps)\n let PackingService: any;\n try {\n const packing = await import('@standardagents/builder/packing');\n PackingService = packing.PackingService;\n } catch (err) {\n logger.error('Failed to load packing service from @standardagents/builder');\n logger.info('Make sure @standardagents/builder is installed and built.');\n if (err instanceof Error) {\n logger.info(`Error: ${err.message}`);\n }\n process.exit(1);\n }\n\n const packingService = new PackingService();\n\n // If no agent name provided, show interactive select\n if (!agentName) {\n const agents = packingService.listAgents(rootDir);\n\n if (agents.length === 0) {\n logger.error('No agents found in agents/agents/');\n process.exit(1);\n }\n\n if (agents.length === 1) {\n // Only one agent, use it directly\n agentName = agents[0];\n logger.info(`Found one agent: ${agentName}`);\n } else {\n // Multiple agents, show interactive select\n console.log('');\n agentName = await selectAgent(agents);\n console.log('');\n }\n }\n\n // At this point agentName is guaranteed to be defined (we exit if no agents found)\n if (!agentName) {\n // This should never happen, but satisfies TypeScript\n logger.error('No agent selected');\n process.exit(1);\n }\n const selectedAgent = agentName;\n\n logger.info(`Analyzing agent: ${selectedAgent}`);\n\n // Analyze the agent\n const analysis = await packingService.analyzeAgent(selectedAgent, rootDir);\n\n if (analysis.errors.length > 0) {\n logger.error('Analysis failed:');\n for (const error of analysis.errors) {\n console.log(` - ${error}`);\n }\n process.exit(1);\n }\n\n // Show analysis results\n console.log('');\n logger.info('Discovered constituents:');\n console.log(` Agents: ${analysis.constituents.agents.map((a: { name: string }) => a.name).join(', ') || '(none)'}`);\n console.log(` Prompts: ${analysis.constituents.prompts.map((p: { name: string }) => p.name).join(', ') || '(none)'}`);\n console.log(` Tools: ${analysis.constituents.tools.map((t: { name: string }) => t.name).join(', ') || '(none)'}`);\n console.log(` Models: ${analysis.constituents.models.map((m: { name: string }) => m.name).join(', ') || '(none)'}`);\n console.log(` Hooks: ${analysis.constituents.hooks.map((h: { name: string }) => h.name).join(', ') || '(none)'}`);\n\n // Show warnings\n if (analysis.warnings.length > 0) {\n console.log('');\n logger.warning('Warnings:');\n for (const warning of analysis.warnings) {\n console.log(` - ${warning}`);\n }\n }\n\n // Build selection items from analysis\n const selectionItems: SelectionItem[] = [];\n\n for (const agent of analysis.constituents.agents) {\n selectionItems.push({\n name: agent.name,\n type: 'agent',\n filePath: agent.filePath,\n mode: agent.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: agent.sharedWith.length > 0,\n sharedWith: agent.sharedWith,\n });\n }\n\n for (const prompt of analysis.constituents.prompts) {\n selectionItems.push({\n name: prompt.name,\n type: 'prompt',\n filePath: prompt.filePath,\n mode: prompt.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: prompt.sharedWith.length > 0,\n sharedWith: prompt.sharedWith,\n });\n }\n\n for (const tool of analysis.constituents.tools) {\n selectionItems.push({\n name: tool.name,\n type: 'tool',\n filePath: tool.filePath,\n mode: tool.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: tool.sharedWith.length > 0,\n sharedWith: tool.sharedWith,\n });\n }\n\n for (const model of analysis.constituents.models) {\n selectionItems.push({\n name: model.name,\n type: 'model',\n filePath: model.filePath,\n mode: model.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: model.sharedWith.length > 0,\n sharedWith: model.sharedWith,\n });\n }\n\n for (const hook of analysis.constituents.hooks) {\n selectionItems.push({\n name: hook.name,\n type: 'hook',\n filePath: hook.filePath,\n mode: hook.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: hook.sharedWith.length > 0,\n sharedWith: hook.sharedWith,\n });\n }\n\n // Show interactive selector unless --no-interactive is specified\n let itemSelections: { name: string; type: string; filePath: string; mode: 'extract' | 'copy' }[] | undefined;\n\n if (!options.noInteractive && process.stdin.isTTY && selectionItems.length > 0) {\n console.log('');\n const selections = await selectItemModes(selectionItems, selectedAgent);\n itemSelections = selections.map(s => ({\n name: s.name,\n type: s.type,\n filePath: s.filePath,\n mode: s.mode,\n }));\n console.log('');\n }\n\n // Determine output directory\n const outputDir = options.output || path.join(rootDir, 'agents', 'packed');\n\n // Execute packing\n logger.info(`Packing to: ${outputDir}`);\n\n const result = await packingService.pack({\n agentName: selectedAgent,\n rootDir,\n outputDir,\n version: options.version || '1.0.0',\n npm: options.npm || false,\n removeOriginals: itemSelections ? false : !options.noRemove, // Let itemSelections handle removal\n packageId: `standardagent-${selectedAgent.replace(/_/g, '-')}`,\n itemSelections,\n });\n\n if (!result.success) {\n logger.error(`Packing failed: ${result.error}`);\n process.exit(1);\n }\n\n // Show result\n console.log('');\n logger.success('Packing complete!');\n console.log(` Package ID: ${result.packageId}`);\n console.log(` Output: ${result.outputPath}`);\n console.log(` Files: ${result.filesCreated.length} created`);\n\n if (result.filesRemoved && result.filesRemoved.length > 0) {\n console.log(` Removed: ${result.filesRemoved.length} original files`);\n }\n\n if (result.warnings.length > 0) {\n console.log('');\n logger.warning('Warnings:');\n for (const warning of result.warnings) {\n console.log(` - ${warning}`);\n }\n }\n\n if (options.npm) {\n console.log('');\n logger.info('NPM package structure created. To publish:');\n console.log(` cd ${result.outputPath}`);\n console.log(' npm publish');\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { logger } from '../utils/logger.js';\n\ninterface UnpackOptions {\n noSignatures?: boolean;\n}\n\n/**\n * Check if this is a valid Standard Agents project.\n */\nfunction isStandardAgentsProject(): boolean {\n // Check for agents directory\n if (!fs.existsSync('agents')) {\n return false;\n }\n\n // Check for @standardagents/builder dependency\n try {\n const pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf-8'));\n const deps = { ...pkgJson.dependencies, ...pkgJson.devDependencies };\n return '@standardagents/builder' in deps;\n } catch {\n return false;\n }\n}\n\n/**\n * Unpack a packed agent to the local agents directory.\n */\nexport async function unpack(pkgIdentifier: string | undefined, options: UnpackOptions) {\n logger.info('Unpacking agent...\\n');\n\n // Verify this is a Standard Agents project\n if (!isStandardAgentsProject()) {\n logger.error('This does not appear to be a Standard Agents project.');\n logger.info('Make sure you have @standardagents/builder installed and an agents/ directory.');\n process.exit(1);\n }\n\n const rootDir = process.cwd();\n\n // Dynamic import of unpacking service\n let UnpackingService: any;\n try {\n const builder = await import('@standardagents/builder/runtime');\n UnpackingService = (builder as any).UnpackingService;\n\n if (!UnpackingService) {\n const packing = await import('@standardagents/builder');\n UnpackingService = (packing as any).UnpackingService;\n }\n } catch (err) {\n logger.error('Failed to load unpacking service from @standardagents/builder');\n logger.info('Make sure @standardagents/builder is installed.');\n process.exit(1);\n }\n\n const unpackingService = new UnpackingService();\n\n // If no package identifier provided, list available packages\n if (!pkgIdentifier) {\n const packages = await unpackingService.listPackages(rootDir);\n\n if (packages.length === 0) {\n logger.info('No packed agents found.');\n logger.info('Pack an agent with: agents pack <agent-name>');\n process.exit(0);\n }\n\n logger.info('Available packed agents:');\n for (const pkg of packages) {\n console.log(` - ${pkg.packageId} (${pkg.version}) [${pkg.source}]`);\n console.log(` Entry: ${pkg.entryAgent}`);\n console.log(` Path: ${pkg.path}`);\n console.log('');\n }\n logger.info('Run: agents unpack <package-id>');\n process.exit(0);\n }\n\n logger.info(`Unpacking: ${pkgIdentifier}`);\n\n // Execute unpacking\n const result = await unpackingService.unpack({\n package: pkgIdentifier,\n rootDir,\n keepSignatures: !options.noSignatures,\n });\n\n if (!result.success) {\n logger.error(`Unpacking failed: ${result.error}`);\n process.exit(1);\n }\n\n // Show result\n console.log('');\n logger.success('Unpacking complete!');\n console.log(` Package: ${result.packageId}`);\n console.log(` Files: ${result.filesCreated.length} created`);\n\n if (result.filesCreated.length > 0) {\n console.log('');\n logger.info('Created files:');\n for (const file of result.filesCreated) {\n const relPath = path.relative(rootDir, file);\n console.log(` - ${relPath}`);\n }\n }\n\n if (result.warnings.length > 0) {\n console.log('');\n logger.warning('Warnings:');\n for (const warning of result.warnings) {\n console.log(` - ${warning}`);\n }\n }\n\n if (options.noSignatures) {\n console.log('');\n logger.info('Package signatures removed - files are fully editable.');\n } else {\n console.log('');\n logger.info('Package signatures preserved - files are editable but marked as packed.');\n }\n}\n\n/**\n * List all packed agents.\n */\nexport async function listPacked() {\n // Verify this is a Standard Agents project\n if (!isStandardAgentsProject()) {\n logger.error('This does not appear to be a Standard Agents project.');\n logger.info('Make sure you have @standardagents/builder installed and an agents/ directory.');\n process.exit(1);\n }\n\n const rootDir = process.cwd();\n\n // Dynamic import of unpacking service\n let UnpackingService: any;\n try {\n const builder = await import('@standardagents/builder/runtime');\n UnpackingService = (builder as any).UnpackingService;\n\n if (!UnpackingService) {\n const packing = await import('@standardagents/builder');\n UnpackingService = (packing as any).UnpackingService;\n }\n } catch (err) {\n logger.error('Failed to load unpacking service from @standardagents/builder');\n logger.info('Make sure @standardagents/builder is installed.');\n process.exit(1);\n }\n\n const unpackingService = new UnpackingService();\n const packages = await unpackingService.listPackages(rootDir);\n\n if (packages.length === 0) {\n logger.info('No packed agents found.');\n logger.info('Pack an agent with: agents pack <agent-name>');\n return;\n }\n\n logger.info('Discovered packed agents:\\n');\n\n for (const pkg of packages) {\n console.log(`${pkg.packageId} (${pkg.version})`);\n console.log(` Source: ${pkg.source}`);\n console.log(` Entry: ${pkg.entryAgent}`);\n console.log(` Path: ${pkg.path}`);\n console.log('');\n }\n}\n","import fs from 'node:fs';\nimport { execFileSync } from 'node:child_process';\nimport chalk from 'chalk';\nimport { logger } from '../utils/logger.js';\n\nconst ARTIFACT_DEPLOY_REMOTE_NAME = 'origin';\n\n/** Check if the current directory is a Standard Agents project. */\nexport function detectProject(): boolean {\n const hasAgentsDir = fs.existsSync('agents');\n const hasViteConfig = ['vite.config.ts', 'vite.config.js', 'vite.config.mts', 'vite.config.mjs']\n .some((file) => fs.existsSync(file));\n return hasAgentsDir && hasViteConfig;\n}\n\nfunction normalizeGitRemoteHost(remote: string): string | null {\n try {\n return new URL(remote).hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\nexport function isStandardAgentsArtifactRemote(remote: string): boolean {\n const host = normalizeGitRemoteHost(remote);\n if (!host) return false;\n return host === 'standardagents.ai' ||\n host.endsWith('.standardagents.ai') ||\n host === 'standardagentbuilder.com' ||\n host.endsWith('.standardagentbuilder.com') ||\n host === 'artifacts.cloudflare.net' ||\n host.endsWith('.artifacts.cloudflare.net') ||\n host === 'artifacts.cloudflare.com' ||\n host.endsWith('.artifacts.cloudflare.com') ||\n host === 'git.cloudflare.com';\n}\n\nexport interface ArtifactGitDeployTarget {\n remoteName: string;\n remoteUrl: string;\n branch: string;\n refspec: string;\n}\n\ntype GitOutputRunner = (args: string[]) => string;\n\nfunction gitOutput(args: string[]): string {\n return execFileSync('git', args, {\n encoding: 'utf-8',\n stdio: ['ignore', 'pipe', 'pipe'],\n }).trim();\n}\n\nexport function resolveArtifactGitDeployTarget(\n runner: GitOutputRunner = gitOutput,\n remoteName = ARTIFACT_DEPLOY_REMOTE_NAME,\n): ArtifactGitDeployTarget {\n const remoteUrl = runner(['remote', 'get-url', remoteName]).trim();\n if (!isStandardAgentsArtifactRemote(remoteUrl)) {\n throw new Error(\n `Remote \"${remoteName}\" is not a Standard Agents Artifacts remote. ` +\n 'Deployments now run from pushes to platform-owned repositories.',\n );\n }\n\n const branch = runner(['rev-parse', '--abbrev-ref', 'HEAD']).trim();\n if (!branch || branch === 'HEAD') {\n throw new Error('Cannot deploy from a detached HEAD. Check out a branch before pushing.');\n }\n\n return {\n remoteName,\n remoteUrl,\n branch,\n refspec: `HEAD:${branch}`,\n };\n}\n\nfunction pushArtifactRemote(target: ArtifactGitDeployTarget): void {\n execFileSync('git', ['push', target.remoteName, target.refspec], {\n stdio: 'inherit',\n });\n}\n\nexport async function deploy(): Promise<void> {\n console.log('');\n logger.info(`${chalk.bold('Standard Agents Deploy')}\\n`);\n\n let target: ArtifactGitDeployTarget;\n try {\n target = resolveArtifactGitDeployTarget();\n } catch (err) {\n logger.error((err as Error).message);\n logger.info('Run this command from a clone created by Standard Agents, or push to the platform git remote manually.');\n process.exit(1);\n }\n\n logger.info('Deployments build on the Standard Agents platform from Artifacts git pushes.');\n logger.log(`Remote: ${target.remoteUrl}`);\n logger.log(`Branch: ${target.branch}`);\n logger.log('');\n pushArtifactRemote(target);\n logger.success('Push complete. The platform build runner will deploy this commit from the Artifacts push event.');\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { loadBootstrapState } from '../utils/bootstrap-state.js';\n\nexport type CliDirectoryContext =\n | 'outside_project'\n | 'inside_project_unlinked'\n | 'inside_project_linked';\n\nexport interface HomeAction {\n id: 'init' | 'login' | 'deploy' | 'exit';\n label: string;\n description: string;\n argv: string[] | null;\n}\n\nconst PROJECT_SIGNAL_PATHS = [\n '.agents',\n 'agents',\n 'vite.config.ts',\n 'vite.config.js',\n 'vite.config.mts',\n 'vite.config.mjs',\n] as const;\n\nfunction hasProjectSignals(cwd: string): boolean {\n const hits = PROJECT_SIGNAL_PATHS.filter((signal) => fs.existsSync(path.join(cwd, signal))).length;\n return hits >= 2 || fs.existsSync(path.join(cwd, '.agents'));\n}\n\nexport function detectCliDirectoryContext(cwd: string = process.cwd()): CliDirectoryContext {\n if (!hasProjectSignals(cwd)) {\n return 'outside_project';\n }\n\n const bootstrapState = loadBootstrapState(cwd);\n if (bootstrapState && bootstrapState.account?.id && bootstrapState.user?.id) {\n return 'inside_project_linked';\n }\n\n return 'inside_project_unlinked';\n}\n\nexport function getContextLabel(context: CliDirectoryContext): string {\n switch (context) {\n case 'outside_project':\n return 'Outside project';\n case 'inside_project_unlinked':\n return 'Project detected (unlinked)';\n case 'inside_project_linked':\n return 'Linked StandardAgents project';\n default:\n return 'Unknown context';\n }\n}\n\nexport function getHomeActions(context: CliDirectoryContext): HomeAction[] {\n const shared: HomeAction[] = [\n {\n id: 'exit',\n label: 'Exit',\n description: 'Close this menu.',\n argv: null,\n },\n ];\n\n if (context === 'outside_project') {\n return [\n {\n id: 'init',\n label: 'Init new project',\n description: 'Create a new Standard Agents project in a fresh directory.',\n argv: ['init'],\n },\n ...shared,\n ];\n }\n\n if (context === 'inside_project_unlinked') {\n return [\n {\n id: 'login',\n label: 'Link this project',\n description: 'Authenticate and link this local project to a StandardAgents org.',\n argv: ['login'],\n },\n ...shared,\n ];\n }\n\n return [\n {\n id: 'deploy',\n label: 'Deploy',\n description: 'Push this linked project to StandardAgents for a platform build.',\n argv: ['deploy'],\n },\n {\n id: 'login',\n label: 'Switch or refresh project link',\n description: 'Change org context for this project or refresh its local auth link.',\n argv: ['login'],\n },\n ...shared,\n ];\n}\n","import React, { useState } from 'react';\nimport { Box, Text, render, useApp, useInput } from 'ink';\nimport { detectCliDirectoryContext, getContextLabel, getHomeActions, type HomeAction } from './context.js';\n\nconst BRAND_LINES = [\n ' ____ _ _ _ _ _ ',\n ' / ___|| |_ __ _ _ __ __| | __ _ _ __ __| | / \\\\ __ _ ___ _ __ | |_ ___ ',\n ' \\\\___ \\\\| __/ _` | \\'_ \\\\ / _` |/ _` | \\'__/ _` | / _ \\\\ / _` |/ _ \\\\ \\'_ \\\\| __/ __|',\n ' ___) | || (_| | | | | (_| | (_| | | | (_| | / ___ \\\\ (_| | __/ | | | |_\\\\__ \\\\',\n ' |____/ \\\\__\\\\__,_|_| |_|\\\\__,_|\\\\__,_|_| \\\\__,_| /_/ \\\\_\\\\__, |\\\\___|_| |_|\\\\__|___/',\n ' |___/ ',\n] as const;\n\nexport interface HomeSelection {\n actionId: HomeAction['id'];\n argv: string[];\n preserveTuiScreen: boolean;\n}\n\nexport function restoreTuiTerminal(stdout: NodeJS.WriteStream = process.stdout): void {\n void stdout;\n}\n\ninterface HomeMenuProps {\n contextLabel: string;\n actions: HomeAction[];\n onSelect: (selection: HomeSelection | null) => void;\n}\n\nfunction HomeMenu({ contextLabel, actions, onSelect }: HomeMenuProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const { exit } = useApp();\n\n useInput((input, key) => {\n if (key.ctrl && input === 'c') {\n onSelect(null);\n exit();\n return;\n }\n if (input === 'q' || key.escape) {\n onSelect(null);\n exit();\n return;\n }\n if (key.upArrow || input === 'k') {\n setSelectedIndex((prev) => (prev - 1 + actions.length) % actions.length);\n return;\n }\n if (key.downArrow || input === 'j') {\n setSelectedIndex((prev) => (prev + 1) % actions.length);\n return;\n }\n if (key.return) {\n const chosen = actions[selectedIndex];\n if (!chosen.argv) {\n onSelect(null);\n exit();\n return;\n }\n onSelect({\n actionId: chosen.id,\n argv: chosen.argv,\n preserveTuiScreen: chosen.id === 'init',\n });\n exit();\n }\n });\n\n return (\n <Box flexDirection=\"column\" paddingX={1}>\n <Box borderStyle=\"double\" borderColor=\"cyan\" paddingX={1} flexDirection=\"column\">\n <Text color=\"cyanBright\" bold>\n STANDARDAGENTS CLI\n </Text>\n <Text color=\"gray\">Command Center</Text>\n </Box>\n <Box marginTop={1} flexDirection=\"column\">\n {BRAND_LINES.map((line) => (\n <Text key={line} color=\"cyan\">\n {line}\n </Text>\n ))}\n </Box>\n <Box marginTop={1} borderStyle=\"round\" borderColor=\"gray\" paddingX={1} flexDirection=\"column\">\n <Text color=\"gray\">\n Context: <Text color=\"whiteBright\">{contextLabel}</Text>\n </Text>\n <Text color=\"gray\">Use ↑/↓ (or j/k), Enter to select, q to exit.</Text>\n </Box>\n <Box marginTop={1} borderStyle=\"round\" borderColor=\"cyan\" paddingX={1} flexDirection=\"column\">\n <Text color=\"cyanBright\" bold>\n Actions\n </Text>\n {actions.map((action, index) => {\n const selected = selectedIndex === index;\n return (\n <Box key={action.id} flexDirection=\"column\" marginBottom={0} marginTop={0}>\n <Text color={selected ? 'black' : 'white'} backgroundColor={selected ? 'cyan' : undefined} bold={selected}>\n {selected ? '›' : ' '} {action.label}\n </Text>\n <Text color={selected ? 'cyan' : 'gray'}>{` ${action.description}`}</Text>\n </Box>\n );\n })}\n </Box>\n </Box>\n );\n}\n\nexport async function runHomeTui(cwd: string = process.cwd()): Promise<HomeSelection | null> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) return null;\n\n const context = detectCliDirectoryContext(cwd);\n const actions = getHomeActions(context);\n const contextLabel = getContextLabel(context);\n let selection: HomeSelection | null = null;\n const instance = render(\n <HomeMenu\n contextLabel={contextLabel}\n actions={actions}\n onSelect={(value) => {\n selection = value;\n }}\n />,\n { exitOnCtrlC: true },\n );\n await instance.waitUntilExit();\n instance.unmount();\n await new Promise<void>((resolve) => setTimeout(resolve, 0));\n return selection;\n}\n","import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport {\n copySkill,\n readSkillFile,\n type SkillName,\n} from '@standardagents/skill';\nimport { logger } from '../utils/logger.js';\n\nexport type InstallTargetId = 'codex' | 'claude';\n\nexport interface SkillCommandOptions {\n agent?: InstallTargetId;\n dir?: string;\n force?: boolean;\n}\n\nexport interface InstallTarget {\n id: InstallTargetId;\n label: string;\n summary: string;\n detected: boolean;\n installPath: string;\n}\n\nconst DEFAULT_SKILL_NAME: SkillName = 'agentbuilder';\n\nexport function resolveCodexHome(\n env: NodeJS.ProcessEnv = process.env,\n homeDir = os.homedir()\n): string {\n return env.CODEX_HOME || path.join(homeDir, '.codex');\n}\n\nexport function resolveClaudeHome(homeDir = os.homedir()): string {\n return path.join(homeDir, '.claude');\n}\n\nexport function expandHomePath(inputPath: string, homeDir = os.homedir()): string {\n if (inputPath === '~') {\n return homeDir;\n }\n\n if (inputPath.startsWith('~/')) {\n return path.join(homeDir, inputPath.slice(2));\n }\n\n return inputPath;\n}\n\nexport function buildInstallTargets(\n options: SkillCommandOptions = {},\n env: NodeJS.ProcessEnv = process.env,\n homeDir = os.homedir()\n): InstallTarget[] {\n const customRoot = options.dir\n ? path.resolve(expandHomePath(options.dir, homeDir))\n : null;\n\n const codexHome = resolveCodexHome(env, homeDir);\n const claudeHome = resolveClaudeHome(homeDir);\n\n return [\n {\n id: 'codex',\n label: 'Codex',\n summary: 'Install as a Codex skill folder',\n detected: fs.existsSync(codexHome),\n installPath: customRoot ?? path.join(codexHome, 'skills'),\n },\n {\n id: 'claude',\n label: 'Claude Code',\n summary: 'Install as a Claude Code user subagent',\n detected: fs.existsSync(claudeHome),\n installPath: customRoot ?? path.join(claudeHome, 'agents'),\n },\n ];\n}\n\nexport function resolveSelectedTarget(\n targetId: InstallTargetId,\n options: SkillCommandOptions = {},\n env: NodeJS.ProcessEnv = process.env,\n homeDir = os.homedir()\n): InstallTarget {\n const target = buildInstallTargets(options, env, homeDir).find(\n (candidate) => candidate.id === targetId\n );\n\n if (!target) {\n throw new Error(`Unknown install target \"${targetId}\".`);\n }\n\n return target;\n}\n\nexport function buildClaudeSubagentMarkdown(\n skillName: SkillName,\n description: string,\n body: string\n): string {\n const normalizedBody = body.replace(/^\\uFEFF/, '').trim();\n\n return [\n '---',\n `name: ${skillName}`,\n `description: ${description}`,\n '---',\n '',\n normalizedBody,\n '',\n ].join('\\n');\n}\n\nasync function selectInstallTarget(targets: InstallTarget[]): Promise<InstallTarget> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n let selectedIndex = 0;\n\n const render = (initial = false) => {\n const lines: string[] = [];\n lines.push('Choose where to install the AgentBuilder skill:');\n lines.push('');\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i];\n const isSelected = i === selectedIndex;\n const cursor = isSelected ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const title = isSelected ? '\\x1B[36m' : '\\x1B[90m';\n const detection = target.detected ? '\\x1B[32m(detected)\\x1B[0m' : '\\x1B[90m(not found yet)\\x1B[0m';\n\n lines.push(`${cursor} ${title}${target.label}\\x1B[0m ${detection}`);\n lines.push(` ${target.summary}`);\n lines.push(` ${target.installPath}`);\n lines.push('');\n }\n\n lines.push('Use arrows to move, Enter to install, Ctrl+C to cancel.');\n\n if (!initial) {\n stdout.write('\\x1B[?25l');\n stdout.write(`\\x1B[${lines.length}A`);\n stdout.write('\\x1B[0J');\n }\n\n stdout.write(lines.join('\\n') + '\\n');\n };\n\n render(true);\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h');\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') {\n selectedIndex = (selectedIndex - 1 + targets.length) % targets.length;\n render();\n } else if (key === '\\x1B[B' || key === 'j') {\n selectedIndex = (selectedIndex + 1) % targets.length;\n render();\n } else if (key === '\\r' || key === '\\n') {\n cleanup();\n resolve(targets[selectedIndex]);\n } else if (key === '\\x03') {\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\nexport async function installBundledSkill(\n targetId: InstallTargetId,\n skillName: SkillName = DEFAULT_SKILL_NAME,\n options: SkillCommandOptions = {}\n): Promise<string> {\n const target = resolveSelectedTarget(targetId, options);\n\n if (target.id === 'codex') {\n const targetDir = path.join(target.installPath, skillName);\n\n if (fs.existsSync(targetDir) && !options.force) {\n throw new Error(\n `Skill already exists at ${targetDir}. Re-run with --force to overwrite it.`\n );\n }\n\n return copySkill(skillName, target.installPath, {\n overwrite: options.force ?? false,\n });\n }\n\n const targetFile = path.join(target.installPath, `${skillName}.md`);\n\n if (fs.existsSync(targetFile) && !options.force) {\n throw new Error(\n `Claude subagent already exists at ${targetFile}. Re-run with --force to overwrite it.`\n );\n }\n\n const skillBody = await readSkillFile(skillName);\n const subagentMarkdown = buildClaudeSubagentMarkdown(\n skillName,\n 'Use for Standard Agents and AgentBuilder architecture, composition, subagent design, and implementation work.',\n skillBody\n );\n\n fs.mkdirSync(target.installPath, { recursive: true });\n fs.writeFileSync(targetFile, subagentMarkdown, 'utf8');\n\n return targetFile;\n}\n\nfunction isInteractiveTerminal(): boolean {\n return Boolean(process.stdin.isTTY && process.stdout.isTTY);\n}\n\nexport async function skill(options: SkillCommandOptions = {}): Promise<void> {\n try {\n const selectedTarget = options.agent\n ? resolveSelectedTarget(options.agent, options)\n : isInteractiveTerminal()\n ? await selectInstallTarget(buildInstallTargets(options))\n : resolveSelectedTarget('codex', options);\n\n logger.log('');\n logger.info(`Installing AgentBuilder skill into ${selectedTarget.label}...`);\n\n const installedPath = await installBundledSkill(\n selectedTarget.id,\n DEFAULT_SKILL_NAME,\n options\n );\n\n logger.success(`Installed ${DEFAULT_SKILL_NAME} into ${selectedTarget.label}`);\n logger.log('');\n logger.log(`Path: ${installedPath}`);\n logger.log('');\n logger.log('Next steps:');\n\n if (selectedTarget.id === 'codex') {\n logger.log(' Restart Codex if it is already running');\n logger.log(` Edit ${path.join(installedPath, 'SKILL.md')} to continue customizing the skill`);\n } else {\n logger.log(' Restart Claude Code if it is already running');\n logger.log(` Edit ${installedPath} to continue customizing the subagent`);\n }\n } catch (error) {\n logger.log('');\n logger.error(error instanceof Error ? error.message : 'Failed to install skill');\n process.exit(1);\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nexport interface ProviderDefinition {\n name: string;\n packageName: string;\n exportName: string;\n label: string;\n envKeys: string[];\n}\n\nexport interface ProviderModelInfo {\n id: string;\n name: string;\n description?: string;\n contextLength?: number;\n slug?: string;\n}\n\nexport interface ProviderModelsQuery {\n search?: string;\n page?: number;\n perPage?: number;\n}\n\nexport interface ProviderModelsPage {\n models: ProviderModelInfo[];\n hasNextPage: boolean;\n}\n\nexport interface ProviderFactoryConfig {\n apiKey: string;\n baseUrl?: string;\n timeout?: number;\n accountId?: string;\n}\n\nexport interface ProviderInstance {\n getModels?: (filter?: string) => Promise<ProviderModelInfo[]>;\n getModelsPage?: (query?: ProviderModelsQuery) => Promise<ProviderModelsPage>;\n}\n\nexport type ProviderFactory = (config: ProviderFactoryConfig) => ProviderInstance;\n\nexport interface DetectedProvider extends ProviderDefinition {\n declared: boolean;\n installed: boolean;\n configured: boolean;\n missingEnvKeys: string[];\n}\n\nexport interface AvailableProviderModel {\n value: string;\n label: string;\n description: string;\n contextLength?: number;\n slug?: string;\n}\n\nconst UUID_LIKE_MODEL_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\nconst CLOUDFLARE_PROVIDER_MODEL_ID = /^@cf\\//i;\nconst PAGE_SIZE = 100;\nconst MAX_PAGES = 1000;\n\nexport const CURRENT_MODELS_URLS = [\n 'https://standardagentspec.org/models.md',\n 'https://standardagentspec.com/models.md',\n];\n\nexport const PROVIDER_DEFINITIONS: ProviderDefinition[] = [\n {\n name: 'cloudflare',\n packageName: '@standardagents/cloudflare',\n exportName: 'cloudflare',\n label: 'Cloudflare Workers AI',\n envKeys: ['CLOUDFLARE_API_TOKEN', 'CLOUDFLARE_ACCOUNT_ID'],\n },\n {\n name: 'cerebras',\n packageName: '@standardagents/cerebras',\n exportName: 'cerebras',\n label: 'Cerebras',\n envKeys: ['CEREBRAS_API_KEY'],\n },\n {\n name: 'google',\n packageName: '@standardagents/google',\n exportName: 'google',\n label: 'Google Gemini',\n envKeys: ['GOOGLE_API_KEY'],\n },\n {\n name: 'groq',\n packageName: '@standardagents/groq',\n exportName: 'groq',\n label: 'Groq',\n envKeys: ['GROQ_API_KEY'],\n },\n {\n name: 'openai',\n packageName: '@standardagents/openai',\n exportName: 'openai',\n label: 'OpenAI',\n envKeys: ['OPENAI_API_KEY'],\n },\n {\n name: 'openrouter',\n packageName: '@standardagents/openrouter',\n exportName: 'openrouter',\n label: 'OpenRouter',\n envKeys: ['OPENROUTER_API_KEY'],\n },\n {\n name: 'xai',\n packageName: '@standardagents/xai',\n exportName: 'xai',\n label: 'xai',\n envKeys: ['XAI_API_KEY'],\n },\n];\n\nfunction isOpaqueModelId(modelId?: string): boolean {\n if (!modelId) return true;\n return UUID_LIKE_MODEL_ID.test(modelId) || CLOUDFLARE_PROVIDER_MODEL_ID.test(modelId);\n}\n\nexport function getProviderDefinition(name: string): ProviderDefinition | undefined {\n return PROVIDER_DEFINITIONS.find((provider) => provider.name === name);\n}\n\nexport function parseEnvFile(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) continue;\n\n const withoutExport = trimmed.startsWith('export ')\n ? trimmed.slice('export '.length).trim()\n : trimmed;\n\n const eqIndex = withoutExport.indexOf('=');\n if (eqIndex === -1) continue;\n\n const key = withoutExport.slice(0, eqIndex).trim();\n let value = withoutExport.slice(eqIndex + 1).trim();\n\n if (value.startsWith('\"') && value.endsWith('\"')) {\n value = value.slice(1, -1).replace(/\\\\\"/g, '\"');\n } else if (value.startsWith(\"'\") && value.endsWith(\"'\")) {\n value = value.slice(1, -1);\n }\n\n result[key] = value;\n }\n\n return result;\n}\n\nexport function findProjectRoot(startDir = process.cwd()): string {\n let currentDir = path.resolve(startDir);\n\n while (true) {\n if (fs.existsSync(path.join(currentDir, 'package.json'))) {\n return currentDir;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n return path.resolve(startDir);\n }\n\n currentDir = parentDir;\n }\n}\n\nexport function readProjectPackageJson(projectRoot: string): Record<string, unknown> {\n const packagePath = path.join(projectRoot, 'package.json');\n if (!fs.existsSync(packagePath)) {\n return {};\n }\n\n return JSON.parse(fs.readFileSync(packagePath, 'utf8')) as Record<string, unknown>;\n}\n\nexport function getDeclaredProviderPackages(projectRoot: string): string[] {\n const pkg = readProjectPackageJson(projectRoot);\n const combined = {\n ...((pkg.dependencies as Record<string, string> | undefined) ?? {}),\n ...((pkg.devDependencies as Record<string, string> | undefined) ?? {}),\n ...((pkg.optionalDependencies as Record<string, string> | undefined) ?? {}),\n ...((pkg.peerDependencies as Record<string, string> | undefined) ?? {}),\n };\n\n return PROVIDER_DEFINITIONS\n .map((provider) => provider.packageName)\n .filter((packageName) => typeof combined[packageName] === 'string');\n}\n\nfunction resolvePackageEntry(packageName: string, projectRoot: string): string | null {\n const packageDir = findInstalledPackageDir(packageName, projectRoot);\n if (!packageDir) {\n return null;\n }\n\n const packageJsonPath = path.join(packageDir, 'package.json');\n\n try {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as {\n exports?: string | Record<string, unknown>;\n main?: string;\n };\n\n const exportPath = resolvePackageExportPath(packageJson.exports) || packageJson.main || 'index.js';\n return path.join(packageDir, exportPath);\n } catch {\n return null;\n }\n}\n\nfunction findInstalledPackageDir(packageName: string, projectRoot: string): string | null {\n let currentDir = path.resolve(projectRoot);\n\n while (true) {\n const candidate = path.join(currentDir, 'node_modules', ...packageName.split('/'));\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n return null;\n }\n\n currentDir = parentDir;\n }\n}\n\nfunction resolvePackageExportPath(exportsField: unknown): string | null {\n if (typeof exportsField === 'string') {\n return exportsField;\n }\n\n if (!exportsField || typeof exportsField !== 'object') {\n return null;\n }\n\n const rootExport = (exportsField as Record<string, unknown>)['.'];\n if (typeof rootExport === 'string') {\n return rootExport;\n }\n\n if (!rootExport || typeof rootExport !== 'object') {\n return null;\n }\n\n const rootExportRecord = rootExport as Record<string, unknown>;\n const candidate = rootExportRecord.import || rootExportRecord.default || rootExportRecord.require;\n return typeof candidate === 'string' ? candidate : null;\n}\n\nexport function isProviderPackageInstalled(packageName: string, projectRoot: string): boolean {\n return resolvePackageEntry(packageName, projectRoot) !== null;\n}\n\nexport function loadProjectEnv(\n projectRoot: string,\n processEnv: NodeJS.ProcessEnv = process.env\n): Record<string, string> {\n const result: Record<string, string> = {};\n const envFiles = ['.env', '.env.local', '.dev.vars', '.dev.vars.local'];\n\n for (const fileName of envFiles) {\n const filePath = path.join(projectRoot, fileName);\n if (!fs.existsSync(filePath)) continue;\n Object.assign(result, parseEnvFile(fs.readFileSync(filePath, 'utf8')));\n }\n\n for (const [key, value] of Object.entries(processEnv)) {\n if (typeof value === 'string') {\n result[key] = value;\n }\n }\n\n return result;\n}\n\nexport function detectProviders(\n projectRoot: string,\n env: Record<string, string> = loadProjectEnv(projectRoot)\n): DetectedProvider[] {\n const declaredPackages = new Set(getDeclaredProviderPackages(projectRoot));\n\n return PROVIDER_DEFINITIONS\n .filter((provider) => declaredPackages.has(provider.packageName))\n .map((provider) => {\n const installed = isProviderPackageInstalled(provider.packageName, projectRoot);\n const missingEnvKeys = provider.envKeys.filter((envKey) => !env[envKey]);\n\n return {\n ...provider,\n declared: true,\n installed,\n configured: installed && missingEnvKeys.length === 0,\n missingEnvKeys,\n };\n });\n}\n\nexport async function loadProviderFactory(\n provider: ProviderDefinition,\n projectRoot: string\n): Promise<ProviderFactory> {\n const entryPath = resolvePackageEntry(provider.packageName, projectRoot);\n if (!entryPath) {\n throw new Error(`Provider package ${provider.packageName} is not installed in ${projectRoot}.`);\n }\n\n const moduleUrl = entryPath.startsWith('file:')\n ? entryPath\n : pathToFileURL(entryPath).href;\n const providerModule = await import(moduleUrl) as Record<string, unknown>;\n const factory = providerModule[provider.exportName];\n\n if (typeof factory !== 'function') {\n throw new Error(`Provider package ${provider.packageName} does not export ${provider.exportName}().`);\n }\n\n return factory as ProviderFactory;\n}\n\nexport function buildProviderConfig(\n provider: ProviderDefinition,\n env: Record<string, string>\n): ProviderFactoryConfig {\n const apiKey = env[provider.envKeys[0]] || '';\n\n if (provider.name === 'cloudflare') {\n const accountId = env.CLOUDFLARE_ACCOUNT_ID;\n return {\n apiKey,\n accountId,\n baseUrl: accountId\n ? `https://api.cloudflare.com/client/v4/accounts/${accountId}/ai/v1`\n : undefined,\n };\n }\n\n return { apiKey };\n}\n\nexport async function collectProviderModels(\n providerName: string,\n providerInstance: ProviderInstance\n): Promise<AvailableProviderModel[]> {\n const rawModels: ProviderModelInfo[] = [];\n\n if (providerInstance.getModelsPage) {\n for (let page = 1; page <= MAX_PAGES; page += 1) {\n const result = await providerInstance.getModelsPage({ page, perPage: PAGE_SIZE });\n rawModels.push(...result.models);\n if (!result.hasNextPage) {\n return normalizeProviderModels(providerName, rawModels);\n }\n }\n\n throw new Error(`Provider ${providerName} exceeded ${MAX_PAGES} model pages without terminating pagination.`);\n }\n\n if (providerInstance.getModels) {\n rawModels.push(...await providerInstance.getModels());\n return normalizeProviderModels(providerName, rawModels);\n }\n\n throw new Error(`Provider ${providerName} does not support model discovery.`);\n}\n\nexport async function fetchAvailableModelsForProvider(\n providerName: string,\n projectRoot: string,\n env: Record<string, string>,\n factoryLoader: (provider: ProviderDefinition, projectRoot: string) => Promise<ProviderFactory> = loadProviderFactory\n): Promise<AvailableProviderModel[]> {\n const provider = getProviderDefinition(providerName);\n if (!provider) {\n throw new Error(`Unknown provider \"${providerName}\".`);\n }\n\n const factory = await factoryLoader(provider, projectRoot);\n const providerInstance = factory(buildProviderConfig(provider, env));\n return collectProviderModels(provider.name, providerInstance);\n}\n\nexport async function fetchCurrentModelsMarkdown(\n urls: string[] = CURRENT_MODELS_URLS\n): Promise<{ url: string; content: string }> {\n let lastError: Error | null = null;\n\n for (const url of urls) {\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} ${response.statusText}`.trim());\n }\n\n return {\n url,\n content: await response.text(),\n };\n } catch (error) {\n lastError = error instanceof Error\n ? new Error(`Failed to fetch ${url}: ${error.message}`)\n : new Error(`Failed to fetch ${url}.`);\n }\n }\n\n throw lastError ?? new Error('No current models URLs configured.');\n}\n\nexport function buildProviderSelectionHelp(providers: DetectedProvider[]): string {\n const providerNames = providers.map((provider) => provider.name).join(', ');\n const examples = providers\n .map((provider) => ` agents available-models --provider=${provider.name}`)\n .join('\\n');\n\n return [\n `Multiple configured providers were found: ${providerNames}`,\n 'Re-run with a specific provider to fetch all model IDs:',\n examples,\n ].join('\\n');\n}\n\nexport function describeProviderAvailability(provider: DetectedProvider): string {\n if (!provider.installed) {\n return `${provider.name}: not installed`;\n }\n\n if (provider.missingEnvKeys.length > 0) {\n return `${provider.name}: missing ${provider.missingEnvKeys.join(', ')}`;\n }\n\n return `${provider.name}: unavailable`;\n}\n\nexport function formatAvailableModelsOutput(\n provider: ProviderDefinition,\n models: AvailableProviderModel[]\n): string {\n const lines = [\n `# ${provider.label} models`,\n '',\n 'Use the `model` values exactly as shown in `defineModel({ model: ... })`.',\n '',\n '| model | label | context | notes |',\n '| --- | --- | ---: | --- |',\n ];\n\n for (const model of models) {\n const context = model.contextLength ? model.contextLength.toLocaleString('en-US') : '';\n lines.push(\n `| \\`${escapeTableCell(model.value)}\\` | ${escapeTableCell(model.label)} | ${context} | ${escapeTableCell(model.description)} |`\n );\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\nexport function normalizeProviderModels(\n providerName: string,\n rawModels: ProviderModelInfo[]\n): AvailableProviderModel[] {\n const deduped = new Map<string, AvailableProviderModel>();\n\n for (const model of rawModels) {\n const value = getExecutableModelId(providerName, model);\n if (!value) continue;\n\n if (!deduped.has(value)) {\n deduped.set(value, {\n value,\n label: model.name || value,\n description: model.description || '',\n contextLength: model.contextLength,\n slug: model.slug,\n });\n }\n }\n\n return [...deduped.values()].sort((left, right) => left.value.localeCompare(right.value));\n}\n\nfunction getExecutableModelId(\n providerName: string,\n model: Pick<ProviderModelInfo, 'id' | 'name' | 'slug'>\n): string {\n if (model.id && !isOpaqueModelId(model.id)) {\n return model.id;\n }\n\n if (providerName === 'cloudflare') {\n const publicCloudflareId = [model.name, model.slug]\n .find((value): value is string => typeof value === 'string' && value.includes('/'));\n\n if (publicCloudflareId) {\n return publicCloudflareId.startsWith('@cf/')\n ? publicCloudflareId\n : `@cf/${publicCloudflareId.replace(/^@cf\\//, '')}`;\n }\n }\n\n return model.slug || model.name || model.id;\n}\n\nfunction escapeTableCell(value: string): string {\n return value.replace(/\\|/g, '\\\\|').replace(/\\n/g, '<br />');\n}\n","import { fetchCurrentModelsMarkdown } from '../utils/models.js';\n\nexport interface CurrentModelsOptions {\n url?: string;\n}\n\nexport async function currentModels(options: CurrentModelsOptions = {}): Promise<void> {\n try {\n const { content } = await fetchCurrentModelsMarkdown(\n options.url ? [options.url] : undefined\n );\n\n process.stdout.write(content.endsWith('\\n') ? content : `${content}\\n`);\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to fetch current models.';\n process.stderr.write(`${message}\\n`);\n process.exit(1);\n }\n}\n","import {\n buildProviderSelectionHelp,\n describeProviderAvailability,\n detectProviders,\n fetchAvailableModelsForProvider,\n findProjectRoot,\n formatAvailableModelsOutput,\n getProviderDefinition,\n loadProjectEnv,\n} from '../utils/models.js';\n\nexport interface AvailableModelsOptions {\n provider?: string;\n}\n\nfunction writeError(message: string): never {\n process.stderr.write(`${message}\\n`);\n process.exit(1);\n}\n\nexport async function availableModels(options: AvailableModelsOptions = {}): Promise<void> {\n const projectRoot = findProjectRoot(process.cwd());\n const env = loadProjectEnv(projectRoot);\n const detectedProviders = detectProviders(projectRoot, env);\n\n if (detectedProviders.length === 0) {\n writeError(\n [\n `No installed provider packages were found in ${projectRoot}.`,\n 'Add a provider package such as `@standardagents/cerebras`, then run this command again.',\n ].join('\\n')\n );\n }\n\n const providerName = options.provider?.trim();\n\n if (providerName) {\n const provider = detectedProviders.find((candidate) => candidate.name === providerName);\n\n if (!getProviderDefinition(providerName)) {\n writeError(\n `Unknown provider \"${providerName}\". Supported providers: ${detectedProviders.map((candidate) => candidate.name).join(', ')}.`\n );\n }\n\n if (!provider) {\n writeError(\n [\n `Provider \"${providerName}\" is not installed in ${projectRoot}.`,\n `Install ${getProviderDefinition(providerName)?.packageName || providerName} and try again.`,\n ].join('\\n')\n );\n }\n\n if (!provider.configured) {\n writeError(\n [\n `Provider \"${providerName}\" is missing required environment variables.`,\n `Missing: ${provider.missingEnvKeys.join(', ')}`,\n ].join('\\n')\n );\n }\n\n try {\n const models = await fetchAvailableModelsForProvider(provider.name, projectRoot, env);\n process.stdout.write(formatAvailableModelsOutput(provider, models));\n return;\n } catch (error) {\n const message = error instanceof Error ? error.message : `Failed to fetch models for ${providerName}.`;\n writeError(message);\n }\n }\n\n const configuredProviders = detectedProviders.filter((provider) => provider.configured);\n\n if (configuredProviders.length === 0) {\n const missingSummary = detectedProviders\n .map((provider) => describeProviderAvailability(provider))\n .join('\\n');\n\n writeError(\n [\n 'No installed providers are fully configured yet.',\n missingSummary,\n ].join('\\n')\n );\n }\n\n if (configuredProviders.length > 1) {\n writeError(buildProviderSelectionHelp(configuredProviders));\n }\n\n const provider = configuredProviders[0];\n\n try {\n const models = await fetchAvailableModelsForProvider(provider.name, projectRoot, env);\n process.stdout.write(formatAvailableModelsOutput(provider, models));\n } catch (error) {\n const message = error instanceof Error ? error.message : `Failed to fetch models for ${provider.name}.`;\n writeError(message);\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { resolveCliGitAuth } from '../utils/cli-auth-storage.js';\n\ninterface GitCredentialOptions {\n endpoint?: string;\n startDir?: string;\n input?: string;\n fetchImpl?: typeof fetch;\n write?: (text: string) => void;\n}\n\ninterface CredentialRequest {\n protocol?: string;\n host?: string;\n path?: string;\n}\n\ninterface ArtifactGitResponse {\n artifact_git?: {\n token_secret?: string;\n };\n}\n\ntype GitCredentialConfig =\n | { endpoint: string; auth: { kind: 'api-key'; apiKey: string } }\n | { endpoint: string; auth: { kind: 'session-cookie'; cookie: string } };\n\nfunction parseKeyValueLines(input: string): Record<string, string> {\n const result: Record<string, string> = {};\n for (const line of input.split(/\\r?\\n/)) {\n if (!line.trim()) continue;\n const index = line.indexOf('=');\n if (index <= 0) continue;\n result[line.slice(0, index)] = line.slice(index + 1);\n }\n return result;\n}\n\nfunction findDotDevVars(startDir = process.cwd()): string | null {\n let current = path.resolve(startDir);\n while (true) {\n const candidate = path.join(current, '.dev.vars');\n if (fs.existsSync(candidate)) return candidate;\n const parent = path.dirname(current);\n if (parent === current) return null;\n current = parent;\n }\n}\n\nfunction normalizeEndpoint(value: string): string {\n return value.replace(/\\/+$/, '');\n}\n\nfunction normalizeGitHost(host: string): string {\n return host.trim().toLowerCase().replace(/:\\d+$/, '');\n}\n\nfunction isStandardAgentsGitHost(host: string): boolean {\n const normalized = normalizeGitHost(host);\n return normalized === 'standardagents.ai' ||\n normalized.endsWith('.standardagents.ai') ||\n normalized === 'standardagentbuilder.com' ||\n normalized.endsWith('.standardagentbuilder.com') ||\n normalized === 'artifacts.cloudflare.net' ||\n normalized.endsWith('.artifacts.cloudflare.net') ||\n normalized === 'artifacts.cloudflare.com' ||\n normalized.endsWith('.artifacts.cloudflare.com') ||\n normalized === 'git.cloudflare.com';\n}\n\nfunction loadLocalConfig(options: GitCredentialOptions): GitCredentialConfig | null {\n const envPath = findDotDevVars(options.startDir);\n const fileVars = envPath ? parseKeyValueLines(fs.readFileSync(envPath, 'utf-8')) : {};\n const endpoint = normalizeEndpoint(\n options.endpoint ||\n process.env.STANDARD_AGENTS_API_URL ||\n process.env.PLATFORM_ENDPOINT ||\n fileVars.STANDARD_AGENTS_API_URL ||\n fileVars.PLATFORM_ENDPOINT ||\n ''\n );\n const apiKey = process.env.STANDARD_AGENTS_API_KEY || fileVars.STANDARD_AGENTS_API_KEY || '';\n if (endpoint && apiKey) {\n return { endpoint, auth: { kind: 'api-key', apiKey } };\n }\n\n const cookie = process.env.STANDARD_AGENTS_SESSION_COOKIE ||\n process.env.STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE ||\n fileVars.STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE ||\n '';\n if (endpoint && cookie) {\n return { endpoint, auth: { kind: 'session-cookie', cookie } };\n }\n\n const globalAuth = resolveCliGitAuth();\n if (!globalAuth) return null;\n const requestedEndpoint = endpoint || normalizeEndpoint(options.endpoint || '');\n if (requestedEndpoint && requestedEndpoint !== globalAuth.endpoint) {\n return null;\n }\n return {\n endpoint: globalAuth.endpoint,\n auth: { kind: 'session-cookie', cookie: globalAuth.session_cookie },\n };\n}\n\nfunction remoteFromCredentialRequest(request: CredentialRequest): string | null {\n if (!request.protocol || !request.host) return null;\n if (!isStandardAgentsGitHost(request.host)) return null;\n const repoPath = request.path ? `/${request.path.replace(/^\\/+/, '')}` : '';\n return `${request.protocol}://${normalizeGitHost(request.host)}${repoPath}`;\n}\n\nasync function readStdin(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));\n }\n return Buffer.concat(chunks).toString('utf-8');\n}\n\nexport async function gitCredential(operation: string, options: GitCredentialOptions = {}): Promise<void> {\n if (operation !== 'get') return;\n\n const config = loadLocalConfig(options);\n if (!config) return;\n\n const input = options.input ?? await readStdin();\n const remote = remoteFromCredentialRequest(parseKeyValueLines(input));\n if (!remote) return;\n\n const fetchImpl = options.fetchImpl ?? fetch;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n if (config.auth.kind === 'api-key') {\n headers.Authorization = `Bearer ${config.auth.apiKey}`;\n } else {\n headers.Cookie = config.auth.cookie;\n }\n\n const response = await fetchImpl(`${config.endpoint}/projects/git-token`, {\n method: 'POST',\n headers,\n body: JSON.stringify({ remote, scope: 'write' }),\n }).catch(() => null);\n if (!response?.ok) return;\n\n const body = await response.json().catch(() => null) as ArtifactGitResponse | null;\n const tokenSecret = body?.artifact_git?.token_secret;\n if (!tokenSecret) return;\n\n const write = options.write ?? ((text: string) => {\n process.stdout.write(text);\n });\n write(`username=x\\npassword=${tokenSecret}\\n\\n`);\n}\n","import readline from 'node:readline';\nimport { spawnSync } from 'node:child_process';\nimport { logger } from '../utils/logger.js';\nimport {\n cancelCliAuthSession,\n openBrowser,\n resolvePlatformAuthBrowserUrl,\n startCliAuthSession,\n waitForCliAuthCompletion,\n} from '../utils/cli-auth-api.js';\nimport { saveCliGitAuth } from '../utils/cli-auth-storage.js';\nimport { consumeBootstrapLogin, type LoginOptions } from './login.js';\nimport { parseBootstrapCodeInput, resolvePlatformEndpoint } from './init.js';\n\nexport interface GitLoginOptions extends LoginOptions {\n config?: boolean;\n helperCommand?: string;\n gitRunner?: (args: string[]) => { status: number | null; stdout: string; stderr: string };\n}\n\nconst DEFAULT_GIT_HELPER_COMMAND = '!npx -y @standardagents/cli@latest git-credential';\n\nfunction prompt(question: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nfunction defaultGitRunner(args: string[]): { status: number | null; stdout: string; stderr: string } {\n const result = spawnSync('git', args, { encoding: 'utf8' });\n return {\n status: result.status,\n stdout: result.stdout || '',\n stderr: result.stderr || '',\n };\n}\n\nfunction runGit(\n args: string[],\n runner: NonNullable<GitLoginOptions['gitRunner']>,\n): { stdout: string; stderr: string } {\n const result = runner(args);\n if (result.status !== 0) {\n throw new Error(result.stderr.trim() || `git ${args.join(' ')} failed`);\n }\n return result;\n}\n\nexport function configureStandardAgentsGitCredentials(options: GitLoginOptions = {}): {\n helperCommand: string;\n helperAdded: boolean;\n} {\n const runner = options.gitRunner ?? defaultGitRunner;\n const helperCommand = options.helperCommand?.trim() || process.env.STANDARD_AGENTS_GIT_HELPER || DEFAULT_GIT_HELPER_COMMAND;\n const existing = runGit(['config', '--global', '--get-all', 'credential.helper'], runner)\n .stdout\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean);\n\n let helperAdded = false;\n if (!existing.includes(helperCommand)) {\n runGit(['config', '--global', '--add', 'credential.helper', helperCommand], runner);\n helperAdded = true;\n }\n runGit(['config', '--global', 'credential.useHttpPath', 'true'], runner);\n\n return { helperCommand, helperAdded };\n}\n\nasync function completeBrowserGitLogin(options: GitLoginOptions, endpoint: string): Promise<ReturnType<typeof consumeBootstrapLogin>> {\n let authAppUrl = resolvePlatformAuthBrowserUrl(endpoint);\n let sessionId: string | null = null;\n let wsUrl: string | null = null;\n let wsExpiresAt = 0;\n\n try {\n const started = await startCliAuthSession(endpoint);\n sessionId = started.session_id;\n authAppUrl = started.auth_url;\n wsUrl = started.ws_url;\n wsExpiresAt = started.expires_at;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to start realtime auth session';\n logger.warning(`${message} Switching to manual bootstrap command entry.`);\n }\n\n logger.log(`Auth app: ${authAppUrl}`);\n if (options.open !== false) {\n const opened = openBrowser(authAppUrl);\n if (opened) {\n logger.info('Opened browser for authentication.');\n } else {\n logger.warning('Could not automatically open browser. Open the URL above manually.');\n }\n }\n\n if (wsUrl && wsExpiresAt > 0) {\n try {\n const completion = await waitForCliAuthCompletion(wsUrl, wsExpiresAt);\n return consumeBootstrapLogin({ ...options, endpoint, bootstrap: completion.bootstrapCode });\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Realtime auth handoff failed';\n logger.warning(`${message} Enter bootstrap code manually to continue.`);\n }\n }\n\n if (!process.stdin.isTTY) {\n throw new Error('Non-interactive shell detected. Run: npx @standardagents/cli git-login --bootstrap <code>');\n }\n\n const input = await prompt('Bootstrap code or command: ');\n const bootstrapCode = parseBootstrapCodeInput(input);\n if (!bootstrapCode) {\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n throw new Error('No bootstrap code provided. Run: npx @standardagents/cli git-login --bootstrap <code>');\n }\n\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n return consumeBootstrapLogin({ ...options, endpoint, bootstrap: bootstrapCode });\n}\n\nexport async function gitLogin(options: GitLoginOptions = {}): Promise<void> {\n const endpoint = resolvePlatformEndpoint({ endpoint: options.endpoint });\n logger.log('');\n logger.info('Starting Standard Agents Git authentication...');\n logger.log(`Platform API: ${endpoint}`);\n\n const state = options.bootstrap?.trim()\n ? await consumeBootstrapLogin({ ...options, endpoint, bootstrap: options.bootstrap.trim() })\n : await completeBrowserGitLogin(options, endpoint);\n\n if (!state.session_cookie) {\n throw new Error('Platform login did not return a session cookie for Git authentication.');\n }\n\n const record = saveCliGitAuth({\n endpoint,\n sessionCookie: state.session_cookie,\n account: state.account,\n user: state.user,\n });\n\n let configured: ReturnType<typeof configureStandardAgentsGitCredentials> | null = null;\n if (options.config !== false) {\n configured = configureStandardAgentsGitCredentials(options);\n }\n\n logger.log('');\n logger.success('Git authentication configured.');\n logger.log(`Account: ${record.account_id}${record.account_slug ? ` (${record.account_slug})` : ''}`);\n logger.log(`User: ${record.user_email}`);\n if (configured) {\n logger.log(`Credential helper: ${configured.helperCommand}${configured.helperAdded ? '' : ' (already installed)'}`);\n }\n logger.log('');\n}\n","import { Command, Option } from 'commander';\nimport { init } from './commands/init.js';\nimport { isInitWizardReturnToHomeError, supportFiles } from './commands/init.js';\nimport { login } from './commands/login.js';\nimport { logout } from './commands/logout.js';\nimport { scaffold } from './commands/scaffold.js';\nimport { initChat } from './commands/init-chat.js';\nimport { pack } from './commands/pack.js';\nimport { unpack, listPacked } from './commands/unpack.js';\nimport { deploy } from './commands/deploy.js';\nimport { restoreTuiTerminal, runHomeTui } from './tui/home.js';\nimport { skill } from './commands/skill.js';\nimport { currentModels } from './commands/current-models.js';\nimport { availableModels } from './commands/available-models.js';\nimport { gitCredential } from './commands/git-credential.js';\nimport { gitLogin } from './commands/git-login.js';\n\n// Injected at build time by tsup (see tsup.config.ts)\ndeclare const __CLI_VERSION__: string;\nconst INIT_TUI_ENV_VAR = 'STANDARDAGENTS_INIT_TUI';\n\nasync function settleStdinForInitHandoff(stdin: NodeJS.ReadStream = process.stdin): Promise<void> {\n if (!stdin.isTTY) return;\n\n for (const eventName of ['data', 'readable', 'keypress'] as const) {\n for (const listener of stdin.listeners(eventName)) {\n stdin.removeListener(eventName, listener as (...args: any[]) => void);\n }\n }\n\n if (stdin.isRaw) {\n stdin.setRawMode(false);\n }\n stdin.pause();\n while (stdin.read() !== null) {\n // Drain buffered key events from the home screen before child process handoff.\n }\n await new Promise<void>((resolve) => setTimeout(resolve, 30));\n while (stdin.read() !== null) {\n // One more pass after Ink teardown settles.\n }\n}\n\nconst program = new Command();\n\nprogram\n .name('agents')\n .description('CLI tool for Standard Agents / AgentBuilder')\n .version(__CLI_VERSION__);\n\nprogram\n .command('init [project-name]')\n .description('Create a new Standard Agents project')\n .option('-y, --yes', 'Skip prompts and use defaults')\n .option('--local', 'Use local project scaffolding instead of browser platform onboarding')\n .option('--cli', 'Use classic line-by-line CLI prompts instead of the TUI wizard')\n .option('--api-url <url>', 'Standard Agents platform API URL')\n .option('--endpoint <url>', 'Platform API endpoint for auth/bootstrap exchange')\n .option('--package-manager <manager>', 'Package manager for generated project: npm, pnpm, yarn, or bun')\n .option('--template <template>', 'Vite template to use', 'vanilla-ts')\n .option('--workspace', 'Install @standardagents packages as workspace:* (local pnpm workspace development)')\n .option('--no-dev', 'Clone and configure the project without starting the dev server')\n .addOption(new Option('--bootstrap <code>', 'Exchange a web onboarding bootstrap code'))\n .action(init);\n\nprogram\n .command('login')\n .description('Authenticate this machine (or use --bootstrap for project bootstrap auth)')\n .option('--bootstrap <code>', 'Bootstrap code from web onboarding')\n .option('--endpoint <url>', 'Platform API endpoint (default: https://api.standardagents.ai)')\n .option('--no-open', 'Do not auto-open browser URL')\n .action(login);\n\nprogram\n .command('logout')\n .description('Clear stored StandardAgents auth and local org-scoped project auth')\n .option('--org <org-id-or-slug>', 'Org ID or slug to logout (defaults to active org)')\n .option('--endpoint <url>', 'Platform API endpoint (default: https://api.standardagents.ai)')\n .action(logout);\n\nprogram\n .command('scaffold')\n .description('Add Standard Agents to an existing Vite project')\n .option('--force', 'Overwrite existing configuration')\n .action(scaffold);\n\nprogram\n .command('init-chat [project-name]')\n .description('Scaffold a frontend chat application')\n .option('-y, --yes', 'Skip prompts and use defaults')\n .option('--framework <framework>', 'Framework to use (vite or nextjs)')\n .action(initChat);\n\nprogram\n .command('pack [agent-name]')\n .description('Pack an agent with all its dependencies')\n .option('--output <dir>', 'Output directory (default: agents/packed)')\n .option('--npm', 'Generate npm-ready package structure')\n .option('--version <version>', 'Package version (default: 1.0.0)')\n .option('--no-remove', 'Keep original files after packing')\n .option('--no-interactive', 'Skip interactive item mode selector')\n .action(pack);\n\nprogram\n .command('unpack [package]')\n .description('Unpack a packed agent to the local agents directory')\n .option('--no-signatures', 'Remove package signatures (fully editable)')\n .action(unpack);\n\nprogram\n .command('list-packed')\n .description('List all discovered packed agents')\n .action(listPacked);\n\nprogram\n .command('deploy')\n .description('Push the current branch to the Standard Agents Artifacts remote')\n .action(deploy);\n\nprogram\n .command('git-credential <operation>')\n .description('Git credential helper for Standard Agents platform repositories')\n .option('--endpoint <url>', 'Platform API endpoint')\n .action(gitCredential);\n\nprogram\n .command('git-login')\n .description('Authenticate Git for Standard Agents platform repositories')\n .option('--bootstrap <code>', 'Bootstrap code from web onboarding')\n .option('--endpoint <url>', 'Platform API endpoint (default: https://api.standardagents.ai)')\n .option('--helper-command <command>', 'Credential helper command to add to global git config')\n .option('--no-config', 'Store Git auth but do not update global git config')\n .option('--no-open', 'Do not auto-open browser URL')\n .action(gitLogin);\n\nprogram\n .command('support-files')\n .description('Write generated local support files for a Standard Agents platform repository')\n .option('--project-name <name>', 'Project name to use in the generated package manifest')\n .option('--package-manager <manager>', 'Package manager: npm, pnpm, yarn, or bun')\n .action(supportFiles);\n\nprogram\n .command('skill')\n .description('Install the bundled AgentBuilder guidance into a supported coding agent')\n .option('--agent <target>', 'Install target: codex or claude')\n .option('--dir <path>', 'Install directory override for the selected target')\n .option('--force', 'Overwrite an existing installed skill')\n .action(skill);\n\nprogram\n .command('current-models')\n .description('Print the live curated model guide from standardagentspec.com')\n .option('--url <url>', 'Override the models markdown URL')\n .action(currentModels);\n\nprogram\n .command('available-models')\n .description('List every available model for one configured provider in the current project')\n .option('--provider <provider>', 'Provider to query, for example cerebras or openai')\n .action(availableModels);\n\nasync function run(): Promise<void> {\n const userArgs = process.argv.slice(2);\n const isInteractiveTerminal = Boolean(process.stdin.isTTY && process.stdout.isTTY);\n\n if (userArgs.length === 0 && isInteractiveTerminal) {\n while (true) {\n const selection = await runHomeTui();\n if (!selection) return;\n\n if (selection.preserveTuiScreen) {\n await settleStdinForInitHandoff();\n process.stdout.write('\\x1b[2J\\x1b[H');\n try {\n await init(undefined, { returnToHomeOnCancel: true });\n } catch (error) {\n restoreTuiTerminal();\n if (isInitWizardReturnToHomeError(error)) {\n continue;\n }\n throw error;\n }\n restoreTuiTerminal();\n return;\n }\n\n await program.parseAsync(selection.argv, { from: 'user' });\n return;\n }\n }\n\n await program.parseAsync(process.argv);\n}\n\nrun().catch((error) => {\n console.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n});\n"]}
1
+ {"version":3,"sources":["../src/utils/logger.ts","../src/utils/bootstrap-state.ts","../src/utils/cli-auth-api.ts","../src/commands/scaffold.ts","../src/tui/init-ui.tsx","../src/commands/init.ts","../src/utils/project-auth-env.ts","../src/commands/login.ts","../src/utils/cli-auth-storage.ts","../src/commands/logout.ts","../src/commands/init-chat.ts","../src/commands/pack.ts","../src/commands/unpack.ts","../src/commands/deploy.ts","../src/tui/context.ts","../src/tui/home.tsx","../src/commands/skill.ts","../src/utils/models.ts","../src/commands/current-models.ts","../src/commands/available-models.ts","../src/commands/git-credential.ts","../src/commands/git-login.ts","../src/index.ts"],"names":["path","fs","child","spawn","os","supportFiles","upsertEnvLine","prompt","readline","projectPath","state","reused","DEV_VARS_FILENAME","fileURLToPath","runCommand","detectPackageManager","selectPackageManager","net","openBrowser","render","isStandardAgentsProject","chalk","useState","useApp","useInput","jsxs","Box","jsx","Text","provider","spawnSync","isInteractiveTerminal"],"mappings":"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","file":"index.js","sourcesContent":["import chalk from 'chalk';\n\nexport const logger = {\n success: (message: string) => {\n console.log(chalk.green('✓'), message);\n },\n error: (message: string) => {\n console.log(chalk.red('✗'), message);\n },\n warning: (message: string) => {\n console.log(chalk.yellow('⚠'), message);\n },\n info: (message: string) => {\n console.log(chalk.blue('ℹ'), message);\n },\n log: (message: string) => {\n console.log(message);\n },\n};\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nexport interface BootstrapSessionState {\n version: 1;\n endpoint: string;\n authenticated_at: number;\n /**\n * Session cookie pair returned by Platform API bootstrap consume/login.\n * Stored as \"session=<signed-id>\" for CLI-authenticated API requests.\n */\n session_cookie?: string;\n user: {\n id: string;\n email: string;\n role: string;\n };\n account: {\n id: string;\n slug?: string;\n tier?: string;\n };\n}\n\nconst STATE_RELATIVE_PATH = path.join('.agents', 'bootstrap-session.json');\n\nexport function getBootstrapStatePath(projectPath: string): string {\n return path.join(projectPath, STATE_RELATIVE_PATH);\n}\n\nexport function loadBootstrapState(projectPath: string): BootstrapSessionState | null {\n const statePath = getBootstrapStatePath(projectPath);\n if (!fs.existsSync(statePath)) return null;\n\n try {\n const parsed = JSON.parse(fs.readFileSync(statePath, 'utf-8')) as BootstrapSessionState;\n if (parsed.version !== 1) return null;\n if (!parsed.endpoint || !parsed.user?.id || !parsed.account?.id) return null;\n if (parsed.session_cookie !== undefined && typeof parsed.session_cookie !== 'string') return null;\n return parsed;\n } catch {\n return null;\n }\n}\n\nexport function persistBootstrapState(projectPath: string, state: BootstrapSessionState): void {\n const statePath = getBootstrapStatePath(projectPath);\n fs.mkdirSync(path.dirname(statePath), { recursive: true });\n fs.writeFileSync(statePath, JSON.stringify(state, null, 2) + '\\n', 'utf-8');\n}\n\nexport function clearBootstrapState(projectPath: string): void {\n const statePath = getBootstrapStatePath(projectPath);\n if (fs.existsSync(statePath)) {\n fs.unlinkSync(statePath);\n }\n}\n","import { spawn } from 'node:child_process';\n\nexport interface CliAuthStartResponse {\n session_id: string;\n auth_url: string;\n ws_url: string;\n expires_at: number;\n}\n\ninterface CliAuthWsAuthenticatedMessage {\n type: 'authenticated';\n session_id: string;\n bootstrap_code?: string;\n exchange_code?: string;\n command?: string;\n expires_at?: number;\n}\n\ninterface CliAuthWsTerminalMessage {\n type: 'cancelled' | 'expired';\n reason_code?: string;\n}\n\ntype CliAuthWsMessage =\n | CliAuthWsAuthenticatedMessage\n | CliAuthWsTerminalMessage\n | { type: string; [key: string]: unknown };\n\nexport interface CliAuthExchangeResponse {\n access_token: string;\n access_token_expires_at: number;\n refresh_token: string;\n refresh_token_expires_at: number;\n org: { id: string; slug: string; name: string };\n user: { id: string; email: string; role: string };\n}\n\nexport interface CliAuthRefreshResponse {\n access_token: string;\n access_token_expires_at: number;\n refresh_token: string;\n refresh_token_expires_at: number;\n org: { id: string; slug: string; name: string };\n user: { id: string; email: string; role: string };\n}\n\ninterface RuntimeWebSocket {\n send?: (data: string) => void;\n close(): void;\n onopen: (() => void) | null;\n onerror: ((event: unknown) => void) | null;\n onclose: ((event: unknown) => void) | null;\n onmessage: ((event: { data: unknown }) => void) | null;\n}\n\nfunction getWebSocketCtor(): ((url: string) => RuntimeWebSocket) {\n const maybeCtor = (globalThis as unknown as { WebSocket?: new (url: string) => RuntimeWebSocket }).WebSocket;\n if (!maybeCtor) {\n throw new Error('WebSocket is not available in this runtime');\n }\n return (url: string) => new maybeCtor(url);\n}\n\nfunction sendWsPoll(ws: RuntimeWebSocket): void {\n if (typeof ws.send !== 'function') return;\n try {\n ws.send(JSON.stringify({ type: 'poll' }));\n } catch {\n // no-op\n }\n}\n\nexport function resolvePlatformApiEndpoint(raw?: string): string {\n const fromPlatformEndpoint = process.env.PLATFORM_ENDPOINT;\n const fromLegacyEnv = process.env.STANDARDAGENTS_PLATFORM_API_URL;\n const endpoint = (raw || fromPlatformEndpoint || fromLegacyEnv || 'https://api.standardagents.ai').trim();\n if (!endpoint) return 'https://api.standardagents.ai';\n return endpoint.replace(/\\/+$/, '');\n}\n\nexport function resolvePlatformAuthBrowserUrl(rawApiEndpoint?: string): string {\n const explicit = (\n process.env.CLI_AUTH_BROWSER_URL\n || process.env.STANDARDAGENTS_AUTH_URL\n || process.env.PLATFORM_AUTH_PUBLIC_URL\n )?.trim();\n if (explicit) {\n return explicit.replace(/\\/+$/, '');\n }\n\n const apiEndpoint = resolvePlatformApiEndpoint(rawApiEndpoint);\n try {\n const url = new URL(apiEndpoint);\n if (url.hostname.startsWith('platform-api.')) {\n url.hostname = `platform-auth.${url.hostname.slice('platform-api.'.length)}`;\n return url.origin;\n }\n if (url.hostname.startsWith('api.')) {\n url.hostname = `auth.${url.hostname.slice('api.'.length)}`;\n return url.origin;\n }\n return url.origin;\n } catch {\n return 'https://auth.standardagents.ai';\n }\n}\n\nasync function parseError(response: Response): Promise<string> {\n const fallback = `Request failed (${response.status})`;\n try {\n const body = await response.json() as {\n error?: { code?: string; message?: string };\n };\n if (body.error?.code && body.error?.message) {\n return `${body.error.code}: ${body.error.message}`;\n }\n if (body.error?.message) {\n return body.error.message;\n }\n return fallback;\n } catch {\n return fallback;\n }\n}\n\nexport async function startCliAuthSession(endpoint: string): Promise<CliAuthStartResponse> {\n const response = await fetch(`${endpoint}/cli/auth/start`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n });\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n return response.json() as Promise<CliAuthStartResponse>;\n}\n\nexport async function cancelCliAuthSession(\n endpoint: string,\n sessionId: string,\n): Promise<void> {\n await fetch(`${endpoint}/cli/auth/cancel`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ session_id: sessionId }),\n }).catch(() => undefined);\n}\n\nexport async function exchangeCliAuthSession(\n endpoint: string,\n sessionId: string,\n exchangeCode: string,\n): Promise<CliAuthExchangeResponse> {\n const response = await fetch(`${endpoint}/cli/auth/exchange`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ session_id: sessionId, exchange_code: exchangeCode }),\n });\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n return response.json() as Promise<CliAuthExchangeResponse>;\n}\n\nexport async function refreshCliAuthToken(\n endpoint: string,\n refreshToken: string,\n): Promise<CliAuthRefreshResponse> {\n const response = await fetch(`${endpoint}/cli/auth/refresh`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ refresh_token: refreshToken }),\n });\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n return response.json() as Promise<CliAuthRefreshResponse>;\n}\n\nexport async function revokeCliAuthToken(\n endpoint: string,\n refreshToken: string,\n): Promise<void> {\n const response = await fetch(`${endpoint}/cli/auth/revoke`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ refresh_token: refreshToken }),\n });\n if (!response.ok) {\n throw new Error(await parseError(response));\n }\n}\n\nexport async function waitForCliAuthCompletion(\n wsUrl: string,\n expiresAt: number,\n): Promise<{ bootstrapCode: string; command?: string }> {\n const createWebSocket = getWebSocketCtor();\n const ws = createWebSocket(wsUrl);\n\n return new Promise((resolve, reject) => {\n let settled = false;\n const timeoutMs = Math.max(1_000, expiresAt - Date.now() + 5_000);\n const closeSocket = () => {\n try {\n ws.close();\n } catch {\n // no-op\n }\n };\n const heartbeat = setInterval(() => {\n if (settled) return;\n sendWsPoll(ws);\n }, 750);\n const timer = setTimeout(() => {\n if (settled) return;\n settled = true;\n clearInterval(heartbeat);\n closeSocket();\n reject(new Error('Authentication timed out. Run \"agents login\" to restart.'));\n }, timeoutMs);\n\n const settle = (fn: () => void) => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n clearInterval(heartbeat);\n closeSocket();\n fn();\n };\n\n ws.onopen = () => {\n // Prompt server-side delivery from websocket context.\n sendWsPoll(ws);\n };\n\n ws.onerror = () => {\n settle(() => reject(new Error('Failed to connect to auth session websocket.')));\n };\n\n ws.onclose = () => {\n settle(() => reject(new Error('Authentication session closed before completion.')));\n };\n\n ws.onmessage = (event: { data: unknown }) => {\n let message: CliAuthWsMessage;\n try {\n const raw = typeof event.data === 'string' ? event.data : String(event.data);\n message = JSON.parse(raw) as CliAuthWsMessage;\n } catch {\n return;\n }\n\n if (message.type === 'authenticated') {\n const bootstrapCode =\n typeof message.bootstrap_code === 'string'\n ? message.bootstrap_code\n : typeof message.exchange_code === 'string'\n ? message.exchange_code\n : '';\n\n if (!bootstrapCode) {\n settle(() => reject(new Error('Authentication completed without bootstrap code.')));\n return;\n }\n const command = typeof message.command === 'string' ? message.command : undefined;\n settle(() => resolve({ bootstrapCode, command }));\n return;\n }\n\n if (message.type === 'cancelled') {\n settle(() => reject(new Error('Authentication was cancelled. Run \"agents login\" to restart.')));\n return;\n }\n\n if (message.type === 'expired') {\n settle(() => reject(new Error('Authentication session expired. Run \"agents login\" to restart.')));\n }\n };\n });\n}\n\nexport function openBrowser(url: string): boolean {\n try {\n if (process.platform === 'darwin') {\n const child = spawn('open', [url], { detached: true, stdio: 'ignore' });\n child.unref();\n return true;\n }\n if (process.platform === 'win32') {\n const child = spawn('cmd', ['/c', 'start', '', url], { detached: true, stdio: 'ignore' });\n child.unref();\n return true;\n }\n const child = spawn('xdg-open', [url], { detached: true, stdio: 'ignore' });\n child.unref();\n return true;\n } catch {\n return false;\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { parse, modify, applyEdits } from 'jsonc-parser';\nimport { loadFile, writeFile } from 'magicast';\nimport { addVitePlugin } from 'magicast/helpers';\nimport {\n AGENT_DEFINITIONS_AGENTS_MD,\n API_AGENTS_MD,\n HOOKS_AGENTS_MD,\n MODELS_AGENTS_MD,\n PROMPTS_AGENTS_MD,\n ROOT_AGENTS_MD,\n TOOLS_AGENTS_MD,\n} from '@standardagents/agentbuilder-template';\nimport { logger } from '../utils/logger.js';\n\ninterface ScaffoldOptions {\n force?: boolean;\n}\n\ntype DependencySection = 'dependencies' | 'devDependencies';\n\ndeclare const __CLI_VERSION__: string;\n\nfunction getScaffoldStandardAgentsVersion(): string {\n if (process.env.STANDARDAGENTS_WORKSPACE === '1') {\n return 'workspace:*';\n }\n return typeof __CLI_VERSION__ === 'undefined' ? 'latest' : __CLI_VERSION__;\n}\n\nfunction findViteConfig(cwd: string): string | null {\n const candidates = ['vite.config.ts', 'vite.config.js', 'vite.config.mts', 'vite.config.mjs'];\n for (const candidate of candidates) {\n const configPath = path.join(cwd, candidate);\n if (fs.existsSync(configPath)) {\n return configPath;\n }\n }\n return null;\n}\n\nfunction dependencySectionFor(\n pkg: { dependencies?: Record<string, string>; devDependencies?: Record<string, string> },\n packageName: string,\n fallback: DependencySection,\n): DependencySection {\n if (pkg.dependencies?.[packageName] !== undefined) return 'dependencies';\n if (pkg.devDependencies?.[packageName] !== undefined) return 'devDependencies';\n return fallback;\n}\n\nfunction setPackageDependency(\n packageJsonText: string,\n section: DependencySection,\n packageName: string,\n version: string,\n): string {\n const edits = modify(packageJsonText, [section, packageName], version, {\n formattingOptions: { insertSpaces: true, tabSize: 2 },\n });\n return applyEdits(packageJsonText, edits);\n}\n\nexport function updatePackageDependencies(\n cwd: string,\n versions: {\n standardAgents?: string;\n } = {},\n): boolean {\n const packageJsonPath = path.join(cwd, 'package.json');\n if (!fs.existsSync(packageJsonPath)) {\n logger.warning('No package.json found. Install @standardagents/builder manually.');\n return false;\n }\n\n try {\n const text = fs.readFileSync(packageJsonPath, 'utf-8');\n const pkg = JSON.parse(text) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n };\n\n const desiredBuilderVersion = versions.standardAgents ?? getScaffoldStandardAgentsVersion();\n const builderSection = dependencySectionFor(pkg, '@standardagents/builder', 'dependencies');\n\n let result = text;\n let changed = false;\n\n if (pkg[builderSection]?.['@standardagents/builder'] !== desiredBuilderVersion) {\n result = setPackageDependency(result, builderSection, '@standardagents/builder', desiredBuilderVersion);\n changed = true;\n }\n\n if (!changed) {\n logger.info('package.json already has current Standard Agents dependencies');\n return true;\n }\n\n fs.writeFileSync(packageJsonPath, `${result.trimEnd()}\\n`, 'utf-8');\n logger.success('Updated package.json with current Standard Agents dependencies');\n return true;\n } catch (error) {\n logger.warning(`Could not update package.json dependencies: ${error}`);\n return false;\n }\n}\n\nasync function modifyViteConfig(configPath: string, force: boolean): Promise<boolean> {\n try {\n const mod = await loadFile(configPath);\n\n const code = fs.readFileSync(configPath, 'utf-8');\n const hasAgentBuilder = code.includes('@standardagents/builder') || code.includes('builder()') || code.includes('agentbuilder()');\n\n if (hasAgentBuilder && !force) {\n logger.info('Vite config already includes builder plugin');\n return true;\n }\n\n if (!hasAgentBuilder || force) {\n addVitePlugin(mod, {\n from: '@standardagents/builder',\n imported: 'builder',\n constructor: 'builder',\n });\n logger.success('Added builder plugin to vite.config');\n }\n\n await writeFile(mod, configPath);\n return true;\n } catch (error) {\n logger.warning(`Could not automatically modify vite.config: ${error}`);\n logger.log('');\n logger.log('Please manually add the following to your vite.config.ts:');\n logger.log('');\n logger.log(` import { builder } from '@standardagents/builder'`);\n logger.log('');\n logger.log(` plugins: [builder()]`);\n logger.log('');\n return false;\n }\n}\n\nfunction createDirectoriesAndDocs(cwd: string): void {\n function writeAgentsDocWithClaudeSymlink(dirPath: string, doc: string, label: string): void {\n const agentsDocPath = path.join(dirPath, 'AGENTS.md');\n const claudeDocPath = path.join(dirPath, 'CLAUDE.md');\n\n if (!fs.existsSync(agentsDocPath)) {\n fs.writeFileSync(agentsDocPath, doc, 'utf-8');\n logger.success(`Created ${label}/AGENTS.md`);\n }\n\n if (!fs.existsSync(claudeDocPath)) {\n fs.symlinkSync('AGENTS.md', claudeDocPath);\n logger.success(`Created ${label}/CLAUDE.md symlink`);\n }\n }\n\n // Create project root AGENTS.md and Claude compatibility symlink.\n writeAgentsDocWithClaudeSymlink(cwd, ROOT_AGENTS_MD, '.');\n\n // Create subdirectories with their AGENTS.md files and Claude compatibility symlinks.\n const directories = [\n { path: 'agents/agents', doc: AGENT_DEFINITIONS_AGENTS_MD },\n { path: 'agents/prompts', doc: PROMPTS_AGENTS_MD },\n { path: 'agents/models', doc: MODELS_AGENTS_MD },\n { path: 'agents/tools', doc: TOOLS_AGENTS_MD },\n { path: 'agents/hooks', doc: HOOKS_AGENTS_MD },\n { path: 'agents/api', doc: API_AGENTS_MD },\n ];\n\n for (const dir of directories) {\n const dirPath = path.join(cwd, dir.path);\n\n // Create directory\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n logger.success(`Created ${dir.path}`);\n }\n\n writeAgentsDocWithClaudeSymlink(dirPath, dir.doc, dir.path);\n }\n}\n\nfunction updateTsConfig(cwd: string): void {\n const tsconfigPath = path.join(cwd, 'tsconfig.json');\n\n if (!fs.existsSync(tsconfigPath)) {\n logger.info('No tsconfig.json found, skipping TypeScript configuration');\n return;\n }\n\n try {\n const text = fs.readFileSync(tsconfigPath, 'utf-8');\n const config = parse(text);\n let result = text;\n\n const types = config.compilerOptions?.types || [];\n const newTypes = [\n './.agents/types.d.ts',\n './.agents/virtual-module.d.ts'\n ].filter(t => !types.includes(t));\n\n if (newTypes.length > 0) {\n const allTypes = [...types, ...newTypes];\n const edits = modify(result, ['compilerOptions', 'types'], allTypes, {});\n result = applyEdits(result, edits);\n }\n\n const include = config.include || [];\n const newIncludes = ['agents', '.agents', 'vite.config.ts'].filter(i => !include.includes(i));\n\n if (newIncludes.length > 0) {\n const allIncludes = [...include, ...newIncludes];\n const edits = modify(result, ['include'], allIncludes, {});\n result = applyEdits(result, edits);\n }\n\n if (newTypes.length > 0 || newIncludes.length > 0) {\n fs.writeFileSync(tsconfigPath, result, 'utf-8');\n logger.success('Updated tsconfig.json with Standard Agents types');\n } else {\n logger.info('tsconfig.json already configured');\n }\n } catch (error) {\n logger.warning('Could not update tsconfig.json, you may need to add types manually');\n }\n}\n\nfunction cleanupViteDefaults(cwd: string): void {\n // Remove default Vite files that AgentBuilder no longer needs when scaffold is\n // used as a forced fresh-project conversion. AgentBuilder owns the whole app.\n const filesToRemove = [\n 'src/main.ts',\n 'src/style.css',\n 'src/counter.ts',\n 'src/typescript.svg',\n 'src/vite-env.d.ts',\n 'index.html',\n 'public/vite.svg',\n 'wrangler.jsonc',\n 'wrangler.json',\n 'worker/index.ts',\n 'agents/Thread.ts',\n 'agents/AgentBuilder.ts',\n ];\n\n const dirsToRemove = ['src', 'public', 'worker'];\n\n for (const file of filesToRemove) {\n const filePath = path.join(cwd, file);\n if (fs.existsSync(filePath)) {\n try {\n fs.unlinkSync(filePath);\n } catch {\n // Ignore errors\n }\n }\n }\n\n // Remove empty directories\n for (const dir of dirsToRemove) {\n const dirPath = path.join(cwd, dir);\n if (fs.existsSync(dirPath)) {\n try {\n const files = fs.readdirSync(dirPath);\n if (files.length === 0) {\n fs.rmdirSync(dirPath);\n }\n } catch {\n // Ignore errors\n }\n }\n }\n}\n\nexport async function scaffold(options: ScaffoldOptions = {}) {\n const cwd = process.cwd();\n const force = options.force || false;\n\n logger.info('Scaffolding Standard Agents...');\n logger.log('');\n\n // 1. Find and modify vite.config\n const viteConfigPath = findViteConfig(cwd);\n if (viteConfigPath) {\n await modifyViteConfig(viteConfigPath, force);\n } else {\n logger.warning('No vite.config found. Please create one with the agentbuilder plugin.');\n }\n\n // 2. Add or refresh package dependencies\n updatePackageDependencies(cwd);\n\n // 3. Create agent directories with documentation\n createDirectoriesAndDocs(cwd);\n\n // 4. Update tsconfig.json\n updateTsConfig(cwd);\n\n // 5. Clean up default Vite and legacy generated files only when explicitly forced.\n if (force) {\n cleanupViteDefaults(cwd);\n }\n\n logger.log('');\n logger.success('Standard Agents scaffolding complete!');\n logger.log('');\n logger.log('Your project structure:');\n logger.log('');\n logger.log(' AGENTS.md # Architecture documentation');\n logger.log(' CLAUDE.md -> AGENTS.md # Compatibility symlink');\n logger.log(' vite.config.ts # Uses builder(); Cloudflare config is generated');\n logger.log(' tsconfig.json # Includes agents and generated .agents types');\n logger.log(' agents/');\n logger.log(' ├── agents/ # Agent definitions');\n logger.log(' ├── prompts/ # Prompt definitions');\n logger.log(' ├── models/ # Model configurations');\n logger.log(' ├── tools/ # Custom tools');\n logger.log(' ├── hooks/ # Lifecycle hooks');\n logger.log(' └── api/ # Thread API endpoints');\n logger.log('');\n}\n","import React, { useMemo, useState } from 'react';\nimport { Box, Text, render, renderToString, useApp, useInput } from 'ink';\nimport { TextInput } from '@inkjs/ui';\n\nexport type InitPackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\nexport type InitAuthMode = 'standardagents' | 'local';\nexport type InitProgressStage = 'project' | 'auth' | 'env' | 'scaffold';\n\nconst STAGE_LABELS: Record<InitProgressStage, string> = {\n project: 'Project',\n auth: 'Auth',\n env: 'Env',\n scaffold: 'Scaffold',\n};\n\nconst STANDARDAGENTS_FLOW: InitProgressStage[] = ['project', 'auth', 'scaffold'];\nconst LOCAL_FLOW: InitProgressStage[] = ['project', 'auth', 'env', 'scaffold'];\n\nexport function getInitProgressStages(authMode: InitAuthMode = 'standardagents'): InitProgressStage[] {\n return authMode === 'local' ? LOCAL_FLOW : STANDARDAGENTS_FLOW;\n}\n\nexport function getInitStepInfo(stage: InitProgressStage, authMode: InitAuthMode = 'standardagents'): {\n step: number;\n total: number;\n labels: string[];\n} {\n const flow = getInitProgressStages(authMode);\n const stepIndex = flow.indexOf(stage);\n return {\n step: stepIndex === -1 ? 1 : stepIndex + 1,\n total: flow.length,\n labels: flow.map((item) => STAGE_LABELS[item]),\n };\n}\n\nexport interface InitStepFrameState {\n stage: InitProgressStage;\n title: string;\n subtitle?: string;\n projectName?: string;\n packageManager?: string;\n authMode?: InitAuthMode;\n}\n\nexport const AUTH_SIDE_BY_SIDE_MIN_COLUMNS = 110;\n\nexport function shouldUseSideBySideAuthCards(columns: number): boolean {\n return columns >= AUTH_SIDE_BY_SIDE_MIN_COLUMNS;\n}\n\nfunction clearInkScreen(stdout: NodeJS.WriteStream = process.stdout): void {\n stdout.write('\\x1b[2J\\x1b[H');\n}\n\nasync function settleStdinBeforePrompt(stdin: NodeJS.ReadStream = process.stdin): Promise<void> {\n if (!stdin.isTTY) return;\n\n stdin.pause();\n while (stdin.read() !== null) {\n // Drain any buffered key events (for example Enter from previous screen)\n }\n await new Promise<void>((resolve) => setTimeout(resolve, 0));\n while (stdin.read() !== null) {\n // One more pass after microtask boundary\n }\n}\n\ninterface SelectOption<T extends string> {\n value: T;\n label: string;\n description?: string;\n bullets?: string[];\n badge?: string;\n}\n\ninterface SelectPromptProps<T extends string> {\n title: string;\n subtitle?: string;\n footerHint?: string;\n options: SelectOption<T>[];\n defaultIndex?: number;\n horizontal?: boolean;\n density?: 'comfortable' | 'compact';\n onCancel?: () => void;\n onSubmit: (value: T) => void;\n}\n\nfunction Stepper({ activeStage, authMode }: { activeStage: InitProgressStage; authMode: InitAuthMode }) {\n const flow = getInitProgressStages(authMode);\n const activeIndex = flow.indexOf(activeStage);\n return (\n <Box flexDirection=\"row\" marginBottom={1}>\n {flow.map((stage, index) => {\n const label = STAGE_LABELS[stage];\n const isActive = index === activeIndex;\n const isDone = index < activeIndex;\n const fg = isActive ? 'black' : isDone ? 'green' : 'gray';\n const bg = isActive ? 'cyan' : undefined;\n const marker = isDone ? '✓' : isActive ? '●' : '·';\n return (\n <Box key={stage} marginRight={1}>\n <Text color={fg} backgroundColor={bg}>\n {' '}\n {marker} {label}{' '}\n </Text>\n </Box>\n );\n })}\n </Box>\n );\n}\n\nfunction InitStepFrame(props: InitStepFrameState) {\n const mode = props.authMode ?? 'standardagents';\n const { step, total } = getInitStepInfo(props.stage, mode);\n const metadata = useMemo(() => {\n const items: Array<{ id: 'project' | 'pm' | 'mode'; label: string; value: string }> = [];\n if (props.projectName) {\n items.push({ id: 'project', label: 'Project', value: props.projectName });\n }\n if (props.packageManager) {\n items.push({ id: 'pm', label: 'PM', value: props.packageManager });\n }\n if (props.authMode) {\n items.push({\n id: 'mode',\n label: 'Mode',\n value: props.authMode === 'standardagents' ? 'StandardAgents' : 'Local',\n });\n }\n return items;\n }, [props.authMode, props.packageManager, props.projectName]);\n\n return (\n <Box flexDirection=\"column\" paddingX={1}>\n <Box borderStyle=\"round\" borderColor=\"cyan\" paddingX={1} flexDirection=\"column\">\n <Text color=\"cyanBright\" bold>\n StandardAgents CLI\n </Text>\n <Text color=\"gray\">Init Wizard</Text>\n </Box>\n <Box marginTop={1}>\n <Stepper activeStage={props.stage} authMode={mode} />\n </Box>\n {metadata.length > 0 && (\n <Box marginBottom={1} flexDirection=\"row\">\n {metadata.map((item, index) => {\n const valueColor =\n item.id === 'project'\n ? 'whiteBright'\n : item.id === 'pm'\n ? 'magentaBright'\n : item.value === 'StandardAgents'\n ? 'greenBright'\n : 'yellowBright';\n return (\n <Box key={item.id} flexDirection=\"row\">\n <Text color=\"gray\">{item.label} </Text>\n <Text color={valueColor}>{item.value}</Text>\n {index < metadata.length - 1 ? <Text color=\"gray\"> • </Text> : null}\n </Box>\n );\n })}\n </Box>\n )}\n <Text color=\"whiteBright\" bold>\n Step {step}/{total}: {props.title}\n </Text>\n {props.subtitle ? <Text color=\"gray\">{props.subtitle}</Text> : null}\n </Box>\n );\n}\n\nfunction OptionCard<T extends string>({\n option,\n selected,\n width,\n}: {\n option: SelectOption<T>;\n selected: boolean;\n width: number;\n}) {\n const borderColor = selected ? 'cyan' : 'gray';\n const titleColor = selected ? 'cyanBright' : 'whiteBright';\n const textColor = selected ? 'whiteBright' : 'gray';\n\n return (\n <Box\n width={width}\n borderStyle=\"round\"\n borderColor={borderColor}\n flexDirection=\"column\"\n paddingX={1}\n paddingY={0}\n marginRight={1}\n >\n <Box>\n <Text color={titleColor} bold>\n {option.label}\n </Text>\n {option.badge ? (\n <Text color={selected ? 'cyanBright' : 'gray'}>{` ${option.badge}`}</Text>\n ) : null}\n </Box>\n {option.description ? (\n <Box marginTop={0}>\n <Text color={textColor}>{option.description}</Text>\n </Box>\n ) : null}\n {option.bullets?.map((line) => (\n <Text key={line} color={textColor}>\n {'• '}\n {line}\n </Text>\n ))}\n </Box>\n );\n}\n\nfunction SelectPrompt<T extends string>({\n title,\n subtitle,\n footerHint,\n options,\n defaultIndex = 0,\n horizontal = false,\n density = 'comfortable',\n onCancel,\n onSubmit,\n}: SelectPromptProps<T>) {\n const [selectedIndex, setSelectedIndex] = useState(defaultIndex);\n const { exit } = useApp();\n const width = process.stdout.columns ?? 120;\n const cardWidth = horizontal ? Math.max(34, Math.floor((width - 8) / options.length)) : Math.max(42, width - 6);\n\n useInput((input, key) => {\n if (key.upArrow || input === 'k' || key.leftArrow || input === 'h') {\n setSelectedIndex((prev) => (prev - 1 + options.length) % options.length);\n return;\n }\n if (key.downArrow || input === 'j' || key.rightArrow || input === 'l') {\n setSelectedIndex((prev) => (prev + 1) % options.length);\n return;\n }\n if (key.return) {\n onSubmit(options[selectedIndex].value);\n exit();\n return;\n }\n if (key.escape) {\n onCancel?.();\n exit();\n return;\n }\n if (key.ctrl && input === 'c') {\n process.exit(1);\n }\n });\n\n return (\n <Box flexDirection=\"column\" paddingX={1}>\n <Text color=\"whiteBright\" bold>\n {title}\n </Text>\n {subtitle ? <Text color=\"gray\">{subtitle}</Text> : null}\n {density === 'compact' ? (\n <Box marginTop={1} flexDirection=\"column\">\n {options.map((option, index) => {\n const selected = index === selectedIndex;\n return (\n <Box key={option.value} marginBottom={0}>\n <Text color={selected ? 'black' : 'white'} backgroundColor={selected ? 'cyan' : undefined} bold={selected}>\n {selected ? '›' : ' '} {option.label}\n {option.badge ? ` ${option.badge}` : ''}\n </Text>\n {option.description ? <Text color={selected ? 'cyan' : 'gray'}>{` ${option.description}`}</Text> : null}\n </Box>\n );\n })}\n </Box>\n ) : (\n <Box marginTop={1} flexDirection={horizontal ? 'row' : 'column'}>\n {options.map((option, index) => (\n <Box key={option.value} marginBottom={horizontal ? 0 : 1}>\n <OptionCard option={option} selected={index === selectedIndex} width={cardWidth} />\n </Box>\n ))}\n </Box>\n )}\n <Text color=\"gray\">{footerHint ?? 'Use arrows (or h/j/k/l) and Enter to continue.'}</Text>\n </Box>\n );\n}\n\nasync function runSelectPrompt<T extends string>(\n props: Omit<SelectPromptProps<T>, 'onSubmit'>,\n): Promise<T | null> {\n let resolved: T | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <SelectPrompt\n {...props}\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (resolved !== null) return resolved;\n if (cancelled) return null;\n return null;\n}\n\ninterface ProjectNamePromptProps {\n question: string;\n frame: InitStepFrameState;\n onCancel: () => void;\n onSubmit: (value: string) => void;\n}\n\nfunction ProjectNamePrompt({ question, frame, onCancel, onSubmit }: ProjectNamePromptProps) {\n const { exit } = useApp();\n const label = question.trim().replace(/:$/, '');\n\n useInput((input, key) => {\n if (key.ctrl && input === 'c') {\n process.exit(1);\n return;\n }\n if (key.escape) {\n onCancel();\n exit();\n return;\n }\n });\n\n return (\n <Box flexDirection=\"column\">\n <InitStepFrame {...frame} />\n <Box flexDirection=\"column\" paddingX={1} marginTop={1}>\n <Box borderStyle=\"round\" borderColor=\"cyan\" paddingX={1} marginTop={1}>\n <Text color=\"gray\">{label}: </Text>\n <TextInput\n placeholder=\"acme-agents\"\n onSubmit={(nextValue) => {\n const trimmed = nextValue.trim();\n if (!trimmed) {\n return;\n }\n onSubmit(trimmed);\n exit();\n }}\n />\n </Box>\n <Text color=\"gray\">Type to edit, Enter to continue.</Text>\n </Box>\n </Box>\n );\n}\n\nexport async function promptProjectNameWithInk(\n question: string,\n frame: InitStepFrameState,\n): Promise<string | null> {\n let resolved: string | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <ProjectNamePrompt\n question={question}\n frame={frame}\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (cancelled) return null;\n return resolved ?? '';\n}\n\nexport interface LocalEnvInput {\n openrouterKey: string;\n openaiKey: string;\n adminPassword: string;\n}\n\ninterface LocalEnvPromptProps {\n frame: Pick<InitStepFrameState, 'projectName' | 'packageManager' | 'authMode'>;\n onCancel: () => void;\n onSubmit: (value: LocalEnvInput) => void;\n}\n\nconst LOCAL_ENV_FIELDS = [\n {\n id: 'openrouter',\n title: 'OpenRouter API key',\n description: 'Optional. Needed for OpenRouter models.',\n placeholder: 'sk-or-v1-... (optional)',\n },\n {\n id: 'openai',\n title: 'OpenAI API key',\n description: 'Optional. Needed for OpenAI models.',\n placeholder: 'sk-... (optional)',\n },\n {\n id: 'password',\n title: 'Temporary admin password',\n description: 'Press Enter to use default: admin',\n placeholder: 'admin',\n },\n] as const;\n\ntype LocalEnvFieldId = (typeof LOCAL_ENV_FIELDS)[number]['id'];\n\nfunction LocalEnvPrompt({ frame, onCancel, onSubmit }: LocalEnvPromptProps) {\n const { exit } = useApp();\n const [fieldIndex, setFieldIndex] = useState(0);\n const [draft, setDraft] = useState<Record<LocalEnvFieldId, string>>({\n openrouter: '',\n openai: '',\n password: '',\n });\n const activeField = LOCAL_ENV_FIELDS[fieldIndex];\n\n useInput((input, key) => {\n if (key.ctrl && input === 'c') {\n process.exit(1);\n return;\n }\n if (key.escape) {\n onCancel();\n exit();\n return;\n }\n });\n\n const maskFieldValue = (fieldId: LocalEnvFieldId, value: string): string => {\n if (!value) return '';\n if (fieldId === 'password') return '•'.repeat(value.length);\n return value;\n };\n\n return (\n <Box flexDirection=\"column\">\n <InitStepFrame\n stage=\"env\"\n title=\"Environment setup\"\n subtitle=\"Add optional provider keys and local admin access.\"\n projectName={frame.projectName}\n packageManager={frame.packageManager}\n authMode={frame.authMode}\n />\n <Box marginTop={1} paddingX={1} flexDirection=\"column\">\n {LOCAL_ENV_FIELDS.map((field, index) => {\n const isActive = index === fieldIndex;\n const isComplete = index < fieldIndex;\n const marker = isComplete ? '✓' : isActive ? '›' : '·';\n return (\n <Box key={field.id} flexDirection=\"column\" marginBottom={1}>\n <Text color={isActive ? 'cyanBright' : isComplete ? 'greenBright' : 'gray'} bold={isActive}>\n {marker} {field.title}\n </Text>\n <Text color=\"gray\">{field.description}</Text>\n {isActive ? (\n <Box borderStyle=\"round\" borderColor=\"cyan\" paddingX={1}>\n <TextInput\n key={field.id}\n defaultValue={draft[field.id]}\n placeholder={field.placeholder}\n onSubmit={(nextValue) => {\n const trimmed = nextValue.trim();\n const nextDraft = { ...draft, [field.id]: trimmed };\n setDraft(nextDraft);\n\n if (fieldIndex < LOCAL_ENV_FIELDS.length - 1) {\n setFieldIndex(fieldIndex + 1);\n return;\n }\n\n onSubmit({\n openrouterKey: nextDraft.openrouter,\n openaiKey: nextDraft.openai,\n adminPassword: nextDraft.password || 'admin',\n });\n exit();\n }}\n />\n </Box>\n ) : (\n <Text color={isComplete ? 'white' : 'gray'}>\n {maskFieldValue(field.id, draft[field.id]) || '(not set)'}\n </Text>\n )}\n </Box>\n );\n })}\n </Box>\n <Box paddingX={1}>\n <Text color=\"gray\">Press Enter to continue each field.</Text>\n </Box>\n </Box>\n );\n}\n\nexport async function collectLocalEnvWithInk(\n frame: Pick<InitStepFrameState, 'projectName' | 'packageManager' | 'authMode'>,\n): Promise<LocalEnvInput | null> {\n let resolved: LocalEnvInput | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <LocalEnvPrompt\n frame={frame}\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (cancelled) return null;\n return resolved;\n}\n\nexport function renderInitStepFrame(state: InitStepFrameState): string {\n return renderToString(<InitStepFrame {...state} />);\n}\n\nexport function renderInitCompleteFrame(input: {\n useExistingProject: boolean;\n projectName: string;\n nextCommand: string;\n bootstrapSession: boolean;\n}): string {\n return renderToString(\n <Box flexDirection=\"column\" paddingX={1}>\n <Box borderStyle=\"round\" borderColor=\"green\" paddingX={1} flexDirection=\"column\">\n <Text color=\"greenBright\" bold>\n Init Complete\n </Text>\n <Text color=\"whiteBright\">\n {input.useExistingProject ? 'Project updated successfully.' : 'Project created successfully.'}\n </Text>\n </Box>\n <Box marginTop={1} flexDirection=\"column\">\n <Text color=\"cyanBright\" bold>\n Next steps\n </Text>\n {!input.useExistingProject ? <Text color=\"white\">{` cd ${input.projectName}`}</Text> : null}\n <Text color=\"white\">{` ${input.nextCommand}`}</Text>\n </Box>\n {!input.bootstrapSession ? (\n <Box marginTop={1} flexDirection=\"column\">\n <Text color=\"yellowBright\" bold>\n Local-only notes\n </Text>\n <Text color=\"gray\"> 1. Sign in locally with username `admin` and your temporary `SUPER_ADMIN_PASSWORD`.</Text>\n <Text color=\"gray\"> 2. Create a standard user account for yourself.</Text>\n <Text color=\"gray\"> 3. Remove `SUPER_ADMIN_PASSWORD` from `.dev.vars` once setup is complete.</Text>\n </Box>\n ) : null}\n <Box marginTop={1}>\n <Text color=\"gray\">Docs: https://standardagents.ai/docs</Text>\n </Box>\n </Box>,\n );\n}\n\nexport async function selectPackageManagerWithInk(\n detected: InitPackageManager,\n context: {\n projectName?: string;\n authMode?: InitAuthMode;\n } = {},\n): Promise<InitPackageManager | null> {\n const options: SelectOption<InitPackageManager>[] = [\n { value: 'npm', label: 'npm', description: 'Default Node package manager.', badge: detected === 'npm' ? '(detected)' : undefined },\n { value: 'pnpm', label: 'pnpm', description: 'Fast, space-efficient monorepo manager.', badge: detected === 'pnpm' ? '(detected)' : undefined },\n { value: 'yarn', label: 'yarn', description: 'Classic workspace package manager.', badge: detected === 'yarn' ? '(detected)' : undefined },\n { value: 'bun', label: 'bun', description: 'Bun runtime package manager.', badge: detected === 'bun' ? '(detected)' : undefined },\n ];\n\n function PackageManagerPrompt({\n onCancel,\n onSubmit,\n }: {\n onCancel: () => void;\n onSubmit: (value: InitPackageManager) => void;\n }) {\n const { exit } = useApp();\n const [selectedIndex, setSelectedIndex] = useState(\n Math.max(0, options.findIndex((option) => option.value === detected)),\n );\n const selectedPm = options[selectedIndex]?.value ?? detected;\n\n useInput((input, key) => {\n if (key.upArrow || input === 'k') {\n setSelectedIndex((prev) => (prev - 1 + options.length) % options.length);\n return;\n }\n if (key.downArrow || input === 'j') {\n setSelectedIndex((prev) => (prev + 1) % options.length);\n return;\n }\n if (key.return) {\n onSubmit(selectedPm);\n exit();\n return;\n }\n if (key.escape) {\n onCancel();\n exit();\n return;\n }\n if (key.ctrl && input === 'c') {\n process.exit(1);\n }\n });\n\n return (\n <Box flexDirection=\"column\">\n <InitStepFrame\n stage=\"project\"\n title=\"Creating project scaffold\"\n subtitle=\"Select package manager for install and scaffold commands.\"\n projectName={context.projectName}\n packageManager={selectedPm}\n authMode={context.authMode}\n />\n <Box marginTop={1} flexDirection=\"column\" paddingX={1}>\n {options.map((option, index) => {\n const selected = index === selectedIndex;\n return (\n <Box key={option.value} marginBottom={0}>\n <Text color={selected ? 'black' : 'white'} backgroundColor={selected ? 'cyan' : undefined} bold={selected}>\n {selected ? '›' : ' '} {option.label}\n {option.badge ? ` ${option.badge}` : ''}\n </Text>\n {option.description ? <Text color={selected ? 'cyan' : 'gray'}>{` ${option.description}`}</Text> : null}\n </Box>\n );\n })}\n </Box>\n <Box paddingX={1}>\n <Text color=\"gray\">Use arrows (or j/k), Enter to continue, Esc to return.</Text>\n </Box>\n </Box>\n );\n }\n\n let resolved: InitPackageManager | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <PackageManagerPrompt\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (cancelled) return null;\n return resolved;\n}\n\ninterface AuthModePromptProps {\n projectName?: string;\n packageManager?: string;\n onCancel: () => void;\n onSubmit: (value: InitAuthMode) => void;\n}\n\nfunction AuthModePrompt({ projectName, packageManager, onCancel, onSubmit }: AuthModePromptProps) {\n const { exit } = useApp();\n const options: SelectOption<InitAuthMode>[] = [\n {\n value: 'standardagents',\n label: 'StandardAgents',\n bullets: ['Free account', '$2 starting credit', 'Zero-config setup', 'Production deployments'],\n },\n {\n value: 'local',\n label: 'Local',\n bullets: ['Bring your own provider keys', 'Manual setup required', 'Local-only mode', 'Account required for production'],\n },\n ];\n const [selectedIndex, setSelectedIndex] = useState(0);\n const selectedMode = options[selectedIndex]?.value ?? 'standardagents';\n const columns = process.stdout.columns ?? 120;\n const horizontal = shouldUseSideBySideAuthCards(columns);\n const cardWidth = horizontal ? Math.max(34, Math.floor((columns - 8) / options.length)) : Math.max(42, columns - 6);\n\n useInput((input, key) => {\n if (key.upArrow || input === 'k' || key.leftArrow || input === 'h') {\n setSelectedIndex((prev) => (prev - 1 + options.length) % options.length);\n return;\n }\n if (key.downArrow || input === 'j' || key.rightArrow || input === 'l') {\n setSelectedIndex((prev) => (prev + 1) % options.length);\n return;\n }\n if (key.return) {\n onSubmit(selectedMode);\n exit();\n return;\n }\n if (key.escape) {\n onCancel();\n exit();\n return;\n }\n if (key.ctrl && input === 'c') {\n process.exit(1);\n }\n });\n\n return (\n <Box flexDirection=\"column\">\n <InitStepFrame\n stage=\"auth\"\n title=\"Account linking\"\n subtitle=\"Choose how this project should be configured.\"\n projectName={projectName}\n packageManager={packageManager}\n authMode={selectedMode}\n />\n <Box marginTop={1} paddingX={1} flexDirection={horizontal ? 'row' : 'column'}>\n {options.map((option, index) => (\n <Box key={option.value} marginBottom={horizontal ? 0 : 1}>\n <OptionCard option={option} selected={index === selectedIndex} width={cardWidth} />\n </Box>\n ))}\n </Box>\n <Box paddingX={1}>\n <Text color=\"gray\">Use Left/Right (or h/l), Enter to continue, Esc to return.</Text>\n </Box>\n </Box>\n );\n}\n\nexport async function selectInitAuthModeWithInk(context: {\n projectName?: string;\n packageManager?: string;\n} = {}): Promise<InitAuthMode | null> {\n let resolved: InitAuthMode | null = null;\n let cancelled = false;\n await settleStdinBeforePrompt();\n clearInkScreen();\n const instance = render(\n <AuthModePrompt\n projectName={context.projectName}\n packageManager={context.packageManager}\n onCancel={() => {\n cancelled = true;\n }}\n onSubmit={(value) => {\n resolved = value;\n }}\n />,\n { exitOnCtrlC: false },\n );\n await instance.waitUntilExit();\n if (cancelled) return null;\n return resolved;\n}\n","import path from 'node:path';\nimport fs from 'node:fs';\nimport crypto from 'node:crypto';\nimport os from 'node:os';\nimport net from 'node:net';\nimport readline from 'node:readline';\nimport { spawn } from 'node:child_process';\nimport { fileURLToPath } from 'node:url';\nimport {\n FIRST_PARTY_PROVIDER_PACKAGES,\n renderAgentBuilderSupportFiles,\n type PackageManager,\n} from '@standardagents/agentbuilder-template';\nimport { logger } from '../utils/logger.js';\nimport {\n loadBootstrapState,\n persistBootstrapState,\n type BootstrapSessionState,\n} from '../utils/bootstrap-state.js';\nimport {\n cancelCliAuthSession,\n openBrowser,\n resolvePlatformAuthBrowserUrl,\n startCliAuthSession,\n waitForCliAuthCompletion,\n} from '../utils/cli-auth-api.js';\nimport { scaffold } from './scaffold.js';\nimport {\n collectLocalEnvWithInk,\n getInitStepInfo,\n promptProjectNameWithInk,\n renderInitCompleteFrame,\n renderInitStepFrame,\n selectInitAuthModeWithInk,\n selectPackageManagerWithInk,\n shouldUseSideBySideAuthCards as shouldUseSideBySideAuthCardsInk,\n type InitAuthMode,\n type InitProgressStage,\n} from '../tui/init-ui.js';\n\nexport interface InitOptions {\n yes?: boolean;\n local?: boolean;\n cli?: boolean;\n returnToHomeOnCancel?: boolean; // internal: used when init is launched from the home TUI\n template?: string;\n bootstrap?: string;\n apiUrl?: string;\n endpoint?: string;\n packageManager?: string;\n workspace?: boolean;\n dev?: boolean; // --no-dev sets this false: clone + configure without starting the dev server\n}\n\ninterface PlatformCliStartResponse {\n session_id: string;\n auth_url: string;\n ws_url: string;\n status_url?: string;\n expires_at: number;\n}\n\ninterface PlatformProjectPayload {\n id: string;\n name: string;\n repo_clone_url: string;\n repo_html_url: string | null;\n git_extra_header?: string | null;\n default_branch: string;\n api_key: string;\n package_manager: string | null;\n}\n\ninterface PlatformAuthMessage {\n type: string;\n project?: PlatformProjectPayload;\n command?: string;\n bootstrap_code?: string;\n}\n\nexport interface PlatformAuthProgress {\n status: string;\n message: string;\n updated_at: number;\n}\n\ninterface PlatformAuthStatusResponse {\n status: 'pending' | 'completed' | 'expired' | 'cancelled';\n type?: 'project' | 'bootstrap';\n project?: PlatformProjectPayload;\n command?: string;\n bootstrap_code?: string;\n progress?: PlatformAuthProgress | null;\n}\n\ninterface BootstrapConsumeSuccess {\n session_cookie: string;\n user: {\n id: string;\n email: string;\n role: string;\n };\n account: {\n id: string;\n slug?: string;\n tier?: string;\n };\n}\n\nconst DEFAULT_PLATFORM_ENDPOINT = 'https://api.standardagents.ai';\nconst INIT_TUI_ENV_VAR = 'STANDARDAGENTS_INIT_TUI';\nconst GENERATED_STANDARD_AGENTS_PACKAGES = [\n '@standardagents/builder',\n '@standardagents/spec',\n ...FIRST_PARTY_PROVIDER_PACKAGES,\n] as const;\nconst PACKAGE_MANAGERS = ['npm', 'pnpm', 'yarn', 'bun'] as const;\ntype SupportedPackageManager = typeof PACKAGE_MANAGERS[number];\nconst DEFAULT_PLATFORM_GIT_HELPER_COMMAND = '!npx -y @standardagents/cli@latest git-credential';\nconst MISSING_PLATFORM_PROJECT_NAME_MESSAGE =\n 'The platform did not return a project name. Please run the init command again to start a new project setup.';\nconst LEGACY_BOOTSTRAP_RESPONSE_MESSAGE =\n 'The platform returned an older onboarding response. Please run the init command again to start a new project setup.';\nexport const INIT_WIZARD_RETURN_TO_HOME_EXIT_CODE = 90;\n\ninterface EnsureAuthResult {\n connected: boolean;\n mode: InitAuthMode;\n}\n\ninterface InitStepHeaderOptions {\n tuiMode?: boolean;\n projectName?: string;\n packageManager?: string;\n authMode?: InitAuthMode;\n}\n\nclass InitWizardReturnToHomeError extends Error {\n constructor() {\n super('Return to home');\n this.name = 'InitWizardReturnToHomeError';\n }\n}\n\nexport function isInitWizardReturnToHomeError(error: unknown): error is InitWizardReturnToHomeError {\n return error instanceof InitWizardReturnToHomeError;\n}\n\nfunction exitOrThrowReturnToHome(options: Pick<InitOptions, 'returnToHomeOnCancel'> = {}): never {\n if (options.returnToHomeOnCancel) {\n throw new InitWizardReturnToHomeError();\n }\n process.exit(INIT_WIZARD_RETURN_TO_HOME_EXIT_CODE);\n}\n\nasync function prompt(question: string): Promise<string> {\n if (process.stdin.isTTY && process.stdin.isRaw) {\n process.stdin.setRawMode(false);\n }\n process.stdin.resume();\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n let settled = false;\n const finalize = (answer: string) => {\n if (settled) return;\n settled = true;\n resolve(answer.trim());\n };\n\n rl.on('SIGINT', () => {\n process.stdout.write('\\n');\n process.exit(130);\n });\n\n rl.once('close', () => {\n if (!settled) {\n finalize('');\n }\n });\n\n rl.question(question, (answer) => {\n finalize(answer);\n rl.close();\n });\n });\n}\n\nexport function parseBootstrapCodeInput(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) return '';\n\n const flagMatch = trimmed.match(/--bootstrap(?:=|\\s+)(?:\"([^\"]+)\"|'([^']+)'|([^\\s]+))/);\n if (flagMatch) {\n return (flagMatch[1] || flagMatch[2] || flagMatch[3] || '').trim();\n }\n\n return trimmed;\n}\n\nexport function shouldSkipBrowserOpen(value?: string | null): boolean {\n return /^(none|false|0|off)$/i.test(value?.trim() ?? '');\n}\n\nfunction openUrl(url: string): void {\n const preferredBrowser = process.env.STANDARD_AGENTS_BROWSER?.trim() || process.env.BROWSER?.trim();\n if (shouldSkipBrowserOpen(preferredBrowser)) {\n return;\n }\n\n const command = process.platform === 'darwin'\n ? 'open'\n : process.platform === 'win32'\n ? 'cmd'\n : 'xdg-open';\n const args = process.platform === 'darwin' && preferredBrowser\n ? ['-a', preferredBrowser, url]\n : process.platform === 'win32'\n ? ['/c', 'start', '', url]\n : [url];\n const child = spawn(command, args, { stdio: 'ignore', detached: true });\n child.on('error', () => {\n // Browser handoff is best-effort; onboarding continues in the terminal.\n });\n child.unref();\n}\n\nasync function promptPassword(question: string): Promise<string> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n stdout.write(question);\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n let password = '';\n let settled = false;\n\n const cleanup = () => {\n if (stdin.isTTY) {\n stdin.setRawMode(wasRaw ?? false);\n }\n stdin.pause();\n stdin.removeListener('data', onData);\n stdin.removeListener('end', onEndOrClose);\n stdin.removeListener('close', onEndOrClose);\n };\n\n const finalize = (value: string) => {\n if (settled) return;\n settled = true;\n cleanup();\n resolve(value);\n };\n\n const onEndOrClose = () => {\n stdout.write('\\n');\n finalize(password);\n };\n\n const onData = (char: string) => {\n const c = char.toString();\n\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u0004': // Ctrl+D\n stdout.write('\\n');\n finalize(password);\n break;\n case '\\u0003': // Ctrl+C\n stdout.write('\\n');\n process.exit(1);\n break;\n case '\\u007F': // Backspace\n case '\\b':\n if (password.length > 0) {\n password = password.slice(0, -1);\n stdout.clearLine(0);\n stdout.cursorTo(0);\n stdout.write(question + '*'.repeat(password.length));\n }\n break;\n default:\n password += c;\n stdout.write('*');\n break;\n }\n };\n\n stdin.on('data', onData);\n stdin.once('end', onEndOrClose);\n stdin.once('close', onEndOrClose);\n });\n}\n\ninterface RunCommandOptions {\n quiet?: boolean;\n}\n\nconst SPINNER_FRAMES = ['-', '\\\\', '|', '/'] as const;\n\nasync function withTuiSpinner<T>(\n enabled: boolean,\n label: string,\n operation: () => Promise<T>,\n): Promise<T> {\n if (!enabled || !process.stdout.isTTY) {\n return operation();\n }\n\n let index = 0;\n process.stdout.write('\\n');\n const renderFrame = (prefix: string) => {\n process.stdout.write(`\\r${prefix} ${label}`);\n };\n\n renderFrame(SPINNER_FRAMES[index]);\n const timer = setInterval(() => {\n index = (index + 1) % SPINNER_FRAMES.length;\n renderFrame(SPINNER_FRAMES[index]);\n }, 80);\n\n try {\n const result = await operation();\n clearInterval(timer);\n renderFrame('✓');\n process.stdout.write('\\n');\n return result;\n } catch (error) {\n clearInterval(timer);\n renderFrame('!');\n process.stdout.write('\\n');\n throw error;\n }\n}\n\nfunction appendOutputTail(existing: string, chunk: string, maxLength = 8000): string {\n const combined = existing + chunk;\n if (combined.length <= maxLength) return combined;\n return combined.slice(combined.length - maxLength);\n}\n\nfunction runCommand(command: string, args: string[], cwd: string, options: RunCommandOptions = {}): Promise<void> {\n return new Promise((resolve, reject) => {\n const quiet = options.quiet ?? false;\n const child = spawn(command, args, {\n cwd,\n stdio: quiet ? ['ignore', 'pipe', 'pipe'] : 'inherit',\n shell: false,\n });\n\n let outputTail = '';\n if (quiet) {\n child.stdout?.on('data', (chunk: Buffer | string) => {\n outputTail = appendOutputTail(outputTail, chunk.toString());\n });\n child.stderr?.on('data', (chunk: Buffer | string) => {\n outputTail = appendOutputTail(outputTail, chunk.toString());\n });\n }\n\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n const details = outputTail.trim();\n if (details) {\n reject(new Error(`Command failed with exit code ${code}\\n${details}`));\n return;\n }\n reject(new Error(`Command failed with exit code ${code}`));\n }\n });\n\n child.on('error', reject);\n });\n}\n\nconst DEV_SERVER_LOG_FILE = '.agentbuilder-dev.log';\n\n// Starts the dev server detached, capturing its output to a log file so a\n// failed/slow startup can be surfaced to the user instead of vanishing.\nfunction startDetachedDevServer(command: string, args: string[], cwd: string): { logPath: string } {\n const logPath = path.join(cwd, DEV_SERVER_LOG_FILE);\n const logFd = fs.openSync(logPath, 'w');\n const child = spawn(command, args, {\n cwd,\n stdio: ['ignore', logFd, logFd],\n shell: false,\n detached: true,\n });\n child.unref();\n // The child keeps its own dup of the fd; close the parent copy.\n fs.closeSync(logFd);\n return { logPath };\n}\n\nfunction readLogTail(logPath: string, maxLines = 20): string {\n try {\n const text = fs.readFileSync(logPath, 'utf-8').trimEnd();\n if (!text) return '';\n return text.split('\\n').slice(-maxLines).join('\\n');\n } catch {\n return '';\n }\n}\n\nexport function devCommandHint(packageManager: SupportedPackageManager): string {\n if (packageManager === 'npm') return 'npm run dev';\n if (packageManager === 'bun') return 'bun run dev';\n return `${packageManager} dev`;\n}\n\nfunction canConnectToPort(port: number): Promise<boolean> {\n return new Promise((resolve) => {\n const socket = net.createConnection({ host: '127.0.0.1', port });\n socket.once('connect', () => {\n socket.destroy();\n resolve(true);\n });\n socket.once('error', () => resolve(false));\n socket.setTimeout(500, () => {\n socket.destroy();\n resolve(false);\n });\n });\n}\n\nasync function findAvailablePort(startPort: number): Promise<number> {\n for (let port = startPort; port < startPort + 100; port += 1) {\n if (!(await canConnectToPort(port))) return port;\n }\n throw new Error(`No available local dev port found near ${startPort}`);\n}\n\nexport function buildDevServerCommand(\n packageManager: SupportedPackageManager,\n port: number,\n): string[] {\n const viteArgs = ['--host', '127.0.0.1', '--port', String(port), '--strictPort'];\n return packageManager === 'npm'\n ? ['run', 'dev', '--', ...viteArgs]\n : ['dev', ...viteArgs];\n}\n\nexport async function waitForLocalDevServer(url: string, timeoutMs = 60_000): Promise<boolean> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n try {\n const response = await fetch(url, { cache: 'no-store' });\n if (response.ok) return true;\n } catch {\n // The dev server is still starting.\n }\n await sleep(500);\n }\n return false;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction toKebabCase(str: string): string {\n return str\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-') // Replace non-alphanumeric with hyphens\n .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens\n}\n\nexport function normalizeProjectName(raw: string): string {\n return toKebabCase(raw.trim());\n}\n\nfunction isNonEmptyDirectory(targetPath: string): boolean {\n if (!fs.existsSync(targetPath)) return false;\n const stat = fs.statSync(targetPath);\n if (!stat.isDirectory()) return false;\n return fs.readdirSync(targetPath).length > 0;\n}\n\nfunction hasBuilderDependency(targetPath: string): boolean {\n const packageJsonPath = path.join(targetPath, 'package.json');\n if (!fs.existsSync(packageJsonPath)) return false;\n\n try {\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')) as Record<string, any>;\n const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };\n return typeof deps === 'object' && Object.prototype.hasOwnProperty.call(deps, '@standardagents/builder');\n } catch {\n return false;\n }\n}\n\nexport function isStandardAgentsProjectDir(targetPath: string): boolean {\n const agentsDir = path.join(targetPath, 'agents');\n if (!fs.existsSync(agentsDir) || !fs.statSync(agentsDir).isDirectory()) {\n return false;\n }\n if (hasBuilderDependency(targetPath)) return true;\n\n return (\n fs.existsSync(path.join(targetPath, 'vite.config.ts')) &&\n fs.existsSync(path.join(targetPath, 'tsconfig.json'))\n );\n}\n\ninterface ProjectTarget {\n projectName: string;\n projectPath: string;\n existingBootstrapState: BootstrapSessionState | null;\n resumeBootstrap: boolean;\n useExistingProject: boolean;\n}\n\nexport async function resolveProjectTarget(\n cwd: string,\n initialProjectName: string | undefined,\n options: InitOptions,\n promptProjectName: (question: string) => Promise<string> = prompt,\n): Promise<ProjectTarget> {\n if (!initialProjectName && isStandardAgentsProjectDir(cwd)) {\n const dirName = path.basename(cwd) || 'standard-agents';\n const projectName = normalizeProjectName(dirName) || dirName;\n const existingBootstrapState = loadBootstrapState(cwd);\n return {\n projectName,\n projectPath: cwd,\n existingBootstrapState,\n resumeBootstrap: existingBootstrapState !== null,\n useExistingProject: true,\n };\n }\n let candidate = initialProjectName?.trim() ?? '';\n let hasPromptedOnce = false;\n\n while (true) {\n if (!candidate) {\n if (options.yes) {\n throw new Error('Project name is required');\n }\n candidate = (await promptProjectName(hasPromptedOnce ? 'Project name (try another): ' : 'Project name: ')).trim();\n hasPromptedOnce = true;\n continue;\n }\n\n const projectName = normalizeProjectName(candidate);\n if (!projectName) {\n if (options.yes) {\n throw new Error('Project name must include at least one letter or number');\n }\n logger.warning(`Project name \"${candidate}\" is invalid. Use letters and numbers.`);\n candidate = '';\n continue;\n }\n\n if (projectName !== candidate) {\n logger.info(`Using project directory \"${projectName}\"`);\n }\n\n const projectPath = path.join(cwd, projectName);\n const exists = fs.existsSync(projectPath);\n if (exists && !fs.statSync(projectPath).isDirectory()) {\n if (options.yes) {\n throw new Error(`Path \"${projectName}\" already exists and is not a directory`);\n }\n logger.warning(`Path \"${projectName}\" already exists and is not a directory.`);\n candidate = '';\n continue;\n }\n\n const existingBootstrapState = loadBootstrapState(projectPath);\n const resumeBootstrap = exists && existingBootstrapState !== null;\n const existingStandardAgentsProject = exists && isStandardAgentsProjectDir(projectPath);\n if (!resumeBootstrap && !existingStandardAgentsProject && isNonEmptyDirectory(projectPath)) {\n if (options.yes) {\n throw new Error(`Directory \"${projectName}\" already exists and is not empty`);\n }\n logger.warning(`Directory \"${projectName}\" already exists and is not empty.`);\n candidate = '';\n continue;\n }\n\n return {\n projectName,\n projectPath,\n existingBootstrapState,\n resumeBootstrap,\n useExistingProject: resumeBootstrap || existingStandardAgentsProject,\n };\n }\n}\n\nfunction detectPackageManager(): SupportedPackageManager {\n // Check environment variable first (most reliable when running via npx/pnpm exec)\n const userAgent = process.env.npm_config_user_agent;\n if (userAgent) {\n if (userAgent.includes('pnpm')) return 'pnpm';\n if (userAgent.includes('yarn')) return 'yarn';\n if (userAgent.includes('bun')) return 'bun';\n }\n\n // Check for lockfiles\n if (fs.existsSync('pnpm-lock.yaml')) return 'pnpm';\n if (fs.existsSync('yarn.lock')) return 'yarn';\n if (fs.existsSync('bun.lockb')) return 'bun';\n if (fs.existsSync('package-lock.json')) return 'npm';\n\n return 'npm';\n}\n\nexport function resolvePackageManager(\n requested: string | undefined,\n detected: SupportedPackageManager,\n): SupportedPackageManager {\n if (!requested) return detected;\n const normalized = requested.trim();\n if ((PACKAGE_MANAGERS as readonly string[]).includes(normalized)) {\n return normalized as SupportedPackageManager;\n }\n throw new Error('package-manager must be npm, pnpm, yarn, or bun');\n}\n\nexport function isInitTuiEnabled(options: Pick<InitOptions, 'yes' | 'cli'> = {}): boolean {\n if (options.yes) return false;\n if (options.cli) return false;\n if (!process.stdin.isTTY || !process.stdout.isTTY) return false;\n if (process.env[INIT_TUI_ENV_VAR] === '0') return false;\n return true;\n}\n\nfunction clearTerminalScreen(stdout: NodeJS.WriteStream = process.stdout): void {\n stdout.write('\\x1b[2J\\x1b[H');\n}\n\nfunction silenceLoggerOutput(enabled: boolean): () => void {\n if (!enabled) return () => {};\n\n const original = {\n success: logger.success,\n warning: logger.warning,\n info: logger.info,\n log: logger.log,\n };\n\n logger.success = () => {};\n logger.warning = () => {};\n logger.info = () => {};\n logger.log = () => {};\n\n return () => {\n logger.success = original.success;\n logger.warning = original.warning;\n logger.info = original.info;\n logger.log = original.log;\n };\n}\n\nfunction renderInitStepHeader(\n stage: InitProgressStage,\n title: string,\n subtitle?: string,\n options: InitStepHeaderOptions = {},\n): void {\n const mode = options.authMode ?? 'standardagents';\n const { step, total, labels } = getInitStepInfo(stage, mode);\n const progress = labels.map((label, index) => {\n const markerIndex = index + 1;\n if (markerIndex < step) return `✓ ${label}`;\n if (markerIndex === step) return `→ ${label}`;\n return `· ${label}`;\n }).join(' ');\n\n if (options.tuiMode) {\n clearTerminalScreen();\n process.stdout.write(\n renderInitStepFrame({\n stage,\n title,\n subtitle,\n projectName: options.projectName,\n packageManager: options.packageManager,\n authMode: options.authMode,\n }),\n );\n return;\n }\n\n logger.log('');\n logger.log(progress);\n logger.info(`Step ${step}/${total}: ${title}`);\n if (subtitle) {\n logger.log(subtitle);\n }\n logger.log('');\n}\n\nexport function shouldUseSideBySideAuthCards(columns: number): boolean {\n return shouldUseSideBySideAuthCardsInk(columns);\n}\n\nasync function selectInitAuthMode(context: {\n projectName?: string;\n packageManager?: string;\n} = {}): Promise<InitAuthMode> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n const answer = (await prompt('Setup mode: [S]tandardAgents or [L]ocal? (default: StandardAgents): ')).toLowerCase();\n if (answer === 'l' || answer === 'local') return 'local';\n return 'standardagents';\n }\n\n const selection = await selectInitAuthModeWithInk(context);\n if (!selection) {\n throw new InitWizardReturnToHomeError();\n }\n return selection;\n}\n\nasync function ensurePlatformAuth(\n options: InitOptions,\n quietLogs = false,\n context: {\n projectName?: string;\n packageManager?: string;\n } = {},\n): Promise<EnsureAuthResult> {\n const logInfo = (message: string) => {\n if (!quietLogs) logger.info(message);\n };\n const logWarning = (message: string) => {\n if (!quietLogs) logger.warning(message);\n };\n const logSuccess = (message: string) => {\n if (!quietLogs) logger.success(message);\n };\n const logLine = (message = '') => {\n if (!quietLogs) logger.log(message);\n };\n\n if (options.bootstrap?.trim()) {\n logInfo('Bootstrap code provided. Project will be connected during setup.');\n return { connected: true, mode: 'standardagents' };\n }\n\n if (options.yes) {\n logInfo('Skipping platform auth in non-interactive mode. Run \"agents login --bootstrap <code>\" later to connect.');\n return { connected: false, mode: 'local' };\n }\n\n const authMode = await selectInitAuthMode(context);\n if (authMode === 'local') {\n logInfo('Continuing in local-only mode. Run \"agents login --bootstrap <code>\" anytime to connect.');\n return { connected: false, mode: 'local' };\n }\n\n const endpoint = resolvePlatformEndpoint(options);\n let authAppUrl = resolvePlatformAuthBrowserUrl(endpoint);\n let sessionId: string | null = null;\n\n logLine('');\n logInfo('Starting StandardAgents account setup...');\n logLine(`Platform API: ${endpoint}`);\n\n try {\n const started = await startCliAuthSession(endpoint);\n sessionId = started.session_id;\n authAppUrl = started.auth_url;\n\n logLine(`Auth app: ${authAppUrl}`);\n logLine('');\n logLine('Complete login/signup in your browser. This window is waiting for realtime confirmation...');\n\n if (process.stdin.isTTY) {\n const opened = openBrowser(authAppUrl);\n if (opened) {\n logInfo('Opened browser for authentication.');\n } else {\n logWarning('Could not automatically open browser. Open the URL above manually.');\n }\n }\n\n try {\n const completion = await waitForCliAuthCompletion(started.ws_url, started.expires_at);\n options.bootstrap = completion.bootstrapCode;\n logSuccess('Authentication received from browser.');\n return { connected: true, mode: 'standardagents' };\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Realtime auth handoff failed';\n logWarning(`${message} Switching to manual bootstrap command entry.`);\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to start realtime auth session';\n logWarning(`${message} Switching to manual bootstrap command entry.`);\n logLine(`Auth app: ${authAppUrl}`);\n }\n\n logLine('');\n const pasted = await prompt('Paste bootstrap code or full command (Enter to continue local-only): ');\n const bootstrapCode = parseBootstrapCodeInput(pasted);\n if (!bootstrapCode) {\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n logInfo('No bootstrap code provided. Continuing in local-only mode.');\n return { connected: false, mode: 'local' };\n }\n\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n options.bootstrap = bootstrapCode;\n logSuccess('Bootstrap code captured.');\n return { connected: true, mode: 'standardagents' };\n}\n\n// Injected at build time by tsup (see tsup.config.ts)\n// During publish, CLI_PUBLISH_VERSION env var is set to the actual version being published\ndeclare const __CLI_VERSION__: string;\ndeclare const __SIP_VERSION__: string;\n\nfunction getCliVersion(): string {\n return typeof __CLI_VERSION__ === 'undefined' ? 'latest' : __CLI_VERSION__;\n}\n\nfunction getSipVersion(): string {\n return typeof __SIP_VERSION__ === 'undefined' ? 'latest' : __SIP_VERSION__;\n}\n\nfunction shouldUseWorkspacePackages(options: Pick<InitOptions, 'workspace'>): boolean {\n return options.workspace === true || process.env.STANDARDAGENTS_WORKSPACE === '1';\n}\n\n/**\n * Resolve the package specifier used when installing @standardagents packages.\n *\n * - Workspace mode (`--workspace` or `STANDARDAGENTS_WORKSPACE=1`) uses `workspace:*`\n * and requires pnpm.\n * - Otherwise, install the exact CLI publish version.\n */\nexport function resolvePackageSpecifier(\n options: Pick<InitOptions, 'workspace'>,\n packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun',\n): string {\n if (!shouldUseWorkspacePackages(options)) {\n return getCliVersion();\n }\n\n if (packageManager !== 'pnpm') {\n throw new Error(\n 'Workspace package linking requires pnpm. Re-run with pnpm or remove --workspace.',\n );\n }\n\n return 'workspace:*';\n}\n\nexport function resolveStandardAgentsPackageSpecifier(\n packageName: string,\n packageSpecifier: string,\n): string {\n if (packageSpecifier === 'workspace:*' && packageName === '@standardagents/sip') {\n return getSipVersion();\n }\n\n return packageSpecifier;\n}\n\nfunction findWorkspaceRoot(startDir: string): string | null {\n let currentDir = startDir;\n\n while (true) {\n if (fs.existsSync(path.join(currentDir, 'pnpm-workspace.yaml'))) {\n return currentDir;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n return null;\n }\n\n currentDir = parentDir;\n }\n}\n\nexport function findStandardAgentsWorkspaceRoot(\n startDir = path.dirname(fileURLToPath(import.meta.url)),\n): string | null {\n const workspaceRoot = findWorkspaceRoot(startDir);\n if (!workspaceRoot) return null;\n\n const rootPackageJsonPath = path.join(workspaceRoot, 'package.json');\n if (!fs.existsSync(rootPackageJsonPath)) return null;\n\n try {\n const rootPackageJson = JSON.parse(fs.readFileSync(rootPackageJsonPath, 'utf-8')) as { name?: string };\n return rootPackageJson.name === 'standardagents' ? workspaceRoot : null;\n } catch {\n return null;\n }\n}\n\nexport function resolveStandardAgentsWorkspaceRoot(startDirs: string[] = [\n path.dirname(fileURLToPath(import.meta.url)),\n process.cwd(),\n]): string | null {\n const explicitRoot = process.env.STANDARDAGENTS_WORKSPACE_ROOT?.trim();\n if (explicitRoot) {\n const workspaceRoot = findStandardAgentsWorkspaceRoot(path.resolve(explicitRoot));\n if (workspaceRoot) return workspaceRoot;\n\n throw new Error(\n `STANDARDAGENTS_WORKSPACE_ROOT=${path.resolve(explicitRoot)} is not a Standard Agents workspace root`,\n );\n }\n\n for (const startDir of startDirs) {\n const workspaceRoot = findStandardAgentsWorkspaceRoot(startDir);\n if (workspaceRoot) return workspaceRoot;\n }\n\n return null;\n}\n\nfunction workspacePackageDir(workspaceRoot: string, packageName: string): string {\n return path.join(workspaceRoot, 'packages', packageName.replace('@standardagents/', ''));\n}\n\nfunction validateWorkspacePackageDir(packageName: string, packageDir: string): void {\n const dependencyPackageJsonPath = path.join(packageDir, 'package.json');\n if (!fs.existsSync(dependencyPackageJsonPath)) {\n throw new Error(`Could not find workspace package for ${packageName} at ${packageDir}`);\n }\n\n const dependencyPackageJson = JSON.parse(fs.readFileSync(dependencyPackageJsonPath, 'utf-8')) as {\n name?: string;\n };\n if (dependencyPackageJson.name !== packageName) {\n throw new Error(\n `Expected ${packageDir} to contain ${packageName}, found ${dependencyPackageJson.name ?? 'unknown package'}`,\n );\n }\n}\n\nexport function rewriteStandardAgentsDependenciesForWorkspace(\n projectPath: string,\n workspaceRoot: string,\n): string[] {\n const packageJsonPath = path.join(projectPath, 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')) as {\n dependencies?: Record<string, string>;\n };\n const dependencies = packageJson.dependencies ?? {};\n const linkedPackages: string[] = [];\n\n for (const packageName of GENERATED_STANDARD_AGENTS_PACKAGES) {\n if (!(packageName in dependencies)) continue;\n\n const packageDir = workspacePackageDir(workspaceRoot, packageName);\n validateWorkspacePackageDir(packageName, packageDir);\n\n dependencies[packageName] = `link:${packageDir}`;\n linkedPackages.push(packageName);\n }\n\n if (linkedPackages.length > 0) {\n packageJson.dependencies = dependencies;\n fs.writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf-8');\n }\n\n return linkedPackages;\n}\n\nfunction preparePlatformProjectDependencies(\n projectPath: string,\n packageManager: SupportedPackageManager,\n): string[] {\n if (process.env.STANDARDAGENTS_WORKSPACE !== '1') {\n return [];\n }\n if (packageManager !== 'pnpm') {\n throw new Error('STANDARDAGENTS_WORKSPACE=1 currently requires pnpm for local package linking');\n }\n\n const workspaceRoot = resolveStandardAgentsWorkspaceRoot();\n if (!workspaceRoot) {\n throw new Error('STANDARDAGENTS_WORKSPACE=1 was set, but no Standard Agents workspace root was found');\n }\n\n return rewriteStandardAgentsDependenciesForWorkspace(projectPath, workspaceRoot);\n}\n\nfunction shellQuote(value: string): string {\n return `\"${value.replace(/([\"\\\\$`])/g, '\\\\$1')}\"`\n}\n\nexport function findWorkspaceCommandRoot(projectPath: string): string | null {\n let current = path.dirname(projectPath);\n\n while (true) {\n const packageJsonPath = path.join(current, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n if (packageJson?.scripts && typeof packageJson.scripts['sandbox:hmr'] === 'string') {\n return current;\n }\n } catch {\n // Ignore invalid package.json files while walking upward.\n }\n }\n\n const parent = path.dirname(current);\n if (parent === current) {\n return null;\n }\n current = parent;\n }\n}\n\nexport function configureWorkspaceProjectScripts(projectPath: string, projectName: string): boolean {\n const packageJsonPath = path.join(projectPath, 'package.json');\n if (!fs.existsSync(packageJsonPath)) return false;\n\n const workspaceRoot = findWorkspaceCommandRoot(projectPath);\n if (!workspaceRoot) return false;\n\n const workspacePackageJsonPath = path.join(workspaceRoot, 'package.json');\n const workspacePackageJson = JSON.parse(fs.readFileSync(workspacePackageJsonPath, 'utf-8'));\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n const scripts =\n packageJson.scripts && typeof packageJson.scripts === 'object'\n ? packageJson.scripts\n : {};\n\n const relativeRoot = path.relative(projectPath, workspaceRoot) || '.';\n scripts['sandbox:hmr'] = `pnpm -C ${shellQuote(relativeRoot)} sandbox:hmr -- ${shellQuote(projectName)}`;\n if (workspacePackageJson?.scripts && typeof workspacePackageJson.scripts['cli:login:workspace'] === 'string') {\n scripts['cli:login:workspace'] = `pnpm -C ${shellQuote(relativeRoot)} cli:login:workspace -- ${shellQuote(projectName)}`;\n }\n packageJson.scripts = scripts;\n\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n return true;\n}\n\nexport function resolvePostInitRunCommand(\n packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun',\n projectPath: string,\n workspacePackages: boolean,\n): string {\n if (workspacePackages) {\n const packageJsonPath = path.join(projectPath, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n if (packageJson?.scripts && typeof packageJson.scripts['sandbox:hmr'] === 'string') {\n return packageManager === 'npm' ? 'npm run sandbox:hmr' : `${packageManager} sandbox:hmr`;\n }\n } catch {\n // Fall through to the standard dev command below.\n }\n }\n }\n\n return packageManager === 'npm' ? 'npm run dev' : `${packageManager} dev`;\n}\n\nasync function selectPackageManager(\n detected: 'npm' | 'pnpm' | 'yarn' | 'bun',\n context: {\n projectName?: string;\n authMode?: InitAuthMode;\n } = {},\n): Promise<'npm' | 'pnpm' | 'yarn' | 'bun'> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) return detected;\n const selection = await selectPackageManagerWithInk(detected, context);\n if (!selection) {\n throw new InitWizardReturnToHomeError();\n }\n return selection;\n}\n\nexport function resolvePlatformEndpoint(options: Pick<InitOptions, 'apiUrl' | 'endpoint'>): string {\n return options.endpoint || options.apiUrl || process.env.PLATFORM_ENDPOINT || DEFAULT_PLATFORM_ENDPOINT;\n}\n\nfunction isBootstrapConsumeSuccess(body: unknown): body is BootstrapConsumeSuccess {\n const candidate = body as BootstrapConsumeSuccess;\n return !!(\n candidate\n && candidate.user\n && typeof candidate.user.id === 'string'\n && typeof candidate.user.email === 'string'\n && typeof candidate.user.role === 'string'\n && candidate.account\n && typeof candidate.account.id === 'string'\n );\n}\n\nfunction formatBootstrapExchangeError(status: number, body: unknown): string {\n const payload = body as { error?: { message?: string }; message?: string };\n const message = payload?.error?.message || payload?.message;\n if (message) {\n return `Bootstrap exchange failed (${status}): ${message}`;\n }\n return `Bootstrap exchange failed (${status})`;\n}\n\nfunction extractSessionCookie(response: Response): string | null {\n const headersWithSetCookie = response.headers as Headers & {\n getSetCookie?: () => string[];\n };\n\n const extractFromLine = (value: string): string | null => {\n const trimmed = value.trim();\n if (!trimmed.toLowerCase().startsWith('session=')) return null;\n const semi = trimmed.indexOf(';');\n return semi === -1 ? trimmed : trimmed.slice(0, semi);\n };\n\n if (typeof headersWithSetCookie.getSetCookie === 'function') {\n for (const line of headersWithSetCookie.getSetCookie()) {\n const extracted = extractFromLine(line);\n if (extracted) return extracted;\n }\n }\n\n const combined = response.headers.get('set-cookie');\n if (!combined) return null;\n\n const combinedMatch = combined.match(/(?:^|,\\s*)(session=[^;,]+)/i);\n if (combinedMatch?.[1]) {\n return combinedMatch[1];\n }\n\n return extractFromLine(combined);\n}\n\nexport async function exchangeBootstrapCode(\n endpoint: string,\n code: string,\n fetchImpl: typeof fetch = fetch,\n): Promise<BootstrapConsumeSuccess> {\n const response = await fetchImpl(`${endpoint}/auth/bootstrap-code/consume`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ code }),\n });\n\n let body: unknown = {};\n try {\n body = await response.json();\n } catch {\n body = {};\n }\n\n if (!response.ok) {\n throw new Error(formatBootstrapExchangeError(response.status, body));\n }\n\n if (!isBootstrapConsumeSuccess(body)) {\n throw new Error('Bootstrap exchange failed: invalid response payload');\n }\n\n const sessionCookie = extractSessionCookie(response);\n if (!sessionCookie) {\n throw new Error('Bootstrap exchange failed: session cookie missing in response');\n }\n\n const parsed = body as Omit<BootstrapConsumeSuccess, 'session_cookie'>;\n return {\n session_cookie: sessionCookie,\n user: parsed.user,\n account: parsed.account,\n };\n}\n\nexport async function prepareBootstrapSession(\n projectPath: string,\n options: InitOptions,\n fetchImpl: typeof fetch = fetch,\n): Promise<{ state: BootstrapSessionState; resumed: boolean } | null> {\n const endpoint = resolvePlatformEndpoint(options);\n const existing = loadBootstrapState(projectPath);\n if (existing && existing.endpoint === endpoint) {\n return { state: existing, resumed: true };\n }\n\n const bootstrapCode = options.bootstrap?.trim();\n if (!bootstrapCode) return null;\n\n const consumed = await exchangeBootstrapCode(endpoint, bootstrapCode, fetchImpl);\n const state: BootstrapSessionState = {\n version: 1,\n endpoint,\n authenticated_at: Date.now(),\n session_cookie: consumed.session_cookie,\n user: consumed.user,\n account: consumed.account,\n };\n persistBootstrapState(projectPath, state);\n return { state, resumed: false };\n}\n\nexport function normalizeApiUrl(input?: string): string {\n return (\n input ||\n process.env.STANDARD_AGENTS_API_URL ||\n process.env.PLATFORM_ENDPOINT ||\n process.env.STANDARD_AGENTS_PLATFORM_URL ||\n DEFAULT_PLATFORM_ENDPOINT\n ).replace(/\\/+$/, '');\n}\n\nexport async function startPlatformCliSession(params: {\n endpoint: string;\n projectName?: string;\n packageManager: string;\n}): Promise<PlatformCliStartResponse> {\n const body: Record<string, string> = {\n machine_name: os.hostname(),\n package_manager: params.packageManager,\n };\n const projectName = params.projectName?.trim();\n if (projectName) {\n body.project_name = projectName;\n }\n\n let response: Response;\n try {\n response = await fetch(`${params.endpoint}/cli/auth/start`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n } catch (error) {\n throw new Error(\n `Could not reach the Standard Agents platform at ${params.endpoint}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n\n if (!response.ok) {\n const bodyText = await response.text().catch(() => '');\n throw new Error(`Platform auth failed to start (${response.status})${bodyText ? `: ${bodyText}` : ''}`);\n }\n\n return response.json() as Promise<PlatformCliStartResponse>;\n}\n\nexport function resolvePlatformProjectDirectoryName(\n project: { name: string },\n requestedProjectName?: string,\n): string {\n const platformName = project.name.trim();\n if (platformName) return platformName;\n\n const fallbackName = requestedProjectName?.trim();\n if (fallbackName) return fallbackName;\n\n throw new Error(MISSING_PLATFORM_PROJECT_NAME_MESSAGE);\n}\n\nexport function resolvePlatformProjectPackageManager(\n projectPackageManager: string | null | undefined,\n requestedPackageManager: SupportedPackageManager,\n): SupportedPackageManager {\n return resolvePackageManager(projectPackageManager ?? undefined, requestedPackageManager);\n}\n\nexport function sanitizeGitRemoteUrl(remoteUrl: string): string {\n try {\n const url = new URL(remoteUrl);\n url.username = '';\n url.password = '';\n return url.toString();\n } catch {\n return remoteUrl.replace(/\\/\\/[^/@\\s]+@/, '//');\n }\n}\n\nexport function cloneDisplayUrl(project: PlatformProjectPayload): string {\n return project.repo_html_url || sanitizeGitRemoteUrl(project.repo_clone_url);\n}\n\nexport function gitCloneArgs(project: PlatformProjectPayload, projectName: string): string[] {\n const args: string[] = [];\n if (project.git_extra_header) {\n args.push('-c', `http.extraHeader=${project.git_extra_header}`);\n }\n args.push('clone', project.repo_clone_url, projectName);\n return args;\n}\n\nexport function platformGitCredentialHelperCommand(cliEntry = process.argv[1] ?? ''): string {\n if (process.env.STANDARDAGENTS_WORKSPACE === '1' && cliEntry && fs.existsSync(cliEntry)) {\n return `!node ${shellQuote(path.resolve(cliEntry))} git-credential`;\n }\n if (process.env.STANDARD_AGENTS_GIT_HELPER?.trim()) {\n return process.env.STANDARD_AGENTS_GIT_HELPER.trim();\n }\n // Pin the helper to the CLI's own published version so prerelease installs\n // (e.g. @next) keep minting credentials with the matching CLI behavior.\n const cliVersion = getCliVersion();\n if (cliVersion !== 'latest') {\n return `!npx -y @standardagents/cli@${cliVersion} git-credential`;\n }\n return DEFAULT_PLATFORM_GIT_HELPER_COMMAND;\n}\n\nasync function configurePlatformGitCredentialHelper(projectPath: string): Promise<void> {\n await runCommand('git', ['config', 'credential.helper', platformGitCredentialHelperCommand()], projectPath);\n await runCommand('git', ['config', 'credential.useHttpPath', 'true'], projectPath);\n}\n\nfunction isRetryablePlatformAuthStatus(status: number): boolean {\n return status === 502 || status === 503 || status === 504;\n}\n\nexport async function waitForPlatformProjectStatus(\n statusUrl: string,\n expiresAt: number,\n options: {\n onProgress?: (progress: PlatformAuthProgress) => void;\n pollIntervalMs?: number;\n } = {},\n): Promise<PlatformProjectPayload> {\n let lastProgressKey = '';\n while (Date.now() < expiresAt) {\n const response = await fetch(statusUrl, {\n headers: { Accept: 'application/json' },\n });\n\n if (!response.ok) {\n if (isRetryablePlatformAuthStatus(response.status)) {\n await sleep(options.pollIntervalMs ?? 1_500);\n continue;\n }\n throw new Error(`Platform auth status failed (${response.status})`);\n }\n\n const status = await response.json() as PlatformAuthStatusResponse;\n if (status.progress?.message) {\n const progressKey = `${status.progress.status}:${status.progress.message}:${status.progress.updated_at}`;\n if (progressKey !== lastProgressKey) {\n lastProgressKey = progressKey;\n options.onProgress?.(status.progress);\n }\n }\n if (status.status === 'completed' && status.type === 'project' && status.project) {\n return status.project;\n }\n if (status.status === 'completed') {\n throw new Error(LEGACY_BOOTSTRAP_RESPONSE_MESSAGE);\n }\n if (status.status === 'expired') {\n throw new Error('Onboarding session expired. Run the init command again to start a new session.');\n }\n if (status.status === 'cancelled') {\n throw new Error('Onboarding was cancelled in the browser. Run the init command again when you are ready.');\n }\n\n await sleep(options.pollIntervalMs ?? 1_500);\n }\n\n throw new Error('Timed out waiting for platform project creation');\n}\n\nfunction waitForPlatformProjectWs(wsUrl: string, expiresAt: number): Promise<PlatformProjectPayload> {\n return new Promise((resolve, reject) => {\n const WebSocketCtor = globalThis.WebSocket;\n if (!WebSocketCtor) {\n reject(new Error('This Node.js runtime does not provide WebSocket support'));\n return;\n }\n\n const socket = new WebSocketCtor(wsUrl);\n const timeout = setTimeout(() => {\n socket.close();\n reject(new Error('Timed out waiting for platform project creation'));\n }, Math.max(1_000, expiresAt - Date.now()));\n\n socket.addEventListener('open', () => {\n socket.send(JSON.stringify({ type: 'ready' }));\n });\n\n socket.addEventListener('message', (event) => {\n const text = typeof event.data === 'string' ? event.data : '';\n const message = JSON.parse(text) as PlatformAuthMessage;\n if (message.type === 'authenticated' && message.project) {\n clearTimeout(timeout);\n socket.close();\n resolve(message.project);\n } else if (message.type === 'expired' || message.type === 'cancelled') {\n clearTimeout(timeout);\n socket.close();\n reject(new Error(\n message.type === 'expired'\n ? 'Onboarding session expired. Run the init command again to start a new session.'\n : 'Onboarding was cancelled in the browser. Run the init command again when you are ready.',\n ));\n } else if (message.command || message.bootstrap_code) {\n clearTimeout(timeout);\n socket.close();\n reject(new Error(LEGACY_BOOTSTRAP_RESPONSE_MESSAGE));\n }\n });\n\n socket.addEventListener('error', () => {\n clearTimeout(timeout);\n reject(new Error('Platform auth websocket failed'));\n });\n });\n}\n\nfunction waitForPlatformProject(\n session: PlatformCliStartResponse,\n onProgress?: (progress: PlatformAuthProgress) => void,\n): Promise<PlatformProjectPayload> {\n if (session.status_url) {\n return waitForPlatformProjectStatus(session.status_url, session.expires_at, { onProgress });\n }\n return waitForPlatformProjectWs(session.ws_url, session.expires_at);\n}\n\nfunction upsertEnvLine(lines: string[], key: string, value: string): string[] {\n return [\n ...lines.filter((line) => !line.startsWith(`${key}=`)),\n `${key}=${value}`,\n ];\n}\n\nfunction hasEnvLine(lines: string[], key: string): boolean {\n return lines.some((line) => line.startsWith(`${key}=`));\n}\n\nfunction appendGitignoreEntries(projectPath: string, heading: string, entries: string[]): void {\n const gitignorePath = path.join(projectPath, '.gitignore');\n const gitignoreContent = fs.existsSync(gitignorePath)\n ? fs.readFileSync(gitignorePath, 'utf-8')\n : '';\n const existingEntries = new Set(gitignoreContent.split(/\\r?\\n/));\n const missingEntries = entries.filter((entry) => !existingEntries.has(entry));\n if (missingEntries.length === 0) return;\n\n const prefix =\n gitignoreContent.length === 0\n ? ''\n : gitignoreContent.endsWith('\\n')\n ? '\\n'\n : '\\n\\n';\n fs.appendFileSync(gitignorePath, `${prefix}${heading}\\n${missingEntries.join('\\n')}\\n`);\n}\n\nexport function writeStandardAgentsSupportFiles(\n projectPath: string,\n params: {\n projectName: string;\n packageManager: SupportedPackageManager;\n },\n): string[] {\n const written: string[] = [];\n // Pin generated @standardagents/* dependencies to the CLI's own published\n // version so `npx @standardagents/cli@next init` produces a project on the\n // matching next-tagged releases instead of drifting back to `latest`.\n for (const supportFile of renderAgentBuilderSupportFiles({\n projectName: params.projectName,\n packageManager: params.packageManager as PackageManager,\n versions: {\n standardAgents: getCliVersion(),\n sip: getSipVersion(),\n },\n })) {\n const targetPath = path.join(projectPath, supportFile.path);\n if (fs.existsSync(targetPath)) continue;\n fs.mkdirSync(path.dirname(targetPath), { recursive: true });\n fs.writeFileSync(targetPath, supportFile.content, 'utf-8');\n written.push(supportFile.path);\n }\n\n if (written.includes('package.json')) {\n appendGitignoreEntries(projectPath, '# Standard Agents generated local support files', [\n 'package.json',\n 'package-lock.json',\n 'pnpm-lock.yaml',\n 'yarn.lock',\n 'bun.lock',\n 'bun.lockb',\n 'node_modules',\n ]);\n }\n\n // Local dev/build state must never be committed — builds run on the\n // Standard Agents platform from Artifacts git pushes, not on this machine.\n appendGitignoreEntries(projectPath, '# Standard Agents local dev state', [\n '.agents',\n '.wrangler',\n 'dist',\n ]);\n\n return written;\n}\n\nexport function supportFiles(options: { projectName?: string; packageManager?: string } = {}): void {\n let packageManager: SupportedPackageManager;\n try {\n packageManager = resolvePackageManager(options.packageManager, detectPackageManager());\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n\n const cwd = process.cwd();\n const projectName = normalizeProjectName(options.projectName ?? path.basename(cwd)) || 'standard-agents';\n const written = writeStandardAgentsSupportFiles(cwd, {\n projectName,\n packageManager,\n });\n if (written.length === 0) {\n logger.info('Standard Agents local support files already exist');\n return;\n }\n logger.success(`Wrote Standard Agents local support files: ${written.join(', ')}`);\n}\n\nexport function writeStandardAgentsEnv(projectPath: string, params: {\n apiKey: string;\n platformEndpoint: string;\n}): string {\n const envPath = path.join(projectPath, '.dev.vars');\n const existing = fs.existsSync(envPath) ? fs.readFileSync(envPath, 'utf-8') : '';\n let lines = existing\n .split(/\\r?\\n/)\n .filter((line) =>\n line.trim().length > 0 &&\n !line.startsWith('STANDARD_AGENTS_API_KEY=') &&\n !line.startsWith('PLATFORM_ENDPOINT=') &&\n !line.startsWith('STANDARD_AGENTS_API_URL=')\n );\n\n const needsEncryptionKey = !hasEnvLine(lines, 'ENCRYPTION_KEY');\n const needsAdminPassword = !hasEnvLine(lines, 'SUPER_ADMIN_PASSWORD');\n if (needsEncryptionKey || needsAdminPassword) {\n if (lines.length > 0) {\n lines.push('');\n }\n lines.push('# Local admin access');\n if (needsEncryptionKey) {\n lines.push(`ENCRYPTION_KEY=${crypto.randomBytes(32).toString('hex')}`);\n }\n if (needsAdminPassword) {\n lines.push('SUPER_ADMIN_PASSWORD=password');\n }\n }\n\n if (lines.length > 0) {\n lines.push('');\n }\n lines.push('# Standard Agents platform connection');\n lines = upsertEnvLine(lines, 'STANDARD_AGENTS_API_KEY', params.apiKey);\n lines = upsertEnvLine(lines, 'PLATFORM_ENDPOINT', params.platformEndpoint);\n lines = upsertEnvLine(lines, 'STANDARD_AGENTS_API_URL', params.platformEndpoint);\n fs.writeFileSync(envPath, lines.join('\\n').replace(/\\n{3,}/g, '\\n\\n').trim() + '\\n', 'utf-8');\n\n appendGitignoreEntries(projectPath, '# Standard Agents local platform token', ['.dev.vars']);\n\n return envPath;\n}\n\n// Bootstrap path: the project was already created in the browser, so exchange\n// the one-time code for a session, find the account's instance, and ask the\n// platform to re-issue clone credentials (fresh local API key + short-lived\n// git token). Returns the same payload shape the browser poll yields, so the\n// downstream clone/install/dev path is identical.\nexport async function resolveBootstrapProject(\n endpoint: string,\n code: string,\n fetchImpl: typeof fetch = fetch,\n): Promise<PlatformProjectPayload> {\n const consumed = await exchangeBootstrapCode(endpoint, code, fetchImpl);\n const cookie = consumed.session_cookie;\n\n const listResponse = await fetchImpl(`${endpoint}/projects`, {\n headers: { Accept: 'application/json', Cookie: cookie },\n });\n if (!listResponse.ok) {\n throw new Error(`Could not load your Standard Agents instance (${listResponse.status}).`);\n }\n const listBody = (await listResponse.json().catch(() => ({}))) as {\n projects?: Array<{ id?: unknown }>;\n };\n const projectId = listBody.projects?.find(\n (entry): entry is { id: string } => typeof entry?.id === 'string',\n )?.id;\n if (!projectId) {\n throw new Error('No Standard Agents instance found for this account. Create one in the dashboard first.');\n }\n\n const handoffResponse = await fetchImpl(`${endpoint}/projects/${projectId}/cli-handoff`, {\n method: 'POST',\n headers: { Accept: 'application/json', 'Content-Type': 'application/json', Cookie: cookie },\n body: '{}',\n });\n if (!handoffResponse.ok) {\n const text = await handoffResponse.text().catch(() => '');\n throw new Error(`Could not prepare your instance for local setup (${handoffResponse.status})${text ? `: ${text}` : ''}`);\n }\n const handoffBody = (await handoffResponse.json().catch(() => ({}))) as { project?: PlatformProjectPayload };\n if (!handoffBody.project?.repo_clone_url || !handoffBody.project.api_key) {\n throw new Error('Instance handoff response was missing clone details.');\n }\n return handoffBody.project;\n}\n\nasync function runPlatformInit(projectNameArg: string | undefined, options: InitOptions): Promise<void> {\n const cwd = process.cwd();\n\n let pm: SupportedPackageManager;\n try {\n pm = resolvePackageManager(options.packageManager, detectPackageManager());\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n\n const requestedProjectName = projectNameArg?.trim() || undefined;\n if (requestedProjectName && fs.existsSync(path.join(cwd, requestedProjectName))) {\n logger.error(`Directory \"${requestedProjectName}\" already exists`);\n process.exit(1);\n }\n\n const endpoint = normalizeApiUrl(options.apiUrl || options.endpoint);\n\n // A bootstrap code means the instance already exists (created in the browser),\n // so clone it directly. Otherwise run the interactive browser onboarding.\n let project: PlatformProjectPayload;\n if (options.bootstrap?.trim()) {\n logger.info('Connecting to your Standard Agents instance...');\n try {\n project = await resolveBootstrapProject(endpoint, options.bootstrap.trim());\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n } else {\n logger.info('Opening Standard Agents platform signup/login...');\n let session: PlatformCliStartResponse;\n try {\n session = await startPlatformCliSession({\n endpoint,\n projectName: requestedProjectName,\n packageManager: pm,\n });\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n\n openUrl(session.auth_url);\n logger.info('Finish the browser steps. I will stay here and continue automatically.');\n\n project = await waitForPlatformProject(session, (progress) => {\n logger.info(progress.message);\n });\n }\n const projectName = resolvePlatformProjectDirectoryName(project, requestedProjectName);\n const projectPackageManager = resolvePlatformProjectPackageManager(project.package_manager, pm);\n const projectPath = path.join(cwd, projectName);\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${projectName}\" already exists`);\n process.exit(1);\n }\n\n logger.success('Browser setup complete.');\n logger.info(`Cloning ${cloneDisplayUrl(project)}...`);\n await runCommand('git', gitCloneArgs(project, projectName), cwd);\n if (project.git_extra_header && project.repo_html_url) {\n await runCommand('git', ['remote', 'set-url', 'origin', project.repo_html_url], projectPath);\n }\n\n const supportFiles = writeStandardAgentsSupportFiles(projectPath, {\n projectName: project.name || projectName,\n packageManager: projectPackageManager,\n });\n if (supportFiles.length > 0) {\n logger.success(`Wrote generated local support files: ${supportFiles.join(', ')}.`);\n }\n\n const envPath = writeStandardAgentsEnv(projectPath, {\n apiKey: project.api_key,\n platformEndpoint: endpoint,\n });\n logger.success(`Wrote Standard Agents credentials to ${path.relative(cwd, envPath)}.`);\n if (project.git_extra_header) {\n await configurePlatformGitCredentialHelper(projectPath);\n logger.success('Configured git credentials for the platform repository.');\n }\n\n const linkedPackages = preparePlatformProjectDependencies(projectPath, projectPackageManager);\n if (linkedPackages.length > 0) {\n logger.info(`Workspace mode detected: linked ${linkedPackages.length} Standard Agents packages locally.`);\n }\n\n logger.info(`Installing dependencies with ${projectPackageManager}...`);\n await runCommand(projectPackageManager, ['install'], projectPath);\n\n const repoUrl = project.repo_html_url ?? project.repo_clone_url;\n const tokenLocation = path.relative(cwd, envPath);\n\n // --no-dev: clone + configure only (handy for CI/scripted setup).\n if (options.dev === false) {\n logger.success('Your Standard Agents instance is ready.');\n logger.log(`Repository: ${repoUrl}`);\n logger.log(`Local token: ${tokenLocation}`);\n logger.log('');\n logger.log('Start it whenever you like:');\n logger.log(` cd ${projectName}`);\n logger.log(` ${devCommandHint(projectPackageManager)}`);\n return;\n }\n\n const devPort = await findAvailablePort(5173);\n const devUrl = `http://127.0.0.1:${devPort}`;\n logger.info(`Starting local dev server at ${devUrl}...`);\n const { logPath } = startDetachedDevServer(\n projectPackageManager,\n buildDevServerCommand(projectPackageManager, devPort),\n projectPath,\n );\n const ready = await waitForLocalDevServer(devUrl);\n\n if (ready) {\n openUrl(devUrl);\n logger.success('Project is connected to Standard Agents.');\n logger.log(`Repository: ${repoUrl}`);\n logger.log(`Dev server: ${devUrl}`);\n logger.log(`Local token: ${tokenLocation}`);\n return;\n }\n\n // Clone + install + config all succeeded; only the dev server didn't come up\n // in time. Don't fail the whole setup — surface the cause and how to retry.\n logger.warning(`The dev server didn't respond at ${devUrl} within 60s.`);\n const tail = readLogTail(logPath);\n if (tail) {\n logger.log('');\n logger.log(`Last dev server output (full log: ${path.relative(cwd, logPath)}):`);\n logger.log(tail);\n }\n logger.log('');\n logger.success('Your Standard Agents instance is cloned, configured, and ready.');\n logger.log(`Repository: ${repoUrl}`);\n logger.log(`Local token: ${tokenLocation}`);\n logger.log('');\n logger.log('Once any error above is resolved, start it with:');\n logger.log(` cd ${projectName}`);\n logger.log(` ${devCommandHint(projectPackageManager)}`);\n}\n\nexport async function init(projectNameArg?: string, options: InitOptions = {}) {\n if (!options.local) {\n await runPlatformInit(projectNameArg, options);\n return;\n }\n\n const cwd = process.cwd();\n const detectedPm = detectPackageManager();\n const template = options.template || 'vanilla-ts';\n const initTuiMode = isInitTuiEnabled(options);\n if (initTuiMode) {\n clearTerminalScreen();\n }\n const logInfo = (message: string) => {\n if (!initTuiMode) logger.info(message);\n };\n const logWarning = (message: string) => {\n if (!initTuiMode) logger.warning(message);\n };\n const logSuccess = (message: string) => {\n if (!initTuiMode) logger.success(message);\n };\n const logLine = (message = '') => {\n if (!initTuiMode) logger.log(message);\n };\n\n let projectName = '';\n let projectPath = '';\n let existingBootstrapState: BootstrapSessionState | null = null;\n let resumeBootstrap = false;\n let useExistingProject = false;\n const headerOptions: InitStepHeaderOptions = { tuiMode: initTuiMode };\n const promptProjectName = async (question: string): Promise<string> => {\n if (!initTuiMode) {\n return prompt(question);\n }\n clearTerminalScreen();\n const value = await promptProjectNameWithInk(question, {\n stage: 'project',\n title: 'Creating project scaffold',\n subtitle: 'Choose the directory name for your new project.',\n projectName: headerOptions.projectName,\n packageManager: headerOptions.packageManager,\n authMode: headerOptions.authMode,\n });\n if (value === null) {\n throw new InitWizardReturnToHomeError();\n }\n return value;\n };\n try {\n const target = await resolveProjectTarget(cwd, projectNameArg, options, promptProjectName);\n projectName = target.projectName;\n projectPath = target.projectPath;\n existingBootstrapState = target.existingBootstrapState;\n resumeBootstrap = target.resumeBootstrap;\n useExistingProject = target.useExistingProject;\n headerOptions.projectName = projectName;\n } catch (error) {\n if (isInitWizardReturnToHomeError(error)) {\n exitOrThrowReturnToHome(options);\n }\n logger.error(error instanceof Error ? error.message : 'Project name is required');\n process.exit(1);\n }\n\n renderInitStepHeader(\n 'project',\n useExistingProject ? 'Inspecting existing project' : 'Creating project scaffold',\n useExistingProject\n ? `Using \"${projectName}\" in the current workspace.`\n : `Preparing \"${projectName}\" with template \"${template}\".`,\n headerOptions,\n );\n\n if (useExistingProject) {\n logInfo(`Using existing Standard Agents project \"${projectName}\"...`);\n } else {\n logInfo('Creating a new Standard Agents project...');\n }\n\n // Select package manager\n let pm: SupportedPackageManager;\n if (options.packageManager) {\n try {\n pm = resolvePackageManager(options.packageManager, detectedPm);\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n } else if (useExistingProject || options.yes) {\n pm = detectedPm;\n } else {\n try {\n pm = await selectPackageManager(detectedPm, {\n projectName: headerOptions.projectName,\n authMode: headerOptions.authMode,\n });\n } catch (error) {\n if (isInitWizardReturnToHomeError(error)) {\n exitOrThrowReturnToHome(options);\n }\n throw error;\n }\n logLine('');\n }\n\n headerOptions.packageManager = pm;\n logInfo(`Using package manager: ${pm}`);\n\n let packageSpecifier = '';\n try {\n packageSpecifier = resolvePackageSpecifier(options, pm);\n } catch (error) {\n logger.error(error instanceof Error ? error.message : 'Invalid package install mode');\n process.exit(1);\n }\n\n const providedBootstrap = options.bootstrap?.trim() ?? '';\n if (providedBootstrap) {\n logInfo('Bootstrap code supplied.');\n } else if (existingBootstrapState) {\n logInfo('Found existing StandardAgents auth session for this project.');\n } else {\n logInfo('No StandardAgents CLI auth session found.');\n }\n logLine('');\n\n const willShowAuthCardPrompt =\n initTuiMode &&\n !existingBootstrapState &&\n !providedBootstrap &&\n !options.yes;\n if (!willShowAuthCardPrompt) {\n renderInitStepHeader(\n 'auth',\n 'Account linking',\n existingBootstrapState\n ? 'Reusing saved project auth session if compatible with endpoint.'\n : 'Choose StandardAgents or Local mode.',\n headerOptions,\n );\n }\n\n let authResult: EnsureAuthResult = { connected: false, mode: 'local' };\n if (!existingBootstrapState) {\n try {\n authResult = await ensurePlatformAuth(options, initTuiMode, {\n projectName: headerOptions.projectName,\n packageManager: headerOptions.packageManager,\n });\n } catch (error) {\n if (isInitWizardReturnToHomeError(error)) {\n exitOrThrowReturnToHome(options);\n }\n throw error;\n }\n } else {\n authResult = { connected: true, mode: 'standardagents' };\n }\n headerOptions.authMode = authResult.mode;\n\n const bootstrapRequested = Boolean(options.bootstrap?.trim()) || existingBootstrapState !== null;\n if (!bootstrapRequested && authResult.mode === 'local') {\n logInfo('Continuing in Local mode (no org link yet).');\n }\n\n let bootstrapSession: BootstrapSessionState | null = null;\n const isManagedOrgMode = authResult.mode === 'standardagents';\n\n if (!isManagedOrgMode) {\n renderInitStepHeader(\n 'env',\n 'Environment setup',\n 'Collecting local credentials and writing .dev.vars.',\n headerOptions,\n );\n }\n\n // Generate encryption key\n const encryptionKey = crypto.randomBytes(32).toString('hex');\n\n // Ask for API keys and admin password\n let openrouterKey = '';\n let openaiKey = '';\n let adminPassword = '';\n\n if (isManagedOrgMode) {\n logInfo('Managed Standard Agents auth detected. Skipping local provider/admin prompts.');\n } else if (!options.yes) {\n if (initTuiMode) {\n const localEnvInput = await collectLocalEnvWithInk({\n projectName: headerOptions.projectName,\n packageManager: headerOptions.packageManager,\n authMode: headerOptions.authMode,\n });\n if (!localEnvInput) {\n exitOrThrowReturnToHome(options);\n }\n openrouterKey = localEnvInput.openrouterKey;\n openaiKey = localEnvInput.openaiKey;\n adminPassword = localEnvInput.adminPassword;\n } else {\n logLine('API keys are optional but required to use AI models.');\n logLine('You can add them later by editing .dev.vars');\n logLine('');\n\n openrouterKey = await prompt('OpenRouter API key (optional, press Enter to skip): ');\n openaiKey = await prompt('OpenAI API key (optional, press Enter to skip): ');\n\n logLine('');\n logLine('Set a temporary admin password for development access.');\n logLine('Press Enter to use the default password \"admin\".');\n logLine('');\n\n while (true) {\n adminPassword = await promptPassword('Temporary admin password: ');\n\n if (!adminPassword) {\n adminPassword = 'admin';\n break;\n }\n\n const confirmPassword = await promptPassword('Confirm password: ');\n\n if (adminPassword === confirmPassword) {\n break;\n } else {\n logWarning('Passwords do not match. Please try again.');\n logLine('');\n adminPassword = '';\n }\n }\n }\n }\n\n // Default admin password if not provided (for --yes flag)\n if (!isManagedOrgMode && !adminPassword) {\n adminPassword = 'admin';\n }\n\n renderInitStepHeader(\n 'scaffold',\n 'Scaffold project',\n 'Installing dependencies and applying Standard Agents project structure.',\n headerOptions,\n );\n\n if (!useExistingProject) {\n logInfo(`Running create-vite (${template})...`);\n\n try {\n await withTuiSpinner(initTuiMode, 'Creating Vite project...', async () => {\n // Determine the correct create command based on package manager\n // All package managers should use create-vite@latest to ensure the latest version\n // Use --no-interactive to skip prompts (like \"Install with npm and start now?\")\n let createCmd: string;\n let createArgs: string[];\n\n switch (pm) {\n case 'pnpm':\n createCmd = 'pnpm';\n createArgs = ['create', 'vite@latest', projectName, '--template', template, '--no-interactive'];\n break;\n case 'yarn':\n createCmd = 'yarn';\n createArgs = ['create', 'vite@latest', projectName, '--template', template, '--no-interactive'];\n break;\n case 'bun':\n createCmd = 'bun';\n createArgs = ['create', 'vite@latest', projectName, '--template', template, '--no-interactive'];\n break;\n default:\n createCmd = 'npm';\n createArgs = ['create', 'vite@latest', projectName, '--', '--template', template, '--no-interactive'];\n }\n\n await runCommand(createCmd, createArgs, cwd, { quiet: initTuiMode });\n });\n } catch (error) {\n logger.error(\n error instanceof Error\n ? `Failed to create Vite project: ${error.message}`\n : 'Failed to create Vite project',\n );\n process.exit(1);\n }\n\n // Create vite.config.ts if it doesn't exist (some templates may not include one)\n const viteConfigPath = path.join(projectPath, 'vite.config.ts');\n if (!fs.existsSync(viteConfigPath)) {\n const viteConfigContent = `import { defineConfig } from 'vite'\n\nexport default defineConfig({\n plugins: [],\n})\n`;\n fs.writeFileSync(viteConfigPath, viteConfigContent, 'utf-8');\n logSuccess('Created vite.config.ts');\n }\n\n } else if (resumeBootstrap) {\n logInfo(`Resuming bootstrap-authenticated init in existing directory \"${projectName}\"...`);\n } else {\n logInfo(`Detected existing Standard Agents project in \"${projectName}\".`);\n }\n\n // Update package.json name to kebab-case (handles spaces and special characters)\n // and inject local-only helper scripts when workspace mode is active.\n const packageJsonPath = path.join(projectPath, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n const kebabName = toKebabCase(projectName);\n if (packageJson.name !== kebabName) {\n packageJson.name = kebabName;\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n }\n\n if (packageSpecifier === 'workspace:*' && configureWorkspaceProjectScripts(projectPath, projectName)) {\n logInfo('Configured local workspace helper scripts for sandbox HMR and re-auth.');\n }\n }\n\n if (bootstrapRequested) {\n logInfo('Exchanging bootstrap code and persisting local project auth...');\n\n try {\n const prepared = await prepareBootstrapSession(projectPath, options);\n if (!prepared) {\n logger.error('No resumable bootstrap session found. Provide --bootstrap <code>.');\n process.exit(1);\n }\n bootstrapSession = prepared.state;\n if (prepared.resumed) {\n logSuccess('Reused existing authenticated bootstrap session');\n } else {\n logSuccess('Bootstrap code exchanged and local auth session persisted');\n }\n } catch (error) {\n logger.error(error instanceof Error ? error.message : 'Bootstrap exchange failed');\n process.exit(1);\n }\n }\n\n try {\n const installCmd = pm === 'npm' ? 'install' : 'add';\n\n if (packageSpecifier === 'workspace:*') {\n logInfo('Using local workspace @standardagents/* packages (workspace:*).');\n }\n\n await withTuiSpinner(initTuiMode, 'Installing dependencies...', async () => {\n // Build list of regular dependencies\n // All @standardagents packages are version-locked to CLI version\n // We explicitly install all packages at the exact version to avoid\n // npm/pnpm resolving transitive deps with semver ranges (which excludes prereleases)\n const standardAgentsPackage = (packageName: string) =>\n `${packageName}@${resolveStandardAgentsPackageSpecifier(packageName, packageSpecifier)}`;\n const deps = [\n standardAgentsPackage('@standardagents/builder'),\n standardAgentsPackage('@standardagents/spec'),\n standardAgentsPackage('@standardagents/sip'),\n 'zod'\n ];\n\n // Add provider packages based on API keys provided\n if (openaiKey) {\n deps.push(standardAgentsPackage('@standardagents/openai'));\n }\n if (openrouterKey) {\n deps.push(standardAgentsPackage('@standardagents/openrouter'));\n }\n\n // Install regular dependencies (builder needs to be in dependencies, not devDependencies)\n await runCommand(pm, [installCmd, ...deps], projectPath, { quiet: initTuiMode });\n });\n } catch (error) {\n logger.error(\n error instanceof Error\n ? `Failed to install dependencies: ${error.message}`\n : 'Failed to install dependencies',\n );\n process.exit(1);\n }\n\n // Change to project directory for scaffold\n process.chdir(projectPath);\n\n try {\n const restoreLogger = silenceLoggerOutput(initTuiMode);\n try {\n await withTuiSpinner(initTuiMode, 'Scaffolding project files...', async () => {\n await scaffold({ force: true });\n });\n } finally {\n restoreLogger();\n }\n } catch (error) {\n if (bootstrapSession) {\n logWarning(\n `Scaffold failed after bootstrap authentication. Resume by rerunning: npx @standardagents/cli init ${projectName}`,\n );\n }\n logger.error(\n error instanceof Error\n ? `Failed to scaffold Standard Agents project: ${error.message}`\n : 'Failed to scaffold Standard Agents project',\n );\n process.exit(1);\n }\n\n // Write .dev.vars file with collected environment variables\n logInfo('Writing environment configuration...');\n\n // Create .dev.vars file\n const devVarsLines: string[] = [\n '# Standard Agents Environment Variables',\n '# This file contains secrets for local development only',\n '# Do not commit this file to version control',\n '',\n '# Encryption key for secure data (auto-generated)',\n `ENCRYPTION_KEY=${encryptionKey}`,\n ];\n\n const resolvedPlatformEndpoint = resolvePlatformEndpoint(options);\n if (isManagedOrgMode || options.endpoint || options.apiUrl || process.env.PLATFORM_ENDPOINT) {\n devVarsLines.push(\n '',\n '# Platform API endpoint for account, billing, and deploy integration',\n `PLATFORM_ENDPOINT=${resolvedPlatformEndpoint}`,\n );\n }\n\n if (!isManagedOrgMode) {\n devVarsLines.push(\n '',\n '# Temporary admin password for development access',\n `SUPER_ADMIN_PASSWORD=${adminPassword}`,\n );\n }\n\n if (bootstrapSession) {\n devVarsLines.push(\n '',\n '# Bootstrap-authenticated org context',\n `STANDARDAGENTS_ORG_ACCOUNT_ID=${bootstrapSession.account.id}`,\n `STANDARDAGENTS_ORG_USER_ID=${bootstrapSession.user.id}`,\n `STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE=${bootstrapSession.session_cookie}`,\n );\n if (bootstrapSession.account.slug) {\n devVarsLines.push(`STANDARDAGENTS_ORG_SLUG=${bootstrapSession.account.slug}`);\n }\n }\n\n if (isManagedOrgMode) {\n devVarsLines.push(\n '',\n '# Managed org mode',\n '# Model access, proxy routing, and credit are handled by your Standard Agents account.',\n '# Optional local overrides:',\n '# OPENROUTER_API_KEY=your-openrouter-key',\n '# OPENAI_API_KEY=your-openai-key',\n );\n } else {\n devVarsLines.push(\n '',\n '# AI Provider API Keys',\n '# Uncomment and add your keys as needed',\n );\n\n if (openrouterKey) {\n devVarsLines.push(`OPENROUTER_API_KEY=${openrouterKey}`);\n } else {\n devVarsLines.push('# OPENROUTER_API_KEY=your-openrouter-key');\n }\n\n if (openaiKey) {\n devVarsLines.push(`OPENAI_API_KEY=${openaiKey}`);\n } else {\n devVarsLines.push('# OPENAI_API_KEY=your-openai-key');\n }\n }\n\n devVarsLines.push('');\n\n const devVarsPath = path.join(projectPath, '.dev.vars');\n fs.writeFileSync(devVarsPath, devVarsLines.join('\\n'), 'utf-8');\n logSuccess('Created .dev.vars with encryption key');\n\n // Add .dev.vars to .gitignore if it exists\n const gitignorePath = path.join(projectPath, '.gitignore');\n if (fs.existsSync(gitignorePath)) {\n const gitignoreContent = fs.readFileSync(gitignorePath, 'utf-8');\n if (!gitignoreContent.includes('.dev.vars')) {\n fs.appendFileSync(gitignorePath, '\\n# Local environment variables\\n.dev.vars\\n');\n logSuccess('Added .dev.vars to .gitignore');\n }\n }\n\n // Done!\n const nextRunCommand = resolvePostInitRunCommand(pm, projectPath, packageSpecifier === 'workspace:*');\n if (initTuiMode) {\n clearTerminalScreen();\n process.stdout.write(\n renderInitCompleteFrame({\n useExistingProject,\n projectName,\n nextCommand: nextRunCommand,\n bootstrapSession: Boolean(bootstrapSession),\n }),\n );\n return;\n }\n\n logger.log('');\n logger.success(useExistingProject ? 'Project updated successfully!' : 'Project created successfully!');\n logger.log('');\n logger.log('Next steps:');\n logger.log('');\n if (!useExistingProject) {\n logger.log(` cd ${projectName}`);\n }\n logger.log(` ${nextRunCommand}`);\n logger.log('');\n if (!bootstrapSession) {\n logger.log('Local-only mode notes:');\n logger.log(' 1. Sign in locally with username `admin` and your temporary `SUPER_ADMIN_PASSWORD`.');\n logger.log(' 2. Create a standard user account for yourself.');\n logger.log(' 3. Remove `SUPER_ADMIN_PASSWORD` from `.dev.vars` once setup is complete.');\n logger.log('');\n }\n logger.log('For more information, visit: https://standardagents.ai/docs');\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport type { BootstrapSessionState } from './bootstrap-state.js';\n\nconst DEV_VARS_FILENAME = '.dev.vars';\n\nexport const PROJECT_AUTH_ENV_KEYS = [\n 'STANDARDAGENTS_ORG_ACCOUNT_ID',\n 'STANDARDAGENTS_ORG_USER_ID',\n 'STANDARDAGENTS_ORG_SLUG',\n 'STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE',\n] as const;\n\nfunction upsertEnvLine(lines: string[], key: string, value: string): void {\n const nextLine = `${key}=${value}`;\n const index = lines.findIndex((line) => line.startsWith(`${key}=`));\n if (index >= 0) {\n lines[index] = nextLine;\n return;\n }\n lines.push(nextLine);\n}\n\nexport function syncProjectAuthEnv(\n projectPath: string,\n endpoint: string,\n state: BootstrapSessionState,\n): void {\n const devVarsPath = path.join(projectPath, DEV_VARS_FILENAME);\n const existing = fs.existsSync(devVarsPath)\n ? fs.readFileSync(devVarsPath, 'utf-8')\n : '';\n\n const lines = existing ? existing.split('\\n') : [];\n\n if (endpoint.trim()) {\n upsertEnvLine(lines, 'PLATFORM_ENDPOINT', endpoint.trim());\n }\n\n upsertEnvLine(lines, 'STANDARDAGENTS_ORG_ACCOUNT_ID', state.account.id);\n upsertEnvLine(lines, 'STANDARDAGENTS_ORG_USER_ID', state.user.id);\n if (state.account.slug) {\n upsertEnvLine(lines, 'STANDARDAGENTS_ORG_SLUG', state.account.slug);\n }\n if (state.session_cookie) {\n upsertEnvLine(lines, 'STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE', state.session_cookie);\n }\n\n const normalized = lines.join('\\n').replace(/\\n*$/, '\\n');\n fs.writeFileSync(devVarsPath, normalized, 'utf-8');\n}\n","import readline from 'node:readline';\nimport { logger } from '../utils/logger.js';\nimport {\n loadBootstrapState,\n persistBootstrapState,\n type BootstrapSessionState,\n} from '../utils/bootstrap-state.js';\nimport { syncProjectAuthEnv } from '../utils/project-auth-env.js';\nimport { exchangeBootstrapCode, parseBootstrapCodeInput, resolvePlatformEndpoint } from './init.js';\nimport {\n cancelCliAuthSession,\n openBrowser,\n resolvePlatformAuthBrowserUrl,\n startCliAuthSession,\n waitForCliAuthCompletion,\n} from '../utils/cli-auth-api.js';\n\nexport interface LoginOptions {\n bootstrap?: string;\n endpoint?: string;\n open?: boolean;\n exitOnError?: boolean;\n}\n\nasync function prompt(question: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nexport async function loginWithBootstrap(\n projectPath: string,\n options: LoginOptions,\n fetchImpl: typeof fetch = fetch,\n): Promise<{ state: BootstrapSessionState; reused: boolean }> {\n const endpoint = resolvePlatformEndpoint({ endpoint: options.endpoint });\n const existing = loadBootstrapState(projectPath);\n\n if (existing && existing.endpoint === endpoint && existing.session_cookie && !options.bootstrap?.trim()) {\n syncProjectAuthEnv(projectPath, endpoint, existing);\n return { state: existing, reused: true };\n }\n\n const bootstrapCode = options.bootstrap?.trim();\n if (!bootstrapCode) {\n if (existing && existing.endpoint === endpoint && !existing.session_cookie) {\n throw new Error(\n 'Stored org session is missing credentials. Re-authenticate with: npx @standardagents/cli login --bootstrap <code>',\n );\n }\n throw new Error('Bootstrap code required. Run: npx @standardagents/cli login --bootstrap <code>');\n }\n\n const state = await consumeBootstrapLogin({ ...options, endpoint, bootstrap: bootstrapCode }, fetchImpl);\n persistBootstrapState(projectPath, state);\n syncProjectAuthEnv(projectPath, endpoint, state);\n return { state, reused: false };\n}\n\nexport async function consumeBootstrapLogin(\n options: LoginOptions,\n fetchImpl: typeof fetch = fetch,\n): Promise<BootstrapSessionState> {\n const endpoint = resolvePlatformEndpoint({ endpoint: options.endpoint });\n const bootstrapCode = options.bootstrap?.trim();\n if (!bootstrapCode) {\n throw new Error('Bootstrap code required. Run: npx @standardagents/cli login --bootstrap <code>');\n }\n\n const consumed = await exchangeBootstrapCode(endpoint, bootstrapCode, fetchImpl);\n return {\n version: 1,\n endpoint,\n authenticated_at: Date.now(),\n session_cookie: consumed.session_cookie,\n user: consumed.user,\n account: consumed.account,\n };\n}\n\nasync function loginWithPlatform(options: LoginOptions): Promise<void> {\n const endpoint = resolvePlatformEndpoint({ endpoint: options.endpoint });\n let authAppUrl = resolvePlatformAuthBrowserUrl(endpoint);\n let sessionId: string | null = null;\n let wsUrl: string | null = null;\n let wsExpiresAt = 0;\n\n logger.log('');\n logger.info('Starting StandardAgents CLI authentication...');\n logger.log(`Platform API: ${endpoint}`);\n\n try {\n const started = await startCliAuthSession(endpoint);\n sessionId = started.session_id;\n authAppUrl = started.auth_url;\n wsUrl = started.ws_url;\n wsExpiresAt = started.expires_at;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to start realtime auth session';\n logger.warning(`${message} Switching to manual bootstrap command entry.`);\n }\n\n logger.log(`Auth app: ${authAppUrl}`);\n logger.log('');\n logger.log('Complete login/signup in your browser. This window is waiting for realtime confirmation...');\n\n if (options.open !== false) {\n const opened = openBrowser(authAppUrl);\n if (opened) {\n logger.info('Opened browser for authentication.');\n } else {\n logger.warning('Could not automatically open browser. Open the URL above manually.');\n }\n }\n\n if (!process.stdin.isTTY) {\n const message = 'Non-interactive shell detected. Run: npx @standardagents/cli login --bootstrap <code>';\n if (options.exitOnError === false) {\n throw new Error(message);\n }\n logger.error(message);\n process.exit(1);\n }\n\n if (wsUrl && wsExpiresAt > 0) {\n try {\n const completion = await waitForCliAuthCompletion(wsUrl, wsExpiresAt);\n const projectPath = process.cwd();\n const { state, reused } = await loginWithBootstrap(\n projectPath,\n { ...options, endpoint, bootstrap: completion.bootstrapCode },\n );\n\n logger.log('');\n if (reused) {\n logger.success('Already authenticated in this project.');\n } else {\n logger.success('Bootstrap login successful.');\n }\n logger.log(`Account: ${state.account.id}${state.account.slug ? ` (${state.account.slug})` : ''}`);\n logger.log(`User: ${state.user.email}`);\n logger.log('');\n return;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Realtime auth handoff failed';\n logger.warning(`${message} Enter bootstrap code manually to continue.`);\n }\n }\n\n logger.log('');\n const input = await prompt('Bootstrap code or command: ');\n const bootstrapCode = parseBootstrapCodeInput(input);\n if (!bootstrapCode) {\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n const message = 'No bootstrap code provided. Run: npx @standardagents/cli login --bootstrap <code>';\n if (options.exitOnError === false) {\n throw new Error(message);\n }\n logger.error(message);\n process.exit(1);\n }\n\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n const projectPath = process.cwd();\n const { state, reused } = await loginWithBootstrap(projectPath, { ...options, endpoint, bootstrap: bootstrapCode });\n logger.log('');\n if (reused) {\n logger.success('Already authenticated in this project.');\n } else {\n logger.success('Bootstrap login successful.');\n }\n logger.log(`Account: ${state.account.id}${state.account.slug ? ` (${state.account.slug})` : ''}`);\n logger.log(`User: ${state.user.email}`);\n logger.log('');\n}\n\nexport async function login(options: LoginOptions = {}): Promise<void> {\n const bootstrapCode = options.bootstrap?.trim();\n if (bootstrapCode) {\n const projectPath = process.cwd();\n try {\n const { state, reused } = await loginWithBootstrap(projectPath, options);\n logger.log('');\n if (reused) {\n logger.success('Already authenticated in this project.');\n } else {\n logger.success('Bootstrap login successful.');\n }\n logger.log(`Account: ${state.account.id}${state.account.slug ? ` (${state.account.slug})` : ''}`);\n logger.log(`User: ${state.user.email}`);\n logger.log('');\n return;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Login failed';\n if (options.exitOnError === false) {\n throw new Error(message);\n }\n logger.error(message);\n process.exit(1);\n }\n }\n\n await loginWithPlatform(options);\n}\n","import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { spawnSync } from 'node:child_process';\n\nconst KEYCHAIN_SERVICE = 'standardagents-cli';\n\nexport interface CliOrgAuthRecord {\n org_id: string;\n org_slug: string;\n org_name: string;\n user_id: string;\n user_email: string;\n token_storage: 'keychain' | 'file';\n keychain_account?: string;\n refresh_token?: string;\n updated_at: number;\n}\n\nexport interface CliAuthState {\n active_org_id: string | null;\n orgs: Record<string, CliOrgAuthRecord>;\n git_auth?: CliGitAuthRecord | null;\n}\n\nexport interface CliGitAuthRecord {\n version: 1;\n endpoint: string;\n session_cookie: string;\n account_id: string;\n account_slug?: string;\n user_id: string;\n user_email: string;\n updated_at: number;\n}\n\ninterface SaveCliAuthInput {\n org: { id: string; slug: string; name: string };\n user: { id: string; email: string };\n refreshToken: string;\n}\n\ninterface ResolveTargetResult {\n orgId: string;\n record: CliOrgAuthRecord;\n}\n\nfunction configDir(): string {\n if (process.platform === 'win32') {\n const appData = process.env.APPDATA;\n if (appData) return path.join(appData, 'standardagents');\n }\n const xdgConfig = process.env.XDG_CONFIG_HOME;\n if (xdgConfig) return path.join(xdgConfig, 'standardagents');\n return path.join(os.homedir(), '.config', 'standardagents');\n}\n\nfunction stateFilePath(): string {\n return path.join(configDir(), 'auth-state.json');\n}\n\nfunction ensureStateDir(): void {\n fs.mkdirSync(path.dirname(stateFilePath()), { recursive: true });\n}\n\nfunction securityCommand(\n args: string[],\n): { ok: boolean; stdout: string; stderr: string } {\n const result = spawnSync('security', args, { encoding: 'utf8' });\n if (result.error) {\n return { ok: false, stdout: '', stderr: result.error.message };\n }\n return {\n ok: result.status === 0,\n stdout: (result.stdout || '').trim(),\n stderr: (result.stderr || '').trim(),\n };\n}\n\nfunction keychainAccountForOrg(orgId: string): string {\n return `org:${orgId}`;\n}\n\nfunction storeInKeychain(orgId: string, refreshToken: string): { ok: boolean; account: string } {\n if (process.platform !== 'darwin') {\n return { ok: false, account: keychainAccountForOrg(orgId) };\n }\n\n const account = keychainAccountForOrg(orgId);\n const command = securityCommand([\n 'add-generic-password',\n '-a',\n account,\n '-s',\n KEYCHAIN_SERVICE,\n '-w',\n refreshToken,\n '-U',\n ]);\n return { ok: command.ok, account };\n}\n\nfunction deleteFromKeychain(orgId: string): void {\n if (process.platform !== 'darwin') return;\n const account = keychainAccountForOrg(orgId);\n securityCommand([\n 'delete-generic-password',\n '-a',\n account,\n '-s',\n KEYCHAIN_SERVICE,\n ]);\n}\n\nfunction readFromKeychain(orgId: string): string | null {\n if (process.platform !== 'darwin') return null;\n const account = keychainAccountForOrg(orgId);\n const command = securityCommand([\n 'find-generic-password',\n '-a',\n account,\n '-s',\n KEYCHAIN_SERVICE,\n '-w',\n ]);\n if (!command.ok || !command.stdout) return null;\n return command.stdout;\n}\n\nexport function readCliAuthState(): CliAuthState {\n const file = stateFilePath();\n if (!fs.existsSync(file)) {\n return { active_org_id: null, orgs: {} };\n }\n\n try {\n const parsed = JSON.parse(fs.readFileSync(file, 'utf8')) as Partial<CliAuthState>;\n return {\n active_org_id: parsed.active_org_id ?? null,\n orgs: parsed.orgs ?? {},\n git_auth: parseCliGitAuthRecord(parsed.git_auth),\n };\n } catch {\n return { active_org_id: null, orgs: {} };\n }\n}\n\nfunction parseCliGitAuthRecord(value: unknown): CliGitAuthRecord | null {\n if (!value || typeof value !== 'object') return null;\n const candidate = value as Partial<CliGitAuthRecord>;\n if (candidate.version !== 1) return null;\n if (\n typeof candidate.endpoint !== 'string' ||\n typeof candidate.session_cookie !== 'string' ||\n typeof candidate.account_id !== 'string' ||\n typeof candidate.user_id !== 'string' ||\n typeof candidate.user_email !== 'string' ||\n typeof candidate.updated_at !== 'number'\n ) {\n return null;\n }\n return {\n version: 1,\n endpoint: candidate.endpoint,\n session_cookie: candidate.session_cookie,\n account_id: candidate.account_id,\n account_slug: typeof candidate.account_slug === 'string' ? candidate.account_slug : undefined,\n user_id: candidate.user_id,\n user_email: candidate.user_email,\n updated_at: candidate.updated_at,\n };\n}\n\nfunction writeCliAuthState(state: CliAuthState): void {\n ensureStateDir();\n fs.writeFileSync(stateFilePath(), JSON.stringify(state, null, 2) + '\\n', 'utf8');\n}\n\nexport function hasStoredCliAuth(): boolean {\n const state = readCliAuthState();\n return Object.keys(state.orgs).length > 0;\n}\n\nexport function saveCliGitAuth(input: {\n endpoint: string;\n sessionCookie: string;\n account: { id: string; slug?: string };\n user: { id: string; email: string };\n}): CliGitAuthRecord {\n const state = readCliAuthState();\n const record: CliGitAuthRecord = {\n version: 1,\n endpoint: input.endpoint.replace(/\\/+$/, ''),\n session_cookie: input.sessionCookie,\n account_id: input.account.id,\n account_slug: input.account.slug,\n user_id: input.user.id,\n user_email: input.user.email,\n updated_at: Date.now(),\n };\n state.git_auth = record;\n writeCliAuthState(state);\n return record;\n}\n\nexport function resolveCliGitAuth(): CliGitAuthRecord | null {\n return readCliAuthState().git_auth ?? null;\n}\n\nexport function clearCliGitAuth(): CliGitAuthRecord | null {\n const state = readCliAuthState();\n const existing = state.git_auth ?? null;\n state.git_auth = null;\n writeCliAuthState(state);\n return existing;\n}\n\nexport function saveCliAuth(input: SaveCliAuthInput): { storage: 'keychain' | 'file' } {\n const state = readCliAuthState();\n const now = Date.now();\n const keychain = storeInKeychain(input.org.id, input.refreshToken);\n const allowPlaintextFallback = process.env.STANDARDAGENTS_ALLOW_PLAINTEXT_TOKEN === '1';\n\n let token_storage: 'keychain' | 'file';\n let keychain_account: string | undefined;\n let refresh_token: string | undefined;\n\n if (keychain.ok) {\n token_storage = 'keychain';\n keychain_account = keychain.account;\n } else if (allowPlaintextFallback) {\n token_storage = 'file';\n refresh_token = input.refreshToken;\n } else {\n throw new Error(\n 'Unable to store refresh token in keychain. Set STANDARDAGENTS_ALLOW_PLAINTEXT_TOKEN=1 for explicit file fallback or use STANDARDAGENTS_TOKEN in CI.',\n );\n }\n\n state.orgs[input.org.id] = {\n org_id: input.org.id,\n org_slug: input.org.slug,\n org_name: input.org.name,\n user_id: input.user.id,\n user_email: input.user.email,\n token_storage,\n keychain_account,\n refresh_token,\n updated_at: now,\n };\n state.active_org_id = input.org.id;\n writeCliAuthState(state);\n\n return { storage: token_storage };\n}\n\nfunction resolveTargetOrgId(state: CliAuthState, orgInput?: string): string | null {\n if (orgInput) {\n const trimmed = orgInput.trim();\n if (!trimmed) return null;\n\n if (state.orgs[trimmed]) return trimmed;\n\n const match = Object.values(state.orgs).find(\n (record) => record.org_slug === trimmed,\n );\n return match?.org_id ?? null;\n }\n\n if (state.active_org_id && state.orgs[state.active_org_id]) {\n return state.active_org_id;\n }\n\n const first = Object.keys(state.orgs)[0];\n return first ?? null;\n}\n\nfunction resolveTargetRecord(state: CliAuthState, orgInput?: string): ResolveTargetResult | null {\n const orgId = resolveTargetOrgId(state, orgInput);\n if (!orgId) return null;\n const record = state.orgs[orgId];\n if (!record) return null;\n return { orgId, record };\n}\n\nexport function resolveStoredCliAuth(orgInput?: string): CliOrgAuthRecord | null {\n const state = readCliAuthState();\n const resolved = resolveTargetRecord(state, orgInput);\n return resolved?.record ?? null;\n}\n\nexport function readStoredRefreshToken(orgInput?: string): {\n record: CliOrgAuthRecord;\n refreshToken: string;\n} | null {\n const explicit = process.env.STANDARDAGENTS_TOKEN?.trim();\n if (explicit) {\n return {\n record: {\n org_id: 'env',\n org_slug: 'env',\n org_name: 'Environment token',\n user_id: 'env',\n user_email: 'env',\n token_storage: 'file',\n updated_at: Date.now(),\n },\n refreshToken: explicit,\n };\n }\n\n const state = readCliAuthState();\n const resolved = resolveTargetRecord(state, orgInput);\n if (!resolved) return null;\n const { record } = resolved;\n\n if (record.token_storage === 'file') {\n if (!record.refresh_token) return null;\n return { record, refreshToken: record.refresh_token };\n }\n\n const keychainToken = readFromKeychain(record.org_id);\n if (!keychainToken) return null;\n return { record, refreshToken: keychainToken };\n}\n\nexport function updateStoredRefreshToken(\n orgId: string,\n refreshToken: string,\n): { storage: 'keychain' | 'file' } {\n const state = readCliAuthState();\n const existing = state.orgs[orgId];\n if (!existing) {\n throw new Error(`No stored auth session found for org \"${orgId}\".`);\n }\n\n const allowPlaintextFallback = process.env.STANDARDAGENTS_ALLOW_PLAINTEXT_TOKEN === '1';\n let storage: 'keychain' | 'file';\n if (existing.token_storage === 'keychain') {\n const keychainWrite = storeInKeychain(orgId, refreshToken);\n if (keychainWrite.ok) {\n storage = 'keychain';\n existing.keychain_account = keychainWrite.account;\n existing.refresh_token = undefined;\n } else if (allowPlaintextFallback) {\n storage = 'file';\n existing.token_storage = 'file';\n existing.keychain_account = undefined;\n existing.refresh_token = refreshToken;\n } else {\n throw new Error(\n 'Unable to rotate refresh token in keychain. Set STANDARDAGENTS_ALLOW_PLAINTEXT_TOKEN=1 for explicit file fallback.',\n );\n }\n } else {\n storage = 'file';\n existing.refresh_token = refreshToken;\n }\n\n existing.updated_at = Date.now();\n state.orgs[orgId] = existing;\n writeCliAuthState(state);\n\n return { storage };\n}\n\nexport function clearCliAuth(orgInput?: string): CliOrgAuthRecord | null {\n const state = readCliAuthState();\n const resolved = resolveTargetRecord(state, orgInput);\n if (!resolved) return null;\n const { orgId: targetOrgId, record } = resolved;\n\n if (record.token_storage === 'keychain') {\n deleteFromKeychain(targetOrgId);\n }\n\n delete state.orgs[targetOrgId];\n\n if (state.active_org_id === targetOrgId) {\n const next = Object.keys(state.orgs)[0];\n state.active_org_id = next ?? null;\n }\n\n writeCliAuthState(state);\n return record;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { logger } from '../utils/logger.js';\nimport {\n clearBootstrapState,\n getBootstrapStatePath,\n} from '../utils/bootstrap-state.js';\nimport { resolvePlatformApiEndpoint, revokeCliAuthToken } from '../utils/cli-auth-api.js';\nimport {\n clearCliAuth,\n hasStoredCliAuth,\n readStoredRefreshToken,\n} from '../utils/cli-auth-storage.js';\nimport { PROJECT_AUTH_ENV_KEYS } from '../utils/project-auth-env.js';\n\nconst ORG_CONTEXT_KEYS: ReadonlySet<string> = new Set(PROJECT_AUTH_ENV_KEYS);\n\nconst DEV_VARS_FILENAME = '.dev.vars';\n\ninterface LogoutOptions {\n org?: string;\n endpoint?: string;\n}\n\nexport function stripOrgContextFromDevVars(content: string): { updated: string; removed: boolean } {\n const lines = content.split('\\n');\n let removed = false;\n const kept = lines.filter((line) => {\n const eqIndex = line.indexOf('=');\n if (eqIndex <= 0) return true;\n const key = line.slice(0, eqIndex).trim();\n if (ORG_CONTEXT_KEYS.has(key)) {\n removed = true;\n return false;\n }\n return true;\n });\n\n return { updated: kept.join('\\n'), removed };\n}\n\nexport function clearLocalOrgContext(projectPath: string): { stateCleared: boolean; envCleared: boolean } {\n const statePath = getBootstrapStatePath(projectPath);\n const stateCleared = fs.existsSync(statePath);\n clearBootstrapState(projectPath);\n\n const devVarsPath = path.join(projectPath, DEV_VARS_FILENAME);\n if (!fs.existsSync(devVarsPath)) {\n return { stateCleared, envCleared: false };\n }\n\n const content = fs.readFileSync(devVarsPath, 'utf-8');\n const stripped = stripOrgContextFromDevVars(content);\n if (!stripped.removed) {\n return { stateCleared, envCleared: false };\n }\n\n fs.writeFileSync(devVarsPath, stripped.updated, 'utf-8');\n return { stateCleared, envCleared: true };\n}\n\nfunction logLocalClearResult(result: { stateCleared: boolean; envCleared: boolean }): void {\n if (!result.stateCleared && !result.envCleared) {\n logger.info('No local org-scoped session found to clear.');\n return;\n }\n logger.success('Cleared local org-scoped session state.');\n}\n\nexport async function logout(options: LogoutOptions = {}): Promise<void> {\n const projectPath = process.cwd();\n const localResult = clearLocalOrgContext(projectPath);\n\n const storedAuth = hasStoredCliAuth();\n const tokenPayload = readStoredRefreshToken(options.org);\n\n if (!storedAuth && !tokenPayload) {\n logger.info('No stored CLI auth session found.');\n logLocalClearResult(localResult);\n return;\n }\n\n const endpoint = resolvePlatformApiEndpoint(options.endpoint);\n\n if (tokenPayload) {\n try {\n await revokeCliAuthToken(endpoint, tokenPayload.refreshToken);\n } catch (error) {\n if (error instanceof Error) {\n logger.warning(`Token revocation failed: ${error.message}`);\n } else {\n logger.warning('Token revocation failed');\n }\n }\n }\n\n if (!storedAuth) {\n logger.info('Refresh token came from STANDARDAGENTS_TOKEN. Unset it in your shell to fully logout.');\n logLocalClearResult(localResult);\n return;\n }\n\n const removed = clearCliAuth(options.org);\n if (!removed && options.org) {\n logger.error(`No stored auth session found for \"${options.org}\".`);\n process.exit(1);\n }\n\n if (!removed) {\n logger.info('No stored CLI auth session found.');\n logLocalClearResult(localResult);\n return;\n }\n\n logger.success(`Logged out from org \"${removed.org_slug}\" (${removed.user_email}).`);\n logLocalClearResult(localResult);\n}\n","import path from 'node:path';\nimport fs from 'node:fs';\nimport net from 'node:net';\nimport readline from 'node:readline';\nimport { spawn } from 'node:child_process';\nimport { fileURLToPath } from 'node:url';\nimport { logger } from '../utils/logger.js';\n\ninterface InitChatOptions {\n yes?: boolean;\n framework?: 'vite' | 'nextjs';\n}\n\ntype Framework = 'vite' | 'nextjs';\ntype PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\n\n/**\n * Get the @standardagents/react version to use based on the CLI's version.\n * If CLI is running a prerelease (e.g., 0.11.0-next.1), use that tag.\n * Otherwise, use the exact CLI version.\n */\nfunction getReactPackageVersion(): string {\n try {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n // dist/index.js -> ../package.json\n const pkgPath = path.resolve(__dirname, '../package.json');\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));\n const version = pkg.version as string;\n\n const prereleaseMatch = version.match(/-([a-z]+)\\./i);\n if (prereleaseMatch) {\n return prereleaseMatch[1];\n }\n\n return `^${version}`;\n } catch {\n return 'latest';\n }\n}\n\n/**\n * Get the path to the chat source directory bundled with the CLI\n */\nfunction getChatSourceDir(): string {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n // dist/index.js -> ../chat\n return path.resolve(__dirname, '../chat');\n}\n\nasync function prompt(question: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nasync function promptPassword(question: string): Promise<string> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n stdout.write(question);\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n let password = '';\n\n const redraw = () => {\n stdout.clearLine(0);\n stdout.cursorTo(0);\n stdout.write(question + '*'.repeat(password.length));\n };\n\n const onData = (data: string) => {\n const str = data.toString();\n\n for (let i = 0; i < str.length; i++) {\n const c = str[i];\n\n if (c === '\\x1B') {\n if (str[i + 1] === '[') {\n i += 2;\n continue;\n }\n continue;\n }\n\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u0004':\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\n');\n resolve(password);\n return;\n case '\\u0003':\n stdout.write('\\n');\n process.exit(1);\n break;\n case '\\u007F':\n case '\\b':\n if (password.length > 0) {\n password = password.slice(0, -1);\n redraw();\n }\n break;\n default:\n if (c.charCodeAt(0) >= 32) {\n password += c;\n stdout.write('*');\n }\n break;\n }\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\nfunction runCommand(command: string, args: string[], cwd: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: 'inherit',\n shell: false,\n });\n\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Command failed with exit code ${code}`));\n }\n });\n\n child.on('error', reject);\n });\n}\n\nfunction detectPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent;\n if (userAgent) {\n if (userAgent.includes('pnpm')) return 'pnpm';\n if (userAgent.includes('yarn')) return 'yarn';\n if (userAgent.includes('bun')) return 'bun';\n }\n\n if (fs.existsSync('pnpm-lock.yaml')) return 'pnpm';\n if (fs.existsSync('yarn.lock')) return 'yarn';\n if (fs.existsSync('bun.lockb')) return 'bun';\n if (fs.existsSync('package-lock.json')) return 'npm';\n\n return 'npm';\n}\n\nasync function selectPackageManager(detected: PackageManager): Promise<PackageManager> {\n const options: PackageManager[] = ['npm', 'pnpm', 'yarn', 'bun'];\n const detectedIndex = options.indexOf(detected);\n\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n let selectedIndex = detectedIndex;\n\n const renderOptions = () => {\n stdout.write('\\x1B[?25l');\n stdout.write(`\\x1B[${options.length + 1}A`);\n stdout.write('\\x1B[0J');\n\n stdout.write('Select a package manager:\\n');\n options.forEach((opt, i) => {\n const marker = i === detectedIndex ? ' (detected)' : '';\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${opt}${marker}\\x1B[0m\\n`);\n });\n };\n\n stdout.write('Select a package manager:\\n');\n options.forEach((opt, i) => {\n const marker = i === detectedIndex ? ' (detected)' : '';\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${opt}${marker}\\x1B[0m\\n`);\n });\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h');\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') {\n selectedIndex = (selectedIndex - 1 + options.length) % options.length;\n renderOptions();\n } else if (key === '\\x1B[B' || key === 'j') {\n selectedIndex = (selectedIndex + 1) % options.length;\n renderOptions();\n } else if (key === '\\r' || key === '\\n') {\n cleanup();\n resolve(options[selectedIndex]);\n } else if (key === '\\x03') {\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\nasync function selectFramework(): Promise<Framework> {\n const options: { value: Framework; label: string }[] = [\n { value: 'vite', label: 'Vite (React + TypeScript)' },\n { value: 'nextjs', label: 'Next.js (App Router)' },\n ];\n\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n let selectedIndex = 0;\n\n const renderOptions = () => {\n stdout.write('\\x1B[?25l');\n stdout.write(`\\x1B[${options.length + 1}A`);\n stdout.write('\\x1B[0J');\n\n stdout.write('Select a framework:\\n');\n options.forEach((opt, i) => {\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${opt.label}\\x1B[0m\\n`);\n });\n };\n\n stdout.write('Select a framework:\\n');\n options.forEach((opt, i) => {\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${opt.label}\\x1B[0m\\n`);\n });\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h');\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') {\n selectedIndex = (selectedIndex - 1 + options.length) % options.length;\n renderOptions();\n } else if (key === '\\x1B[B' || key === 'j') {\n selectedIndex = (selectedIndex + 1) % options.length;\n renderOptions();\n } else if (key === '\\r' || key === '\\n') {\n cleanup();\n resolve(options[selectedIndex].value);\n } else if (key === '\\x03') {\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\nfunction isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function isPortOpen(port: number): Promise<boolean> {\n const tryConnect = (host: string): Promise<boolean> => {\n return new Promise((resolve) => {\n const socket = new net.Socket();\n socket.setTimeout(200);\n\n socket.on('connect', () => {\n socket.destroy();\n resolve(true);\n });\n\n socket.on('timeout', () => {\n socket.destroy();\n resolve(false);\n });\n\n socket.on('error', () => {\n socket.destroy();\n resolve(false);\n });\n\n socket.connect(port, host);\n });\n };\n\n if (await tryConnect('127.0.0.1')) return true;\n if (await tryConnect('::1')) return true;\n return false;\n}\n\nasync function isAgentbuilderInstance(url: string): Promise<boolean> {\n try {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 1000);\n\n const response = await fetch(`${url}/api/agents`, {\n signal: controller.signal,\n headers: { 'Accept': 'application/json' },\n });\n\n clearTimeout(timeout);\n\n if (response.status === 401) {\n return true;\n }\n\n if (response.ok) {\n const data = await response.json();\n return Array.isArray(data.agents);\n }\n return false;\n } catch {\n return false;\n }\n}\n\nasync function detectAgentbuilderInstance(): Promise<string | null> {\n const portsToScan = [\n 5173, 5174, 5175, 5176, 5177, 5178, 5179, 5180,\n 3000, 3001, 3002, 3003,\n 8080, 8000, 4000,\n ];\n\n logger.log('\\x1B[90mScanning for running agentbuilder instance...\\x1B[0m');\n\n const openPorts: number[] = [];\n\n await Promise.all(\n portsToScan.map(async (port) => {\n if (await isPortOpen(port)) {\n openPorts.push(port);\n }\n })\n );\n\n for (const port of openPorts.sort((a, b) => a - b)) {\n const url = `http://localhost:${port}`;\n if (await isAgentbuilderInstance(url)) {\n return url;\n }\n }\n\n return null;\n}\n\n/**\n * Copy a directory recursively, skipping certain files/folders\n */\nfunction copyDir(src: string, dest: string, skip: string[] = []) {\n if (!fs.existsSync(dest)) {\n fs.mkdirSync(dest, { recursive: true });\n }\n\n const entries = fs.readdirSync(src, { withFileTypes: true });\n\n for (const entry of entries) {\n if (skip.includes(entry.name)) continue;\n\n const srcPath = path.join(src, entry.name);\n const destPath = path.join(dest, entry.name);\n\n if (entry.isDirectory()) {\n copyDir(srcPath, destPath, skip);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n\n/**\n * Update package.json with correct SDK version and project name\n */\nfunction updatePackageJson(filePath: string, projectName: string, reactVersion: string) {\n const pkg = JSON.parse(fs.readFileSync(filePath, 'utf-8'));\n\n // Update name\n pkg.name = projectName;\n\n // Update @standardagents/react version\n if (pkg.dependencies?.['@standardagents/react']) {\n pkg.dependencies['@standardagents/react'] = reactVersion;\n }\n\n // Remove private flag for user projects\n delete pkg.private;\n\n // Remove workspace-specific scripts\n delete pkg.scripts?.['dev:next'];\n delete pkg.scripts?.['build:next'];\n\n fs.writeFileSync(filePath, JSON.stringify(pkg, null, 2) + '\\n', 'utf-8');\n}\n\n/**\n * Update package.json for Next.js project\n */\nfunction updateNextPackageJson(filePath: string, projectName: string, reactVersion: string) {\n const pkg = JSON.parse(fs.readFileSync(filePath, 'utf-8'));\n\n // Update name\n pkg.name = projectName;\n\n // Update @standardagents/react version\n if (pkg.dependencies?.['@standardagents/react']) {\n pkg.dependencies['@standardagents/react'] = reactVersion;\n }\n\n // Remove private flag for user projects\n delete pkg.private;\n\n // Update scripts for Next.js only\n pkg.scripts = {\n dev: 'next dev',\n build: 'next build',\n start: 'next start',\n lint: 'next lint',\n };\n\n // Remove vite-specific deps\n delete pkg.devDependencies?.['@tailwindcss/vite'];\n delete pkg.devDependencies?.['@vitejs/plugin-react'];\n delete pkg.devDependencies?.['vite'];\n\n fs.writeFileSync(filePath, JSON.stringify(pkg, null, 2) + '\\n', 'utf-8');\n}\n\nexport async function initChat(projectNameArg?: string, options: InitChatOptions = {}) {\n const cwd = process.cwd();\n const chatSourceDir = getChatSourceDir();\n\n // Check if chat source exists\n if (!fs.existsSync(chatSourceDir)) {\n logger.error('Chat source files not found. This CLI installation may be corrupted.');\n process.exit(1);\n }\n\n logger.log('');\n logger.info('Scaffolding a frontend chat application...');\n logger.log('');\n\n // Get project name\n let projectName = projectNameArg;\n\n if (!projectName && !options.yes) {\n projectName = await prompt('Project name: ');\n }\n\n if (!projectName) {\n logger.error('Project name is required');\n process.exit(1);\n }\n\n const projectPath = path.join(cwd, projectName);\n\n // Check if directory already exists\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${projectName}\" already exists`);\n process.exit(1);\n }\n\n // Step 1: Select framework\n let framework: Framework;\n if (options.framework) {\n framework = options.framework;\n } else if (options.yes) {\n framework = 'vite';\n } else {\n framework = await selectFramework();\n logger.log('');\n }\n\n // Step 2: Get Agentbuilder URL\n let serverUrl: string;\n if (options.yes) {\n serverUrl = 'http://localhost:5173';\n } else {\n const detectedUrl = await detectAgentbuilderInstance();\n\n if (detectedUrl) {\n logger.success(`Found agentbuilder at ${detectedUrl}`);\n const urlInput = await prompt(`Agentbuilder dev server URL [${detectedUrl}]: `);\n serverUrl = urlInput || detectedUrl;\n } else {\n logger.log('\\x1B[90mNo running agentbuilder instance found\\x1B[0m');\n const urlInput = await prompt('Agentbuilder dev server URL [http://localhost:5173]: ');\n serverUrl = urlInput || 'http://localhost:5173';\n }\n\n if (!isValidUrl(serverUrl)) {\n logger.error('Invalid URL format');\n process.exit(1);\n }\n }\n\n // Select package manager\n const detectedPm = detectPackageManager();\n let pm: PackageManager;\n if (options.yes) {\n pm = detectedPm;\n } else {\n pm = await selectPackageManager(detectedPm);\n logger.log('');\n }\n\n logger.log('');\n logger.info(`Creating ${framework === 'vite' ? 'Vite' : 'Next.js'} project...`);\n logger.log('');\n\n // Create project directory\n fs.mkdirSync(projectPath, { recursive: true });\n\n // Get React package version\n const reactVersion = getReactPackageVersion();\n\n // Copy source files based on framework\n if (framework === 'vite') {\n await scaffoldVite(projectPath, chatSourceDir, projectName, serverUrl, reactVersion);\n } else {\n await scaffoldNextjs(projectPath, chatSourceDir, projectName, serverUrl, reactVersion);\n }\n\n // Install dependencies\n logger.log('');\n logger.info('Installing dependencies...');\n logger.log('');\n\n try {\n await runCommand(pm, pm === 'npm' ? ['install'] : ['install'], projectPath);\n } catch (error) {\n logger.error('Failed to install dependencies');\n process.exit(1);\n }\n\n // Success message\n logger.log('');\n logger.success('Chat UI scaffolded successfully!');\n logger.log('');\n\n // Start dev server\n logger.info('Starting development server...');\n logger.log('');\n\n const devArgs = pm === 'npm' ? ['run', 'dev'] : ['dev'];\n const devProcess = spawn(pm, devArgs, {\n cwd: projectPath,\n stdio: ['inherit', 'pipe', 'pipe'],\n shell: false,\n });\n\n let browserOpened = false;\n const openBrowser = (url: string) => {\n if (browserOpened) return;\n browserOpened = true;\n const openCmd = process.platform === 'darwin' ? 'open' :\n process.platform === 'win32' ? 'start' : 'xdg-open';\n spawn(openCmd, [url], { stdio: 'ignore', detached: true }).unref();\n };\n\n devProcess.stdout?.on('data', (data: Buffer) => {\n const text = data.toString();\n process.stdout.write(data);\n\n const urlMatch = text.match(/Local:\\s+(https?:\\/\\/localhost:\\d+\\/?)/);\n if (urlMatch && !browserOpened) {\n openBrowser(urlMatch[1]);\n }\n });\n\n devProcess.stderr?.on('data', (data: Buffer) => {\n process.stderr.write(data);\n });\n\n devProcess.on('error', (error) => {\n logger.error(`Failed to start dev server: ${error.message}`);\n process.exit(1);\n });\n}\n\nasync function scaffoldVite(\n projectPath: string,\n chatSourceDir: string,\n projectName: string,\n serverUrl: string,\n reactVersion: string\n) {\n // Copy shared source files\n copyDir(path.join(chatSourceDir, 'src'), path.join(projectPath, 'src'), []);\n logger.success('Copied src/');\n\n // Copy vite-specific files to root\n const viteDir = path.join(chatSourceDir, 'vite');\n\n // Copy and update index.html to point to src/main.tsx\n let indexHtml = fs.readFileSync(path.join(viteDir, 'index.html'), 'utf-8');\n indexHtml = indexHtml.replace('src=\"/main.tsx\"', 'src=\"/src/main.tsx\"');\n fs.writeFileSync(path.join(projectPath, 'index.html'), indexHtml, 'utf-8');\n logger.success('Created index.html');\n\n fs.copyFileSync(path.join(viteDir, 'main.tsx'), path.join(projectPath, 'src', 'main.tsx'));\n logger.success('Created src/main.tsx');\n\n // Read and adapt vite.config.ts (remove root and adjust paths)\n let viteConfig = fs.readFileSync(path.join(viteDir, 'vite.config.ts'), 'utf-8');\n // Simplify config for standalone project\n viteConfig = `import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport tailwindcss from '@tailwindcss/vite'\n\nexport default defineConfig({\n plugins: [\n react(),\n tailwindcss(),\n ],\n})\n`;\n fs.writeFileSync(path.join(projectPath, 'vite.config.ts'), viteConfig, 'utf-8');\n logger.success('Created vite.config.ts');\n\n // Copy and update tsconfig\n fs.copyFileSync(path.join(chatSourceDir, 'tsconfig.json'), path.join(projectPath, 'tsconfig.json'));\n // Update tsconfig to remove vite-specific include\n const tsconfig = JSON.parse(fs.readFileSync(path.join(projectPath, 'tsconfig.json'), 'utf-8'));\n tsconfig.include = ['src'];\n delete tsconfig.compilerOptions?.paths;\n fs.writeFileSync(path.join(projectPath, 'tsconfig.json'), JSON.stringify(tsconfig, null, 2) + '\\n', 'utf-8');\n logger.success('Created tsconfig.json');\n\n // Copy and update package.json\n fs.copyFileSync(path.join(chatSourceDir, 'package.json'), path.join(projectPath, 'package.json'));\n // Read, modify, and write package.json\n const pkg = JSON.parse(fs.readFileSync(path.join(projectPath, 'package.json'), 'utf-8'));\n pkg.name = projectName;\n pkg.scripts = {\n dev: 'vite',\n build: 'vite build',\n preview: 'vite preview',\n };\n delete pkg.private;\n // Update @standardagents/react version\n if (pkg.dependencies?.['@standardagents/react']) {\n pkg.dependencies['@standardagents/react'] = reactVersion;\n }\n // Remove next.js deps\n delete pkg.dependencies?.['next'];\n delete pkg.devDependencies?.['@tailwindcss/postcss'];\n delete pkg.devDependencies?.['postcss'];\n fs.writeFileSync(path.join(projectPath, 'package.json'), JSON.stringify(pkg, null, 2) + '\\n', 'utf-8');\n logger.success('Created package.json');\n\n // Create .env\n const envContent = `# Agentbuilder connection\nVITE_AGENTBUILDER_URL=${serverUrl}\n`;\n fs.writeFileSync(path.join(projectPath, '.env'), envContent, 'utf-8');\n logger.success('Created .env');\n\n // Create .gitignore\n fs.writeFileSync(path.join(projectPath, '.gitignore'), `node_modules\ndist\n.env\n`, 'utf-8');\n logger.success('Created .gitignore');\n\n // Update main.tsx paths (it expects ../src/ but now they're in same dir)\n let mainTsx = fs.readFileSync(path.join(projectPath, 'src', 'main.tsx'), 'utf-8');\n mainTsx = mainTsx\n .replace(/from '\\.\\.\\/src\\//g, \"from './\")\n .replace(/import '\\.\\.\\/src\\//g, \"import './\");\n fs.writeFileSync(path.join(projectPath, 'src', 'main.tsx'), mainTsx, 'utf-8');\n\n // Copy favicon\n if (fs.existsSync(path.join(viteDir, 'favicon.svg'))) {\n fs.copyFileSync(path.join(viteDir, 'favicon.svg'), path.join(projectPath, 'favicon.svg'));\n logger.success('Created favicon.svg');\n }\n}\n\nasync function scaffoldNextjs(\n projectPath: string,\n chatSourceDir: string,\n projectName: string,\n serverUrl: string,\n reactVersion: string\n) {\n // Copy shared source files to src/\n copyDir(path.join(chatSourceDir, 'src'), path.join(projectPath, 'src'), []);\n logger.success('Copied src/');\n\n // Copy next-specific files\n const nextDir = path.join(chatSourceDir, 'next');\n\n // Copy app directory\n copyDir(path.join(nextDir, 'app'), path.join(projectPath, 'app'), []);\n logger.success('Copied app/');\n\n // Copy next.config.ts\n fs.copyFileSync(path.join(nextDir, 'next.config.ts'), path.join(projectPath, 'next.config.ts'));\n logger.success('Created next.config.ts');\n\n // Copy postcss.config.mjs\n fs.copyFileSync(path.join(nextDir, 'postcss.config.mjs'), path.join(projectPath, 'postcss.config.mjs'));\n logger.success('Created postcss.config.mjs');\n\n // Create tsconfig.json for Next.js\n const tsconfig = {\n compilerOptions: {\n target: \"ES2017\",\n lib: [\"dom\", \"dom.iterable\", \"esnext\"],\n allowJs: true,\n skipLibCheck: true,\n strict: true,\n noEmit: true,\n esModuleInterop: true,\n module: \"esnext\",\n moduleResolution: \"bundler\",\n resolveJsonModule: true,\n isolatedModules: true,\n jsx: \"preserve\",\n incremental: true,\n plugins: [{ name: \"next\" }],\n paths: {\n \"@/*\": [\"./src/*\"]\n }\n },\n include: [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n exclude: [\"node_modules\"]\n };\n fs.writeFileSync(path.join(projectPath, 'tsconfig.json'), JSON.stringify(tsconfig, null, 2) + '\\n', 'utf-8');\n logger.success('Created tsconfig.json');\n\n // Create package.json for Next.js\n const pkg = JSON.parse(fs.readFileSync(path.join(chatSourceDir, 'package.json'), 'utf-8'));\n pkg.name = projectName;\n pkg.scripts = {\n dev: 'next dev',\n build: 'next build',\n start: 'next start',\n };\n delete pkg.private;\n // Update @standardagents/react version\n if (pkg.dependencies?.['@standardagents/react']) {\n pkg.dependencies['@standardagents/react'] = reactVersion;\n }\n // Remove vite-specific deps\n delete pkg.devDependencies?.['@tailwindcss/vite'];\n delete pkg.devDependencies?.['@vitejs/plugin-react'];\n delete pkg.devDependencies?.['vite'];\n fs.writeFileSync(path.join(projectPath, 'package.json'), JSON.stringify(pkg, null, 2) + '\\n', 'utf-8');\n logger.success('Created package.json');\n\n // Create .env.local\n const envContent = `# Agentbuilder connection\nNEXT_PUBLIC_AGENTBUILDER_URL=${serverUrl}\n`;\n fs.writeFileSync(path.join(projectPath, '.env.local'), envContent, 'utf-8');\n logger.success('Created .env.local');\n\n // Create .gitignore\n fs.writeFileSync(path.join(projectPath, '.gitignore'), `node_modules\n.next\nout\n.env.local\n`, 'utf-8');\n logger.success('Created .gitignore');\n\n // Update layout.tsx paths\n let layoutTsx = fs.readFileSync(path.join(projectPath, 'app', 'layout.tsx'), 'utf-8');\n layoutTsx = layoutTsx.replace(/from '\\.\\.\\/\\.\\.\\/src\\//g, \"from '../src/\");\n fs.writeFileSync(path.join(projectPath, 'app', 'layout.tsx'), layoutTsx, 'utf-8');\n\n // Update page.tsx paths\n let pageTsx = fs.readFileSync(path.join(projectPath, 'app', 'page.tsx'), 'utf-8');\n pageTsx = pageTsx.replace(/from '\\.\\.\\/\\.\\.\\/src\\//g, \"from '../src/\");\n fs.writeFileSync(path.join(projectPath, 'app', 'page.tsx'), pageTsx, 'utf-8');\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { logger } from '../utils/logger.js';\n\n/**\n * Item selection state for extract/copy decision\n */\ninterface SelectionItem {\n name: string;\n type: 'agent' | 'prompt' | 'tool' | 'model' | 'hook';\n filePath: string;\n mode: 'extract' | 'copy';\n isShared: boolean;\n sharedWith: string[];\n}\n\n/**\n * Interactive select prompt for choosing from a list of options.\n */\nasync function selectAgent(agents: string[]): Promise<string> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n let selectedIndex = 0;\n\n const renderOptions = () => {\n stdout.write('\\x1B[?25l'); // Hide cursor\n stdout.write(`\\x1B[${agents.length + 1}A`); // Move up\n stdout.write('\\x1B[0J'); // Clear from cursor to end\n\n stdout.write('Select an agent to pack (use arrows, enter to confirm):\\n');\n agents.forEach((agent, i) => {\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${agent}\\x1B[0m\\n`);\n });\n };\n\n // Initial render\n stdout.write('Select an agent to pack (use arrows, enter to confirm):\\n');\n agents.forEach((agent, i) => {\n const prefix = i === selectedIndex ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const highlight = i === selectedIndex ? '\\x1B[36m' : '\\x1B[90m';\n stdout.write(`${prefix} ${highlight}${agent}\\x1B[0m\\n`);\n });\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h'); // Show cursor\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') { // Up arrow or k\n selectedIndex = (selectedIndex - 1 + agents.length) % agents.length;\n renderOptions();\n } else if (key === '\\x1B[B' || key === 'j') { // Down arrow or j\n selectedIndex = (selectedIndex + 1) % agents.length;\n renderOptions();\n } else if (key === '\\r' || key === '\\n') { // Enter\n cleanup();\n resolve(agents[selectedIndex]);\n } else if (key === '\\x03') { // Ctrl+C\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\n/**\n * Interactive item mode selector for extract/copy decisions.\n */\nasync function selectItemModes(\n items: SelectionItem[],\n _agentName: string\n): Promise<SelectionItem[]> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n\n let selectedIndex = 0;\n\n const getDisplayLines = () => {\n const lines: string[] = [];\n lines.push('');\n lines.push('Remove originals? (space to toggle, enter to confirm)');\n lines.push('');\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const isSelected = i === selectedIndex;\n const cursor = isSelected ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const modeText = item.mode === 'extract'\n ? '\\x1B[32m(extract)\\x1B[0m'\n : '\\x1B[90m(copy)\\x1B[0m';\n\n lines.push(`${cursor} ${item.name} \\x1B[90m(${item.type})\\x1B[0m ${modeText}`);\n }\n\n lines.push('');\n return lines;\n };\n\n const render = (initial = false) => {\n const lines = getDisplayLines();\n if (!initial) {\n stdout.write('\\x1B[?25l');\n stdout.write(`\\x1B[${lines.length}A`);\n stdout.write('\\x1B[0J');\n }\n stdout.write(lines.join('\\n') + '\\n');\n };\n\n render(true);\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h');\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') {\n selectedIndex = (selectedIndex - 1 + items.length) % items.length;\n render();\n } else if (key === '\\x1B[B' || key === 'j') {\n selectedIndex = (selectedIndex + 1) % items.length;\n render();\n } else if (key === ' ') {\n items[selectedIndex].mode = items[selectedIndex].mode === 'extract' ? 'copy' : 'extract';\n render();\n } else if (key === '\\r' || key === '\\n') {\n cleanup();\n resolve(items);\n } else if (key === '\\x03') {\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\ninterface PackOptions {\n output?: string;\n npm?: boolean;\n version?: string;\n noRemove?: boolean;\n noInteractive?: boolean;\n}\n\n/**\n * Check if this is a valid Standard Agents project.\n */\nfunction isStandardAgentsProject(): boolean {\n // Check for agents directory\n if (!fs.existsSync('agents')) {\n return false;\n }\n\n // Check for @standardagents/builder dependency\n try {\n const pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf-8'));\n const deps = { ...pkgJson.dependencies, ...pkgJson.devDependencies };\n return '@standardagents/builder' in deps;\n } catch {\n return false;\n }\n}\n\n/**\n * Pack an agent with all its dependencies.\n */\nexport async function pack(agentName: string | undefined, options: PackOptions) {\n logger.info('Packing agent...\\n');\n\n // Verify this is a Standard Agents project\n if (!isStandardAgentsProject()) {\n logger.error('This does not appear to be a Standard Agents project.');\n logger.info('Make sure you have @standardagents/builder installed and an agents/ directory.');\n process.exit(1);\n }\n\n const rootDir = process.cwd();\n\n // Dynamic import of packing service (uses separate entry point without Cloudflare deps)\n let PackingService: any;\n try {\n const packing = await import('@standardagents/builder/packing');\n PackingService = packing.PackingService;\n } catch (err) {\n logger.error('Failed to load packing service from @standardagents/builder');\n logger.info('Make sure @standardagents/builder is installed and built.');\n if (err instanceof Error) {\n logger.info(`Error: ${err.message}`);\n }\n process.exit(1);\n }\n\n const packingService = new PackingService();\n\n // If no agent name provided, show interactive select\n if (!agentName) {\n const agents = packingService.listAgents(rootDir);\n\n if (agents.length === 0) {\n logger.error('No agents found in agents/agents/');\n process.exit(1);\n }\n\n if (agents.length === 1) {\n // Only one agent, use it directly\n agentName = agents[0];\n logger.info(`Found one agent: ${agentName}`);\n } else {\n // Multiple agents, show interactive select\n console.log('');\n agentName = await selectAgent(agents);\n console.log('');\n }\n }\n\n // At this point agentName is guaranteed to be defined (we exit if no agents found)\n if (!agentName) {\n // This should never happen, but satisfies TypeScript\n logger.error('No agent selected');\n process.exit(1);\n }\n const selectedAgent = agentName;\n\n logger.info(`Analyzing agent: ${selectedAgent}`);\n\n // Analyze the agent\n const analysis = await packingService.analyzeAgent(selectedAgent, rootDir);\n\n if (analysis.errors.length > 0) {\n logger.error('Analysis failed:');\n for (const error of analysis.errors) {\n console.log(` - ${error}`);\n }\n process.exit(1);\n }\n\n // Show analysis results\n console.log('');\n logger.info('Discovered constituents:');\n console.log(` Agents: ${analysis.constituents.agents.map((a: { name: string }) => a.name).join(', ') || '(none)'}`);\n console.log(` Prompts: ${analysis.constituents.prompts.map((p: { name: string }) => p.name).join(', ') || '(none)'}`);\n console.log(` Tools: ${analysis.constituents.tools.map((t: { name: string }) => t.name).join(', ') || '(none)'}`);\n console.log(` Models: ${analysis.constituents.models.map((m: { name: string }) => m.name).join(', ') || '(none)'}`);\n console.log(` Hooks: ${analysis.constituents.hooks.map((h: { name: string }) => h.name).join(', ') || '(none)'}`);\n\n // Show warnings\n if (analysis.warnings.length > 0) {\n console.log('');\n logger.warning('Warnings:');\n for (const warning of analysis.warnings) {\n console.log(` - ${warning}`);\n }\n }\n\n // Build selection items from analysis\n const selectionItems: SelectionItem[] = [];\n\n for (const agent of analysis.constituents.agents) {\n selectionItems.push({\n name: agent.name,\n type: 'agent',\n filePath: agent.filePath,\n mode: agent.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: agent.sharedWith.length > 0,\n sharedWith: agent.sharedWith,\n });\n }\n\n for (const prompt of analysis.constituents.prompts) {\n selectionItems.push({\n name: prompt.name,\n type: 'prompt',\n filePath: prompt.filePath,\n mode: prompt.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: prompt.sharedWith.length > 0,\n sharedWith: prompt.sharedWith,\n });\n }\n\n for (const tool of analysis.constituents.tools) {\n selectionItems.push({\n name: tool.name,\n type: 'tool',\n filePath: tool.filePath,\n mode: tool.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: tool.sharedWith.length > 0,\n sharedWith: tool.sharedWith,\n });\n }\n\n for (const model of analysis.constituents.models) {\n selectionItems.push({\n name: model.name,\n type: 'model',\n filePath: model.filePath,\n mode: model.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: model.sharedWith.length > 0,\n sharedWith: model.sharedWith,\n });\n }\n\n for (const hook of analysis.constituents.hooks) {\n selectionItems.push({\n name: hook.name,\n type: 'hook',\n filePath: hook.filePath,\n mode: hook.sharedWith.length > 0 ? 'copy' : 'extract',\n isShared: hook.sharedWith.length > 0,\n sharedWith: hook.sharedWith,\n });\n }\n\n // Show interactive selector unless --no-interactive is specified\n let itemSelections: { name: string; type: string; filePath: string; mode: 'extract' | 'copy' }[] | undefined;\n\n if (!options.noInteractive && process.stdin.isTTY && selectionItems.length > 0) {\n console.log('');\n const selections = await selectItemModes(selectionItems, selectedAgent);\n itemSelections = selections.map(s => ({\n name: s.name,\n type: s.type,\n filePath: s.filePath,\n mode: s.mode,\n }));\n console.log('');\n }\n\n // Determine output directory\n const outputDir = options.output || path.join(rootDir, 'agents', 'packed');\n\n // Execute packing\n logger.info(`Packing to: ${outputDir}`);\n\n const result = await packingService.pack({\n agentName: selectedAgent,\n rootDir,\n outputDir,\n version: options.version || '1.0.0',\n npm: options.npm || false,\n removeOriginals: itemSelections ? false : !options.noRemove, // Let itemSelections handle removal\n packageId: `standardagent-${selectedAgent.replace(/_/g, '-')}`,\n itemSelections,\n });\n\n if (!result.success) {\n logger.error(`Packing failed: ${result.error}`);\n process.exit(1);\n }\n\n // Show result\n console.log('');\n logger.success('Packing complete!');\n console.log(` Package ID: ${result.packageId}`);\n console.log(` Output: ${result.outputPath}`);\n console.log(` Files: ${result.filesCreated.length} created`);\n\n if (result.filesRemoved && result.filesRemoved.length > 0) {\n console.log(` Removed: ${result.filesRemoved.length} original files`);\n }\n\n if (result.warnings.length > 0) {\n console.log('');\n logger.warning('Warnings:');\n for (const warning of result.warnings) {\n console.log(` - ${warning}`);\n }\n }\n\n if (options.npm) {\n console.log('');\n logger.info('NPM package structure created. To publish:');\n console.log(` cd ${result.outputPath}`);\n console.log(' npm publish');\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { logger } from '../utils/logger.js';\n\ninterface UnpackOptions {\n noSignatures?: boolean;\n}\n\n/**\n * Check if this is a valid Standard Agents project.\n */\nfunction isStandardAgentsProject(): boolean {\n // Check for agents directory\n if (!fs.existsSync('agents')) {\n return false;\n }\n\n // Check for @standardagents/builder dependency\n try {\n const pkgJson = JSON.parse(fs.readFileSync('package.json', 'utf-8'));\n const deps = { ...pkgJson.dependencies, ...pkgJson.devDependencies };\n return '@standardagents/builder' in deps;\n } catch {\n return false;\n }\n}\n\n/**\n * Unpack a packed agent to the local agents directory.\n */\nexport async function unpack(pkgIdentifier: string | undefined, options: UnpackOptions) {\n logger.info('Unpacking agent...\\n');\n\n // Verify this is a Standard Agents project\n if (!isStandardAgentsProject()) {\n logger.error('This does not appear to be a Standard Agents project.');\n logger.info('Make sure you have @standardagents/builder installed and an agents/ directory.');\n process.exit(1);\n }\n\n const rootDir = process.cwd();\n\n // Dynamic import of unpacking service\n let UnpackingService: any;\n try {\n const builder = await import('@standardagents/builder/runtime');\n UnpackingService = (builder as any).UnpackingService;\n\n if (!UnpackingService) {\n const packing = await import('@standardagents/builder');\n UnpackingService = (packing as any).UnpackingService;\n }\n } catch (err) {\n logger.error('Failed to load unpacking service from @standardagents/builder');\n logger.info('Make sure @standardagents/builder is installed.');\n process.exit(1);\n }\n\n const unpackingService = new UnpackingService();\n\n // If no package identifier provided, list available packages\n if (!pkgIdentifier) {\n const packages = await unpackingService.listPackages(rootDir);\n\n if (packages.length === 0) {\n logger.info('No packed agents found.');\n logger.info('Pack an agent with: agents pack <agent-name>');\n process.exit(0);\n }\n\n logger.info('Available packed agents:');\n for (const pkg of packages) {\n console.log(` - ${pkg.packageId} (${pkg.version}) [${pkg.source}]`);\n console.log(` Entry: ${pkg.entryAgent}`);\n console.log(` Path: ${pkg.path}`);\n console.log('');\n }\n logger.info('Run: agents unpack <package-id>');\n process.exit(0);\n }\n\n logger.info(`Unpacking: ${pkgIdentifier}`);\n\n // Execute unpacking\n const result = await unpackingService.unpack({\n package: pkgIdentifier,\n rootDir,\n keepSignatures: !options.noSignatures,\n });\n\n if (!result.success) {\n logger.error(`Unpacking failed: ${result.error}`);\n process.exit(1);\n }\n\n // Show result\n console.log('');\n logger.success('Unpacking complete!');\n console.log(` Package: ${result.packageId}`);\n console.log(` Files: ${result.filesCreated.length} created`);\n\n if (result.filesCreated.length > 0) {\n console.log('');\n logger.info('Created files:');\n for (const file of result.filesCreated) {\n const relPath = path.relative(rootDir, file);\n console.log(` - ${relPath}`);\n }\n }\n\n if (result.warnings.length > 0) {\n console.log('');\n logger.warning('Warnings:');\n for (const warning of result.warnings) {\n console.log(` - ${warning}`);\n }\n }\n\n if (options.noSignatures) {\n console.log('');\n logger.info('Package signatures removed - files are fully editable.');\n } else {\n console.log('');\n logger.info('Package signatures preserved - files are editable but marked as packed.');\n }\n}\n\n/**\n * List all packed agents.\n */\nexport async function listPacked() {\n // Verify this is a Standard Agents project\n if (!isStandardAgentsProject()) {\n logger.error('This does not appear to be a Standard Agents project.');\n logger.info('Make sure you have @standardagents/builder installed and an agents/ directory.');\n process.exit(1);\n }\n\n const rootDir = process.cwd();\n\n // Dynamic import of unpacking service\n let UnpackingService: any;\n try {\n const builder = await import('@standardagents/builder/runtime');\n UnpackingService = (builder as any).UnpackingService;\n\n if (!UnpackingService) {\n const packing = await import('@standardagents/builder');\n UnpackingService = (packing as any).UnpackingService;\n }\n } catch (err) {\n logger.error('Failed to load unpacking service from @standardagents/builder');\n logger.info('Make sure @standardagents/builder is installed.');\n process.exit(1);\n }\n\n const unpackingService = new UnpackingService();\n const packages = await unpackingService.listPackages(rootDir);\n\n if (packages.length === 0) {\n logger.info('No packed agents found.');\n logger.info('Pack an agent with: agents pack <agent-name>');\n return;\n }\n\n logger.info('Discovered packed agents:\\n');\n\n for (const pkg of packages) {\n console.log(`${pkg.packageId} (${pkg.version})`);\n console.log(` Source: ${pkg.source}`);\n console.log(` Entry: ${pkg.entryAgent}`);\n console.log(` Path: ${pkg.path}`);\n console.log('');\n }\n}\n","import fs from 'node:fs';\nimport { execFileSync } from 'node:child_process';\nimport chalk from 'chalk';\nimport { logger } from '../utils/logger.js';\n\nconst ARTIFACT_DEPLOY_REMOTE_NAME = 'origin';\n\n/** Check if the current directory is a Standard Agents project. */\nexport function detectProject(): boolean {\n const hasAgentsDir = fs.existsSync('agents');\n const hasViteConfig = ['vite.config.ts', 'vite.config.js', 'vite.config.mts', 'vite.config.mjs']\n .some((file) => fs.existsSync(file));\n return hasAgentsDir && hasViteConfig;\n}\n\nfunction normalizeGitRemoteHost(remote: string): string | null {\n try {\n return new URL(remote).hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\nexport function isStandardAgentsArtifactRemote(remote: string): boolean {\n const host = normalizeGitRemoteHost(remote);\n if (!host) return false;\n return host === 'standardagents.ai' ||\n host.endsWith('.standardagents.ai') ||\n host === 'standardagentbuilder.com' ||\n host.endsWith('.standardagentbuilder.com') ||\n host === 'artifacts.cloudflare.net' ||\n host.endsWith('.artifacts.cloudflare.net') ||\n host === 'artifacts.cloudflare.com' ||\n host.endsWith('.artifacts.cloudflare.com') ||\n host === 'git.cloudflare.com';\n}\n\nexport interface ArtifactGitDeployTarget {\n remoteName: string;\n remoteUrl: string;\n branch: string;\n refspec: string;\n}\n\ntype GitOutputRunner = (args: string[]) => string;\n\nfunction gitOutput(args: string[]): string {\n return execFileSync('git', args, {\n encoding: 'utf-8',\n stdio: ['ignore', 'pipe', 'pipe'],\n }).trim();\n}\n\nexport function resolveArtifactGitDeployTarget(\n runner: GitOutputRunner = gitOutput,\n remoteName = ARTIFACT_DEPLOY_REMOTE_NAME,\n): ArtifactGitDeployTarget {\n const remoteUrl = runner(['remote', 'get-url', remoteName]).trim();\n if (!isStandardAgentsArtifactRemote(remoteUrl)) {\n throw new Error(\n `Remote \"${remoteName}\" is not a Standard Agents Artifacts remote. ` +\n 'Deployments now run from pushes to platform-owned repositories.',\n );\n }\n\n const branch = runner(['rev-parse', '--abbrev-ref', 'HEAD']).trim();\n if (!branch || branch === 'HEAD') {\n throw new Error('Cannot deploy from a detached HEAD. Check out a branch before pushing.');\n }\n\n return {\n remoteName,\n remoteUrl,\n branch,\n refspec: `HEAD:${branch}`,\n };\n}\n\nfunction pushArtifactRemote(target: ArtifactGitDeployTarget): void {\n execFileSync('git', ['push', target.remoteName, target.refspec], {\n stdio: 'inherit',\n });\n}\n\nexport async function deploy(): Promise<void> {\n console.log('');\n logger.info(`${chalk.bold('Standard Agents Deploy')}\\n`);\n\n let target: ArtifactGitDeployTarget;\n try {\n target = resolveArtifactGitDeployTarget();\n } catch (err) {\n logger.error((err as Error).message);\n logger.info('Run this command from a clone created by Standard Agents, or push to the platform git remote manually.');\n process.exit(1);\n }\n\n logger.info('Deployments build on the Standard Agents platform from Artifacts git pushes.');\n logger.log(`Remote: ${target.remoteUrl}`);\n logger.log(`Branch: ${target.branch}`);\n logger.log('');\n pushArtifactRemote(target);\n logger.success('Push complete. The platform build runner will deploy this commit from the Artifacts push event.');\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { loadBootstrapState } from '../utils/bootstrap-state.js';\n\nexport type CliDirectoryContext =\n | 'outside_project'\n | 'inside_project_unlinked'\n | 'inside_project_linked';\n\nexport interface HomeAction {\n id: 'init' | 'login' | 'deploy' | 'exit';\n label: string;\n description: string;\n argv: string[] | null;\n}\n\nconst PROJECT_SIGNAL_PATHS = [\n '.agents',\n 'agents',\n 'vite.config.ts',\n 'vite.config.js',\n 'vite.config.mts',\n 'vite.config.mjs',\n] as const;\n\nfunction hasProjectSignals(cwd: string): boolean {\n const hits = PROJECT_SIGNAL_PATHS.filter((signal) => fs.existsSync(path.join(cwd, signal))).length;\n return hits >= 2 || fs.existsSync(path.join(cwd, '.agents'));\n}\n\nexport function detectCliDirectoryContext(cwd: string = process.cwd()): CliDirectoryContext {\n if (!hasProjectSignals(cwd)) {\n return 'outside_project';\n }\n\n const bootstrapState = loadBootstrapState(cwd);\n if (bootstrapState && bootstrapState.account?.id && bootstrapState.user?.id) {\n return 'inside_project_linked';\n }\n\n return 'inside_project_unlinked';\n}\n\nexport function getContextLabel(context: CliDirectoryContext): string {\n switch (context) {\n case 'outside_project':\n return 'Outside project';\n case 'inside_project_unlinked':\n return 'Project detected (unlinked)';\n case 'inside_project_linked':\n return 'Linked StandardAgents project';\n default:\n return 'Unknown context';\n }\n}\n\nexport function getHomeActions(context: CliDirectoryContext): HomeAction[] {\n const shared: HomeAction[] = [\n {\n id: 'exit',\n label: 'Exit',\n description: 'Close this menu.',\n argv: null,\n },\n ];\n\n if (context === 'outside_project') {\n return [\n {\n id: 'init',\n label: 'Init new project',\n description: 'Create a new Standard Agents project in a fresh directory.',\n argv: ['init'],\n },\n ...shared,\n ];\n }\n\n if (context === 'inside_project_unlinked') {\n return [\n {\n id: 'login',\n label: 'Link this project',\n description: 'Authenticate and link this local project to a StandardAgents org.',\n argv: ['login'],\n },\n ...shared,\n ];\n }\n\n return [\n {\n id: 'deploy',\n label: 'Deploy',\n description: 'Push this linked project to StandardAgents for a platform build.',\n argv: ['deploy'],\n },\n {\n id: 'login',\n label: 'Switch or refresh project link',\n description: 'Change org context for this project or refresh its local auth link.',\n argv: ['login'],\n },\n ...shared,\n ];\n}\n","import React, { useState } from 'react';\nimport { Box, Text, render, useApp, useInput } from 'ink';\nimport { detectCliDirectoryContext, getContextLabel, getHomeActions, type HomeAction } from './context.js';\n\nconst BRAND_LINES = [\n ' ____ _ _ _ _ _ ',\n ' / ___|| |_ __ _ _ __ __| | __ _ _ __ __| | / \\\\ __ _ ___ _ __ | |_ ___ ',\n ' \\\\___ \\\\| __/ _` | \\'_ \\\\ / _` |/ _` | \\'__/ _` | / _ \\\\ / _` |/ _ \\\\ \\'_ \\\\| __/ __|',\n ' ___) | || (_| | | | | (_| | (_| | | | (_| | / ___ \\\\ (_| | __/ | | | |_\\\\__ \\\\',\n ' |____/ \\\\__\\\\__,_|_| |_|\\\\__,_|\\\\__,_|_| \\\\__,_| /_/ \\\\_\\\\__, |\\\\___|_| |_|\\\\__|___/',\n ' |___/ ',\n] as const;\n\nexport interface HomeSelection {\n actionId: HomeAction['id'];\n argv: string[];\n preserveTuiScreen: boolean;\n}\n\nexport function restoreTuiTerminal(stdout: NodeJS.WriteStream = process.stdout): void {\n void stdout;\n}\n\ninterface HomeMenuProps {\n contextLabel: string;\n actions: HomeAction[];\n onSelect: (selection: HomeSelection | null) => void;\n}\n\nfunction HomeMenu({ contextLabel, actions, onSelect }: HomeMenuProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const { exit } = useApp();\n\n useInput((input, key) => {\n if (key.ctrl && input === 'c') {\n onSelect(null);\n exit();\n return;\n }\n if (input === 'q' || key.escape) {\n onSelect(null);\n exit();\n return;\n }\n if (key.upArrow || input === 'k') {\n setSelectedIndex((prev) => (prev - 1 + actions.length) % actions.length);\n return;\n }\n if (key.downArrow || input === 'j') {\n setSelectedIndex((prev) => (prev + 1) % actions.length);\n return;\n }\n if (key.return) {\n const chosen = actions[selectedIndex];\n if (!chosen.argv) {\n onSelect(null);\n exit();\n return;\n }\n onSelect({\n actionId: chosen.id,\n argv: chosen.argv,\n preserveTuiScreen: chosen.id === 'init',\n });\n exit();\n }\n });\n\n return (\n <Box flexDirection=\"column\" paddingX={1}>\n <Box borderStyle=\"double\" borderColor=\"cyan\" paddingX={1} flexDirection=\"column\">\n <Text color=\"cyanBright\" bold>\n STANDARDAGENTS CLI\n </Text>\n <Text color=\"gray\">Command Center</Text>\n </Box>\n <Box marginTop={1} flexDirection=\"column\">\n {BRAND_LINES.map((line) => (\n <Text key={line} color=\"cyan\">\n {line}\n </Text>\n ))}\n </Box>\n <Box marginTop={1} borderStyle=\"round\" borderColor=\"gray\" paddingX={1} flexDirection=\"column\">\n <Text color=\"gray\">\n Context: <Text color=\"whiteBright\">{contextLabel}</Text>\n </Text>\n <Text color=\"gray\">Use ↑/↓ (or j/k), Enter to select, q to exit.</Text>\n </Box>\n <Box marginTop={1} borderStyle=\"round\" borderColor=\"cyan\" paddingX={1} flexDirection=\"column\">\n <Text color=\"cyanBright\" bold>\n Actions\n </Text>\n {actions.map((action, index) => {\n const selected = selectedIndex === index;\n return (\n <Box key={action.id} flexDirection=\"column\" marginBottom={0} marginTop={0}>\n <Text color={selected ? 'black' : 'white'} backgroundColor={selected ? 'cyan' : undefined} bold={selected}>\n {selected ? '›' : ' '} {action.label}\n </Text>\n <Text color={selected ? 'cyan' : 'gray'}>{` ${action.description}`}</Text>\n </Box>\n );\n })}\n </Box>\n </Box>\n );\n}\n\nexport async function runHomeTui(cwd: string = process.cwd()): Promise<HomeSelection | null> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) return null;\n\n const context = detectCliDirectoryContext(cwd);\n const actions = getHomeActions(context);\n const contextLabel = getContextLabel(context);\n let selection: HomeSelection | null = null;\n const instance = render(\n <HomeMenu\n contextLabel={contextLabel}\n actions={actions}\n onSelect={(value) => {\n selection = value;\n }}\n />,\n { exitOnCtrlC: true },\n );\n await instance.waitUntilExit();\n instance.unmount();\n await new Promise<void>((resolve) => setTimeout(resolve, 0));\n return selection;\n}\n","import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport {\n copySkill,\n readSkillFile,\n type SkillName,\n} from '@standardagents/skill';\nimport { logger } from '../utils/logger.js';\n\nexport type InstallTargetId = 'codex' | 'claude';\n\nexport interface SkillCommandOptions {\n agent?: InstallTargetId;\n dir?: string;\n force?: boolean;\n}\n\nexport interface InstallTarget {\n id: InstallTargetId;\n label: string;\n summary: string;\n detected: boolean;\n installPath: string;\n}\n\nconst DEFAULT_SKILL_NAME: SkillName = 'agentbuilder';\n\nexport function resolveCodexHome(\n env: NodeJS.ProcessEnv = process.env,\n homeDir = os.homedir()\n): string {\n return env.CODEX_HOME || path.join(homeDir, '.codex');\n}\n\nexport function resolveClaudeHome(homeDir = os.homedir()): string {\n return path.join(homeDir, '.claude');\n}\n\nexport function expandHomePath(inputPath: string, homeDir = os.homedir()): string {\n if (inputPath === '~') {\n return homeDir;\n }\n\n if (inputPath.startsWith('~/')) {\n return path.join(homeDir, inputPath.slice(2));\n }\n\n return inputPath;\n}\n\nexport function buildInstallTargets(\n options: SkillCommandOptions = {},\n env: NodeJS.ProcessEnv = process.env,\n homeDir = os.homedir()\n): InstallTarget[] {\n const customRoot = options.dir\n ? path.resolve(expandHomePath(options.dir, homeDir))\n : null;\n\n const codexHome = resolveCodexHome(env, homeDir);\n const claudeHome = resolveClaudeHome(homeDir);\n\n return [\n {\n id: 'codex',\n label: 'Codex',\n summary: 'Install as a Codex skill folder',\n detected: fs.existsSync(codexHome),\n installPath: customRoot ?? path.join(codexHome, 'skills'),\n },\n {\n id: 'claude',\n label: 'Claude Code',\n summary: 'Install as a Claude Code user subagent',\n detected: fs.existsSync(claudeHome),\n installPath: customRoot ?? path.join(claudeHome, 'agents'),\n },\n ];\n}\n\nexport function resolveSelectedTarget(\n targetId: InstallTargetId,\n options: SkillCommandOptions = {},\n env: NodeJS.ProcessEnv = process.env,\n homeDir = os.homedir()\n): InstallTarget {\n const target = buildInstallTargets(options, env, homeDir).find(\n (candidate) => candidate.id === targetId\n );\n\n if (!target) {\n throw new Error(`Unknown install target \"${targetId}\".`);\n }\n\n return target;\n}\n\nexport function buildClaudeSubagentMarkdown(\n skillName: SkillName,\n description: string,\n body: string\n): string {\n const normalizedBody = body.replace(/^\\uFEFF/, '').trim();\n\n return [\n '---',\n `name: ${skillName}`,\n `description: ${description}`,\n '---',\n '',\n normalizedBody,\n '',\n ].join('\\n');\n}\n\nasync function selectInstallTarget(targets: InstallTarget[]): Promise<InstallTarget> {\n return new Promise((resolve) => {\n const stdin = process.stdin;\n const stdout = process.stdout;\n let selectedIndex = 0;\n\n const render = (initial = false) => {\n const lines: string[] = [];\n lines.push('Choose where to install the AgentBuilder skill:');\n lines.push('');\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i];\n const isSelected = i === selectedIndex;\n const cursor = isSelected ? '\\x1B[36m❯\\x1B[0m' : ' ';\n const title = isSelected ? '\\x1B[36m' : '\\x1B[90m';\n const detection = target.detected ? '\\x1B[32m(detected)\\x1B[0m' : '\\x1B[90m(not found yet)\\x1B[0m';\n\n lines.push(`${cursor} ${title}${target.label}\\x1B[0m ${detection}`);\n lines.push(` ${target.summary}`);\n lines.push(` ${target.installPath}`);\n lines.push('');\n }\n\n lines.push('Use arrows to move, Enter to install, Ctrl+C to cancel.');\n\n if (!initial) {\n stdout.write('\\x1B[?25l');\n stdout.write(`\\x1B[${lines.length}A`);\n stdout.write('\\x1B[0J');\n }\n\n stdout.write(lines.join('\\n') + '\\n');\n };\n\n render(true);\n\n const wasRaw = stdin.isRaw;\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.setEncoding('utf8');\n\n const cleanup = () => {\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\x1B[?25h');\n };\n\n const onData = (key: string) => {\n if (key === '\\x1B[A' || key === 'k') {\n selectedIndex = (selectedIndex - 1 + targets.length) % targets.length;\n render();\n } else if (key === '\\x1B[B' || key === 'j') {\n selectedIndex = (selectedIndex + 1) % targets.length;\n render();\n } else if (key === '\\r' || key === '\\n') {\n cleanup();\n resolve(targets[selectedIndex]);\n } else if (key === '\\x03') {\n cleanup();\n stdout.write('\\n');\n process.exit(1);\n }\n };\n\n stdin.on('data', onData);\n });\n}\n\nexport async function installBundledSkill(\n targetId: InstallTargetId,\n skillName: SkillName = DEFAULT_SKILL_NAME,\n options: SkillCommandOptions = {}\n): Promise<string> {\n const target = resolveSelectedTarget(targetId, options);\n\n if (target.id === 'codex') {\n const targetDir = path.join(target.installPath, skillName);\n\n if (fs.existsSync(targetDir) && !options.force) {\n throw new Error(\n `Skill already exists at ${targetDir}. Re-run with --force to overwrite it.`\n );\n }\n\n return copySkill(skillName, target.installPath, {\n overwrite: options.force ?? false,\n });\n }\n\n const targetFile = path.join(target.installPath, `${skillName}.md`);\n\n if (fs.existsSync(targetFile) && !options.force) {\n throw new Error(\n `Claude subagent already exists at ${targetFile}. Re-run with --force to overwrite it.`\n );\n }\n\n const skillBody = await readSkillFile(skillName);\n const subagentMarkdown = buildClaudeSubagentMarkdown(\n skillName,\n 'Use for Standard Agents and AgentBuilder architecture, composition, subagent design, and implementation work.',\n skillBody\n );\n\n fs.mkdirSync(target.installPath, { recursive: true });\n fs.writeFileSync(targetFile, subagentMarkdown, 'utf8');\n\n return targetFile;\n}\n\nfunction isInteractiveTerminal(): boolean {\n return Boolean(process.stdin.isTTY && process.stdout.isTTY);\n}\n\nexport async function skill(options: SkillCommandOptions = {}): Promise<void> {\n try {\n const selectedTarget = options.agent\n ? resolveSelectedTarget(options.agent, options)\n : isInteractiveTerminal()\n ? await selectInstallTarget(buildInstallTargets(options))\n : resolveSelectedTarget('codex', options);\n\n logger.log('');\n logger.info(`Installing AgentBuilder skill into ${selectedTarget.label}...`);\n\n const installedPath = await installBundledSkill(\n selectedTarget.id,\n DEFAULT_SKILL_NAME,\n options\n );\n\n logger.success(`Installed ${DEFAULT_SKILL_NAME} into ${selectedTarget.label}`);\n logger.log('');\n logger.log(`Path: ${installedPath}`);\n logger.log('');\n logger.log('Next steps:');\n\n if (selectedTarget.id === 'codex') {\n logger.log(' Restart Codex if it is already running');\n logger.log(` Edit ${path.join(installedPath, 'SKILL.md')} to continue customizing the skill`);\n } else {\n logger.log(' Restart Claude Code if it is already running');\n logger.log(` Edit ${installedPath} to continue customizing the subagent`);\n }\n } catch (error) {\n logger.log('');\n logger.error(error instanceof Error ? error.message : 'Failed to install skill');\n process.exit(1);\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nexport interface ProviderDefinition {\n name: string;\n packageName: string;\n exportName: string;\n label: string;\n envKeys: string[];\n}\n\nexport interface ProviderModelInfo {\n id: string;\n name: string;\n description?: string;\n contextLength?: number;\n slug?: string;\n}\n\nexport interface ProviderModelsQuery {\n search?: string;\n page?: number;\n perPage?: number;\n}\n\nexport interface ProviderModelsPage {\n models: ProviderModelInfo[];\n hasNextPage: boolean;\n}\n\nexport interface ProviderFactoryConfig {\n apiKey: string;\n baseUrl?: string;\n timeout?: number;\n accountId?: string;\n}\n\nexport interface ProviderInstance {\n getModels?: (filter?: string) => Promise<ProviderModelInfo[]>;\n getModelsPage?: (query?: ProviderModelsQuery) => Promise<ProviderModelsPage>;\n}\n\nexport type ProviderFactory = (config: ProviderFactoryConfig) => ProviderInstance;\n\nexport interface DetectedProvider extends ProviderDefinition {\n declared: boolean;\n installed: boolean;\n configured: boolean;\n missingEnvKeys: string[];\n}\n\nexport interface AvailableProviderModel {\n value: string;\n label: string;\n description: string;\n contextLength?: number;\n slug?: string;\n}\n\nconst UUID_LIKE_MODEL_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\nconst CLOUDFLARE_PROVIDER_MODEL_ID = /^@cf\\//i;\nconst PAGE_SIZE = 100;\nconst MAX_PAGES = 1000;\n\nexport const CURRENT_MODELS_URLS = [\n 'https://standardagentspec.org/models.md',\n 'https://standardagentspec.com/models.md',\n];\n\nexport const PROVIDER_DEFINITIONS: ProviderDefinition[] = [\n {\n name: 'anthropic',\n packageName: '@standardagents/anthropic',\n exportName: 'anthropic',\n label: 'Anthropic',\n envKeys: ['ANTHROPIC_API_KEY'],\n },\n {\n name: 'cloudflare',\n packageName: '@standardagents/cloudflare',\n exportName: 'cloudflare',\n label: 'Cloudflare Workers AI',\n envKeys: ['CLOUDFLARE_API_TOKEN', 'CLOUDFLARE_ACCOUNT_ID'],\n },\n {\n name: 'cerebras',\n packageName: '@standardagents/cerebras',\n exportName: 'cerebras',\n label: 'Cerebras',\n envKeys: ['CEREBRAS_API_KEY'],\n },\n {\n name: 'google',\n packageName: '@standardagents/google',\n exportName: 'google',\n label: 'Google Gemini',\n envKeys: ['GOOGLE_API_KEY'],\n },\n {\n name: 'groq',\n packageName: '@standardagents/groq',\n exportName: 'groq',\n label: 'Groq',\n envKeys: ['GROQ_API_KEY'],\n },\n {\n name: 'openai',\n packageName: '@standardagents/openai',\n exportName: 'openai',\n label: 'OpenAI',\n envKeys: ['OPENAI_API_KEY'],\n },\n {\n name: 'openrouter',\n packageName: '@standardagents/openrouter',\n exportName: 'openrouter',\n label: 'OpenRouter',\n envKeys: ['OPENROUTER_API_KEY'],\n },\n {\n name: 'xai',\n packageName: '@standardagents/xai',\n exportName: 'xai',\n label: 'xai',\n envKeys: ['XAI_API_KEY'],\n },\n];\n\nfunction isOpaqueModelId(modelId?: string): boolean {\n if (!modelId) return true;\n return UUID_LIKE_MODEL_ID.test(modelId) || CLOUDFLARE_PROVIDER_MODEL_ID.test(modelId);\n}\n\nexport function getProviderDefinition(name: string): ProviderDefinition | undefined {\n return PROVIDER_DEFINITIONS.find((provider) => provider.name === name);\n}\n\nexport function parseEnvFile(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) continue;\n\n const withoutExport = trimmed.startsWith('export ')\n ? trimmed.slice('export '.length).trim()\n : trimmed;\n\n const eqIndex = withoutExport.indexOf('=');\n if (eqIndex === -1) continue;\n\n const key = withoutExport.slice(0, eqIndex).trim();\n let value = withoutExport.slice(eqIndex + 1).trim();\n\n if (value.startsWith('\"') && value.endsWith('\"')) {\n value = value.slice(1, -1).replace(/\\\\\"/g, '\"');\n } else if (value.startsWith(\"'\") && value.endsWith(\"'\")) {\n value = value.slice(1, -1);\n }\n\n result[key] = value;\n }\n\n return result;\n}\n\nexport function findProjectRoot(startDir = process.cwd()): string {\n let currentDir = path.resolve(startDir);\n\n while (true) {\n if (fs.existsSync(path.join(currentDir, 'package.json'))) {\n return currentDir;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n return path.resolve(startDir);\n }\n\n currentDir = parentDir;\n }\n}\n\nexport function readProjectPackageJson(projectRoot: string): Record<string, unknown> {\n const packagePath = path.join(projectRoot, 'package.json');\n if (!fs.existsSync(packagePath)) {\n return {};\n }\n\n return JSON.parse(fs.readFileSync(packagePath, 'utf8')) as Record<string, unknown>;\n}\n\nexport function getDeclaredProviderPackages(projectRoot: string): string[] {\n const pkg = readProjectPackageJson(projectRoot);\n const combined = {\n ...((pkg.dependencies as Record<string, string> | undefined) ?? {}),\n ...((pkg.devDependencies as Record<string, string> | undefined) ?? {}),\n ...((pkg.optionalDependencies as Record<string, string> | undefined) ?? {}),\n ...((pkg.peerDependencies as Record<string, string> | undefined) ?? {}),\n };\n\n return PROVIDER_DEFINITIONS\n .map((provider) => provider.packageName)\n .filter((packageName) => typeof combined[packageName] === 'string');\n}\n\nfunction resolvePackageEntry(packageName: string, projectRoot: string): string | null {\n const packageDir = findInstalledPackageDir(packageName, projectRoot);\n if (!packageDir) {\n return null;\n }\n\n const packageJsonPath = path.join(packageDir, 'package.json');\n\n try {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as {\n exports?: string | Record<string, unknown>;\n main?: string;\n };\n\n const exportPath = resolvePackageExportPath(packageJson.exports) || packageJson.main || 'index.js';\n return path.join(packageDir, exportPath);\n } catch {\n return null;\n }\n}\n\nfunction findInstalledPackageDir(packageName: string, projectRoot: string): string | null {\n let currentDir = path.resolve(projectRoot);\n\n while (true) {\n const candidate = path.join(currentDir, 'node_modules', ...packageName.split('/'));\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n return null;\n }\n\n currentDir = parentDir;\n }\n}\n\nfunction resolvePackageExportPath(exportsField: unknown): string | null {\n if (typeof exportsField === 'string') {\n return exportsField;\n }\n\n if (!exportsField || typeof exportsField !== 'object') {\n return null;\n }\n\n const rootExport = (exportsField as Record<string, unknown>)['.'];\n if (typeof rootExport === 'string') {\n return rootExport;\n }\n\n if (!rootExport || typeof rootExport !== 'object') {\n return null;\n }\n\n const rootExportRecord = rootExport as Record<string, unknown>;\n const candidate = rootExportRecord.import || rootExportRecord.default || rootExportRecord.require;\n return typeof candidate === 'string' ? candidate : null;\n}\n\nexport function isProviderPackageInstalled(packageName: string, projectRoot: string): boolean {\n return resolvePackageEntry(packageName, projectRoot) !== null;\n}\n\nexport function loadProjectEnv(\n projectRoot: string,\n processEnv: NodeJS.ProcessEnv = process.env\n): Record<string, string> {\n const result: Record<string, string> = {};\n const envFiles = ['.env', '.env.local', '.dev.vars', '.dev.vars.local'];\n\n for (const fileName of envFiles) {\n const filePath = path.join(projectRoot, fileName);\n if (!fs.existsSync(filePath)) continue;\n Object.assign(result, parseEnvFile(fs.readFileSync(filePath, 'utf8')));\n }\n\n for (const [key, value] of Object.entries(processEnv)) {\n if (typeof value === 'string') {\n result[key] = value;\n }\n }\n\n return result;\n}\n\nexport function detectProviders(\n projectRoot: string,\n env: Record<string, string> = loadProjectEnv(projectRoot)\n): DetectedProvider[] {\n const declaredPackages = new Set(getDeclaredProviderPackages(projectRoot));\n\n return PROVIDER_DEFINITIONS\n .filter((provider) => declaredPackages.has(provider.packageName))\n .map((provider) => {\n const installed = isProviderPackageInstalled(provider.packageName, projectRoot);\n const missingEnvKeys = provider.envKeys.filter((envKey) => !env[envKey]);\n\n return {\n ...provider,\n declared: true,\n installed,\n configured: installed && missingEnvKeys.length === 0,\n missingEnvKeys,\n };\n });\n}\n\nexport async function loadProviderFactory(\n provider: ProviderDefinition,\n projectRoot: string\n): Promise<ProviderFactory> {\n const entryPath = resolvePackageEntry(provider.packageName, projectRoot);\n if (!entryPath) {\n throw new Error(`Provider package ${provider.packageName} is not installed in ${projectRoot}.`);\n }\n\n const moduleUrl = entryPath.startsWith('file:')\n ? entryPath\n : pathToFileURL(entryPath).href;\n const providerModule = await import(moduleUrl) as Record<string, unknown>;\n const factory = providerModule[provider.exportName];\n\n if (typeof factory !== 'function') {\n throw new Error(`Provider package ${provider.packageName} does not export ${provider.exportName}().`);\n }\n\n return factory as ProviderFactory;\n}\n\nexport function buildProviderConfig(\n provider: ProviderDefinition,\n env: Record<string, string>\n): ProviderFactoryConfig {\n const apiKey = env[provider.envKeys[0]] || '';\n\n if (provider.name === 'cloudflare') {\n const accountId = env.CLOUDFLARE_ACCOUNT_ID;\n return {\n apiKey,\n accountId,\n baseUrl: accountId\n ? `https://api.cloudflare.com/client/v4/accounts/${accountId}/ai/v1`\n : undefined,\n };\n }\n\n return { apiKey };\n}\n\nexport async function collectProviderModels(\n providerName: string,\n providerInstance: ProviderInstance\n): Promise<AvailableProviderModel[]> {\n const rawModels: ProviderModelInfo[] = [];\n\n if (providerInstance.getModelsPage) {\n for (let page = 1; page <= MAX_PAGES; page += 1) {\n const result = await providerInstance.getModelsPage({ page, perPage: PAGE_SIZE });\n rawModels.push(...result.models);\n if (!result.hasNextPage) {\n return normalizeProviderModels(providerName, rawModels);\n }\n }\n\n throw new Error(`Provider ${providerName} exceeded ${MAX_PAGES} model pages without terminating pagination.`);\n }\n\n if (providerInstance.getModels) {\n rawModels.push(...await providerInstance.getModels());\n return normalizeProviderModels(providerName, rawModels);\n }\n\n throw new Error(`Provider ${providerName} does not support model discovery.`);\n}\n\nexport async function fetchAvailableModelsForProvider(\n providerName: string,\n projectRoot: string,\n env: Record<string, string>,\n factoryLoader: (provider: ProviderDefinition, projectRoot: string) => Promise<ProviderFactory> = loadProviderFactory\n): Promise<AvailableProviderModel[]> {\n const provider = getProviderDefinition(providerName);\n if (!provider) {\n throw new Error(`Unknown provider \"${providerName}\".`);\n }\n\n const factory = await factoryLoader(provider, projectRoot);\n const providerInstance = factory(buildProviderConfig(provider, env));\n return collectProviderModels(provider.name, providerInstance);\n}\n\nexport async function fetchCurrentModelsMarkdown(\n urls: string[] = CURRENT_MODELS_URLS\n): Promise<{ url: string; content: string }> {\n let lastError: Error | null = null;\n\n for (const url of urls) {\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} ${response.statusText}`.trim());\n }\n\n return {\n url,\n content: await response.text(),\n };\n } catch (error) {\n lastError = error instanceof Error\n ? new Error(`Failed to fetch ${url}: ${error.message}`)\n : new Error(`Failed to fetch ${url}.`);\n }\n }\n\n throw lastError ?? new Error('No current models URLs configured.');\n}\n\nexport function buildProviderSelectionHelp(providers: DetectedProvider[]): string {\n const providerNames = providers.map((provider) => provider.name).join(', ');\n const examples = providers\n .map((provider) => ` agents available-models --provider=${provider.name}`)\n .join('\\n');\n\n return [\n `Multiple configured providers were found: ${providerNames}`,\n 'Re-run with a specific provider to fetch all model IDs:',\n examples,\n ].join('\\n');\n}\n\nexport function describeProviderAvailability(provider: DetectedProvider): string {\n if (!provider.installed) {\n return `${provider.name}: not installed`;\n }\n\n if (provider.missingEnvKeys.length > 0) {\n return `${provider.name}: missing ${provider.missingEnvKeys.join(', ')}`;\n }\n\n return `${provider.name}: unavailable`;\n}\n\nexport function formatAvailableModelsOutput(\n provider: ProviderDefinition,\n models: AvailableProviderModel[]\n): string {\n const lines = [\n `# ${provider.label} models`,\n '',\n 'Use the `model` values exactly as shown in `defineModel({ model: ... })`.',\n '',\n '| model | label | context | notes |',\n '| --- | --- | ---: | --- |',\n ];\n\n for (const model of models) {\n const context = model.contextLength ? model.contextLength.toLocaleString('en-US') : '';\n lines.push(\n `| \\`${escapeTableCell(model.value)}\\` | ${escapeTableCell(model.label)} | ${context} | ${escapeTableCell(model.description)} |`\n );\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\nexport function normalizeProviderModels(\n providerName: string,\n rawModels: ProviderModelInfo[]\n): AvailableProviderModel[] {\n const deduped = new Map<string, AvailableProviderModel>();\n\n for (const model of rawModels) {\n const value = getExecutableModelId(providerName, model);\n if (!value) continue;\n\n if (!deduped.has(value)) {\n deduped.set(value, {\n value,\n label: model.name || value,\n description: model.description || '',\n contextLength: model.contextLength,\n slug: model.slug,\n });\n }\n }\n\n return [...deduped.values()].sort((left, right) => left.value.localeCompare(right.value));\n}\n\nfunction getExecutableModelId(\n providerName: string,\n model: Pick<ProviderModelInfo, 'id' | 'name' | 'slug'>\n): string {\n if (model.id && !isOpaqueModelId(model.id)) {\n return model.id;\n }\n\n if (providerName === 'cloudflare') {\n const publicCloudflareId = [model.name, model.slug]\n .find((value): value is string => typeof value === 'string' && value.includes('/'));\n\n if (publicCloudflareId) {\n return publicCloudflareId.startsWith('@cf/')\n ? publicCloudflareId\n : `@cf/${publicCloudflareId.replace(/^@cf\\//, '')}`;\n }\n }\n\n return model.slug || model.name || model.id;\n}\n\nfunction escapeTableCell(value: string): string {\n return value.replace(/\\|/g, '\\\\|').replace(/\\n/g, '<br />');\n}\n","import { fetchCurrentModelsMarkdown } from '../utils/models.js';\n\nexport interface CurrentModelsOptions {\n url?: string;\n}\n\nexport async function currentModels(options: CurrentModelsOptions = {}): Promise<void> {\n try {\n const { content } = await fetchCurrentModelsMarkdown(\n options.url ? [options.url] : undefined\n );\n\n process.stdout.write(content.endsWith('\\n') ? content : `${content}\\n`);\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to fetch current models.';\n process.stderr.write(`${message}\\n`);\n process.exit(1);\n }\n}\n","import {\n buildProviderSelectionHelp,\n describeProviderAvailability,\n detectProviders,\n fetchAvailableModelsForProvider,\n findProjectRoot,\n formatAvailableModelsOutput,\n getProviderDefinition,\n loadProjectEnv,\n} from '../utils/models.js';\n\nexport interface AvailableModelsOptions {\n provider?: string;\n}\n\nfunction writeError(message: string): never {\n process.stderr.write(`${message}\\n`);\n process.exit(1);\n}\n\nexport async function availableModels(options: AvailableModelsOptions = {}): Promise<void> {\n const projectRoot = findProjectRoot(process.cwd());\n const env = loadProjectEnv(projectRoot);\n const detectedProviders = detectProviders(projectRoot, env);\n\n if (detectedProviders.length === 0) {\n writeError(\n [\n `No installed provider packages were found in ${projectRoot}.`,\n 'Add a provider package such as `@standardagents/cerebras`, then run this command again.',\n ].join('\\n')\n );\n }\n\n const providerName = options.provider?.trim();\n\n if (providerName) {\n const provider = detectedProviders.find((candidate) => candidate.name === providerName);\n\n if (!getProviderDefinition(providerName)) {\n writeError(\n `Unknown provider \"${providerName}\". Supported providers: ${detectedProviders.map((candidate) => candidate.name).join(', ')}.`\n );\n }\n\n if (!provider) {\n writeError(\n [\n `Provider \"${providerName}\" is not installed in ${projectRoot}.`,\n `Install ${getProviderDefinition(providerName)?.packageName || providerName} and try again.`,\n ].join('\\n')\n );\n }\n\n if (!provider.configured) {\n writeError(\n [\n `Provider \"${providerName}\" is missing required environment variables.`,\n `Missing: ${provider.missingEnvKeys.join(', ')}`,\n ].join('\\n')\n );\n }\n\n try {\n const models = await fetchAvailableModelsForProvider(provider.name, projectRoot, env);\n process.stdout.write(formatAvailableModelsOutput(provider, models));\n return;\n } catch (error) {\n const message = error instanceof Error ? error.message : `Failed to fetch models for ${providerName}.`;\n writeError(message);\n }\n }\n\n const configuredProviders = detectedProviders.filter((provider) => provider.configured);\n\n if (configuredProviders.length === 0) {\n const missingSummary = detectedProviders\n .map((provider) => describeProviderAvailability(provider))\n .join('\\n');\n\n writeError(\n [\n 'No installed providers are fully configured yet.',\n missingSummary,\n ].join('\\n')\n );\n }\n\n if (configuredProviders.length > 1) {\n writeError(buildProviderSelectionHelp(configuredProviders));\n }\n\n const provider = configuredProviders[0];\n\n try {\n const models = await fetchAvailableModelsForProvider(provider.name, projectRoot, env);\n process.stdout.write(formatAvailableModelsOutput(provider, models));\n } catch (error) {\n const message = error instanceof Error ? error.message : `Failed to fetch models for ${provider.name}.`;\n writeError(message);\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { resolveCliGitAuth } from '../utils/cli-auth-storage.js';\n\ninterface GitCredentialOptions {\n endpoint?: string;\n startDir?: string;\n input?: string;\n fetchImpl?: typeof fetch;\n write?: (text: string) => void;\n}\n\ninterface CredentialRequest {\n protocol?: string;\n host?: string;\n path?: string;\n}\n\ninterface ArtifactGitResponse {\n artifact_git?: {\n token_secret?: string;\n };\n}\n\ntype GitCredentialConfig =\n | { endpoint: string; auth: { kind: 'api-key'; apiKey: string } }\n | { endpoint: string; auth: { kind: 'session-cookie'; cookie: string } };\n\nfunction parseKeyValueLines(input: string): Record<string, string> {\n const result: Record<string, string> = {};\n for (const line of input.split(/\\r?\\n/)) {\n if (!line.trim()) continue;\n const index = line.indexOf('=');\n if (index <= 0) continue;\n result[line.slice(0, index)] = line.slice(index + 1);\n }\n return result;\n}\n\nfunction findDotDevVars(startDir = process.cwd()): string | null {\n let current = path.resolve(startDir);\n while (true) {\n const candidate = path.join(current, '.dev.vars');\n if (fs.existsSync(candidate)) return candidate;\n const parent = path.dirname(current);\n if (parent === current) return null;\n current = parent;\n }\n}\n\nfunction normalizeEndpoint(value: string): string {\n return value.replace(/\\/+$/, '');\n}\n\nfunction normalizeGitHost(host: string): string {\n return host.trim().toLowerCase().replace(/:\\d+$/, '');\n}\n\nfunction isStandardAgentsGitHost(host: string): boolean {\n const normalized = normalizeGitHost(host);\n return normalized === 'standardagents.ai' ||\n normalized.endsWith('.standardagents.ai') ||\n normalized === 'standardagentbuilder.com' ||\n normalized.endsWith('.standardagentbuilder.com') ||\n normalized === 'artifacts.cloudflare.net' ||\n normalized.endsWith('.artifacts.cloudflare.net') ||\n normalized === 'artifacts.cloudflare.com' ||\n normalized.endsWith('.artifacts.cloudflare.com') ||\n normalized === 'git.cloudflare.com';\n}\n\nfunction loadLocalConfig(options: GitCredentialOptions): GitCredentialConfig | null {\n const envPath = findDotDevVars(options.startDir);\n const fileVars = envPath ? parseKeyValueLines(fs.readFileSync(envPath, 'utf-8')) : {};\n const endpoint = normalizeEndpoint(\n options.endpoint ||\n process.env.STANDARD_AGENTS_API_URL ||\n process.env.PLATFORM_ENDPOINT ||\n fileVars.STANDARD_AGENTS_API_URL ||\n fileVars.PLATFORM_ENDPOINT ||\n ''\n );\n const apiKey = process.env.STANDARD_AGENTS_API_KEY || fileVars.STANDARD_AGENTS_API_KEY || '';\n if (endpoint && apiKey) {\n return { endpoint, auth: { kind: 'api-key', apiKey } };\n }\n\n const cookie = process.env.STANDARD_AGENTS_SESSION_COOKIE ||\n process.env.STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE ||\n fileVars.STANDARDAGENTS_BOOTSTRAP_SESSION_COOKIE ||\n '';\n if (endpoint && cookie) {\n return { endpoint, auth: { kind: 'session-cookie', cookie } };\n }\n\n const globalAuth = resolveCliGitAuth();\n if (!globalAuth) return null;\n const requestedEndpoint = endpoint || normalizeEndpoint(options.endpoint || '');\n if (requestedEndpoint && requestedEndpoint !== globalAuth.endpoint) {\n return null;\n }\n return {\n endpoint: globalAuth.endpoint,\n auth: { kind: 'session-cookie', cookie: globalAuth.session_cookie },\n };\n}\n\nfunction remoteFromCredentialRequest(request: CredentialRequest): string | null {\n if (!request.protocol || !request.host) return null;\n if (!isStandardAgentsGitHost(request.host)) return null;\n const repoPath = request.path ? `/${request.path.replace(/^\\/+/, '')}` : '';\n return `${request.protocol}://${normalizeGitHost(request.host)}${repoPath}`;\n}\n\nasync function readStdin(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));\n }\n return Buffer.concat(chunks).toString('utf-8');\n}\n\nexport async function gitCredential(operation: string, options: GitCredentialOptions = {}): Promise<void> {\n if (operation !== 'get') return;\n\n const config = loadLocalConfig(options);\n if (!config) return;\n\n const input = options.input ?? await readStdin();\n const remote = remoteFromCredentialRequest(parseKeyValueLines(input));\n if (!remote) return;\n\n const fetchImpl = options.fetchImpl ?? fetch;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n if (config.auth.kind === 'api-key') {\n headers.Authorization = `Bearer ${config.auth.apiKey}`;\n } else {\n headers.Cookie = config.auth.cookie;\n }\n\n const response = await fetchImpl(`${config.endpoint}/projects/git-token`, {\n method: 'POST',\n headers,\n body: JSON.stringify({ remote, scope: 'write' }),\n }).catch(() => null);\n if (!response?.ok) return;\n\n const body = await response.json().catch(() => null) as ArtifactGitResponse | null;\n const tokenSecret = body?.artifact_git?.token_secret;\n if (!tokenSecret) return;\n\n const write = options.write ?? ((text: string) => {\n process.stdout.write(text);\n });\n write(`username=x\\npassword=${tokenSecret}\\n\\n`);\n}\n","import readline from 'node:readline';\nimport { spawnSync } from 'node:child_process';\nimport { logger } from '../utils/logger.js';\nimport {\n cancelCliAuthSession,\n openBrowser,\n resolvePlatformAuthBrowserUrl,\n startCliAuthSession,\n waitForCliAuthCompletion,\n} from '../utils/cli-auth-api.js';\nimport { saveCliGitAuth } from '../utils/cli-auth-storage.js';\nimport { consumeBootstrapLogin, type LoginOptions } from './login.js';\nimport { parseBootstrapCodeInput, resolvePlatformEndpoint } from './init.js';\n\nexport interface GitLoginOptions extends LoginOptions {\n config?: boolean;\n helperCommand?: string;\n gitRunner?: (args: string[]) => { status: number | null; stdout: string; stderr: string };\n}\n\nconst DEFAULT_GIT_HELPER_COMMAND = '!npx -y @standardagents/cli@latest git-credential';\n\nfunction prompt(question: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nfunction defaultGitRunner(args: string[]): { status: number | null; stdout: string; stderr: string } {\n const result = spawnSync('git', args, { encoding: 'utf8' });\n return {\n status: result.status,\n stdout: result.stdout || '',\n stderr: result.stderr || '',\n };\n}\n\nfunction runGit(\n args: string[],\n runner: NonNullable<GitLoginOptions['gitRunner']>,\n): { stdout: string; stderr: string } {\n const result = runner(args);\n if (result.status !== 0) {\n throw new Error(result.stderr.trim() || `git ${args.join(' ')} failed`);\n }\n return result;\n}\n\nexport function configureStandardAgentsGitCredentials(options: GitLoginOptions = {}): {\n helperCommand: string;\n helperAdded: boolean;\n} {\n const runner = options.gitRunner ?? defaultGitRunner;\n const helperCommand = options.helperCommand?.trim() || process.env.STANDARD_AGENTS_GIT_HELPER || DEFAULT_GIT_HELPER_COMMAND;\n const existing = runGit(['config', '--global', '--get-all', 'credential.helper'], runner)\n .stdout\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean);\n\n let helperAdded = false;\n if (!existing.includes(helperCommand)) {\n runGit(['config', '--global', '--add', 'credential.helper', helperCommand], runner);\n helperAdded = true;\n }\n runGit(['config', '--global', 'credential.useHttpPath', 'true'], runner);\n\n return { helperCommand, helperAdded };\n}\n\nasync function completeBrowserGitLogin(options: GitLoginOptions, endpoint: string): Promise<ReturnType<typeof consumeBootstrapLogin>> {\n let authAppUrl = resolvePlatformAuthBrowserUrl(endpoint);\n let sessionId: string | null = null;\n let wsUrl: string | null = null;\n let wsExpiresAt = 0;\n\n try {\n const started = await startCliAuthSession(endpoint);\n sessionId = started.session_id;\n authAppUrl = started.auth_url;\n wsUrl = started.ws_url;\n wsExpiresAt = started.expires_at;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Failed to start realtime auth session';\n logger.warning(`${message} Switching to manual bootstrap command entry.`);\n }\n\n logger.log(`Auth app: ${authAppUrl}`);\n if (options.open !== false) {\n const opened = openBrowser(authAppUrl);\n if (opened) {\n logger.info('Opened browser for authentication.');\n } else {\n logger.warning('Could not automatically open browser. Open the URL above manually.');\n }\n }\n\n if (wsUrl && wsExpiresAt > 0) {\n try {\n const completion = await waitForCliAuthCompletion(wsUrl, wsExpiresAt);\n return consumeBootstrapLogin({ ...options, endpoint, bootstrap: completion.bootstrapCode });\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Realtime auth handoff failed';\n logger.warning(`${message} Enter bootstrap code manually to continue.`);\n }\n }\n\n if (!process.stdin.isTTY) {\n throw new Error('Non-interactive shell detected. Run: npx @standardagents/cli git-login --bootstrap <code>');\n }\n\n const input = await prompt('Bootstrap code or command: ');\n const bootstrapCode = parseBootstrapCodeInput(input);\n if (!bootstrapCode) {\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n throw new Error('No bootstrap code provided. Run: npx @standardagents/cli git-login --bootstrap <code>');\n }\n\n if (sessionId) {\n await cancelCliAuthSession(endpoint, sessionId);\n }\n return consumeBootstrapLogin({ ...options, endpoint, bootstrap: bootstrapCode });\n}\n\nexport async function gitLogin(options: GitLoginOptions = {}): Promise<void> {\n const endpoint = resolvePlatformEndpoint({ endpoint: options.endpoint });\n logger.log('');\n logger.info('Starting Standard Agents Git authentication...');\n logger.log(`Platform API: ${endpoint}`);\n\n const state = options.bootstrap?.trim()\n ? await consumeBootstrapLogin({ ...options, endpoint, bootstrap: options.bootstrap.trim() })\n : await completeBrowserGitLogin(options, endpoint);\n\n if (!state.session_cookie) {\n throw new Error('Platform login did not return a session cookie for Git authentication.');\n }\n\n const record = saveCliGitAuth({\n endpoint,\n sessionCookie: state.session_cookie,\n account: state.account,\n user: state.user,\n });\n\n let configured: ReturnType<typeof configureStandardAgentsGitCredentials> | null = null;\n if (options.config !== false) {\n configured = configureStandardAgentsGitCredentials(options);\n }\n\n logger.log('');\n logger.success('Git authentication configured.');\n logger.log(`Account: ${record.account_id}${record.account_slug ? ` (${record.account_slug})` : ''}`);\n logger.log(`User: ${record.user_email}`);\n if (configured) {\n logger.log(`Credential helper: ${configured.helperCommand}${configured.helperAdded ? '' : ' (already installed)'}`);\n }\n logger.log('');\n}\n","import { Command, Option } from 'commander';\nimport { init } from './commands/init.js';\nimport { isInitWizardReturnToHomeError, supportFiles } from './commands/init.js';\nimport { login } from './commands/login.js';\nimport { logout } from './commands/logout.js';\nimport { scaffold } from './commands/scaffold.js';\nimport { initChat } from './commands/init-chat.js';\nimport { pack } from './commands/pack.js';\nimport { unpack, listPacked } from './commands/unpack.js';\nimport { deploy } from './commands/deploy.js';\nimport { restoreTuiTerminal, runHomeTui } from './tui/home.js';\nimport { skill } from './commands/skill.js';\nimport { currentModels } from './commands/current-models.js';\nimport { availableModels } from './commands/available-models.js';\nimport { gitCredential } from './commands/git-credential.js';\nimport { gitLogin } from './commands/git-login.js';\n\n// Injected at build time by tsup (see tsup.config.ts)\ndeclare const __CLI_VERSION__: string;\nconst INIT_TUI_ENV_VAR = 'STANDARDAGENTS_INIT_TUI';\n\nasync function settleStdinForInitHandoff(stdin: NodeJS.ReadStream = process.stdin): Promise<void> {\n if (!stdin.isTTY) return;\n\n for (const eventName of ['data', 'readable', 'keypress'] as const) {\n for (const listener of stdin.listeners(eventName)) {\n stdin.removeListener(eventName, listener as (...args: any[]) => void);\n }\n }\n\n if (stdin.isRaw) {\n stdin.setRawMode(false);\n }\n stdin.pause();\n while (stdin.read() !== null) {\n // Drain buffered key events from the home screen before child process handoff.\n }\n await new Promise<void>((resolve) => setTimeout(resolve, 30));\n while (stdin.read() !== null) {\n // One more pass after Ink teardown settles.\n }\n}\n\nconst program = new Command();\n\nprogram\n .name('agents')\n .description('CLI tool for Standard Agents / AgentBuilder')\n .version(__CLI_VERSION__);\n\nprogram\n .command('init [project-name]')\n .description('Create a new Standard Agents project')\n .option('-y, --yes', 'Skip prompts and use defaults')\n .option('--local', 'Use local project scaffolding instead of browser platform onboarding')\n .option('--cli', 'Use classic line-by-line CLI prompts instead of the TUI wizard')\n .option('--api-url <url>', 'Standard Agents platform API URL')\n .option('--endpoint <url>', 'Platform API endpoint for auth/bootstrap exchange')\n .option('--package-manager <manager>', 'Package manager for generated project: npm, pnpm, yarn, or bun')\n .option('--template <template>', 'Vite template to use', 'vanilla-ts')\n .option('--workspace', 'Install @standardagents packages as workspace:* (local pnpm workspace development)')\n .option('--no-dev', 'Clone and configure the project without starting the dev server')\n .addOption(new Option('--bootstrap <code>', 'Exchange a web onboarding bootstrap code'))\n .action(init);\n\nprogram\n .command('login')\n .description('Authenticate this machine (or use --bootstrap for project bootstrap auth)')\n .option('--bootstrap <code>', 'Bootstrap code from web onboarding')\n .option('--endpoint <url>', 'Platform API endpoint (default: https://api.standardagents.ai)')\n .option('--no-open', 'Do not auto-open browser URL')\n .action(login);\n\nprogram\n .command('logout')\n .description('Clear stored StandardAgents auth and local org-scoped project auth')\n .option('--org <org-id-or-slug>', 'Org ID or slug to logout (defaults to active org)')\n .option('--endpoint <url>', 'Platform API endpoint (default: https://api.standardagents.ai)')\n .action(logout);\n\nprogram\n .command('scaffold')\n .description('Add Standard Agents to an existing Vite project')\n .option('--force', 'Overwrite existing configuration')\n .action(scaffold);\n\nprogram\n .command('init-chat [project-name]')\n .description('Scaffold a frontend chat application')\n .option('-y, --yes', 'Skip prompts and use defaults')\n .option('--framework <framework>', 'Framework to use (vite or nextjs)')\n .action(initChat);\n\nprogram\n .command('pack [agent-name]')\n .description('Pack an agent with all its dependencies')\n .option('--output <dir>', 'Output directory (default: agents/packed)')\n .option('--npm', 'Generate npm-ready package structure')\n .option('--version <version>', 'Package version (default: 1.0.0)')\n .option('--no-remove', 'Keep original files after packing')\n .option('--no-interactive', 'Skip interactive item mode selector')\n .action(pack);\n\nprogram\n .command('unpack [package]')\n .description('Unpack a packed agent to the local agents directory')\n .option('--no-signatures', 'Remove package signatures (fully editable)')\n .action(unpack);\n\nprogram\n .command('list-packed')\n .description('List all discovered packed agents')\n .action(listPacked);\n\nprogram\n .command('deploy')\n .description('Push the current branch to the Standard Agents Artifacts remote')\n .action(deploy);\n\nprogram\n .command('git-credential <operation>')\n .description('Git credential helper for Standard Agents platform repositories')\n .option('--endpoint <url>', 'Platform API endpoint')\n .action(gitCredential);\n\nprogram\n .command('git-login')\n .description('Authenticate Git for Standard Agents platform repositories')\n .option('--bootstrap <code>', 'Bootstrap code from web onboarding')\n .option('--endpoint <url>', 'Platform API endpoint (default: https://api.standardagents.ai)')\n .option('--helper-command <command>', 'Credential helper command to add to global git config')\n .option('--no-config', 'Store Git auth but do not update global git config')\n .option('--no-open', 'Do not auto-open browser URL')\n .action(gitLogin);\n\nprogram\n .command('support-files')\n .description('Write generated local support files for a Standard Agents platform repository')\n .option('--project-name <name>', 'Project name to use in the generated package manifest')\n .option('--package-manager <manager>', 'Package manager: npm, pnpm, yarn, or bun')\n .action(supportFiles);\n\nprogram\n .command('skill')\n .description('Install the bundled AgentBuilder guidance into a supported coding agent')\n .option('--agent <target>', 'Install target: codex or claude')\n .option('--dir <path>', 'Install directory override for the selected target')\n .option('--force', 'Overwrite an existing installed skill')\n .action(skill);\n\nprogram\n .command('current-models')\n .description('Print the live curated model guide from standardagentspec.com')\n .option('--url <url>', 'Override the models markdown URL')\n .action(currentModels);\n\nprogram\n .command('available-models')\n .description('List every available model for one configured provider in the current project')\n .option('--provider <provider>', 'Provider to query, for example cerebras or openai')\n .action(availableModels);\n\nasync function run(): Promise<void> {\n const userArgs = process.argv.slice(2);\n const isInteractiveTerminal = Boolean(process.stdin.isTTY && process.stdout.isTTY);\n\n if (userArgs.length === 0 && isInteractiveTerminal) {\n while (true) {\n const selection = await runHomeTui();\n if (!selection) return;\n\n if (selection.preserveTuiScreen) {\n await settleStdinForInitHandoff();\n process.stdout.write('\\x1b[2J\\x1b[H');\n try {\n await init(undefined, { returnToHomeOnCancel: true });\n } catch (error) {\n restoreTuiTerminal();\n if (isInitWizardReturnToHomeError(error)) {\n continue;\n }\n throw error;\n }\n restoreTuiTerminal();\n return;\n }\n\n await program.parseAsync(selection.argv, { from: 'user' });\n return;\n }\n }\n\n await program.parseAsync(process.argv);\n}\n\nrun().catch((error) => {\n console.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n});\n"]}