@standardagents/cli 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/logger.ts","../src/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,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,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,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,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,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;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;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;;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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 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}\n\\`\\`\\`\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 // ...\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\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## 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\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\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\\` supports optional \\`name\\` for human-friendly child thread labels.\nPair it with \\`initAgentNameProperty\\` to map that argument into 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/:id/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## 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 // Parent state (for sub-prompts)\n const root = state.rootState;\n}\n\\`\\`\\`\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| \\`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, and resource loading.\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- \\`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_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/:id/name\\` |\n| \\`name.get.ts\\` | GET | \\`/api/threads/:id/name\\` |\n| \\`name.post.ts\\` | POST | \\`/api/threads/:id/name\\` |\n| \\`name.put.ts\\` | PUT | \\`/api/threads/:id/name\\` |\n| \\`name.delete.ts\\` | DELETE | \\`/api/threads/:id/name\\` |\n| \\`nested/route.ts\\` | GET | \\`/api/threads/:id/nested/route\\` |\n\n## Basic Example\n\n\\`\\`\\`typescript\n// agents/api/status.get.ts -> GET /api/threads/:id/status\nimport { defineThreadEndpoint } from '@standardagents/spec';\n\nexport default defineThreadEndpoint(async (req, state) => {\n const { messages, total } = await state.getMessages();\n return Response.json({\n threadId: state.threadId,\n messageCount: total,\n status: 'active',\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, etc. |\n\nNote: \\`state.execution\\` is always \\`null\\` in endpoints since the thread is at rest.\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 // 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/:id/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/:id/status\n├── export.post.ts -> POST /api/threads/:id/export\n└── messages/\n ├── count.ts -> GET /api/threads/:id/messages/count\n └── search.post.ts -> POST /api/threads/:id/messages/search\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\"],\n \"observability\": {\n \"enabled\": true\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 } 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 }\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\n if (hasBindings) {\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 // 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 bindings.push(\n { name: 'AGENT_BUILDER_THREAD', class_name: 'DurableThread' },\n { 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\n if (hasRouter && hasDurableExports && !force) {\n logger.info(`${path.relative(cwd, entryPath)} already configured`);\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('');\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/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"]}