@standardagents/cli 0.15.0 → 0.15.2
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/README.md +55 -11
- package/dist/index.js +3006 -1907
- package/dist/index.js.map +1 -1
- package/package.json +10 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/logger.ts","../src/templates/root.ts","../src/templates/models.ts","../src/templates/prompts.ts","../src/templates/agents.ts","../src/templates/tools.ts","../src/templates/hooks.ts","../src/templates/api.ts","../src/commands/scaffold.ts","../src/commands/init.ts","../src/commands/init-chat.ts","../src/commands/pack.ts","../src/commands/unpack.ts","../src/commands/deploy.ts","../src/commands/skill.ts","../src/utils/models.ts","../src/commands/current-models.ts","../src/commands/available-models.ts","../src/index.ts"],"names":["path","fs","prompt","readline","runCommand","spawn","detectPackageManager","selectPackageManager","isStandardAgentsProject","chalk","parseEnvFile","provider"],"mappings":";;;;;;;;;;;;;;;;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,OAAA,EAAS,CAAC,OAAA,KAAoB;AAC5B,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,KAAA,CAAM,QAAG,GAAG,OAAO,CAAA;AAAA,EACvC,CAAA;AAAA,EACA,KAAA,EAAO,CAAC,OAAA,KAAoB;AAC1B,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,QAAG,GAAG,OAAO,CAAA;AAAA,EACrC,CAAA;AAAA,EACA,OAAA,EAAS,CAAC,OAAA,KAAoB;AAC5B,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,QAAG,GAAG,OAAO,CAAA;AAAA,EACxC,CAAA;AAAA,EACA,IAAA,EAAM,CAAC,OAAA,KAAoB;AACzB,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,IAAA,CAAK,QAAG,GAAG,OAAO,CAAA;AAAA,EACtC,CAAA;AAAA,EACA,GAAA,EAAK,CAAC,OAAA,KAAoB;AACxB,IAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AAAA,EACrB;AACF,CAAA;;;AClBO,IAAM,cAAA,GAAiB,CAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;;ACAvB,IAAM,gBAAA,GAAmB,CAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,CAAA;;;ACAzB,IAAM,iBAAA,GAAoB,CAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,CAAA;;;ACA1B,IAAM,gBAAA,GAAmB,CAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,CAAA;;;ACAzB,IAAM,eAAA,GAAkB,CAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,CAAA;;;ACAxB,IAAM,eAAA,GAAkB,CAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,CAAA;;;ACAxB,IAAM,aAAA,GAAgB,CAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAA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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","export const ROOT_CLAUDE_MD = `# Standard Agents\n\nThis project uses Standard Agents - a framework for building AI agents on Cloudflare Workers.\n\n## Architecture Overview\n\nStandard Agents uses a **composition model** where four core components work together:\n\n\\`\\`\\`\nModel → Prompt → Agent → Thread\n │ │ │ │\n │ │ │ └─ Conversation instance (Durable Object)\n │ │ └─ Orchestrates conversation flow\n │ └─ System instructions + tools\n └─ LLM provider configuration\n\\`\\`\\`\n\n**Models** define which LLM to use (provider, model ID, pricing, fallbacks).\n**Prompts** define what the LLM should do (system instructions, available tools).\n**Agents** orchestrate conversations (which prompt, stop conditions, turn limits).\n**Threads** are individual conversation instances with persistent storage.\n\n## How Components Compose\n\n### Basic Flow\n1. User creates a thread with an agent\n2. Agent uses its configured prompt\n3. Prompt specifies the model and tools\n4. LLM responds, potentially calling tools\n5. Tools execute and return results\n6. Loop continues until stop condition\n\n### Sub-Prompts (Prompts as Tools)\nPrompts can call other prompts as tools. This enables:\n- **Specialized reasoning**: A main prompt delegates to expert sub-prompts\n- **Structured outputs**: Sub-prompt validates and formats data\n- **Context isolation**: Sub-prompt gets fresh context without full history\n\n\\`\\`\\`typescript\n// Main prompt can call 'data_extractor' as a tool\ndefinePrompt({\n name: 'main_assistant',\n tools: ['data_extractor'], // Another prompt exposed as tool\n // ...\n});\n\\`\\`\\`\n\n### Agent Handoffs (Agents as Tools)\nAgents can delegate to other agents entirely:\n- **Specialization**: Route to domain-specific agents\n- **Escalation**: Hand off to more capable agents\n- **Workflows**: Chain agents for multi-step processes\n\n\\`\\`\\`typescript\ndefineAgent({\n name: 'triage_agent',\n exposeAsTool: true,\n toolDescription: 'Hand off to triage for initial assessment',\n // ...\n});\n\\`\\`\\`\n\n## File Structure\n\n\\`\\`\\`\nagents/\n├── CLAUDE.md # This file\n├── Thread.ts # Durable Object for conversation threads\n├── AgentBuilder.ts # Durable Object for metadata\n├── agents/ # Agent definitions (defineAgent)\n│ └── CLAUDE.md\n├── prompts/ # Prompt definitions (definePrompt)\n│ └── CLAUDE.md\n├── models/ # Model configurations (defineModel)\n│ └── CLAUDE.md\n├── tools/ # Custom tools (defineTool)\n│ └── CLAUDE.md\n├── hooks/ # Lifecycle hooks (defineHook)\n│ └── CLAUDE.md\n└── api/ # Thread API endpoints (defineThreadEndpoint)\n └── CLAUDE.md\n\\`\\`\\`\n\nFiles are **auto-discovered** at runtime. No manual registration needed.\n\n## ThreadState\n\n\\`ThreadState\\` is the state object available in tools and hooks:\n\n\\`\\`\\`typescript\ninterface ThreadState {\n // Identity (readonly)\n threadId: string; // Thread identifier\n agentId: string; // Agent identifier\n userId: string | null; // User identifier (if set)\n createdAt: number; // Creation timestamp\n children: SubagentRegistryEntry[]; // Resumable child registry\n terminated: number | null; // Soft-termination timestamp\n\n // Methods\n getMessages(options?): Promise<MessagesResult>; // Get conversation history\n injectMessage(input): Promise<Message>; // Add message to thread\n queueMessage(input): Promise<void>; // Queue message for next step\n loadModel(name): Promise<ModelConfig>; // Load model definition\n loadPrompt(name): Promise<PromptConfig>; // Load prompt definition\n loadAgent(name): Promise<AgentConfig>; // Load agent definition\n env(propertyName): Promise<string>; // Resolve env value for this thread\n setEnv(propertyName, value): Promise<void>; // Set thread env + propagate to active descendants\n getValue<T = unknown>(key: string): Promise<T | null>; // Read durable per-thread JSON value\n setValue(key: string, value: unknown): Promise<void>; // Write durable value; null/undefined deletes\n notifyParent(content): Promise<void>; // Explicitly queue a silent message to the parent\n setStatus(status): Promise<void>; // Update this child in the parent registry\n getChildThread(referenceId): Promise<ThreadState | null>; // Resolve child thread\n getParentThread(): Promise<ThreadState | null>; // Resolve parent thread\n terminate(): Promise<void>; // Soft-terminate thread\n runCode(source, options?): CodeExecution; // Run JS/TS in a fresh Dynamic Worker sandbox\n}\n\\`\\`\\`\n\n\\`runCode\\` has no implicit access to thread state, filesystem, network, timers, or host globals. Bridge only the exact capabilities needed through \\`imports\\` or \\`globals\\`; use \\`modules\\` for local relative ES modules; use \\`execute\\` to select the export and args to run. \\`modules\\` keys are graph-root relative paths; entry-source imports resolve from \\`filename\\` when supplied, including \\`../\\` parent paths that stay inside the supplied graph. TypeScript input is accepted by default and erased before evaluation. In thread endpoints, \\`runCode\\` is forwarded into the thread Durable Object; pass plain transferable options there and keep function-backed bridges in tools or in-thread execution contexts.\n\n## Subagents\n\n\\`dual_ai\\` agents can be used as subagents from prompt tool configs:\n\n- Each subagent runs in its own thread (\\`DurableThread\\`)\n- Parent/child linkage is tracked in thread metadata\n- Resumable children are visible in \\`state.children\\`\n- Parent threads create/message resumable children via built-ins (\\`subagent_create\\`, \\`subagent_message\\`)\n- Child completion results are queued back to the parent when \\`parentCommunication\\` is \\`implicit\\`\n- Explicit relationships can stay idle until code calls \\`state.notifyParent()\\` or \\`state.setStatus()\\`\n\nAccess in tools:\n\\`\\`\\`typescript\nexport default defineTool('...', schema, async (state, args) => {\n const threadId = state.threadId;\n const { messages } = await state.getMessages();\n const count = (await state.getValue<number>('invocation_count')) ?? 0;\n await state.setValue('invocation_count', count + 1);\n // ...\n});\n\\`\\`\\`\n\nAccess in hooks:\n\\`\\`\\`typescript\nexport default defineHook({\n hook: 'before_create_message',\n id: 'my_hook',\n execute: async (state, message) => {\n console.log(\\`Thread: \\${state.threadId}, Agent: \\${state.agentId}\\`);\n return message;\n }\n});\n\\`\\`\\`\n\n## Quick Reference\n\n| Function | Purpose | Directory |\n|----------|---------|-----------|\n| \\`defineModel()\\` | Configure LLM provider | \\`agents/models/\\` |\n| \\`definePrompt()\\` | System instructions + tools | \\`agents/prompts/\\` |\n| \\`defineAgent()\\` | Conversation orchestration | \\`agents/agents/\\` |\n| \\`defineTool()\\` | Custom tool functions | \\`agents/tools/\\` |\n| \\`defineHook()\\` | Lifecycle interception | \\`agents/hooks/\\` |\n| \\`defineThreadEndpoint()\\` | Custom API routes | \\`agents/api/\\` |\n\n## Runtime Utilities\n\nImport from \\`@standardagents/builder\\`:\n\n\\`\\`\\`typescript\nimport {\n queueTool, // Queue another tool for execution\n injectMessage, // Add message without triggering execution\n getMessages, // Retrieve message history\n emitThreadEvent, // Send custom WebSocket events\n} from '@standardagents/builder';\n\\`\\`\\`\n\n## Documentation\n\nFull documentation: https://docs.standardagentbuilder.com\n\n- [Architecture Overview](https://docs.standardagentbuilder.com/introduction/architecture)\n- [Models](https://docs.standardagentbuilder.com/core-concepts/models)\n- [Prompts](https://docs.standardagentbuilder.com/core-concepts/prompts)\n- [Agents](https://docs.standardagentbuilder.com/core-concepts/agents)\n- [Tools](https://docs.standardagentbuilder.com/core-concepts/tools)\n- [Hooks](https://docs.standardagentbuilder.com/core-concepts/hooks)\n- [ThreadState](https://docs.standardagentbuilder.com/core-concepts/threadstate)\n- [Thread API](https://docs.standardagentbuilder.com/core-concepts/api)\n`;\n","export const MODELS_CLAUDE_MD = `# Model Definitions\n\nModels define which LLM provider and model to use for prompts.\n\n## Properties\n\n| Property | Type | Required | Description |\n|----------|------|----------|-------------|\n| \\`name\\` | \\`string\\` | Yes | Unique identifier for this model configuration |\n| \\`provider\\` | \\`'openai' \\\\| 'anthropic' \\\\| 'openrouter' \\\\| 'google' \\\\| 'cerebras' \\\\| 'groq' \\\\| 'xai'\\` | Yes | LLM provider |\n| \\`model\\` | \\`string\\` | Yes | Model ID sent to provider API |\n| \\`fallbacks\\` | \\`string[]\\` | No | Fallback model names to try if primary fails |\n| \\`inputPrice\\` | \\`number\\` | No | Cost per 1M input tokens (USD) |\n| \\`outputPrice\\` | \\`number\\` | No | Cost per 1M output tokens (USD) |\n| \\`cachedPrice\\` | \\`number\\` | No | Cost per 1M cached input tokens |\n| \\`includedProviders\\` | \\`string[]\\` | No | Provider prefixes for OpenRouter routing |\n| \\`providerTools\\` | \\`string[]\\` | No | Provider-built-in tool names to make available for prompts using this model |\n\n## Example\n\n\\`\\`\\`typescript\nimport { defineModel } from '@standardagents/builder';\n\nexport default defineModel({\n name: 'default',\n provider: 'openrouter',\n model: 'google/gemini-3-flash-preview',\n fallbacks: ['fast', 'cheap-heavy'],\n});\n\\`\\`\\`\n\n## Provider Tools\n\nProviders can expose built-in tools such as search, file search, code execution,\nor provider-specific tools through their \\`getTools()\\` implementation. Enable the\nprovider tool names on the model with \\`providerTools\\`; prompts can then include\nthose tools like normal tool names. Provider tools execute on the upstream\nprovider, not in AgentBuilder, and successful calls are logged as provider tool\nentries.\n\nOpenRouter exposes \\`web_search\\`, \\`web_fetch\\`, \\`datetime\\`, and \\`image_generation\\`\nas provider-executed server tools. Configure optional OpenRouter parameters with\n\\`providerOptions.serverTools\\` on the model.\n\n## Recommended Models (OpenRouter)\n\n| Use Case | Model ID | Description |\n|----------|----------|-------------|\n| Fast/Cheap | \\`z-ai/glm-4.5-air\\` | Quick responses, low cost |\n| Mid-tier | \\`google/gemini-3-flash-preview\\` | Good balance of speed and quality |\n| Cheap Heavy | \\`z-ai/glm-4.7\\` | More capable, still affordable |\n| Heavy | \\`google/gemini-3-pro-preview\\` | Most capable, for complex tasks |\n\n**⚠️ Google Models**: When using Google models (\\`google/gemini-*\\`), you must enable \\`reasoning\\` in your prompt configuration or tool calls will fail. See the prompts CLAUDE.md for details.\n\n## Provider API Keys\n\nSet these environment variables in \\`.dev.vars\\` (local) or Cloudflare secrets (production):\n\n| Provider | Environment Variable |\n|----------|---------------------|\n| Cerebras | \\`CEREBRAS_API_KEY\\` |\n| Groq | \\`GROQ_API_KEY\\` |\n| OpenAI | \\`OPENAI_API_KEY\\` |\n| Anthropic | \\`ANTHROPIC_API_KEY\\` |\n| OpenRouter | \\`OPENROUTER_API_KEY\\` |\n| Google | \\`GOOGLE_API_KEY\\` |\n| xAI | \\`XAI_API_KEY\\` |\n\n## Fallback Strategy\n\nWhen a model fails, fallbacks are tried in order:\n1. Primary model (2 attempts)\n2. First fallback (2 attempts)\n3. Second fallback (2 attempts)\n4. ...and so on\n\nRetries occur on: network errors, rate limits (429), server errors (5xx), auth errors (401).\n\n## OpenRouter Configuration\n\nFor OpenRouter, use the full model path:\n\n\\`\\`\\`typescript\nexport default defineModel({\n name: 'heavy',\n provider: 'openrouter',\n model: 'google/gemini-3-pro-preview',\n includedProviders: ['google'], // Prefer Google's servers\n});\n\\`\\`\\`\n\n## Best Practices\n\n- **Name by use case**, not model ID (e.g., \\`fast\\`, \\`default\\`, \\`heavy\\`)\n- **Configure fallbacks** for production reliability\n- **Set pricing** for cost tracking in logs when your provider or runtime does not supply it automatically\n- **Cerebras note:** documented Cerebras models have built-in fallback pricing for request logs, but custom/private Cerebras models should still set \\`inputPrice\\` and \\`outputPrice\\`\n- **Use environment variables** for API keys, never hardcode\n\n## Documentation\n\nFull reference: https://docs.standardagentbuilder.com/api-reference/define/model\n`;\n","export const PROMPTS_CLAUDE_MD = `# Prompt Definitions\n\nPrompts define system instructions, model selection, and available tools for LLM interactions.\n\n## Properties\n\n| Property | Type | Required | Description |\n|----------|------|----------|-------------|\n| \\`name\\` | \\`string\\` | Yes | Unique identifier for this prompt |\n| \\`toolDescription\\` | \\`string\\` | Yes | Description shown when used as a tool |\n| \\`prompt\\` | \\`string \\\\| StructuredPrompt\\` | Yes | System instructions |\n| \\`model\\` | \\`string\\` | Yes | Model name to use (references \\`agents/models/\\`) |\n| \\`tools\\` | \\`(string \\\\| ToolConfig \\\\| SubagentToolConfig)[]\\` | No | Available tools (include ai_human agent names for handoffs and dual_ai subagent configs) |\n| \\`includeChat\\` | \\`boolean\\` | No | Include full conversation history |\n| \\`includePastTools\\` | \\`boolean\\` | No | Include previous tool results |\n| \\`parallelToolCalls\\` | \\`boolean\\` | No | Allow multiple concurrent tool calls |\n| \\`toolChoice\\` | \\`'auto' \\\\| 'none' \\\\| 'required'\\` | No | Tool calling strategy |\n| \\`requiredSchema\\` | \\`z.ZodObject\\` | No | Input validation when called as tool |\n| \\`variables\\` | \\`VariableDefinition[]\\` | No | Variable declarations (\\`name\\`, \\`type\\`, \\`required\\`, \\`scoped\\`, \\`description\\`) |\n| \\`env\\` | \\`Record<string, string>\\` | No | Prompt-level default values for variables |\n| \\`hooks\\` | \\`string[]\\` | No | Hook IDs to run for this prompt (overrides agent hooks) |\n| \\`reasoning\\` | \\`ReasoningConfig\\` | No | Extended thinking configuration |\n\n## Basic Example\n\n\\`\\`\\`typescript\nimport { definePrompt } from '@standardagents/builder';\n\nexport default definePrompt({\n name: 'customer_support',\n toolDescription: 'Handle customer support inquiries',\n model: 'default',\n prompt: \\`You are a helpful customer support agent.\nAlways be polite and professional.\nIf you cannot help, escalate to a human.\\`,\n tools: ['search_knowledge_base', 'create_ticket'],\n includeChat: true,\n});\n\\`\\`\\`\n\n## Structured Prompts\n\nInclude other prompts for reusable instruction blocks:\n\n\\`\\`\\`typescript\nexport default definePrompt({\n name: 'main_assistant',\n toolDescription: 'Primary assistant',\n model: 'default',\n prompt: [\n { type: 'text', content: 'You are a helpful assistant.\\\\n\\\\n' },\n { type: 'include', prompt: 'common_rules' }, // Includes another prompt\n { type: 'env', property: 'ASSISTANT_TONE' }, // Inject variable value\n { type: 'text', content: '\\\\n\\\\nBe concise.' },\n ],\n});\n\\`\\`\\`\n\n\\`type: 'env'\\` inserts a resolved thread variable value. Use this only for non-secret values that are safe to expose to the LLM.\n\nThe sandboxed coding prompt declares \\`HTTP_HOST\\` as a text variable. Its URL helper uses that value as the origin for files exposed from the thread \\`public/\\` directory and endpoints exposed from the thread \\`api/\\` directory. Public URLs should usually omit extensions; extensionless public paths resolve \\`.html\\`, then \\`.js\\`, then \\`.ts\\`, then matching \\`index\\` files in the same order. Browser pages should reference only public files, \\`api/\\` endpoints, or absolute external URLs, using relative asset URLs like \\`./app\\` and \\`./api/todos\\`; private \\`src/\\` files are not served directly. Public \\`.ts\\` files are transformed to browser JavaScript and are not server endpoints. Server-side endpoints live under the thread filesystem \\`api/\\` directory, and the \\`api/\\` directory name stays in the public URL: \\`api/todo.ts\\` is \\`/api/threads/{threadId}/api/todo\\`, while \\`api/todo.ts\\` is not \\`/api/threads/{threadId}/todo\\` or \\`/api/threads/{threadId}/todos\\`. Endpoint files default-export a function that accepts \\`Request\\` and returns \\`Response\\` or \\`Promise<Response>\\`. Endpoint code can import \\`fetch\\`, \\`fs\\`, and \\`storage\\`, and can import private helpers with relative paths such as \\`../src/todo.ts\\`. When the coding agent creates a site, page, or endpoint, it should call \\`get_public_url\\` with the created file path and use the returned URL.\n\nSandboxed code and \\`api/\\` endpoints can persist small JSON-serializable runtime data through \\`import { storage } from \"storage\"\\`. Use \\`storage.get\\`, \\`storage.set\\`, \\`storage.delete\\`, and \\`storage.has\\` with stable logical keys. Do not expose, mention, or depend on internal storage key prefixes.\n\nThe sandboxed coding prompt includes \\`delete_file\\` for removing files or empty directories from the thread filesystem. Use it to clean up obsolete implementation files, stale public assets, and abandoned endpoint routes after the replacement is working.\n\n## Tool Configuration\n\nTools can be simple names or detailed configs:\n\n\\`\\`\\`typescript\ntools: [\n 'simple_tool', // Just the tool name\n {\n name: 'complex_tool',\n includeTextResponse: true, // Include sub-prompt text in result\n includeToolCalls: false, // Exclude sub-prompt tool calls\n includeErrors: true, // Include error details\n initUserMessageProperty: 'query', // Use this arg as initial message\n },\n],\n\\`\\`\\`\n\nProvider-built-in tools use the same \\`tools\\` list once the selected model enables\nthem with \\`providerTools\\`. AgentBuilder passes them to the provider and records\nprovider-reported calls in request logs; it does not execute those tools locally.\nGenerated prompt files may store these selections as \\`provider:<toolName>\\` to\ndistinguish provider tools from local tools with the same name.\n\n### Subagent Tool Configuration\n\nUse \\`SubagentToolConfig\\` when the tool is a \\`dual_ai\\` agent:\n\n\\`\\`\\`typescript\ntools: [\n // Blocking, non-resumable (default)\n { name: 'data_processor_agent' },\n\n // Non-blocking, resumable with a single instance\n {\n name: 'browser_agent',\n blocking: false,\n immediate: {\n nameEnv: 'BROWSER_AGENT_NAME',\n descriptionEnv: 'BROWSER_AGENT_DESCRIPTION',\n scopedEnv: ['BROWSER_AGENT_API_KEY'],\n },\n optional: 'ENABLE_BROWSER_AGENT',\n initAgentNameProperty: 'name',\n resumable: {\n receives_messages: 'side_a',\n maxInstances: 1,\n parentCommunication: 'explicit',\n },\n },\n]\n\\`\\`\\`\n\nWhen prompt-configured resumable dual_ai subagents exist, the runtime auto-injects:\n- \\`subagent_create\\` for spawning new child instances\n- \\`subagent_message\\` for messaging active resumable instances\n\n\\`subagent_create\\` requires a non-empty \\`name\\` for human-friendly child thread labels.\nAgentBuilder stores that argument as a \\`name:<value>\\` thread tag.\n\nSet \\`immediate: true\\` to run a tool automatically when the prompt activates.\nUse \\`immediate: { nameEnv, descriptionEnv, scopedEnv }\\` when you want safe per-instance bootstrap hints while keeping copied scoped env runtime-only.\nSet \\`optional: 'ENV_NAME'\\` to enable a subagent branch only when env resolves to \\`true\\`, \\`1\\`, or \\`yes\\`.\nSet \\`resumable.parentCommunication: 'explicit'\\` when the child should stay quiet until its own tools or hooks call \\`state.notifyParent()\\` or \\`state.setStatus()\\`.\nIf required scoped vars are missing, the runtime returns \\`error_code: \"subagent_env_required\"\\` with a temporary \\`GET/POST /api/threads/:threadId/variables/:requestId\\` endpoint in \\`error_data.endpoint\\`.\n\n## Input Validation\n\nValidate inputs when prompt is called as a tool:\n\n\\`\\`\\`typescript\nimport { z } from 'zod';\n\nexport default definePrompt({\n name: 'data_extractor',\n toolDescription: 'Extract structured data from text',\n model: 'default',\n prompt: 'Extract the requested data from the input.',\n requiredSchema: z.object({\n text: z.string().describe('Text to extract from'),\n fields: z.array(z.string()).describe('Fields to extract'),\n }),\n});\n\\`\\`\\`\n\n## Extended Thinking (Reasoning)\n\nEnable for complex reasoning tasks:\n\n\\`\\`\\`typescript\nexport default definePrompt({\n name: 'code_reviewer',\n toolDescription: 'Review code for issues',\n model: 'heavy',\n prompt: 'Review the code thoroughly...',\n reasoning: {\n effort: 'high', // 'low' | 'medium' | 'high'\n maxTokens: 16000, // Max thinking tokens\n exclude: true, // Don't include thinking in response\n },\n});\n\\`\\`\\`\n\n**⚠️ Google Models Require Reasoning**: When using Google models (\\`google/gemini-*\\`) via OpenRouter, you **must** include \\`reasoning\\` configuration or tool calls will fail. At minimum:\n\n\\`\\`\\`typescript\nreasoning: {\n effort: 'low', // Can be 'low', 'medium', or 'high'\n},\n\\`\\`\\`\n\n## Hooks\n\nAttach lifecycle hooks to a prompt:\n\n\\`\\`\\`typescript\nexport default definePrompt({\n name: 'customer_support',\n toolDescription: 'Handle customer support',\n model: 'default',\n prompt: 'You are a support agent...',\n hooks: ['limit_to_20', 'redact_pii'], // Hook IDs from agents/hooks/\n});\n\\`\\`\\`\n\nPrompt hooks take precedence over agent hooks. See \\`agents/hooks/CLAUDE.md\\` for details.\n\n## Best Practices\n\n- **Write clear instructions** - Structure with headers and bullet points\n- **Describe tools thoroughly** - LLMs decide based on descriptions\n- **Validate inputs with Zod** - Catch errors early\n- **Use \\`includeChat\\`** for conversational context\n- **Name by purpose**, not model (e.g., \\`support_agent\\` not \\`gpt4_prompt\\`)\n\n## Documentation\n\nFull reference: https://docs.standardagentbuilder.com/api-reference/define/prompt\n`;\n","export const AGENTS_CLAUDE_MD = `# Agent Definitions\n\nAgents orchestrate conversations by defining prompts, stop conditions, and turn limits.\n\n## Agent Properties\n\n| Property | Type | Required | Description |\n|----------|------|----------|-------------|\n| \\`name\\` | \\`string\\` | Yes | Unique identifier for this agent |\n| \\`type\\` | \\`'ai_human' \\\\| 'dual_ai'\\` | No | Conversation type (default: \\`ai_human\\`) |\n| \\`sideA\\` | \\`SideConfig\\` | Yes | Configuration for side A (AI in ai_human) |\n| \\`sideB\\` | \\`SideConfig\\` | No | Configuration for side B (required for dual_ai) |\n| \\`maxSessionTurns\\` | \\`number\\` | No | Max total turns across both sides |\n| \\`exposeAsTool\\` | \\`boolean\\` | No | Allow other prompts to hand off to this agent |\n| \\`toolDescription\\` | \\`string\\` | No | Description when used as tool (required if exposeAsTool) |\n| \\`env\\` | \\`Record<string, string>\\` | No | Agent-level default variable values |\n| \\`hooks\\` | \\`string[]\\` | No | Hook IDs to run for this agent (fallback if prompt has no hooks) |\n| \\`tags\\` | \\`string[]\\` | No | Tags for categorization and filtering |\n\n## Side Configuration\n\n| Property | Type | Required | Description |\n|----------|------|----------|-------------|\n| \\`label\\` | \\`string\\` | No | Display name for this side |\n| \\`prompt\\` | \\`string\\` | Yes | Prompt name to use (references \\`agents/prompts/\\`) |\n| \\`stopOnResponse\\` | \\`boolean\\` | No | Stop turn when LLM returns text (default: true) |\n| \\`stopTool\\` | \\`string\\` | No | Tool that stops this side's turn |\n| \\`stopToolResponseProperty\\` | \\`string\\` | No | Property to extract from stop tool result |\n| \\`maxSteps\\` | \\`number\\` | No | Maximum step budget for this side |\n| \\`sessionStop\\` | \\`string \\\\| SessionToolBinding\\` | No | Terminal success lifecycle binding |\n| \\`sessionFail\\` | \\`string \\\\| SessionToolBinding\\` | No | Terminal failure lifecycle binding |\n| \\`sessionStatus\\` | \\`string \\\\| SessionToolBinding\\` | No | Non-terminal status lifecycle binding |\n| \\`manualStopCondition\\` | \\`boolean\\` | No | Enable custom stop handling via hooks |\n\n## Basic Example (AI-Human)\n\n\\`\\`\\`typescript\nimport { defineAgent } from '@standardagents/builder';\n\nexport default defineAgent({\n name: 'support_agent',\n type: 'ai_human',\n sideA: {\n label: 'Support',\n prompt: 'customer_support',\n stopOnResponse: true,\n sessionStop: 'close_ticket',\n maxSteps: 50,\n },\n tags: ['support', 'tier-1'],\n});\n\\`\\`\\`\n\n## Dual-AI Example\n\nTwo AI agents conversing (e.g., debate, iterative refinement):\n\n\\`\\`\\`typescript\nexport default defineAgent({\n name: 'code_review_debate',\n type: 'dual_ai',\n maxSessionTurns: 20,\n sideA: {\n label: 'Reviewer',\n prompt: 'code_reviewer',\n stopOnResponse: true,\n },\n sideB: {\n label: 'Developer',\n prompt: 'code_defender',\n stopOnResponse: true,\n },\n});\n\\`\\`\\`\n\n## Dual-AI Subagent Pattern\n\nWhen a \\`dual_ai\\` agent is used as a subagent tool, a common split is:\n- **sideA**: performs work (tools, data gathering, execution)\n- **sideB**: reflection, verification, and quality checks\n\n\\`\\`\\`typescript\nexport default defineAgent({\n name: 'research_subagent',\n type: 'dual_ai',\n exposeAsTool: true,\n toolDescription: 'Researches and validates findings autonomously',\n maxSessionTurns: 16,\n sideA: {\n label: 'Worker',\n prompt: 'research_worker',\n sessionStatus: 'set_subagent_status',\n sessionFail: 'fail_research_subagent',\n sessionStop: 'finish_subagent',\n },\n sideB: {\n label: 'Reviewer',\n prompt: 'research_reviewer',\n stopOnResponse: true,\n },\n});\n\\`\\`\\`\n\n## Agent Handoffs\n\nExpose an agent for handoffs from other prompts:\n\n\\`\\`\\`typescript\nexport default defineAgent({\n name: 'escalation_agent',\n type: 'ai_human',\n exposeAsTool: true,\n toolDescription: 'Escalate to senior support for complex issues',\n sideA: {\n prompt: 'senior_support',\n },\n});\n\\`\\`\\`\n\nOther prompts can then include the agent name in their \\`tools\\` array to enable handoffs.\n\n## Stop Conditions (Priority Order)\n\n1. **sessionFail** - Ends entire conversation with a terminal failure\n2. **sessionStop** - Ends entire conversation successfully\n3. **stopTool** - Ends current side's turn\n4. **maxSteps** - Ends side execution when the safety budget is reached\n5. **stopOnResponse** - Ends turn when LLM returns text\n6. **maxSessionTurns** - Ends conversation (hard limit: 250)\n\n## Hooks\n\nAttach lifecycle hooks at the agent level:\n\n\\`\\`\\`typescript\nexport default defineAgent({\n name: 'support_agent',\n type: 'ai_human',\n hooks: ['log_all_messages', 'sanitize_results'],\n sideA: {\n prompt: 'customer_support',\n },\n});\n\\`\\`\\`\n\nAgent hooks run as a fallback when the active prompt has no hooks defined. Prompt hooks always take precedence. See \\`agents/hooks/CLAUDE.md\\` for details.\n\n## Naming Convention\n\nAgent names **must** end with the \\`_agent\\` suffix (e.g., \\`support_agent\\`, \\`research_agent\\`).\nThis convention is enforced by the builder UI and makes agents easily identifiable in logs and code.\n\n## Best Practices\n\n- **Use descriptive names** (\\`customer_support_agent\\` not \\`agent1\\`)\n- **Always use the _agent suffix** - names like \\`support_agent\\`, \\`research_agent\\`\n- **Always set maxSteps or maxSessionTurns** as safety limits\n- **Match stop conditions to use case** - chat apps use stopOnResponse, workflows use stopTool\n- **Use labels** for clarity in logs and UI\n- **Organize with tags** for filtering\n\n## Documentation\n\nFull reference: https://docs.standardagentbuilder.com/api-reference/define/agent\n`;\n","export const TOOLS_CLAUDE_MD = `# Custom Tools\n\nTools extend agent capabilities beyond text generation. They allow LLMs to fetch data, perform calculations, execute side effects, and chain to other prompts or agents.\n\n## Function Signature\n\n\\`\\`\\`typescript\ndefineTool({\n description: string, // What the tool does (shown to LLM)\n args?: z.ZodObject, // Input validation schema (optional)\n execute: (state, args) => ToolResult, // Implementation\n variables?: VariableDefinition[], // Declared variables (optional)\n})\n\\`\\`\\`\n\n## Basic Example\n\n\\`\\`\\`typescript\nimport { defineTool } from '@standardagents/builder';\nimport { z } from 'zod';\n\nexport default defineTool({\n description: 'Search the knowledge base for articles matching a query',\n args: z.object({\n query: z.string().describe('Search query'),\n limit: z.number().optional().default(10).describe('Max results'),\n }),\n execute: async (state, args) => {\n const results = await searchKB(args.query, args.limit);\n return {\n status: 'success',\n result: JSON.stringify(results),\n };\n },\n});\n\\`\\`\\`\n\n## Argument Schemas\n\nTool args must be a top-level \\`z.object(...)\\`. Prefer explicit, bounded schemas made from strings, numbers, booleans, nulls, literals, enums, arrays, objects, optionals, nullables, and defaults. Avoid provider-visible recursive or open-ended schemas such as \\`z.unknown()\\`, \\`z.any()\\`, and \\`z.object({}).catchall(...)\\`; strict tool providers can reject the generated JSON Schema. If a tool needs arbitrary JSON input, accept it as a JSON string and parse it inside \\`execute\\`.\n\n## ToolResult Interface\n\n| Property | Type | Description |\n|----------|------|-------------|\n| \\`status\\` | \\`'success' \\\\| 'error'\\` | Whether the tool succeeded |\n| \\`result\\` | \\`string\\` | Tool output (required for success) |\n| \\`error\\` | \\`string\\` | Error message (for error status) |\n| \\`error_code\\` | \\`string\\` | Machine-readable error code |\n| \\`error_data\\` | \\`Record<string, unknown>\\` | Structured error payload |\n| \\`attachments\\` | \\`ToolAttachment[]\\` | Files to attach (images, etc.) |\n\n## ThreadState Access\n\nThe \\`state\\` parameter provides access to:\n\n\\`\\`\\`typescript\nexecute: async (state, args) => {\n // Thread information\n const threadId = state.thread.id;\n const thread = state.thread.instance;\n\n // Configuration\n const agentName = state.agent.name;\n const modelName = state.model.name;\n\n // Message history\n const messages = state.messages;\n\n // Thread variable resolution\n const apiKey = await state.env('GOOGLE_API_KEY');\n await state.setEnv('LAST_TOOL_RUN_AT', new Date().toISOString());\n\n // Durable per-thread JSON values\n const runCount = (await state.getValue<number>('run_count')) ?? 0;\n await state.setValue('run_count', runCount + 1);\n\n // Sandboxed JS/TS execution with explicit bridge capabilities\n const run = state.runCode('export async function main(path) { return await read(path) }', {\n execute: { fn: 'main', args: ['/notes.txt'] },\n globals: {\n read: async (path: string) => {\n const data = await state.readFile(path);\n return data ? new TextDecoder().decode(data) : null;\n },\n },\n });\n const codeResult = await run;\n\n // Parent state (for sub-prompts)\n const root = state.rootState;\n}\n\\`\\`\\`\n\nUse \\`state.runCode()\\` instead of \\`eval\\` or \\`new Function\\` for model- or user-authored JavaScript/TypeScript. The sandbox starts with no ambient host capabilities; provide imports/globals explicitly, use \\`modules\\` for local relative ES modules, use \\`execute\\` to select an export and pass args, use \\`report\\` for streamed observations, and call \\`run.terminate(reason)\\` from your own timeout budget when needed. \\`modules\\` keys are graph-root relative paths; entry-source imports resolve from \\`options.filename\\` when supplied. Relative module imports may use \\`./\\` and \\`../\\` as long as they resolve within the supplied module graph. In thread endpoints, \\`runCode\\` is forwarded into the thread Durable Object; pass plain transferable option values there, and do function-backed bridges from tools or in-thread execution contexts.\n\n## Tool Without Arguments\n\n\\`\\`\\`typescript\nexport default defineTool({\n description: 'Get current server time',\n execute: async (state) => {\n return {\n status: 'success',\n result: new Date().toISOString(),\n };\n },\n});\n\\`\\`\\`\n\n## Error Handling\n\nReturn errors gracefully instead of throwing:\n\n\\`\\`\\`typescript\nexport default defineTool({\n description: 'Fetch user data',\n args: z.object({ userId: z.string() }),\n execute: async (state, args) => {\n try {\n const user = await fetchUser(args.userId);\n return { status: 'success', result: JSON.stringify(user) };\n } catch (error) {\n return {\n status: 'error',\n error: \\`Failed to fetch user: \\${error.message}\\`,\n };\n }\n },\n});\n\\`\\`\\`\n\n## Queueing Additional Tools\n\nQueue another tool to run after the current one:\n\n\\`\\`\\`typescript\nimport { queueTool } from '@standardagents/builder';\n\nexport default defineTool({\n description: 'Create order and send confirmation',\n args: z.object({ items: z.array(z.string()) }),\n execute: async (state, args) => {\n const order = await createOrder(args.items);\n\n // Queue email tool to run next\n queueTool(state, 'send_confirmation_email', {\n orderId: order.id,\n email: state.thread.metadata.userEmail,\n });\n\n return { status: 'success', result: JSON.stringify(order) };\n },\n});\n\\`\\`\\`\n\n## Injecting Messages\n\nAdd messages without triggering re-execution:\n\n\\`\\`\\`typescript\nimport { injectMessage } from '@standardagents/builder';\n\nexport default defineTool({\n description: 'Log audit event',\n args: z.object({ event: z.string() }),\n execute: async (state, args) => {\n await injectMessage(state, {\n role: 'system',\n content: \\`[AUDIT] \\${args.event}\\`,\n });\n return { status: 'success', result: 'Logged' };\n },\n});\n\\`\\`\\`\n\n## Variables and Env\n\nTools can declare variable requirements with \\`variables\\`, including \\`required\\` and \\`description\\` metadata:\n\n\\`\\`\\`typescript\nexport default defineTool({\n description: 'Search uploaded documents',\n args: z.object({ query: z.string() }),\n execute: async (state, args) => {\n const vectorStoreId = await state.env('VECTOR_STORE_ID');\n const results = await searchVectorStore(vectorStoreId, args.query);\n return { status: 'success', result: JSON.stringify(results) };\n },\n variables: [\n {\n name: 'VECTOR_STORE_ID',\n type: 'text',\n required: true,\n scoped: false,\n description: 'OpenAI Vector Store ID',\n },\n ],\n});\n\\`\\`\\`\n\nUse \\`scoped: true\\` for per-instance values that should not inherit from parent thread env (for example per-account OAuth tokens on subagents).\n\n## Returning Attachments\n\nTools can return file attachments (e.g., generated images):\n\n\\`\\`\\`typescript\nexport default defineTool({\n description: 'Generate a chart from data',\n args: z.object({ data: z.array(z.number()) }),\n execute: async (state, args) => {\n const chartImage = await generateChart(args.data);\n return {\n status: 'success',\n result: 'Chart generated successfully',\n attachments: [{\n name: 'chart.png',\n mimeType: 'image/png',\n data: chartImage.base64,\n width: 800,\n height: 600,\n }],\n };\n },\n});\n\\`\\`\\`\n\n## Best Practices\n\n- **Write clear descriptions** - LLMs decide tool usage based on descriptions\n- **Describe all parameters** with \\`.describe()\\` in Zod schemas\n- **Handle errors gracefully** - return error status, don't throw\n- **Use snake_case** for file names (\\`search_knowledge_base.ts\\`)\n- **Keep tools focused** - one task per tool\n- **Use \\`state.rootState\\`** when queueing from sub-prompts\n\n## Supported Zod Types\n\n- Primitives: \\`string\\`, \\`number\\`, \\`boolean\\`, \\`null\\`\n- Enums: \\`z.enum(['a', 'b', 'c'])\\`\n- Arrays: \\`z.array(z.string())\\`\n- Objects: \\`z.object({ ... })\\`\n- Optional: \\`z.string().optional()\\`\n- Default: \\`z.number().default(10)\\`\n- Nullable: \\`z.string().nullable()\\`\n\n## Documentation\n\nFull reference: https://docs.standardagentbuilder.com/api-reference/define/tool\n`;\n","export const HOOKS_CLAUDE_MD = `# Lifecycle Hooks\n\nHooks intercept and modify agent execution at specific lifecycle points.\n\n## Available Hooks\n\n| Hook | Signature | Purpose |\n|------|-----------|---------|\n| \\`after_thread_created\\` | \\`(state: ThreadState) => void\\` | Initialize a newly created thread before execution |\n| \\`after_subagent_created\\` | \\`(state: ThreadState, childState: ThreadState) => void\\` | Run parent-side logic after a child thread is created |\n| \\`after_system_message\\` | \\`(state: ThreadState, systemMessage: string) => string \\\\| null \\\\| undefined\\` | Modify the rendered system message for a request |\n| \\`filter_messages\\` | \\`(state: ThreadState, messages: Message[]) => Message[]\\` | Filter raw messages before LLM context |\n| \\`prefilter_llm_history\\` | \\`(state: ThreadState, messages: LLMMessage[]) => LLMMessage[]\\` | Modify chat completion messages before LLM |\n| \\`before_create_message\\` | \\`(state: ThreadState, message: Message) => Message\\` | Modify message before database insert |\n| \\`after_create_message\\` | \\`(state: ThreadState, message: Message) => void\\` | Run logic after message created |\n| \\`before_update_message\\` | \\`(state: ThreadState, id: string, updates: Record) => Record\\` | Modify updates before message update |\n| \\`after_update_message\\` | \\`(state: ThreadState, message: Message) => void\\` | Run logic after message updated |\n| \\`before_store_tool_result\\` | \\`(state: ThreadState, toolCall: HookToolCall, result: HookToolResult) => HookToolResult\\` | Modify tool result before storage |\n| \\`after_tool_call_success\\` | \\`(state: ThreadState, toolCall: HookToolCall, result: HookToolResult) => HookToolResult \\\\| null\\` | Process successful tool execution |\n| \\`after_tool_call_failure\\` | \\`(state: ThreadState, toolCall: HookToolCall, result: HookToolResult) => HookToolResult \\\\| null\\` | Process failed tool execution |\n\nAll hooks receive \\`ThreadState\\` as their first parameter, providing access to thread identity, message history, resource loading, durable per-thread values via \\`getValue\\` / \\`setValue\\`, and sandboxed JS/TS execution via \\`runCode\\`.\n\n## Creating a Hook\n\nEach hook file exports a default \\`defineHook\\` call with three properties:\n\n\\`\\`\\`typescript\nimport { defineHook } from '@standardagents/builder';\n\nexport default defineHook({\n hook: 'filter_messages', // Hook type\n id: 'limit_recent_messages', // Unique ID (snake_case)\n execute: async (state, messages) => {\n return messages.slice(-20);\n }\n});\n\\`\\`\\`\n\n## Hook Scoping\n\nHooks are scoped to **prompts** or **agents** via their ID:\n\n\\`\\`\\`typescript\n// In a prompt definition\ndefinePrompt({\n name: 'customer_support',\n hooks: ['limit_recent_messages', 'redact_pii'],\n // ...\n});\n\n// In an agent definition\ndefineAgent({\n name: 'support_agent',\n hooks: ['log_all_messages'],\n // ...\n});\n\\`\\`\\`\n\n- **Prompt hooks** take precedence over agent hooks\n- If a prompt defines hooks, only those run (agent hooks are skipped)\n- If no prompt hooks are defined, agent hooks run as fallback\n- Hooks are filtered by type at runtime\n\n## File Naming\n\nHook files can use **any name** — the hook type and ID are defined inside the file:\n\n\\`\\`\\`\nagents/hooks/\n├── my_filter.ts # Could contain any hook type\n├── redact_sensitive_data.ts\n├── log_tool_usage.ts\n└── add_metadata.ts\n\\`\\`\\`\n\n## Examples\n\n### Filter Messages (Limit Context)\n\n\\`\\`\\`typescript\nimport { defineHook } from '@standardagents/builder';\n\nexport default defineHook({\n hook: 'filter_messages',\n id: 'limit_to_20',\n execute: async (state, messages) => {\n return messages.slice(-20);\n }\n});\n\\`\\`\\`\n\n### Prefilter LLM History (Redact Content)\n\n\\`\\`\\`typescript\nimport { defineHook } from '@standardagents/builder';\n\nexport default defineHook({\n hook: 'prefilter_llm_history',\n id: 'redact_pii',\n execute: async (state, messages) => {\n return messages.map(msg => ({\n ...msg,\n content: typeof msg.content === 'string'\n ? msg.content.replace(/\\\\b\\\\d{4}-\\\\d{4}-\\\\d{4}-\\\\d{4}\\\\b/g, '[REDACTED]')\n : msg.content,\n }));\n }\n});\n\\`\\`\\`\n\n### Before Create Message (Add Metadata)\n\n\\`\\`\\`typescript\nimport { defineHook } from '@standardagents/builder';\n\nexport default defineHook({\n hook: 'before_create_message',\n id: 'add_version_metadata',\n execute: async (state, message) => {\n if (message.role === 'user' && message.content) {\n return { ...message, content: \\`[v1.0] \\${message.content}\\` };\n }\n return message;\n }\n});\n\\`\\`\\`\n\n### Before Store Tool Result (Sanitize)\n\n\\`\\`\\`typescript\nimport { defineHook } from '@standardagents/builder';\n\nexport default defineHook({\n hook: 'before_store_tool_result',\n id: 'sanitize_results',\n execute: async (state, toolCall, toolResult) => {\n // toolCall: { id, type: 'function', function: { name, arguments } }\n // toolResult: { status, result?, error?, stack?, attachments? }\n if (toolResult.result) {\n return { ...toolResult, result: toolResult.result.replace(/secret/gi, '[REDACTED]') };\n }\n return toolResult;\n }\n});\n\\`\\`\\`\n\n### After Tool Call Success (Logging)\n\n\\`\\`\\`typescript\nimport { defineHook } from '@standardagents/builder';\n\nexport default defineHook({\n hook: 'after_tool_call_success',\n id: 'log_tool_success',\n execute: async (state, toolCall, result) => {\n console.log(\\`Tool \\${toolCall.function.name} succeeded\\`);\n return null; // Return null to use original result\n }\n});\n\\`\\`\\`\n\n### After Tool Call Failure (Recovery)\n\n\\`\\`\\`typescript\nimport { defineHook } from '@standardagents/builder';\n\nexport default defineHook({\n hook: 'after_tool_call_failure',\n id: 'weather_fallback',\n execute: async (state, toolCall, result) => {\n if (toolCall.function.name === 'fetch_weather') {\n return {\n status: 'success',\n result: JSON.stringify({ temp: 'unavailable', fallback: true }),\n };\n }\n return null; // Use original error for other tools\n }\n});\n\\`\\`\\`\n\n## Hook Categories\n\n**Transformation hooks** (return modified data):\n- \\`after_system_message\\` (return replacement string, or null/undefined for no change)\n- \\`filter_messages\\`\n- \\`prefilter_llm_history\\`\n- \\`before_create_message\\`\n- \\`before_update_message\\`\n- \\`before_store_tool_result\\`\n- \\`after_tool_call_success\\` (return modified result or null)\n- \\`after_tool_call_failure\\` (return modified result or null)\n\n**Event hooks** (side effects only):\n- \\`after_thread_created\\`\n- \\`after_subagent_created\\`\n- \\`after_create_message\\`\n- \\`after_update_message\\`\n\n## Best Practices\n\n- **Keep hooks fast** - target <100ms execution\n- **Wrap in try-catch** - hooks continue on error (original data preserved)\n- **Use unique IDs** - hook IDs must be snake_case and unique across the project\n- **Scope appropriately** - assign hooks to prompts or agents that need them\n- **Document purpose** with clear comments\n- **Use for cross-cutting concerns** - logging, redaction, enrichment\n\n## Documentation\n\nFull reference: https://docs.standardagentbuilder.com/api-reference/define/hook\n`;\n","export const API_CLAUDE_MD = `# Thread-Specific API Endpoints\n\nDefine custom API endpoints that operate on specific threads with access to the thread's ThreadState.\n\n## File-Based Routing\n\n| File Pattern | HTTP Method | Route |\n|--------------|-------------|-------|\n| \\`name.ts\\` | GET | \\`/api/threads/:threadId/name\\` |\n| \\`name.get.ts\\` | GET | \\`/api/threads/:threadId/name\\` |\n| \\`name.post.ts\\` | POST | \\`/api/threads/:threadId/name\\` |\n| \\`name.put.ts\\` | PUT | \\`/api/threads/:threadId/name\\` |\n| \\`name.delete.ts\\` | DELETE | \\`/api/threads/:threadId/name\\` |\n| \\`index.ts\\` | GET | \\`/api/threads/:threadId\\` |\n| \\`nested/route.ts\\` | GET | \\`/api/threads/:threadId/nested/route\\` |\n| \\`items/[id].ts\\` | GET | \\`/api/threads/:threadId/items/:id\\` |\n| \\`files/[*].ts\\` | GET | \\`/api/threads/:threadId/files/*\\` |\n\nFiles without a method suffix default to GET. Method suffixes are case-insensitive and support \\`.get.ts\\`, \\`.post.ts\\`, \\`.put.ts\\`, \\`.patch.ts\\`, and \\`.delete.ts\\`.\n\nDynamic segments use \\`[name]\\` and are passed to the handler as \\`params.name\\`. Catch-all segments use \\`[*]\\` and are passed as \\`params['*']\\`; the catch-all value may contain \\`/\\` for nested paths. Static routes match before dynamic routes, and dynamic routes match before catch-all routes.\n\n## Basic Example\n\n\\`\\`\\`typescript\n// agents/api/status.get.ts -> GET /api/threads/:threadId/status\nimport { defineThreadEndpoint } from '@standardagents/spec';\n\nexport default defineThreadEndpoint(async (req, state, params) => {\n const { messages, total } = await state.getMessages();\n return Response.json({\n threadId: state.threadId,\n messageCount: total,\n status: 'active',\n params,\n });\n});\n\\`\\`\\`\n\n## Handler Parameters\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| \\`req\\` | \\`Request\\` | The incoming HTTP request |\n| \\`state\\` | \\`ThreadState\\` | Thread state with messages, identity, file system, \\`runCode\\`, etc. |\n| \\`params\\` | \\`Record<string, string>\\` | Route parameters captured from \\`[name]\\` and \\`[*]\\` path segments |\n\nNote: \\`state.execution\\` is always \\`null\\` in endpoints since the thread is at rest. \\`state.runCode()\\` is available from endpoints and is forwarded into the thread runtime; pass plain transferable option values there, and do function-backed sandbox bridges from tools or in-thread execution contexts.\n\n## ThreadState Methods\n\nAccess thread data through the state object:\n\n\\`\\`\\`typescript\nimport { defineThreadEndpoint } from '@standardagents/spec';\n\nexport default defineThreadEndpoint(async (req, state) => {\n // Thread identity\n console.log('Thread ID:', state.threadId);\n console.log('Agent ID:', state.agentId);\n console.log('User ID:', state.userId);\n\n // Message operations\n const { messages, total, hasMore } = await state.getMessages({\n limit: 100,\n offset: 0,\n order: 'desc',\n });\n\n // Thread env (thread scope + active descendants)\n const approvalGate = await state.env('TOPDOWN_APPROVAL_GATE');\n await state.setEnv('TOPDOWN_APPROVAL_GATE', approvalGate || 'open');\n\n // Durable per-thread JSON values\n const exports = (await state.getValue<number>('export_count')) ?? 0;\n await state.setValue('export_count', exports + 1);\n\n // File system operations\n const files = await state.findFiles('**/*.json');\n const data = await state.readFile('/data/config.json');\n\n // Resource loading\n const agent = await state.loadAgent('my-agent');\n const prompt = await state.loadPrompt('my-prompt');\n\n return Response.json({ messages, total });\n});\n\\`\\`\\`\n\n## POST with Request Body\n\n\\`\\`\\`typescript\n// agents/api/export.post.ts -> POST /api/threads/:threadId/export\nimport { defineThreadEndpoint } from '@standardagents/spec';\n\nexport default defineThreadEndpoint(async (req, state) => {\n const body = await req.json();\n const { format = 'json' } = body;\n\n const { messages } = await state.getMessages();\n\n if (format === 'csv') {\n const csv = messages.map(m => \\`\\${m.role},\\${m.content}\\`).join('\\\\n');\n return new Response(csv, {\n headers: { 'Content-Type': 'text/csv' },\n });\n }\n\n return Response.json(messages);\n});\n\\`\\`\\`\n\n## Nested Routes\n\nCreate directories for nested routes:\n\n\\`\\`\\`\nagents/api/\n├── status.get.ts -> GET /api/threads/:threadId/status\n├── export.post.ts -> POST /api/threads/:threadId/export\n└── messages/\n ├── count.ts -> GET /api/threads/:threadId/messages/count\n ├── [id].ts -> GET /api/threads/:threadId/messages/:id\n └── [*].ts -> GET /api/threads/:threadId/messages/*\n\\`\\`\\`\n\n## Error Handling\n\n\\`\\`\\`typescript\nimport { defineThreadEndpoint } from '@standardagents/spec';\n\nexport default defineThreadEndpoint(async (req, state) => {\n try {\n const data = await riskyOperation();\n return Response.json(data);\n } catch (error) {\n return Response.json({ error: error.message }, { status: 500 });\n }\n});\n\\`\\`\\`\n\n## File System Operations\n\n\\`\\`\\`typescript\nimport { defineThreadEndpoint } from '@standardagents/spec';\n\nexport default defineThreadEndpoint(async (req, state) => {\n // Read files\n const content = await state.readFile('/data/file.txt');\n\n // Write files\n await state.writeFile('/output/result.json', JSON.stringify(data), 'application/json');\n\n // List directory\n const { entries } = await state.readdirFile('/data');\n\n // Search files\n const matches = await state.grepFiles('pattern');\n const paths = await state.findFiles('**/*.ts');\n\n return Response.json({ success: true });\n});\n\\`\\`\\`\n\n## Best Practices\n\n- **Keep handlers fast** - endpoints are in the request path\n- **Paginate large queries** - use limit/offset for messages\n- **Validate input data** - check request body before processing\n- **Use descriptive file names** - \\`export.post.ts\\` not \\`ep1.ts\\`\n- **Return proper status codes** - 200, 400, 404, 500\n- **Import from spec** - use \\`@standardagents/spec\\` for \\`defineThreadEndpoint\\`\n\n## Documentation\n\nFull reference: https://docs.standardagentbuilder.com/core-concepts/api\n`;\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { parse, modify, applyEdits } from 'jsonc-parser';\nimport { loadFile, writeFile, generateCode, parseModule, builders } from 'magicast';\nimport { addVitePlugin } from 'magicast/helpers';\nimport { logger } from '../utils/logger.js';\nimport {\n ROOT_CLAUDE_MD,\n MODELS_CLAUDE_MD,\n PROMPTS_CLAUDE_MD,\n AGENTS_CLAUDE_MD,\n TOOLS_CLAUDE_MD,\n HOOKS_CLAUDE_MD,\n API_CLAUDE_MD,\n} from '../templates/index.js';\n\ninterface ScaffoldOptions {\n force?: boolean;\n}\n\ndeclare const __SCAFFOLD_COMPATIBILITY_DATE__: string;\n\nfunction getScaffoldCompatibilityDate(): string {\n return __SCAFFOLD_COMPATIBILITY_DATE__;\n}\n\n// Template for wrangler.jsonc\nconst WRANGLER_TEMPLATE = (name: string) => {\n return `{\n \"$schema\": \"node_modules/wrangler/config-schema.json\",\n \"name\": \"${name}\",\n \"main\": \"worker/index.ts\",\n \"compatibility_date\": \"${getScaffoldCompatibilityDate()}\",\n \"compatibility_flags\": [\"nodejs_compat\", \"enable_ctx_exports\"],\n \"observability\": {\n \"enabled\": true\n },\n \"worker_loaders\": [\n {\n \"binding\": \"AGENT_BUILDER_CODE_LOADER\"\n }\n ],\n \"vars\": {\n \"AGENT_BUILDER_CODE_COMPATIBILITY_DATE\": \"${getScaffoldCompatibilityDate()}\"\n },\n \"assets\": {\n \"directory\": \"dist/client\",\n \"not_found_handling\": \"single-page-application\",\n \"binding\": \"ASSETS\",\n \"run_worker_first\": [\"/**\"]\n },\n \"durable_objects\": {\n \"bindings\": [\n {\n \"name\": \"AGENT_BUILDER_THREAD\",\n \"class_name\": \"DurableThread\"\n },\n {\n \"name\": \"AGENT_BUILDER\",\n \"class_name\": \"DurableAgentBuilder\"\n }\n ]\n },\n \"migrations\": [\n {\n \"tag\": \"v1\",\n \"new_sqlite_classes\": [\"DurableThread\"]\n },\n {\n \"tag\": \"v2\",\n \"new_sqlite_classes\": [\"DurableAgentBuilder\"]\n }\n ]\n}\n`;\n};\n\n// Templates for Durable Object files\nconst THREAD_TS = `import { DurableThread } from 'virtual:@standardagents/builder'\n\nexport default class Thread extends DurableThread {}\n`;\n\nconst AGENT_BUILDER_TS = `import { DurableAgentBuilder } from 'virtual:@standardagents/builder'\n\nexport default class AgentBuilder extends DurableAgentBuilder {}\n`;\n\n// Worker entry point template\nconst WORKER_INDEX = `import { router, CodeExecutionBridge } from \"virtual:@standardagents/builder\"\nimport DurableThread from '../agents/Thread';\nimport DurableAgentBuilder from '../agents/AgentBuilder';\n\nexport default {\n async fetch(request, env) {\n const res = await router(request, env)\n return res ?? new Response(null, { status: 404 })\n },\n} satisfies ExportedHandler<Env>\n\nexport { DurableThread, DurableAgentBuilder, CodeExecutionBridge }\n`;\n\n// Utility functions\nfunction getProjectName(cwd: string): string {\n const packageJsonPath = path.join(cwd, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n if (pkg.name) {\n return pkg.name.replace(/^@[^/]+\\//, ''); // Remove scope if present\n }\n } catch {\n // Ignore parse errors\n }\n }\n return path.basename(cwd);\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 findWranglerConfig(cwd: string): string | null {\n const candidates = ['wrangler.jsonc', 'wrangler.json'];\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\nasync function modifyViteConfig(configPath: string, force: boolean): Promise<boolean> {\n try {\n const mod = await loadFile(configPath);\n\n // Check if plugins already include our plugins\n const code = fs.readFileSync(configPath, 'utf-8');\n const hasCloudflare = code.includes('@cloudflare/vite-plugin') || code.includes('cloudflare()');\n const hasAgentBuilder = code.includes('@standardagents/builder') || code.includes('agentbuilder()');\n\n if (hasCloudflare && hasAgentBuilder && !force) {\n logger.info('Vite config already includes Standard Agents plugins');\n return true;\n }\n\n // Add agentbuilder plugin if not present (must come before cloudflare)\n if (!hasAgentBuilder || force) {\n addVitePlugin(mod, {\n from: '@standardagents/builder',\n imported: 'agentbuilder',\n constructor: 'agentbuilder',\n options: { mountPoint: '/' },\n });\n logger.success('Added agentbuilder plugin to vite.config');\n }\n\n // Add cloudflare plugin if not present\n if (!hasCloudflare || force) {\n addVitePlugin(mod, {\n from: '@cloudflare/vite-plugin',\n imported: 'cloudflare',\n constructor: 'cloudflare',\n });\n logger.success('Added cloudflare 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 { agentbuilder } from '@standardagents/builder'`);\n logger.log(` import { cloudflare } from '@cloudflare/vite-plugin'`);\n logger.log('');\n logger.log(` plugins: [agentbuilder({ mountPoint: '/' }), cloudflare()]`);\n logger.log('');\n return false;\n }\n}\n\nfunction createOrUpdateWranglerConfig(cwd: string, projectName: string, force: boolean): boolean {\n const existingConfig = findWranglerConfig(cwd);\n\n if (existingConfig && !force) {\n // Update existing config\n try {\n const text = fs.readFileSync(existingConfig, 'utf-8');\n const config = parse(text);\n\n // Check if already configured\n const hasBindings = config.durable_objects?.bindings?.some(\n (b: any) => b.name === 'AGENT_BUILDER_THREAD' || b.name === 'AGENT_BUILDER'\n );\n const hasCodeLoader = config.worker_loaders?.some(\n (loader: any) => loader.binding === 'AGENT_BUILDER_CODE_LOADER'\n );\n const hasCodeCompatibilityDate =\n config.vars?.AGENT_BUILDER_CODE_COMPATIBILITY_DATE === getScaffoldCompatibilityDate();\n const hasCtxExportsFlag = Array.isArray(config.compatibility_flags)\n ? config.compatibility_flags.includes('enable_ctx_exports')\n : false;\n\n if (hasBindings && hasCodeLoader && hasCodeCompatibilityDate && hasCtxExportsFlag) {\n logger.info('wrangler.jsonc already configured for Standard Agents');\n return true;\n }\n\n // Add bindings to existing config\n let result = text;\n\n if (!hasCodeLoader) {\n const loaders = [...(config.worker_loaders || []), { binding: 'AGENT_BUILDER_CODE_LOADER' }];\n const edits = modify(result, ['worker_loaders'], loaders, {});\n result = applyEdits(result, edits);\n }\n\n if (!hasCodeCompatibilityDate) {\n const vars = {\n ...(config.vars || {}),\n AGENT_BUILDER_CODE_COMPATIBILITY_DATE: getScaffoldCompatibilityDate(),\n };\n const edits = modify(result, ['vars'], vars, {});\n result = applyEdits(result, edits);\n }\n\n if (!hasCtxExportsFlag) {\n const flags = Array.isArray(config.compatibility_flags)\n ? [...config.compatibility_flags, 'enable_ctx_exports']\n : ['nodejs_compat', 'enable_ctx_exports'];\n const edits = modify(result, ['compatibility_flags'], flags, {});\n result = applyEdits(result, edits);\n }\n\n // Add durable_objects if not present\n if (!config.durable_objects) {\n const edits = modify(result, ['durable_objects'], {\n bindings: [\n { name: 'AGENT_BUILDER_THREAD', class_name: 'DurableThread' },\n { name: 'AGENT_BUILDER', class_name: 'DurableAgentBuilder' }\n ]\n }, {});\n result = applyEdits(result, edits);\n } else {\n // Add to existing bindings\n const bindings = config.durable_objects.bindings || [];\n if (!bindings.some((b: any) => b.name === 'AGENT_BUILDER_THREAD')) {\n bindings.push({ name: 'AGENT_BUILDER_THREAD', class_name: 'DurableThread' });\n }\n if (!bindings.some((b: any) => b.name === 'AGENT_BUILDER')) {\n bindings.push({ name: 'AGENT_BUILDER', class_name: 'DurableAgentBuilder' });\n }\n const edits = modify(result, ['durable_objects', 'bindings'], bindings, {});\n result = applyEdits(result, edits);\n }\n\n // Add migrations if not present\n if (!config.migrations) {\n const edits = modify(result, ['migrations'], [\n { tag: 'v1', new_sqlite_classes: ['DurableThread'] },\n { tag: 'v2', new_sqlite_classes: ['DurableAgentBuilder'] }\n ], {});\n result = applyEdits(result, edits);\n }\n\n // Update main entry point if needed\n if (!config.main || !config.main.includes('worker')) {\n const edits = modify(result, ['main'], 'worker/index.ts', {});\n result = applyEdits(result, edits);\n }\n\n // Add assets configuration if not present\n if (!config.assets) {\n const edits = modify(result, ['assets'], {\n directory: 'dist/client',\n not_found_handling: 'single-page-application',\n binding: 'ASSETS',\n run_worker_first: ['/**']\n }, {});\n result = applyEdits(result, edits);\n }\n\n fs.writeFileSync(existingConfig, result, 'utf-8');\n logger.success('Updated wrangler.jsonc with Standard Agents configuration');\n return true;\n } catch (error) {\n logger.warning(`Could not update wrangler config: ${error}`);\n return false;\n }\n }\n\n // Create new wrangler.jsonc\n const wranglerPath = path.join(cwd, 'wrangler.jsonc');\n const sanitizedName = projectName.toLowerCase().replace(/[^a-z0-9-]/g, '-');\n fs.writeFileSync(wranglerPath, WRANGLER_TEMPLATE(sanitizedName), 'utf-8');\n logger.success('Created wrangler.jsonc');\n return true;\n}\n\nfunction getWorkerEntryPoint(cwd: string): string {\n // Check wrangler config for main entry\n const wranglerConfig = findWranglerConfig(cwd);\n if (wranglerConfig) {\n try {\n const text = fs.readFileSync(wranglerConfig, 'utf-8');\n const config = parse(text);\n if (config.main) {\n return path.join(cwd, config.main);\n }\n } catch {\n // Ignore parse errors\n }\n }\n\n // Default to worker/index.ts\n return path.join(cwd, 'worker', 'index.ts');\n}\n\nasync function createOrUpdateWorkerEntry(cwd: string, force: boolean): Promise<boolean> {\n const entryPath = getWorkerEntryPoint(cwd);\n const entryDir = path.dirname(entryPath);\n\n // Create worker directory if needed\n if (!fs.existsSync(entryDir)) {\n fs.mkdirSync(entryDir, { recursive: true });\n logger.success(`Created ${path.relative(cwd, entryDir)} directory`);\n }\n\n // If file doesn't exist, create it\n if (!fs.existsSync(entryPath)) {\n fs.writeFileSync(entryPath, WORKER_INDEX, 'utf-8');\n logger.success(`Created ${path.relative(cwd, entryPath)}`);\n return true;\n }\n\n // File exists - try to modify it\n const content = fs.readFileSync(entryPath, 'utf-8');\n\n // Check if already configured\n const hasRouter = content.includes('virtual:@standardagents/builder') && content.includes('router');\n const hasDurableExports = content.includes('DurableThread') && content.includes('DurableAgentBuilder');\n const hasCodeBridge = content.includes('CodeExecutionBridge');\n\n if (hasRouter && hasDurableExports && hasCodeBridge && !force) {\n logger.info(`${path.relative(cwd, entryPath)} already configured`);\n return true;\n }\n\n if (hasRouter && hasDurableExports && !hasCodeBridge && !force) {\n fs.writeFileSync(\n entryPath,\n `${content.trimEnd()}\\n\\nexport { CodeExecutionBridge } from \"virtual:@standardagents/builder\"\\n`,\n 'utf-8',\n );\n logger.success(`Updated ${path.relative(cwd, entryPath)} with CodeExecutionBridge export`);\n return true;\n }\n\n try {\n const mod = await loadFile(entryPath);\n\n // Add imports\n if (!content.includes('virtual:@standardagents/builder') || force) {\n mod.imports.$add({\n from: 'virtual:@standardagents/builder',\n imported: 'router',\n local: 'router',\n });\n }\n\n if (!content.includes(\"'../agents/Thread'\") || force) {\n mod.imports.$add({\n from: '../agents/Thread',\n imported: 'default',\n local: 'DurableThread',\n });\n }\n\n if (!content.includes(\"'../agents/AgentBuilder'\") || force) {\n mod.imports.$add({\n from: '../agents/AgentBuilder',\n imported: 'default',\n local: 'DurableAgentBuilder',\n });\n }\n\n // Check if there's a default export with fetch\n const { code } = generateCode(mod);\n\n // If we can't easily add the router, just overwrite\n if (force || !hasRouter) {\n fs.writeFileSync(entryPath, WORKER_INDEX, 'utf-8');\n logger.success(`Updated ${path.relative(cwd, entryPath)} with Standard Agents router`);\n }\n\n return true;\n } catch (error) {\n // Fall back to template\n if (force) {\n fs.writeFileSync(entryPath, WORKER_INDEX, 'utf-8');\n logger.success(`Created ${path.relative(cwd, entryPath)}`);\n return true;\n }\n\n logger.warning(`Could not automatically modify ${path.relative(cwd, entryPath)}`);\n logger.log('');\n logger.log('Please ensure your worker entry point includes:');\n logger.log('');\n logger.log(` import { router } from \"virtual:@standardagents/builder\"`);\n logger.log(` import DurableThread from '../agents/Thread';`);\n logger.log(` import DurableAgentBuilder from '../agents/AgentBuilder';`);\n logger.log('');\n logger.log(' // In your fetch handler:');\n logger.log(' const res = router(request, env)');\n logger.log(' if (res) return res');\n logger.log('');\n logger.log(' // Export Durable Objects:');\n logger.log(' export { DurableThread, DurableAgentBuilder }');\n logger.log(' export { CodeExecutionBridge } from \"virtual:@standardagents/builder\"');\n logger.log('');\n return false;\n }\n}\n\nfunction createDurableObjects(cwd: string): void {\n const agentsDir = path.join(cwd, 'agents');\n\n if (!fs.existsSync(agentsDir)) {\n fs.mkdirSync(agentsDir, { recursive: true });\n }\n\n // Create Thread.ts\n const threadPath = path.join(agentsDir, 'Thread.ts');\n if (!fs.existsSync(threadPath)) {\n fs.writeFileSync(threadPath, THREAD_TS, 'utf-8');\n logger.success('Created agents/Thread.ts');\n } else {\n logger.info('agents/Thread.ts already exists');\n }\n\n // Create AgentBuilder.ts\n const agentBuilderPath = path.join(agentsDir, 'AgentBuilder.ts');\n if (!fs.existsSync(agentBuilderPath)) {\n fs.writeFileSync(agentBuilderPath, AGENT_BUILDER_TS, 'utf-8');\n logger.success('Created agents/AgentBuilder.ts');\n } else {\n logger.info('agents/AgentBuilder.ts already exists');\n }\n}\n\nfunction createDirectoriesAndDocs(cwd: string): void {\n const agentsDir = path.join(cwd, 'agents');\n\n // Create project root CLAUDE.md (for AI assistants to understand the project)\n const rootDocPath = path.join(cwd, 'CLAUDE.md');\n if (!fs.existsSync(rootDocPath)) {\n fs.writeFileSync(rootDocPath, ROOT_CLAUDE_MD, 'utf-8');\n logger.success('Created CLAUDE.md');\n }\n\n // Create subdirectories with their CLAUDE.md files\n const directories = [\n { path: 'agents/agents', doc: AGENTS_CLAUDE_MD },\n { path: 'agents/prompts', doc: PROMPTS_CLAUDE_MD },\n { path: 'agents/models', doc: MODELS_CLAUDE_MD },\n { path: 'agents/tools', doc: TOOLS_CLAUDE_MD },\n { path: 'agents/hooks', doc: HOOKS_CLAUDE_MD },\n { path: 'agents/api', doc: API_CLAUDE_MD },\n ];\n\n for (const dir of directories) {\n const dirPath = path.join(cwd, dir.path);\n const docPath = path.join(dirPath, 'CLAUDE.md');\n\n // Create directory\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n logger.success(`Created ${dir.path}`);\n }\n\n // Create CLAUDE.md\n if (!fs.existsSync(docPath)) {\n fs.writeFileSync(docPath, dir.doc, 'utf-8');\n logger.success(`Created ${dir.path}/CLAUDE.md`);\n }\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 // Add types to compilerOptions\n const types = config.compilerOptions?.types || [];\n const newTypes = [\n './worker-configuration.d.ts',\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 // Add worker and agents to include\n const include = config.include || [];\n const newIncludes = ['worker', 'agents'].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 we don't need\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 ];\n\n const dirsToRemove = ['src', 'public'];\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 projectName = getProjectName(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 cloudflare and agentbuilder plugins.');\n }\n\n // 2. Create or update wrangler.jsonc\n createOrUpdateWranglerConfig(cwd, projectName, force);\n\n // 3. Create or update worker entry point\n await createOrUpdateWorkerEntry(cwd, force);\n\n // 4. Create Durable Object files\n createDurableObjects(cwd);\n\n // 5. Create agent directories with documentation\n createDirectoriesAndDocs(cwd);\n\n // 6. Update tsconfig.json\n updateTsConfig(cwd);\n\n // 7. Clean up default Vite files (only if force is true, meaning fresh project)\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(' CLAUDE.md # Architecture documentation');\n logger.log(' agents/');\n logger.log(' ├── Thread.ts # Durable Object for threads');\n logger.log(' ├── AgentBuilder.ts # Durable Object for agent state');\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(' worker/');\n logger.log(' └── index.ts # Cloudflare Worker entry point');\n logger.log('');\n}\n","import path from 'node:path';\nimport fs from 'node:fs';\nimport crypto from 'node:crypto';\nimport readline from 'node:readline';\nimport { spawn } from 'node:child_process';\nimport { logger } from '../utils/logger.js';\nimport { scaffold } from './scaffold.js';\n\ninterface InitOptions {\n yes?: boolean;\n template?: string;\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 onData = (char: string) => {\n const c = char.toString();\n\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u0004': // Ctrl+D\n stdin.setRawMode(wasRaw ?? false);\n stdin.pause();\n stdin.removeListener('data', onData);\n stdout.write('\\n');\n resolve(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 });\n}\n\nfunction runCommand(\n command: string,\n args: string[],\n cwd: string,\n env?: Record<string, string>\n): Promise<void> {\n return new Promise((resolve, reject) => {\n // Use shell: false to properly handle arguments with spaces\n // Node's spawn will handle argument escaping automatically\n const child = spawn(command, args, {\n cwd,\n stdio: 'inherit',\n shell: false,\n env: { ...process.env, ...env },\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 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\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\nfunction getPnpmWorkspaceFilterTarget(projectPath: string): { cwd: string; filterTarget: string } | null {\n if (process.env.STANDARDAGENTS_WORKSPACE !== '1') {\n return null;\n }\n\n const workspaceRoot = findWorkspaceRoot(projectPath);\n if (!workspaceRoot) {\n return null;\n }\n\n const relativeProjectPath = path\n .relative(workspaceRoot, projectPath)\n .split(path.sep)\n .join('/');\n\n return {\n cwd: workspaceRoot,\n filterTarget: relativeProjectPath.startsWith('.') ? relativeProjectPath : `./${relativeProjectPath}`,\n };\n}\n\nfunction detectPackageManager(): 'npm' | 'pnpm' | 'yarn' | 'bun' {\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\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;\ndeclare const __SCAFFOLD_VITE_VERSION__: string;\ndeclare const __SCAFFOLD_TYPESCRIPT_VERSION__: string;\ndeclare const __SCAFFOLD_CLOUDFLARE_VITE_PLUGIN_VERSION__: string;\ndeclare const __SCAFFOLD_WRANGLER_VERSION__: string;\n\nexport interface ScaffoldToolchainVersions {\n vite: string;\n typescript: string;\n cloudflareVitePlugin: string;\n wrangler: string;\n}\n\nexport function normalizeScaffoldedPackageJson(\n packageJson: Record<string, any>,\n projectName: string,\n versions: ScaffoldToolchainVersions\n): Record<string, any> {\n const normalized = { ...packageJson };\n normalized.name = toKebabCase(projectName);\n normalized.devDependencies = {\n ...(normalized.devDependencies || {}),\n vite: versions.vite,\n typescript: versions.typescript,\n '@cloudflare/vite-plugin': versions.cloudflareVitePlugin,\n wrangler: versions.wrangler,\n };\n return normalized;\n}\n\nfunction applyPackageSpecifiers(\n packageJson: Record<string, any>,\n key: 'dependencies' | 'devDependencies',\n specifiers: string[]\n): void {\n packageJson[key] = {\n ...(packageJson[key] || {}),\n };\n\n for (const specifier of specifiers) {\n const atIndex = specifier.lastIndexOf('@');\n if (atIndex <= 0) {\n packageJson[key][specifier] = '^4.0.0';\n continue;\n }\n\n const name = specifier.slice(0, atIndex);\n const version = specifier.slice(atIndex + 1);\n packageJson[key][name] = version;\n }\n}\n\n/**\n * Get the package version specifier to use when installing workspace-managed\n * @standardagents packages.\n *\n * - In workspace mode (STANDARDAGENTS_WORKSPACE=1), returns 'workspace:*' for pnpm linking\n * - Otherwise returns the exact CLI version (e.g., '0.11.0-next.abc123')\n */\nfunction getWorkspacePackageVersion(): string {\n // For local development in a pnpm workspace, use workspace protocol\n if (process.env.STANDARDAGENTS_WORKSPACE === '1') {\n return 'workspace:*';\n }\n return __CLI_VERSION__;\n}\n\nfunction getSipPackageVersion(): string {\n return __SIP_VERSION__;\n}\n\nfunction getScaffoldToolchainVersions(): ScaffoldToolchainVersions {\n return {\n vite: __SCAFFOLD_VITE_VERSION__,\n typescript: __SCAFFOLD_TYPESCRIPT_VERSION__,\n cloudflareVitePlugin: __SCAFFOLD_CLOUDFLARE_VITE_PLUGIN_VERSION__,\n wrangler: __SCAFFOLD_WRANGLER_VERSION__,\n };\n}\n\nasync function runPackageBinary(\n packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun',\n binary: string,\n binaryArgs: string[],\n cwd: string,\n env?: Record<string, string>\n): Promise<void> {\n switch (packageManager) {\n case 'pnpm':\n return runCommand('pnpm', ['exec', binary, ...binaryArgs], cwd, env);\n case 'yarn':\n return runCommand('yarn', ['exec', binary, ...binaryArgs], cwd, env);\n case 'bun':\n return runCommand('bunx', [binary, ...binaryArgs], cwd, env);\n default:\n return runCommand('npx', [binary, ...binaryArgs], cwd, env);\n }\n}\n\nasync function selectPackageManager(detected: 'npm' | 'pnpm' | 'yarn' | 'bun'): Promise<'npm' | 'pnpm' | 'yarn' | 'bun'> {\n const options = ['npm', 'pnpm', 'yarn', 'bun'] as const;\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 // Move cursor up to overwrite previous render (except first time)\n stdout.write('\\x1B[?25l'); // Hide cursor\n\n // Clear and redraw\n stdout.write(`\\x1B[${options.length + 1}A`); // Move up\n stdout.write('\\x1B[0J'); // Clear from cursor to end\n\n stdout.write('Select a package manager (use arrows, enter to confirm):\\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 // Initial render\n stdout.write('Select a package manager (use arrows, enter to confirm):\\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'); // Show cursor\n };\n\n const onData = (key: string) => {\n // Handle arrow keys (escape sequences)\n if (key === '\\x1B[A' || key === 'k') { // Up arrow or k\n selectedIndex = (selectedIndex - 1 + options.length) % options.length;\n renderOptions();\n } else if (key === '\\x1B[B' || key === 'j') { // Down arrow or j\n selectedIndex = (selectedIndex + 1) % options.length;\n renderOptions();\n } else if (key === '\\r' || key === '\\n') { // Enter\n cleanup();\n resolve(options[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\nexport async function init(projectNameArg?: string, options: InitOptions = {}) {\n const cwd = process.cwd();\n const detectedPm = detectPackageManager();\n const template = options.template || 'vanilla-ts';\n\n logger.log('');\n logger.info('Creating a new Standard Agents project...');\n logger.log('');\n\n // Select package manager\n let pm: 'npm' | 'pnpm' | 'yarn' | 'bun';\n if (options.yes) {\n pm = detectedPm;\n } else {\n pm = await selectPackageManager(detectedPm);\n logger.log('');\n }\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: Run create vite\n logger.log('');\n logger.info(`Step 1: Creating Vite project with ${template} template...`);\n logger.log('');\n\n try {\n // Determine the correct create command based on package manager.\n // We scaffold with create-vite@latest, then immediately normalize the\n // generated toolchain to the versions tested with Standard Agents.\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 = ['dlx', 'create-vite@latest', projectName, '--template', template, '--no-interactive'];\n break;\n case 'yarn':\n createCmd = 'yarn';\n createArgs = ['dlx', 'create-vite@latest', projectName, '--template', template, '--no-interactive'];\n break;\n case 'bun':\n createCmd = 'bun';\n createArgs = ['x', 'create-vite@latest', projectName, '--template', template, '--no-interactive'];\n break;\n default:\n createCmd = 'npx';\n createArgs = ['create-vite@latest', projectName, '--template', template, '--no-interactive'];\n }\n\n await runCommand(createCmd, createArgs, cwd, { CI: '1' });\n\n // create-vite may occasionally return zero after a canceled interactive flow;\n // treat missing package.json as a hard scaffold failure.\n const createdPackageJsonPath = path.join(projectPath, 'package.json');\n if (!fs.existsSync(createdPackageJsonPath)) {\n throw new Error('Vite project scaffolding did not create package.json');\n }\n } catch (error) {\n logger.error('Failed to create Vite project');\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 logger.success('Created vite.config.ts');\n }\n\n // Normalize the scaffolded toolchain to versions we know are compatible with\n // the Standard Agents + Cloudflare integration.\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 normalizedPackageJson = normalizeScaffoldedPackageJson(\n packageJson,\n projectName,\n getScaffoldToolchainVersions()\n );\n fs.writeFileSync(packageJsonPath, JSON.stringify(normalizedPackageJson, null, 2) + '\\n', 'utf-8');\n }\n\n // Step 2: Collect API keys and admin password\n logger.log('');\n logger.info('Step 2: Configuring environment variables...');\n logger.log('');\n\n // Generate encryption key\n const encryptionKey = crypto.randomBytes(32).toString('hex');\n\n // Ask for API keys and admin password\n let cloudflareToken = '';\n let cloudflareAccountId = '';\n let cerebrasKey = '';\n let googleKey = '';\n let groqKey = '';\n let openrouterKey = '';\n let openaiKey = '';\n let xaiKey = '';\n let adminPassword = '';\n\n if (!options.yes) {\n logger.log('API keys are optional but required to use AI models.');\n logger.log('You can add them later by editing .dev.vars');\n logger.log('');\n\n cloudflareToken = await prompt('Cloudflare Workers AI API token (optional, press Enter to skip): ');\n if (cloudflareToken) {\n cloudflareAccountId = await prompt('Cloudflare Account ID: ');\n }\n cerebrasKey = await prompt('Cerebras API key (optional, press Enter to skip): ');\n googleKey = await prompt('Google Gemini API key (optional, press Enter to skip): ');\n groqKey = await prompt('Groq API key (optional, press Enter to skip): ');\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 xaiKey = await prompt('xAI API key (optional, press Enter to skip): ');\n\n logger.log('');\n logger.log('Set a temporary admin password for development access.');\n logger.log('Press Enter to use the default password \"admin\".');\n logger.log('');\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 logger.warning('Passwords do not match. Please try again.');\n logger.log('');\n adminPassword = '';\n }\n }\n }\n\n // Default admin password if not provided (for --yes flag)\n if (!adminPassword) {\n adminPassword = 'admin';\n }\n\n // Step 3: Install Standard Agents dependencies\n logger.log('');\n logger.info('Step 3: Installing Standard Agents dependencies...');\n logger.log('');\n\n try {\n const installCmd = pm === 'npm' ? 'install' : 'add';\n const devFlag = pm === 'npm' ? '--save-dev' : '-D';\n const workspacePackageVersion = getWorkspacePackageVersion();\n const sipPackageVersion = getSipPackageVersion();\n const isWorkspaceMode = pm === 'pnpm' && process.env.STANDARDAGENTS_WORKSPACE === '1';\n const pnpmWorkspaceFilter = pm === 'pnpm' ? getPnpmWorkspaceFilterTarget(projectPath) : null;\n\n const installPackages = async (packages: string[], { dev = false }: { dev?: boolean } = {}) => {\n if (pm === 'pnpm' && pnpmWorkspaceFilter) {\n await runCommand(\n pm,\n [\n installCmd,\n ...(dev ? [devFlag] : []),\n ...packages,\n '--filter',\n pnpmWorkspaceFilter.filterTarget,\n ],\n pnpmWorkspaceFilter.cwd\n );\n return;\n }\n\n await runCommand(\n pm,\n [\n installCmd,\n ...(dev ? [devFlag] : []),\n ...packages,\n ],\n projectPath\n );\n };\n\n // Build list of regular dependencies.\n // Workspace-managed packages stay version-locked to the CLI version.\n // Standalone packages use their own published version.\n // We explicitly install packages at exact versions to avoid\n // npm/pnpm resolving transitive deps with semver ranges (which excludes prereleases)\n const deps = [\n `@standardagents/builder@${workspacePackageVersion}`,\n `@standardagents/spec@${workspacePackageVersion}`,\n `@standardagents/sip@${sipPackageVersion}`,\n 'zod'\n ];\n\n // Add provider packages based on API keys provided\n if (cloudflareToken) {\n deps.push(`@standardagents/cloudflare@${workspacePackageVersion}`);\n }\n if (cerebrasKey) {\n deps.push(`@standardagents/cerebras@${workspacePackageVersion}`);\n }\n if (googleKey) {\n deps.push(`@standardagents/google@${workspacePackageVersion}`);\n }\n if (groqKey) {\n deps.push(`@standardagents/groq@${workspacePackageVersion}`);\n }\n if (openaiKey) {\n deps.push(`@standardagents/openai@${workspacePackageVersion}`);\n }\n if (openrouterKey) {\n deps.push(`@standardagents/openrouter@${workspacePackageVersion}`);\n }\n if (xaiKey) {\n deps.push(`@standardagents/xai@${workspacePackageVersion}`);\n }\n\n if (isWorkspaceMode) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n applyPackageSpecifiers(packageJson, 'devDependencies', [\n `@cloudflare/vite-plugin@${getScaffoldToolchainVersions().cloudflareVitePlugin}`,\n `wrangler@${getScaffoldToolchainVersions().wrangler}`,\n ]);\n applyPackageSpecifiers(packageJson, 'dependencies', deps);\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info('Workspace mode detected: wrote dependency specs to package.json and deferred install.');\n } else {\n // Install dev dependencies\n await installPackages([\n `@cloudflare/vite-plugin@${getScaffoldToolchainVersions().cloudflareVitePlugin}`,\n `wrangler@${getScaffoldToolchainVersions().wrangler}`,\n ], { dev: true });\n\n // Install regular dependencies (builder needs to be in dependencies, not devDependencies)\n await installPackages(deps);\n }\n } catch (error) {\n logger.error('Failed to install dependencies');\n process.exit(1);\n }\n\n // Step 4: Run scaffold in the new project directory\n logger.log('');\n logger.info('Step 4: Configuring Standard Agents...');\n logger.log('');\n\n // Change to project directory for scaffold\n process.chdir(projectPath);\n\n await scaffold({ force: true });\n\n // Write .dev.vars file with collected environment variables\n logger.log('');\n logger.info('Writing environment configuration...');\n logger.log('');\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 '# Temporary admin password for development access',\n `SUPER_ADMIN_PASSWORD=${adminPassword}`,\n '',\n '# AI Provider API Keys',\n '# Uncomment and add your keys as needed',\n ];\n\n if (cloudflareToken) {\n devVarsLines.push(`CLOUDFLARE_API_TOKEN=${cloudflareToken}`);\n devVarsLines.push(`CLOUDFLARE_ACCOUNT_ID=${cloudflareAccountId}`);\n } else {\n devVarsLines.push('# CLOUDFLARE_API_TOKEN=your-cloudflare-workers-ai-token');\n devVarsLines.push('# CLOUDFLARE_ACCOUNT_ID=your-cloudflare-account-id');\n }\n\n if (cerebrasKey) {\n devVarsLines.push(`CEREBRAS_API_KEY=${cerebrasKey}`);\n } else {\n devVarsLines.push('# CEREBRAS_API_KEY=your-cerebras-key');\n }\n\n if (googleKey) {\n devVarsLines.push(`GOOGLE_API_KEY=${googleKey}`);\n } else {\n devVarsLines.push('# GOOGLE_API_KEY=your-google-gemini-key');\n }\n\n if (groqKey) {\n devVarsLines.push(`GROQ_API_KEY=${groqKey}`);\n } else {\n devVarsLines.push('# GROQ_API_KEY=your-groq-key');\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 if (xaiKey) {\n devVarsLines.push(`XAI_API_KEY=${xaiKey}`);\n } else {\n devVarsLines.push('# XAI_API_KEY=your-xai-key');\n }\n\n devVarsLines.push('');\n\n const devVarsPath = path.join(projectPath, '.dev.vars');\n fs.writeFileSync(devVarsPath, devVarsLines.join('\\n'), 'utf-8');\n logger.success('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 logger.success('Added .dev.vars to .gitignore');\n }\n }\n\n // Step 5: Generate Cloudflare types\n logger.log('');\n logger.info('Step 5: Generating Cloudflare types...');\n logger.log('');\n\n if (pm === 'pnpm' && process.env.STANDARDAGENTS_WORKSPACE === '1') {\n logger.info('Workspace mode detected: skipping Wrangler type generation until dependencies are installed.');\n } else {\n try {\n await runPackageBinary(pm, 'wrangler', ['types'], projectPath);\n } catch (error) {\n logger.warning('Could not generate types automatically. Run your package manager\\'s Wrangler types command manually.');\n }\n }\n\n // Done!\n logger.log('');\n logger.success('Project created successfully!');\n logger.log('');\n logger.log('Next steps:');\n logger.log('');\n logger.log(` cd ${projectName}`);\n logger.log(` ${pm === 'npm' ? 'npm run' : pm} dev`);\n logger.log('');\n logger.log('For more information, visit: https://standardagents.ai/docs');\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 path from 'node:path';\nimport { execSync } from 'node:child_process';\nimport chalk from 'chalk';\nimport { logger } from '../utils/logger.js';\n\n// --- Types ---\n\ninterface DeployManifest {\n agents: string[];\n builder_version: string;\n}\n\ninterface PlatformManifestResponse {\n latest_builder_version: string;\n minimum_builder_version: string;\n}\n\ninterface DeployResponse {\n deploy: {\n id: string;\n account_id: string;\n builder_version: string;\n status: string;\n created_at: number;\n completed_at: number;\n };\n}\n\ninterface DeployErrorResponse {\n error?: { code: string; message: string };\n errors?: string[];\n}\n\nexport interface DeployOptions {\n apiKey?: string;\n endpoint?: string;\n}\n\n// --- Constants ---\n\nconst DEFAULT_ENDPOINT = 'https://api.standardagents.ai';\n\nconst FREE_TIER_BUNDLE_LIMIT = 5 * 1024 * 1024; // 5 MB\n\n// --- Pure helper functions (exported for testing) ---\n\n/** Parse a .env file into key-value pairs. Ignores comments and empty lines. */\nexport function parseEnvFile(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) continue;\n const eqIndex = trimmed.indexOf('=');\n if (eqIndex === -1) continue;\n const key = trimmed.slice(0, eqIndex).trim();\n let value = trimmed.slice(eqIndex + 1).trim();\n // Strip surrounding quotes and handle escaped quotes inside\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 result[key] = value;\n }\n return result;\n}\n\n/**\n * Compare two semver strings. Returns -1 if a < b, 0 if equal, 1 if a > b.\n * Pre-release versions (e.g. 1.0.0-alpha) are treated as less than the release version.\n */\nexport function compareVersions(a: string, b: string): number {\n // Strip v prefix and split off pre-release suffix\n const [coreA, preA] = a.replace(/^v/, '').split('-', 2);\n const [coreB, preB] = b.replace(/^v/, '').split('-', 2);\n\n const partsA = coreA.split('.').map(Number);\n const partsB = coreB.split('.').map(Number);\n for (let i = 0; i < 3; i++) {\n const va = partsA[i] ?? 0;\n const vb = partsB[i] ?? 0;\n if (va < vb) return -1;\n if (va > vb) return 1;\n }\n\n // Equal core versions — pre-release is less than release\n if (preA && !preB) return -1;\n if (!preA && preB) return 1;\n return 0;\n}\n\n/** Validate bundle size against the free tier limit. Returns null if OK, or a warning message. */\nexport function validateBundleSize(sizeBytes: number): string | null {\n if (sizeBytes > FREE_TIER_BUNDLE_LIMIT) {\n return `Bundle size (${formatBytes(sizeBytes)}) exceeds the free tier limit (${formatBytes(FREE_TIER_BUNDLE_LIMIT)}). A paid plan may be required.`;\n }\n return null;\n}\n\n/** Create a deploy manifest from agent names and builder version. */\nexport function createManifest(agents: string[], builderVersion: string): DeployManifest {\n return {\n agents,\n builder_version: builderVersion,\n };\n}\n\n/** Format bytes into a human-readable string. */\nexport function formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\n/** Format a deploy error response into a human-readable message. */\nexport function formatDeployError(response: DeployErrorResponse): string {\n if (response.error) {\n return `${response.error.code}: ${response.error.message}`;\n }\n if (response.errors && response.errors.length > 0) {\n return response.errors.join('\\n');\n }\n return 'Unknown error';\n}\n\n// --- IO helper functions (exported for testing) ---\n\n/** Check if the current directory is a Standard Agents project. */\nexport function detectProject(): boolean {\n const hasWranglerJsonc = fs.existsSync('wrangler.jsonc') || fs.existsSync('wrangler.json');\n const hasAgentsDir = fs.existsSync('agents/agents');\n return hasWranglerJsonc || hasAgentsDir;\n}\n\n/**\n * Load deploy configuration from options, env vars, and .env file.\n * Throws if API key is not found (instead of process.exit, for testability).\n */\nexport function loadConfig(options: DeployOptions): { apiKey: string; endpoint: string } {\n // Read .env file once (if it exists) as the lowest-priority source\n const envFileVars = fs.existsSync('.env')\n ? parseEnvFile(fs.readFileSync('.env', 'utf-8'))\n : {};\n\n // API key: CLI flag > env var > .env file\n const apiKey = options.apiKey || process.env.PLATFORM_API_KEY || envFileVars.PLATFORM_API_KEY;\n if (!apiKey) {\n throw new Error(\n 'No API key found. Provide one with --api-key, set PLATFORM_API_KEY env var, or add it to .env'\n );\n }\n\n // Endpoint: CLI flag > env var > .env file > default\n const endpoint = options.endpoint || process.env.PLATFORM_ENDPOINT || envFileVars.PLATFORM_ENDPOINT || DEFAULT_ENDPOINT;\n\n return { apiKey, endpoint };\n}\n\n/**\n * Discover agent names from agents/agents/ directory.\n * Returns agent names extracted from defineAgent() calls, falling back to filenames.\n */\nexport function discoverAgents(): string[] {\n const agentsDir = 'agents/agents';\n if (!fs.existsSync(agentsDir)) return [];\n\n const scriptExtensions = new Set(['.ts', '.js', '.mts', '.mjs']);\n const files = fs.readdirSync(agentsDir).filter(f => scriptExtensions.has(path.extname(f)));\n\n return files.map(file => {\n const filePath = path.join(agentsDir, file);\n // Guard against symlinks pointing outside the project\n const realPath = fs.realpathSync(filePath);\n if (!realPath.startsWith(fs.realpathSync('.'))) {\n return path.basename(file, path.extname(file));\n }\n const content = fs.readFileSync(filePath, 'utf-8');\n // Match name property inside defineAgent(), handling nested objects via [\\s\\S]\n const nameMatch = content.match(/defineAgent\\s*\\(\\s*\\{[\\s\\S]*?\\bname\\s*:\\s*['\"]([^'\"]+)['\"]/);\n return nameMatch ? nameMatch[1] : path.basename(file, path.extname(file));\n });\n}\n\n/** Read the installed @standardagents/builder version. */\nexport function getBuilderVersion(): string {\n const searchPaths = [\n 'node_modules/@standardagents/builder/package.json',\n '../node_modules/@standardagents/builder/package.json',\n ];\n for (const p of searchPaths) {\n if (fs.existsSync(p)) {\n const pkg = JSON.parse(fs.readFileSync(p, 'utf-8'));\n return pkg.version;\n }\n }\n throw new Error('Could not find @standardagents/builder. Is it installed?');\n}\n\n/** Detect the user's package manager. */\nfunction detectPackageManager(): string {\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 // Fall back to lockfile detection\n if (fs.existsSync('pnpm-lock.yaml')) return 'pnpm';\n if (fs.existsSync('yarn.lock')) return 'yarn';\n if (fs.existsSync('bun.lockb') || fs.existsSync('bun.lock')) return 'bun';\n return 'npm';\n}\n\n/**\n * Run Vite production build with platform endpoint injected.\n * Note: PLATFORM_API_KEY is NOT passed to the build — it is a runtime secret\n * injected by the platform via service binding, not a build-time variable.\n */\nfunction buildProject(endpoint: string): void {\n const pm = detectPackageManager();\n const buildCmd = pm === 'npm' ? 'npx vite build' : `${pm} exec vite build`;\n\n execSync(buildCmd, {\n stdio: 'inherit',\n env: {\n ...process.env,\n PLATFORM_ENDPOINT: endpoint,\n },\n });\n}\n\n/**\n * Find the Worker bundle in the build output.\n * Searches common locations produced by @cloudflare/vite-plugin.\n */\nexport function findWorkerBundle(): { bundlePath: string; bundleContent: Buffer } {\n // The Cloudflare Vite plugin outputs Worker bundles to .wrangler/tmp/\n const searchDirs = ['.wrangler/tmp', 'dist'];\n\n for (const dir of searchDirs) {\n if (!fs.existsSync(dir)) continue;\n\n // Search recursively for .js or .mjs files that look like Worker bundles\n const bundle = findBundleInDir(dir);\n if (bundle) return bundle;\n }\n\n throw new Error(\n 'Could not find Worker bundle in build output.\\n' +\n 'Expected build output in .wrangler/tmp/ or dist/.\\n' +\n 'Make sure `vite build` completed successfully.'\n );\n}\n\nfunction findBundleInDir(dir: string): { bundlePath: string; bundleContent: Buffer } | null {\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n const jsFiles = entries.filter(e => e.isFile() && (e.name.endsWith('.js') || e.name.endsWith('.mjs')));\n\n // Prioritize index.js/index.mjs, then largest file\n jsFiles.sort((a, b) => {\n const aIsIndex = a.name === 'index.js' || a.name === 'index.mjs' ? 0 : 1;\n const bIsIndex = b.name === 'index.js' || b.name === 'index.mjs' ? 0 : 1;\n if (aIsIndex !== bIsIndex) return aIsIndex - bIsIndex;\n // Larger files are more likely to be the bundle\n const aSize = fs.statSync(path.join(dir, a.name)).size;\n const bSize = fs.statSync(path.join(dir, b.name)).size;\n return bSize - aSize;\n });\n\n for (const entry of jsFiles) {\n const fullPath = path.join(dir, entry.name);\n const content = fs.readFileSync(fullPath);\n // Worker bundles contain export statements and are non-empty\n if (content.length > 0 && content.toString('utf-8', 0, 10000).includes('export')) {\n return { bundlePath: fullPath, bundleContent: content };\n }\n }\n\n // Then check subdirectories\n for (const entry of entries) {\n if (entry.isDirectory() && entry.name !== 'client' && entry.name !== 'node_modules') {\n const result = findBundleInDir(path.join(dir, entry.name));\n if (result) return result;\n }\n }\n\n return null;\n}\n\n/** Check platform version requirements. */\nexport async function checkPlatformVersion(\n endpoint: string,\n builderVersion: string\n): Promise<PlatformManifestResponse> {\n const res = await fetch(`${endpoint}/manifest`);\n if (!res.ok) {\n throw new Error(`Failed to check platform version: ${res.status} ${res.statusText}`);\n }\n const manifest: PlatformManifestResponse = await res.json();\n\n // Check minimum version\n if (compareVersions(builderVersion, manifest.minimum_builder_version) < 0) {\n throw new Error(\n `Builder version ${builderVersion} is below the platform minimum (${manifest.minimum_builder_version}).\\n` +\n `Please upgrade @standardagents/builder:\\n` +\n ` npm install @standardagents/builder@latest`\n );\n }\n\n return manifest;\n}\n\n/** Upload the deploy to the Platform API. */\nexport async function uploadDeploy(\n endpoint: string,\n apiKey: string,\n bundleContent: Buffer,\n manifest: DeployManifest,\n builderVersion: string\n): Promise<DeployResponse> {\n const formData = new FormData();\n formData.append('bundle', new Blob([new Uint8Array(bundleContent)], { type: 'application/javascript' }), 'index.js');\n formData.append('manifest', new Blob([JSON.stringify(manifest)], { type: 'application/json' }), 'manifest.json');\n formData.append('builder_version', builderVersion);\n formData.append('agent_count', String(manifest.agents.length));\n\n const res = await fetch(`${endpoint}/deploys`, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${apiKey}`,\n },\n body: formData,\n });\n\n let body: unknown;\n try {\n body = await res.json();\n } catch {\n throw new Error(`Deploy failed (${res.status}): Invalid response from server`);\n }\n\n if (!res.ok) {\n const errorMsg = formatDeployError(body as DeployErrorResponse);\n throw new Error(`Deploy failed (${res.status}): ${errorMsg}`);\n }\n\n return body as DeployResponse;\n}\n\n// --- Main command ---\n\nexport async function deploy(options: DeployOptions) {\n console.log('');\n logger.info(`${chalk.bold('Standard Agents Deploy')}\\n`);\n\n // Step 1: Detect project\n if (!detectProject()) {\n logger.error('This does not appear to be a Standard Agents project.');\n logger.info('Run this command from a directory with wrangler.jsonc and agents/agents/.');\n process.exit(1);\n }\n\n // Step 2: Load configuration\n let apiKey: string;\n let endpoint: string;\n try {\n ({ apiKey, endpoint } = loadConfig(options));\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\n logger.success('Configuration loaded');\n\n // Step 3: Discover agents\n const agents = discoverAgents();\n if (agents.length === 0) {\n logger.error('No agents found in agents/agents/.');\n logger.info('Create at least one agent with defineAgent() before deploying.');\n process.exit(1);\n }\n logger.success(`Found ${agents.length} agent${agents.length === 1 ? '' : 's'}: ${agents.join(', ')}`);\n\n // Step 4: Get builder version\n let builderVersion: string;\n try {\n builderVersion = getBuilderVersion();\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\n logger.info(`Builder version: ${builderVersion}`);\n\n // Step 5: Check platform version requirements\n try {\n const platformManifest = await checkPlatformVersion(endpoint, builderVersion);\n if (compareVersions(builderVersion, platformManifest.latest_builder_version) < 0) {\n logger.warning(\n `A newer builder version is available (${platformManifest.latest_builder_version}). Consider upgrading.`\n );\n }\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\n\n // Step 6: Build (only endpoint is passed — API key is a runtime secret, not a build-time var)\n logger.info('Building project...\\n');\n try {\n buildProject(endpoint);\n } catch {\n console.log('');\n logger.error('Build failed. See output above for details.');\n process.exit(1);\n }\n console.log('');\n logger.success('Build complete');\n\n // Step 7: Find bundle and create manifest\n let bundlePath: string;\n let bundleContent: Buffer;\n try {\n ({ bundlePath, bundleContent } = findWorkerBundle());\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = createManifest(agents, builderVersion);\n logger.success(`Bundle: ${bundlePath} (${formatBytes(bundleContent.length)})`);\n\n // Step 8: Validate bundle size\n const sizeWarning = validateBundleSize(bundleContent.length);\n if (sizeWarning) {\n logger.warning(sizeWarning);\n }\n\n // Step 9: Upload\n logger.info('Uploading...');\n try {\n const result = await uploadDeploy(endpoint, apiKey, bundleContent, manifest, builderVersion);\n console.log('');\n logger.success(chalk.bold('Deploy successful!'));\n console.log(` Deploy ID: ${result.deploy.id}`);\n console.log(` Status: ${result.deploy.status}`);\n\n // Derive the live URL from the account_id (slug)\n if (result.deploy.account_id) {\n console.log(` URL: https://${result.deploy.account_id}.standardagents.ai`);\n }\n console.log('');\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\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 { Command } from 'commander';\nimport { init } from './commands/init.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 { skill } from './commands/skill.js';\nimport { currentModels } from './commands/current-models.js';\nimport { availableModels } from './commands/available-models.js';\n\n// Injected at build time by tsup (see tsup.config.ts)\ndeclare const __CLI_VERSION__: string;\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 (runs create vite, then scaffold)')\n .option('-y, --yes', 'Skip prompts and use defaults')\n .option('--template <template>', 'Vite template to use', 'vanilla-ts')\n .action(init);\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('Build and deploy your project to the Standard Agents platform')\n .option('--api-key <key>', 'Platform API key (overrides PLATFORM_API_KEY env var)')\n .option('--endpoint <url>', 'Platform API endpoint (default: https://api.standardagents.ai)')\n .action(deploy);\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\nprogram.parse();\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/index.ts"],"names":["path","fs","child","spawn","os","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","parseEnvFile","provider","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, generateCode, parseModule, builders } from 'magicast';\nimport { addVitePlugin } from 'magicast/helpers';\nimport {\n AGENTS_CLAUDE_MD,\n API_CLAUDE_MD,\n HOOKS_CLAUDE_MD,\n MODELS_CLAUDE_MD,\n PROMPTS_CLAUDE_MD,\n ROOT_CLAUDE_MD,\n TOOLS_CLAUDE_MD,\n renderDurableAgentBuilder,\n renderDurableThread,\n renderWorkerIndex,\n renderWranglerJson,\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 __SCAFFOLD_COMPATIBILITY_DATE__: string;\ndeclare const __CLI_VERSION__: string;\ndeclare const __SCAFFOLD_CLOUDFLARE_VITE_PLUGIN_VERSION__: string;\n\nfunction getScaffoldCompatibilityDate(): string {\n return __SCAFFOLD_COMPATIBILITY_DATE__;\n}\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 getScaffoldCloudflareVitePluginVersion(): string {\n return typeof __SCAFFOLD_CLOUDFLARE_VITE_PLUGIN_VERSION__ === 'undefined'\n ? 'latest'\n : __SCAFFOLD_CLOUDFLARE_VITE_PLUGIN_VERSION__;\n}\n\n// Utility functions\nfunction getProjectName(cwd: string): string {\n const packageJsonPath = path.join(cwd, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n if (pkg.name) {\n return pkg.name.replace(/^@[^/]+\\//, ''); // Remove scope if present\n }\n } catch {\n // Ignore parse errors\n }\n }\n return path.basename(cwd);\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 findWranglerConfig(cwd: string): string | null {\n const candidates = ['wrangler.jsonc', 'wrangler.json'];\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 cloudflareVitePlugin?: 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 and @cloudflare/vite-plugin 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 desiredCloudflareVersion = versions.cloudflareVitePlugin ?? getScaffoldCloudflareVitePluginVersion();\n const builderSection = dependencySectionFor(pkg, '@standardagents/builder', 'dependencies');\n const cloudflareSection = dependencySectionFor(pkg, '@cloudflare/vite-plugin', 'devDependencies');\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 const currentAfterBuilder = JSON.parse(result) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n };\n if (currentAfterBuilder[cloudflareSection]?.['@cloudflare/vite-plugin'] !== desiredCloudflareVersion) {\n result = setPackageDependency(result, cloudflareSection, '@cloudflare/vite-plugin', desiredCloudflareVersion);\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 // Check if plugins already include our plugins\n const code = fs.readFileSync(configPath, 'utf-8');\n const hasCloudflare = code.includes('@cloudflare/vite-plugin') || code.includes('cloudflare()');\n const hasAgentBuilder = code.includes('@standardagents/builder') || code.includes('agentbuilder()');\n\n if (hasCloudflare && hasAgentBuilder && !force) {\n logger.info('Vite config already includes Standard Agents plugins');\n return true;\n }\n\n // Add agentbuilder plugin if not present (must come before cloudflare)\n if (!hasAgentBuilder || force) {\n addVitePlugin(mod, {\n from: '@standardagents/builder',\n imported: 'agentbuilder',\n constructor: 'agentbuilder',\n options: { mountPoint: '/' },\n });\n logger.success('Added agentbuilder plugin to vite.config');\n }\n\n // Add cloudflare plugin if not present\n if (!hasCloudflare || force) {\n addVitePlugin(mod, {\n from: '@cloudflare/vite-plugin',\n imported: 'cloudflare',\n constructor: 'cloudflare',\n });\n logger.success('Added cloudflare 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 { agentbuilder } from '@standardagents/builder'`);\n logger.log(` import { cloudflare } from '@cloudflare/vite-plugin'`);\n logger.log('');\n logger.log(` plugins: [agentbuilder({ mountPoint: '/' }), cloudflare()]`);\n logger.log('');\n return false;\n }\n}\n\nfunction createOrUpdateWranglerConfig(cwd: string, projectName: string, force: boolean): boolean {\n const existingConfig = findWranglerConfig(cwd);\n\n if (existingConfig && !force) {\n // Update existing config\n try {\n const text = fs.readFileSync(existingConfig, 'utf-8');\n const config = parse(text);\n\n // Check if already configured\n const hasBindings = config.durable_objects?.bindings?.some(\n (b: any) => b.name === 'AGENT_BUILDER_THREAD' || b.name === 'AGENT_BUILDER'\n );\n const hasCodeLoader = config.worker_loaders?.some(\n (loader: any) => loader.binding === 'AGENT_BUILDER_CODE_LOADER'\n );\n const hasCodeCompatibilityDate =\n config.vars?.AGENT_BUILDER_CODE_COMPATIBILITY_DATE === getScaffoldCompatibilityDate();\n const hasCtxExportsFlag = Array.isArray(config.compatibility_flags)\n ? config.compatibility_flags.includes('enable_ctx_exports')\n : false;\n\n if (hasBindings && hasCodeLoader && hasCodeCompatibilityDate && hasCtxExportsFlag) {\n logger.info('wrangler.jsonc already configured for Standard Agents');\n return true;\n }\n\n // Add bindings to existing config\n let result = text;\n\n if (!hasCodeLoader) {\n const loaders = [...(config.worker_loaders || []), { binding: 'AGENT_BUILDER_CODE_LOADER' }];\n const edits = modify(result, ['worker_loaders'], loaders, {});\n result = applyEdits(result, edits);\n }\n\n if (!hasCodeCompatibilityDate) {\n const vars = {\n ...(config.vars || {}),\n AGENT_BUILDER_CODE_COMPATIBILITY_DATE: getScaffoldCompatibilityDate(),\n };\n const edits = modify(result, ['vars'], vars, {});\n result = applyEdits(result, edits);\n }\n\n if (!hasCtxExportsFlag) {\n const flags = Array.isArray(config.compatibility_flags)\n ? [...config.compatibility_flags, 'enable_ctx_exports']\n : ['nodejs_compat', 'enable_ctx_exports'];\n const edits = modify(result, ['compatibility_flags'], flags, {});\n result = applyEdits(result, edits);\n }\n\n // Add durable_objects if not present\n if (!config.durable_objects) {\n const edits = modify(result, ['durable_objects'], {\n bindings: [\n { name: 'AGENT_BUILDER_THREAD', class_name: 'DurableThread' },\n { name: 'AGENT_BUILDER', class_name: 'DurableAgentBuilder' }\n ]\n }, {});\n result = applyEdits(result, edits);\n } else {\n // Add to existing bindings\n const bindings = config.durable_objects.bindings || [];\n if (!bindings.some((b: any) => b.name === 'AGENT_BUILDER_THREAD')) {\n bindings.push({ name: 'AGENT_BUILDER_THREAD', class_name: 'DurableThread' });\n }\n if (!bindings.some((b: any) => b.name === 'AGENT_BUILDER')) {\n bindings.push({ name: 'AGENT_BUILDER', class_name: 'DurableAgentBuilder' });\n }\n const edits = modify(result, ['durable_objects', 'bindings'], bindings, {});\n result = applyEdits(result, edits);\n }\n\n // Add migrations if not present\n if (!config.migrations) {\n const edits = modify(result, ['migrations'], [\n { tag: 'v1', new_sqlite_classes: ['DurableThread'] },\n { tag: 'v2', new_sqlite_classes: ['DurableAgentBuilder'] }\n ], {});\n result = applyEdits(result, edits);\n }\n\n // Update main entry point if needed\n if (!config.main || !config.main.includes('worker')) {\n const edits = modify(result, ['main'], 'worker/index.ts', {});\n result = applyEdits(result, edits);\n }\n\n // Add assets configuration if not present\n if (!config.assets) {\n const edits = modify(result, ['assets'], {\n directory: 'dist/client',\n not_found_handling: 'single-page-application',\n binding: 'ASSETS',\n run_worker_first: ['/**']\n }, {});\n result = applyEdits(result, edits);\n }\n\n fs.writeFileSync(existingConfig, result, 'utf-8');\n logger.success('Updated wrangler.jsonc with Standard Agents configuration');\n return true;\n } catch (error) {\n logger.warning(`Could not update wrangler config: ${error}`);\n return false;\n }\n }\n\n // Create new wrangler.jsonc\n const wranglerPath = path.join(cwd, 'wrangler.jsonc');\n const sanitizedName = projectName.toLowerCase().replace(/[^a-z0-9-]/g, '-');\n fs.writeFileSync(\n wranglerPath,\n renderWranglerJson({\n projectName: sanitizedName,\n compatibilityDate: getScaffoldCompatibilityDate(),\n }),\n 'utf-8'\n );\n logger.success('Created wrangler.jsonc');\n return true;\n}\n\nfunction getWorkerEntryPoint(cwd: string): string {\n // Check wrangler config for main entry\n const wranglerConfig = findWranglerConfig(cwd);\n if (wranglerConfig) {\n try {\n const text = fs.readFileSync(wranglerConfig, 'utf-8');\n const config = parse(text);\n if (config.main) {\n return path.join(cwd, config.main);\n }\n } catch {\n // Ignore parse errors\n }\n }\n\n // Default to worker/index.ts\n return path.join(cwd, 'worker', 'index.ts');\n}\n\nasync function createOrUpdateWorkerEntry(cwd: string, force: boolean): Promise<boolean> {\n const entryPath = getWorkerEntryPoint(cwd);\n const entryDir = path.dirname(entryPath);\n\n // Create worker directory if needed\n if (!fs.existsSync(entryDir)) {\n fs.mkdirSync(entryDir, { recursive: true });\n logger.success(`Created ${path.relative(cwd, entryDir)} directory`);\n }\n\n // If file doesn't exist, create it\n if (!fs.existsSync(entryPath)) {\n fs.writeFileSync(entryPath, renderWorkerIndex(), 'utf-8');\n logger.success(`Created ${path.relative(cwd, entryPath)}`);\n return true;\n }\n\n // File exists - try to modify it\n const content = fs.readFileSync(entryPath, 'utf-8');\n\n // Check if already configured\n const hasRouter = content.includes('virtual:@standardagents/builder') && content.includes('router');\n const hasDurableExports = content.includes('DurableThread') && content.includes('DurableAgentBuilder');\n const hasCodeBridge = content.includes('CodeExecutionBridge');\n\n if (hasRouter && hasDurableExports && hasCodeBridge && !force) {\n logger.info(`${path.relative(cwd, entryPath)} already configured`);\n return true;\n }\n\n if (hasRouter && hasDurableExports && !hasCodeBridge && !force) {\n fs.writeFileSync(\n entryPath,\n `${content.trimEnd()}\\n\\nexport { CodeExecutionBridge } from \"virtual:@standardagents/builder\"\\n`,\n 'utf-8',\n );\n logger.success(`Updated ${path.relative(cwd, entryPath)} with CodeExecutionBridge export`);\n return true;\n }\n\n try {\n const mod = await loadFile(entryPath);\n\n // Add imports\n if (!content.includes('virtual:@standardagents/builder') || force) {\n mod.imports.$add({\n from: 'virtual:@standardagents/builder',\n imported: 'router',\n local: 'router',\n });\n }\n\n if (!content.includes(\"'../agents/Thread'\") || force) {\n mod.imports.$add({\n from: '../agents/Thread',\n imported: 'default',\n local: 'DurableThread',\n });\n }\n\n if (!content.includes(\"'../agents/AgentBuilder'\") || force) {\n mod.imports.$add({\n from: '../agents/AgentBuilder',\n imported: 'default',\n local: 'DurableAgentBuilder',\n });\n }\n\n // Check if there's a default export with fetch\n const { code } = generateCode(mod);\n\n // If we can't easily add the router, just overwrite\n if (force || !hasRouter) {\n fs.writeFileSync(entryPath, renderWorkerIndex(), 'utf-8');\n logger.success(`Updated ${path.relative(cwd, entryPath)} with Standard Agents router`);\n }\n\n return true;\n } catch (error) {\n // Fall back to template\n if (force) {\n fs.writeFileSync(entryPath, renderWorkerIndex(), 'utf-8');\n logger.success(`Created ${path.relative(cwd, entryPath)}`);\n return true;\n }\n\n logger.warning(`Could not automatically modify ${path.relative(cwd, entryPath)}`);\n logger.log('');\n logger.log('Please ensure your worker entry point includes:');\n logger.log('');\n logger.log(` import { router } from \"virtual:@standardagents/builder\"`);\n logger.log(` import DurableThread from '../agents/Thread';`);\n logger.log(` import DurableAgentBuilder from '../agents/AgentBuilder';`);\n logger.log('');\n logger.log(' // In your fetch handler:');\n logger.log(' const res = router(request, env)');\n logger.log(' if (res) return res');\n logger.log('');\n logger.log(' // Export Durable Objects:');\n logger.log(' export { DurableThread, DurableAgentBuilder }');\n logger.log(' export { CodeExecutionBridge } from \"virtual:@standardagents/builder\"');\n logger.log('');\n return false;\n }\n}\n\nfunction createDurableObjects(cwd: string): void {\n const agentsDir = path.join(cwd, 'agents');\n\n if (!fs.existsSync(agentsDir)) {\n fs.mkdirSync(agentsDir, { recursive: true });\n }\n\n // Create Thread.ts\n const threadPath = path.join(agentsDir, 'Thread.ts');\n if (!fs.existsSync(threadPath)) {\n fs.writeFileSync(threadPath, renderDurableThread(), 'utf-8');\n logger.success('Created agents/Thread.ts');\n } else {\n logger.info('agents/Thread.ts already exists');\n }\n\n // Create AgentBuilder.ts\n const agentBuilderPath = path.join(agentsDir, 'AgentBuilder.ts');\n if (!fs.existsSync(agentBuilderPath)) {\n fs.writeFileSync(agentBuilderPath, renderDurableAgentBuilder(), 'utf-8');\n logger.success('Created agents/AgentBuilder.ts');\n } else {\n logger.info('agents/AgentBuilder.ts already exists');\n }\n}\n\nfunction createDirectoriesAndDocs(cwd: string): void {\n const agentsDir = path.join(cwd, 'agents');\n\n // Create project root CLAUDE.md (for AI assistants to understand the project)\n const rootDocPath = path.join(cwd, 'CLAUDE.md');\n if (!fs.existsSync(rootDocPath)) {\n fs.writeFileSync(rootDocPath, ROOT_CLAUDE_MD, 'utf-8');\n logger.success('Created CLAUDE.md');\n }\n\n // Create subdirectories with their CLAUDE.md files\n const directories = [\n { path: 'agents/agents', doc: AGENTS_CLAUDE_MD },\n { path: 'agents/prompts', doc: PROMPTS_CLAUDE_MD },\n { path: 'agents/models', doc: MODELS_CLAUDE_MD },\n { path: 'agents/tools', doc: TOOLS_CLAUDE_MD },\n { path: 'agents/hooks', doc: HOOKS_CLAUDE_MD },\n { path: 'agents/api', doc: API_CLAUDE_MD },\n ];\n\n for (const dir of directories) {\n const dirPath = path.join(cwd, dir.path);\n const docPath = path.join(dirPath, 'CLAUDE.md');\n\n // Create directory\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n logger.success(`Created ${dir.path}`);\n }\n\n // Create CLAUDE.md\n if (!fs.existsSync(docPath)) {\n fs.writeFileSync(docPath, dir.doc, 'utf-8');\n logger.success(`Created ${dir.path}/CLAUDE.md`);\n }\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 // Add types to compilerOptions\n const types = config.compilerOptions?.types || [];\n const newTypes = [\n './worker-configuration.d.ts',\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 // Add worker and agents to include\n const include = config.include || [];\n const newIncludes = ['worker', 'agents'].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 we don't need\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 ];\n\n const dirsToRemove = ['src', 'public'];\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 projectName = getProjectName(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 cloudflare and agentbuilder plugins.');\n }\n\n // 2. Add or refresh package dependencies\n updatePackageDependencies(cwd);\n\n // 3. Create or update wrangler.jsonc\n createOrUpdateWranglerConfig(cwd, projectName, force);\n\n // 4. Create or update worker entry point\n await createOrUpdateWorkerEntry(cwd, force);\n\n // 5. Create Durable Object files\n createDurableObjects(cwd);\n\n // 6. Create agent directories with documentation\n createDirectoriesAndDocs(cwd);\n\n // 7. Update tsconfig.json\n updateTsConfig(cwd);\n\n // 8. Clean up default Vite files (only if force is true, meaning fresh project)\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(' CLAUDE.md # Architecture documentation');\n logger.log(' agents/');\n logger.log(' ├── Thread.ts # Durable Object for threads');\n logger.log(' ├── AgentBuilder.ts # Durable Object for agent state');\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(' worker/');\n logger.log(' └── index.ts # Cloudflare Worker entry point');\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 { FIRST_PARTY_PROVIDER_PACKAGES } 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}\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 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 PLATFORM_RUNTIME_PACKAGE = '@standardagents/platform-runtime';\nconst PACKAGE_MANAGERS = ['npm', 'pnpm', 'yarn', 'bun'] as const;\ntype SupportedPackageManager = typeof PACKAGE_MANAGERS[number];\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\nfunction runCommandQuiet(command: string, args: string[], cwd: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: 'ignore',\n shell: false,\n detached: true,\n });\n child.on('error', reject);\n child.on('spawn', () => {\n child.unref();\n resolve();\n });\n });\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\nasync function waitForLocalDevServer(url: string): Promise<void> {\n const deadline = Date.now() + 30_000;\n while (Date.now() < deadline) {\n try {\n const response = await fetch(url, { cache: 'no-store' });\n if (response.ok) return;\n } catch {\n // The dev server is still starting.\n }\n await sleep(500);\n }\n throw new Error(`Local dev server did not become ready at ${url}`);\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 return hasBuilderDependency(targetPath);\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 extraPackageDirs: Record<string, 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 const packageNames = [\n ...GENERATED_STANDARD_AGENTS_PACKAGES,\n ...Object.keys(extraPackageDirs),\n ];\n\n for (const packageName of packageNames) {\n if (!(packageName in dependencies)) continue;\n\n const packageDir = extraPackageDirs[packageName] ?? 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 resolvePlatformRuntimePackageDir(): string | null {\n const explicitRoot = process.env.STANDARDAGENTS_PLATFORM_RUNTIME_ROOT?.trim();\n if (!explicitRoot) return null;\n\n const packageDir = path.resolve(explicitRoot);\n validateWorkspacePackageDir(PLATFORM_RUNTIME_PACKAGE, packageDir);\n return packageDir;\n}\n\nfunction addProjectDependency(projectPath: string, packageName: string, version: string): void {\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 packageJson.dependencies = {\n ...(packageJson.dependencies ?? {}),\n [packageName]: packageJson.dependencies?.[packageName] ?? version,\n };\n fs.writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf-8');\n}\n\nexport function ensurePlatformRuntimeRegistration(projectPath: string): boolean {\n const workerIndexPath = path.join(projectPath, 'worker', 'index.ts');\n if (!fs.existsSync(workerIndexPath)) return false;\n\n const source = fs.readFileSync(workerIndexPath, 'utf-8');\n if (\n source.includes(`from \"${PLATFORM_RUNTIME_PACKAGE}\"`) ||\n source.includes(`from '${PLATFORM_RUNTIME_PACKAGE}'`)\n ) {\n return false;\n }\n\n const registration = [\n `import { ProviderRegistry } from \"@standardagents/builder/runtime\"`,\n `import { createProviderFromEnv } from \"${PLATFORM_RUNTIME_PACKAGE}\"`,\n '',\n 'ProviderRegistry.setProviderOverride(createProviderFromEnv)',\n '',\n ].join('\\n');\n fs.writeFileSync(workerIndexPath, `${registration}${source}`, 'utf-8');\n return true;\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 const extraPackageDirs: Record<string, string> = {};\n const platformRuntimePackageDir = resolvePlatformRuntimePackageDir();\n if (platformRuntimePackageDir) {\n addProjectDependency(projectPath, PLATFORM_RUNTIME_PACKAGE, 'workspace:*');\n ensurePlatformRuntimeRegistration(projectPath);\n extraPackageDirs[PLATFORM_RUNTIME_PACKAGE] = platformRuntimePackageDir;\n }\n\n return rewriteStandardAgentsDependenciesForWorkspace(projectPath, workspaceRoot, extraPackageDirs);\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\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\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 const gitignorePath = path.join(projectPath, '.gitignore');\n const gitignoreContent = fs.existsSync(gitignorePath)\n ? fs.readFileSync(gitignorePath, 'utf-8')\n : '';\n if (!gitignoreContent.split(/\\r?\\n/).includes('.dev.vars')) {\n const prefix =\n gitignoreContent.length === 0\n ? ''\n : gitignoreContent.endsWith('\\n')\n ? '\\n'\n : '\\n\\n';\n fs.appendFileSync(gitignorePath, `${prefix}# Standard Agents local platform token\\n.dev.vars\\n`);\n }\n\n return envPath;\n}\n\nasync function runPlatformInit(projectNameArg: string | undefined, options: InitOptions): Promise<void> {\n const cwd = process.cwd();\n if (options.bootstrap) {\n logger.warning('Legacy bootstrap codes now continue through browser onboarding.');\n }\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 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 const project = await waitForPlatformProject(session, (progress) => {\n logger.info(progress.message);\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 ${project.repo_clone_url}...`);\n await runCommand('git', ['clone', project.repo_clone_url, projectName], cwd);\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\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 devPort = await findAvailablePort(5173);\n const devUrl = `http://127.0.0.1:${devPort}`;\n logger.info(`Starting local dev server at ${devUrl}...`);\n await runCommandQuiet(projectPackageManager, buildDevServerCommand(projectPackageManager, devPort), projectPath);\n await waitForLocalDevServer(devUrl);\n openUrl(devUrl);\n\n logger.success('Project is connected to Standard Agents.');\n logger.log(`Repository: ${project.repo_html_url ?? project.repo_clone_url}`);\n logger.log(`Local token written to ${path.relative(cwd, envPath)}`);\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 const devFlag = pm === 'npm' ? '--save-dev' : '-D';\n\n if (packageSpecifier === 'workspace:*') {\n logInfo('Using local workspace @standardagents/* packages (workspace:*).');\n }\n\n await withTuiSpinner(initTuiMode, 'Installing dependencies...', async () => {\n // Install dev dependencies\n await runCommand(pm, [\n installCmd, devFlag,\n '@cloudflare/vite-plugin',\n 'wrangler',\n ], projectPath, { quiet: initTuiMode });\n\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 logInfo('Refreshing wrangler type bindings...');\n\n try {\n await withTuiSpinner(initTuiMode, 'Generating wrangler types...', async () => {\n await runCommand('npx', ['wrangler', 'types'], projectPath, { quiet: initTuiMode });\n });\n } catch (error) {\n logWarning('Could not generate types automatically. Run \"npx wrangler types\" manually.');\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 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 syncProjectAuthEnv(projectPath, endpoint, state);\n return { state, reused: false };\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}\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 };\n } catch {\n return { active_org_id: null, orgs: {} };\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 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 path from 'node:path';\nimport { execSync } from 'node:child_process';\nimport chalk from 'chalk';\nimport { logger } from '../utils/logger.js';\nimport { loadBootstrapState } from '../utils/bootstrap-state.js';\n\n// --- Types ---\n\ninterface DeployManifest {\n agents: string[];\n builder_version: string;\n}\n\ninterface PlatformManifestResponse {\n latest_builder_version: string;\n minimum_builder_version: string;\n}\n\ninterface DeployResponse {\n deploy: {\n id: string;\n account_id: string;\n org_slug?: string;\n organization?: {\n id: string;\n slug: string;\n };\n builder_version: string;\n status: string;\n created_at: number;\n completed_at: number;\n };\n}\n\ninterface DeployErrorResponse {\n error?: { code: string; message: string };\n errors?: string[];\n}\n\nexport interface DeployOptions {\n apiKey?: string;\n endpoint?: string;\n}\n\ninterface SessionCookieAuth {\n kind: 'session-cookie';\n cookie: string;\n}\n\ninterface ApiKeyAuth {\n kind: 'api-key';\n apiKey: string;\n}\n\ntype DeployAuth = SessionCookieAuth | ApiKeyAuth;\n\n// --- Constants ---\n\nconst DEFAULT_ENDPOINT = 'https://api.standardagents.ai';\n\nconst FREE_TIER_BUNDLE_LIMIT = 5 * 1024 * 1024; // 5 MB\n\n// --- Pure helper functions (exported for testing) ---\n\n/** Parse a .env file into key-value pairs. Ignores comments and empty lines. */\nexport function parseEnvFile(content: string): Record<string, string> {\n const result: Record<string, string> = {};\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) continue;\n const eqIndex = trimmed.indexOf('=');\n if (eqIndex === -1) continue;\n const key = trimmed.slice(0, eqIndex).trim();\n let value = trimmed.slice(eqIndex + 1).trim();\n // Strip surrounding quotes and handle escaped quotes inside\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 result[key] = value;\n }\n return result;\n}\n\n/**\n * Compare two semver strings. Returns -1 if a < b, 0 if equal, 1 if a > b.\n * Pre-release versions (e.g. 1.0.0-alpha) are treated as less than the release version.\n */\nexport function compareVersions(a: string, b: string): number {\n // Strip v prefix and split off pre-release suffix\n const [coreA, preA] = a.replace(/^v/, '').split('-', 2);\n const [coreB, preB] = b.replace(/^v/, '').split('-', 2);\n\n const partsA = coreA.split('.').map(Number);\n const partsB = coreB.split('.').map(Number);\n for (let i = 0; i < 3; i++) {\n const va = partsA[i] ?? 0;\n const vb = partsB[i] ?? 0;\n if (va < vb) return -1;\n if (va > vb) return 1;\n }\n\n // Equal core versions — pre-release is less than release\n if (preA && !preB) return -1;\n if (!preA && preB) return 1;\n return 0;\n}\n\n/** Validate bundle size against the free tier limit. Returns null if OK, or a warning message. */\nexport function validateBundleSize(sizeBytes: number): string | null {\n if (sizeBytes > FREE_TIER_BUNDLE_LIMIT) {\n return `Bundle size (${formatBytes(sizeBytes)}) exceeds the free tier limit (${formatBytes(FREE_TIER_BUNDLE_LIMIT)}). A paid plan may be required.`;\n }\n return null;\n}\n\n/** Create a deploy manifest from agent names and builder version. */\nexport function createManifest(agents: string[], builderVersion: string): DeployManifest {\n return {\n agents,\n builder_version: builderVersion,\n };\n}\n\n/** Format bytes into a human-readable string. */\nexport function formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\n/** Format a deploy error response into a human-readable message. */\nexport function formatDeployError(response: DeployErrorResponse): string {\n if (response.error) {\n return `${response.error.code}: ${response.error.message}`;\n }\n if (response.errors && response.errors.length > 0) {\n return response.errors.join('\\n');\n }\n return 'Unknown error';\n}\n\n// --- IO helper functions (exported for testing) ---\n\n/** Check if the current directory is a Standard Agents project. */\nexport function detectProject(): boolean {\n const hasWranglerJsonc = fs.existsSync('wrangler.jsonc') || fs.existsSync('wrangler.json');\n const hasAgentsDir = fs.existsSync('agents/agents');\n return hasWranglerJsonc || hasAgentsDir;\n}\n\n/**\n * Load deploy configuration from options, env vars, and .env file.\n * Throws if API key is not found (instead of process.exit, for testability).\n */\nexport function loadConfig(options: DeployOptions): { apiKey: string; endpoint: string } {\n // Read .env file once (if it exists) as the lowest-priority source\n const envFileVars = fs.existsSync('.env')\n ? parseEnvFile(fs.readFileSync('.env', 'utf-8'))\n : {};\n\n // API key: CLI flag > canonical env var > legacy env var > .env file\n const apiKey =\n options.apiKey\n || process.env.STANDARD_AGENTS_API_KEY\n || process.env.PLATFORM_API_KEY\n || envFileVars.STANDARD_AGENTS_API_KEY\n || envFileVars.PLATFORM_API_KEY;\n if (!apiKey) {\n throw new Error(\n 'No API key found. Provide one with --api-key, set STANDARD_AGENTS_API_KEY env var, or add it to .env'\n );\n }\n\n // Endpoint: CLI flag > env var > .env file > default\n const endpoint =\n options.endpoint\n || process.env.STANDARD_AGENTS_API_URL\n || process.env.PLATFORM_ENDPOINT\n || envFileVars.STANDARD_AGENTS_API_URL\n || envFileVars.PLATFORM_ENDPOINT\n || DEFAULT_ENDPOINT;\n\n return { apiKey, endpoint };\n}\n\nfunction loadEnvFileVars(projectPath: string): Record<string, string> {\n const envPath = path.join(projectPath, '.env');\n if (!fs.existsSync(envPath)) return {};\n return parseEnvFile(fs.readFileSync(envPath, 'utf-8'));\n}\n\nfunction resolveEndpoint(options: DeployOptions, envFileVars: Record<string, string>): string {\n return options.endpoint\n || process.env.PLATFORM_ENDPOINT\n || envFileVars.PLATFORM_ENDPOINT\n || DEFAULT_ENDPOINT;\n}\n\nfunction authHeadersForDeploy(auth: DeployAuth): Record<string, string> {\n if (auth.kind === 'session-cookie') {\n return { Cookie: auth.cookie };\n }\n return { Authorization: `Bearer ${auth.apiKey}` };\n}\n\nexport function resolveDeployAuth(\n options: DeployOptions,\n projectPath: string = process.cwd(),\n): { endpoint: string; auth: DeployAuth } {\n const envFileVars = loadEnvFileVars(projectPath);\n const endpoint = resolveEndpoint(options, envFileVars);\n\n if (options.apiKey?.trim()) {\n return { endpoint, auth: { kind: 'api-key', apiKey: options.apiKey.trim() } };\n }\n\n const bootstrap = loadBootstrapState(projectPath);\n if (bootstrap?.endpoint === endpoint && bootstrap.session_cookie) {\n return {\n endpoint,\n auth: {\n kind: 'session-cookie',\n cookie: bootstrap.session_cookie,\n },\n };\n }\n\n const apiKey = process.env.PLATFORM_API_KEY || envFileVars.PLATFORM_API_KEY;\n if (apiKey) {\n return { endpoint, auth: { kind: 'api-key', apiKey } };\n }\n\n if (bootstrap?.endpoint === endpoint && !bootstrap.session_cookie) {\n throw new Error(\n 'Stored org session is from an older CLI version and cannot deploy. Run `agents logout` then `agents login --bootstrap <code>`.',\n );\n }\n\n throw new Error(\n 'No local deploy auth found. Run `agents login --bootstrap <code>` (interactive) or pass --api-key (automation).',\n );\n}\n\n/**\n * Discover agent names from agents/agents/ directory.\n * Returns agent names extracted from defineAgent() calls, falling back to filenames.\n */\nexport function discoverAgents(): string[] {\n const agentsDir = 'agents/agents';\n if (!fs.existsSync(agentsDir)) return [];\n\n const scriptExtensions = new Set(['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs']);\n const files = fs.readdirSync(agentsDir).filter(f => scriptExtensions.has(path.extname(f)));\n\n return files.map(file => {\n const filePath = path.join(agentsDir, file);\n // Guard against symlinks pointing outside the project\n const realPath = fs.realpathSync(filePath);\n if (!realPath.startsWith(fs.realpathSync('.'))) {\n return path.basename(file, path.extname(file));\n }\n const content = fs.readFileSync(filePath, 'utf-8');\n // Match name property inside defineAgent(), handling nested objects via [\\s\\S]\n const nameMatch = content.match(/defineAgent\\s*\\(\\s*\\{[\\s\\S]*?\\bname\\s*:\\s*['\"]([^'\"]+)['\"]/);\n return nameMatch ? nameMatch[1] : path.basename(file, path.extname(file));\n });\n}\n\n/** Read the installed @standardagents/builder version. */\nexport function getBuilderVersion(): string {\n const searchPaths = [\n 'node_modules/@standardagents/builder/package.json',\n '../node_modules/@standardagents/builder/package.json',\n ];\n for (const p of searchPaths) {\n if (fs.existsSync(p)) {\n const pkg = JSON.parse(fs.readFileSync(p, 'utf-8'));\n return pkg.version;\n }\n }\n throw new Error('Could not find @standardagents/builder. Is it installed?');\n}\n\n/** Detect the user's package manager. */\nfunction detectPackageManager(): string {\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 // Fall back to lockfile detection\n if (fs.existsSync('pnpm-lock.yaml')) return 'pnpm';\n if (fs.existsSync('yarn.lock')) return 'yarn';\n if (fs.existsSync('bun.lockb') || fs.existsSync('bun.lock')) return 'bun';\n return 'npm';\n}\n\n/**\n * Run Vite production build with platform endpoint injected.\n * Note: STANDARD_AGENTS_API_KEY is NOT passed to the build — it is a runtime secret\n * injected by the platform via service binding, not a build-time variable.\n */\nfunction buildProject(endpoint: string): void {\n const pm = detectPackageManager();\n const buildCmd = pm === 'npm' ? 'npx vite build' : `${pm} exec vite build`;\n\n execSync(buildCmd, {\n stdio: 'inherit',\n env: {\n ...process.env,\n STANDARD_AGENTS_API_URL: endpoint,\n PLATFORM_ENDPOINT: endpoint,\n },\n });\n}\n\n/**\n * Find the Worker bundle in the build output.\n * Searches common locations produced by @cloudflare/vite-plugin.\n */\nexport function findWorkerBundle(): { bundlePath: string; bundleContent: Buffer } {\n // The Cloudflare Vite plugin outputs Worker bundles to .wrangler/tmp/\n const searchDirs = ['.wrangler/tmp', 'dist'];\n\n for (const dir of searchDirs) {\n if (!fs.existsSync(dir)) continue;\n\n // Search recursively for .js or .mjs files that look like Worker bundles\n const bundle = findBundleInDir(dir);\n if (bundle) return bundle;\n }\n\n throw new Error(\n 'Could not find Worker bundle in build output.\\n' +\n 'Expected build output in .wrangler/tmp/ or dist/.\\n' +\n 'Make sure `vite build` completed successfully.'\n );\n}\n\nfunction findBundleInDir(dir: string): { bundlePath: string; bundleContent: Buffer } | null {\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n const jsFiles = entries.filter(e => e.isFile() && (e.name.endsWith('.js') || e.name.endsWith('.mjs')));\n\n // Prioritize index.js/index.mjs, then largest file\n jsFiles.sort((a, b) => {\n const aIsIndex = a.name === 'index.js' || a.name === 'index.mjs' ? 0 : 1;\n const bIsIndex = b.name === 'index.js' || b.name === 'index.mjs' ? 0 : 1;\n if (aIsIndex !== bIsIndex) return aIsIndex - bIsIndex;\n // Larger files are more likely to be the bundle\n const aSize = fs.statSync(path.join(dir, a.name)).size;\n const bSize = fs.statSync(path.join(dir, b.name)).size;\n return bSize - aSize;\n });\n\n for (const entry of jsFiles) {\n const fullPath = path.join(dir, entry.name);\n const content = fs.readFileSync(fullPath);\n // Worker bundles contain export statements and are non-empty\n if (content.length > 0 && content.toString('utf-8', 0, 10000).includes('export')) {\n return { bundlePath: fullPath, bundleContent: content };\n }\n }\n\n // Then check subdirectories\n for (const entry of entries) {\n if (entry.isDirectory() && entry.name !== 'client' && entry.name !== 'node_modules') {\n const result = findBundleInDir(path.join(dir, entry.name));\n if (result) return result;\n }\n }\n\n return null;\n}\n\n/** Check platform version requirements. */\nexport async function checkPlatformVersion(\n endpoint: string,\n builderVersion: string,\n authHeaders: Record<string, string> = {},\n): Promise<PlatformManifestResponse> {\n const res = await fetch(`${endpoint}/manifest`, { headers: authHeaders });\n if (!res.ok) {\n throw new Error(`Failed to check platform version: ${res.status} ${res.statusText}`);\n }\n const manifest: PlatformManifestResponse = await res.json();\n\n // Check minimum version\n if (compareVersions(builderVersion, manifest.minimum_builder_version) < 0) {\n throw new Error(\n `Builder version ${builderVersion} is below the platform minimum (${manifest.minimum_builder_version}).\\n` +\n `Please upgrade @standardagents/builder:\\n` +\n ` npm install @standardagents/builder@latest`\n );\n }\n\n return manifest;\n}\n\n/** Upload the deploy to the Platform API. */\nexport async function uploadDeploy(\n endpoint: string,\n auth: DeployAuth | string,\n bundleContent: Buffer,\n manifest: DeployManifest,\n builderVersion: string\n): Promise<DeployResponse> {\n const formData = new FormData();\n formData.append('bundle', new Blob([new Uint8Array(bundleContent)], { type: 'application/javascript' }), 'index.js');\n formData.append('manifest', new Blob([JSON.stringify(manifest)], { type: 'application/json' }), 'manifest.json');\n formData.append('builder_version', builderVersion);\n formData.append('agent_count', String(manifest.agents.length));\n\n const res = await fetch(`${endpoint}/deploys`, {\n method: 'POST',\n headers: typeof auth === 'string'\n ? authHeadersForDeploy({ kind: 'api-key', apiKey: auth })\n : authHeadersForDeploy(auth),\n body: formData,\n });\n\n let body: unknown;\n try {\n body = await res.json();\n } catch {\n throw new Error(`Deploy failed (${res.status}): Invalid response from server`);\n }\n\n if (!res.ok) {\n const errorMsg = formatDeployError(body as DeployErrorResponse);\n throw new Error(`Deploy failed (${res.status}): ${errorMsg}`);\n }\n\n return body as DeployResponse;\n}\n\n// --- Main command ---\n\nexport async function deploy(options: DeployOptions) {\n console.log('');\n logger.info(`${chalk.bold('Standard Agents Deploy')}\\n`);\n\n // Step 1: Detect project\n if (!detectProject()) {\n logger.error('This does not appear to be a Standard Agents project.');\n logger.info('Run this command from a directory with wrangler.jsonc and agents/agents/.');\n process.exit(1);\n }\n\n // Step 2: Load configuration + auth context\n let endpoint: string;\n let auth: DeployAuth;\n try {\n ({ endpoint, auth } = resolveDeployAuth(options));\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\n logger.success(\n auth.kind === 'session-cookie'\n ? 'Configuration loaded (org-scoped session auth)'\n : 'Configuration loaded (API key auth)',\n );\n\n // Step 3: Discover agents\n const agents = discoverAgents();\n if (agents.length === 0) {\n const agentsDir = path.resolve('agents/agents');\n logger.error(`No deployable agents found in ${agentsDir}.`);\n if (!fs.existsSync(agentsDir)) {\n logger.info('Create agents/agents/ and add at least one file exporting defineAgent(...).');\n } else {\n const visibleEntries = fs.readdirSync(agentsDir).filter((entry) => !entry.startsWith('.'));\n if (visibleEntries.length === 0) {\n logger.info('agents/agents/ exists but is empty. Add at least one agent file.');\n } else {\n const preview = visibleEntries.slice(0, 5).join(', ');\n const suffix = visibleEntries.length > 5 ? ', ...' : '';\n logger.info(`Found non-hidden entries in agents/agents/: ${preview}${suffix}`);\n }\n }\n logger.info(`Current working directory: ${process.cwd()}`);\n logger.info('Run deploy from your project root where agents/agents/ lives.');\n process.exit(1);\n }\n logger.success(`Found ${agents.length} agent${agents.length === 1 ? '' : 's'}: ${agents.join(', ')}`);\n\n // Step 4: Get builder version\n let builderVersion: string;\n try {\n builderVersion = getBuilderVersion();\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\n logger.info(`Builder version: ${builderVersion}`);\n\n // Step 5: Check platform version requirements\n try {\n const platformManifest = await checkPlatformVersion(endpoint, builderVersion, authHeadersForDeploy(auth));\n if (compareVersions(builderVersion, platformManifest.latest_builder_version) < 0) {\n logger.warning(\n `A newer builder version is available (${platformManifest.latest_builder_version}). Consider upgrading.`\n );\n }\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\n\n // Step 6: Build (only endpoint is passed — API key is a runtime secret, not a build-time var)\n logger.info('Building project...\\n');\n try {\n buildProject(endpoint);\n } catch {\n console.log('');\n logger.error('Build failed. See output above for details.');\n process.exit(1);\n }\n console.log('');\n logger.success('Build complete');\n\n // Step 7: Find bundle and create manifest\n let bundlePath: string;\n let bundleContent: Buffer;\n try {\n ({ bundlePath, bundleContent } = findWorkerBundle());\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = createManifest(agents, builderVersion);\n logger.success(`Bundle: ${bundlePath} (${formatBytes(bundleContent.length)})`);\n\n // Step 8: Validate bundle size\n const sizeWarning = validateBundleSize(bundleContent.length);\n if (sizeWarning) {\n logger.warning(sizeWarning);\n }\n\n // Step 9: Upload\n logger.info('Uploading...');\n try {\n const result = await uploadDeploy(endpoint, auth, bundleContent, manifest, builderVersion);\n console.log('');\n logger.success(chalk.bold('Deploy successful!'));\n console.log(` Deploy ID: ${result.deploy.id}`);\n console.log(` Status: ${result.deploy.status}`);\n\n const organizationSlug = result.deploy.organization?.slug ?? result.deploy.org_slug;\n if (organizationSlug) {\n console.log(` URL: https://${organizationSlug}.standardagents.ai`);\n }\n console.log('');\n } catch (err) {\n logger.error((err as Error).message);\n process.exit(1);\n }\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 'wrangler.jsonc',\n 'worker',\n 'agents',\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: 'Build and deploy this linked project to StandardAgents.',\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 { Command, Option } from 'commander';\nimport { init } from './commands/init.js';\nimport { isInitWizardReturnToHomeError } 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';\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 .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('Build and deploy your project to the Standard Agents platform')\n .option('--api-key <key>', 'Platform API key (overrides STANDARD_AGENTS_API_KEY env var)')\n .option('--endpoint <url>', 'Platform API endpoint (default: https://api.standardagents.ai)')\n .action(deploy);\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"]}
|