clawup 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../lib/process.ts", "../../core/src/types.ts", "../../core/src/constants.ts", "../../core/src/plugin-registry.ts", "../../core/src/coding-agent-registry.ts", "../../core/src/dep-registry.ts", "../../core/src/deps.ts", "../../core/src/skills.ts", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.cjs", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.cjs", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.cjs", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.cjs", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.cjs", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.cjs", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.cjs", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.cjs", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.cjs", "../../core/src/schemas/manifest.ts", "../../core/src/schemas/identity.ts", "../../core/src/schemas/index.ts", "../../core/src/index.ts", "../../core/src/identity.ts", "../lib/vendor.ts", "../lib/exec.ts", "../lib/workspace.ts", "../lib/tailscale.ts", "../lib/pulumi.ts", "../lib/config.ts", "../lib/ui.ts", "../lib/tool-helpers.ts", "../tools/deploy.ts", "../tools/status.ts", "../tools/validate.ts", "../tools/destroy.ts", "../tools/redeploy.ts", "../tools/push.ts", "../tools/webhooks.ts", "../adapters/cli-adapter.ts", "../adapters/api-adapter.ts", "../adapters/index.ts", "../tools/index.ts", "../commands/deploy.ts", "../bin.ts", "../commands/init.ts", "../lib/prerequisites.ts", "../commands/status.ts", "../commands/ssh.ts", "../commands/validate.ts", "../commands/push.ts", "../commands/destroy.ts", "../commands/list.ts", "../commands/update.ts", "../commands/config.ts", "../commands/secrets.ts", "../commands/redeploy.ts", "../commands/webhooks.ts", "../lib/update-check.ts"],
4
- "sourcesContent": ["/**\n * Graceful shutdown and child process tracking.\n *\n * Spawn helpers in exec.ts and cli-adapter.ts register child processes here.\n * bin.ts calls setupGracefulShutdown() at startup so that SIGINT / SIGTERM\n * are forwarded to any running children before the CLI exits.\n */\n\nimport type { ChildProcess } from \"child_process\";\n\nconst activeChildren = new Set<ChildProcess>();\n\n/**\n * Register a child process for cleanup on exit.\n * Automatically unregisters when the child closes or errors.\n */\nexport function trackChild(child: ChildProcess): void {\n activeChildren.add(child);\n const remove = () => activeChildren.delete(child);\n child.on(\"close\", remove);\n child.on(\"error\", remove);\n}\n\n/**\n * Install SIGINT and SIGTERM handlers that forward the signal\n * to tracked child processes before exiting.\n */\nexport function setupGracefulShutdown(): void {\n const cleanup = (signal: NodeJS.Signals, exitCode: number) => {\n for (const child of activeChildren) {\n child.kill(signal);\n }\n process.exit(exitCode);\n };\n\n process.on(\"SIGINT\", () => cleanup(\"SIGINT\", 130));\n process.on(\"SIGTERM\", () => cleanup(\"SIGTERM\", 143));\n}\n", "/**\n * Shared type definitions for Clawup.\n * Types are derived from Zod schemas \u2014 the schemas are the source of truth.\n */\n\nimport type { z } from \"zod\";\nimport type {\n AgentDefinitionSchema,\n ClawupManifestSchema,\n PluginConfigFileSchema,\n IdentityManifestSchema,\n} from \"./schemas\";\n\n/** Definition of a single agent in the manifest */\nexport type AgentDefinition = z.infer<typeof AgentDefinitionSchema>;\n\n/** Per-plugin configuration file stored at ~/.clawup/configs/<stack>/plugins/<plugin>.yaml */\nexport type PluginConfigFile = z.infer<typeof PluginConfigFileSchema>;\n\n/** The clawup.yaml manifest */\nexport type ClawupManifest = z.infer<typeof ClawupManifestSchema>;\n\n/** Manifest schema for an agent identity (identity.yaml) */\nexport type IdentityManifest = z.infer<typeof IdentityManifestSchema>;\n\n/**\n * Result returned by fetchIdentity().\n * Contains the parsed manifest and all workspace/skill files from the identity directory.\n */\nexport interface IdentityResult {\n /** Parsed identity manifest (identity.yaml) */\n manifest: IdentityManifest;\n /** Files keyed by relative path (e.g., \"SOUL.md\", \"skills/pm-queue-handler/SKILL.md\") */\n files: Record<string, string>;\n}\n\n/**\n * Validate an AgentDefinition for consistency.\n *\n * @throws Error with descriptive message if validation fails\n */\nexport function validateAgentDefinition(agent: AgentDefinition): void {\n if (!agent.name) {\n throw new Error(`Agent definition missing required field \"name\".`);\n }\n\n if (!agent.displayName) {\n throw new Error(`Agent \"${agent.name}\" missing required field \"displayName\".`);\n }\n\n if (!agent.role) {\n throw new Error(`Agent \"${agent.name}\" missing required field \"role\".`);\n }\n\n if (!agent.identity) {\n throw new Error(`Agent \"${agent.name}\" missing required field \"identity\".`);\n }\n\n if (typeof agent.volumeSize !== \"number\" || agent.volumeSize <= 0) {\n throw new Error(`Agent \"${agent.name}\": \"volumeSize\" must be a positive number.`);\n }\n}\n\n/** Result of a single prerequisite check */\nexport interface PrereqResult {\n name: string;\n ok: boolean;\n message: string;\n hint?: string;\n}\n\n/**\n * Discriminated union for fallible operations that don't return a value.\n * Use instead of `{ ok: boolean; error?: string }` for proper type narrowing.\n */\nexport type VoidResult = { ok: true } | { ok: false; error: string };\n\n/**\n * Discriminated union for fallible operations that return a value on success.\n * After narrowing with `if (result.ok)`, `result.value` is typed as `T`.\n */\nexport type Result<T> = { ok: true; value: T } | { ok: false; error: string };\n", "/**\n * Constants, preset definitions, aliases, and defaults\n */\n\n/**\n * Built-in agent identities.\n * Each entry points to a subfolder in the army-identities Git repo.\n * The identity.yaml inside provides displayName, role, volumeSize, plugins, etc.\n */\nexport const BUILT_IN_IDENTITIES: Record<string, { path: string; label: string; hint: string }> = {\n pm: {\n path: \"https://github.com/stepandel/army-identities#pm\",\n label: \"Juno (PM)\",\n hint: \"Break down tickets, research, plan and sequence work, track progress, unblock teams\",\n },\n eng: {\n path: \"https://github.com/stepandel/army-identities#eng\",\n label: \"Titus (Engineer)\",\n hint: \"Lead engineering, coding, shipping\",\n },\n tester: {\n path: \"https://github.com/stepandel/army-identities#tester\",\n label: \"Scout (QA)\",\n hint: \"Quality assurance, verification, bug hunting\",\n },\n};\n\n\n/** Map agent aliases to role keys */\nexport const AGENT_ALIASES: Record<string, string> = {\n juno: \"pm\",\n titus: \"eng\",\n scout: \"tester\",\n};\n\n/** Available cloud providers */\nexport const PROVIDERS = [\n { value: \"aws\", label: \"AWS\", hint: \"Amazon Web Services EC2 instances\" },\n { value: \"hetzner\", label: \"Hetzner\", hint: \"Hetzner Cloud servers (EU/US)\" },\n] as const;\n\n/** Common AWS regions for selection */\nexport const AWS_REGIONS = [\n { value: \"us-east-1\", label: \"US East (N. Virginia)\" },\n { value: \"us-east-2\", label: \"US East (Ohio)\" },\n { value: \"us-west-2\", label: \"US West (Oregon)\" },\n { value: \"eu-west-1\", label: \"EU (Ireland)\" },\n { value: \"eu-central-1\", label: \"EU (Frankfurt)\" },\n { value: \"ap-southeast-1\", label: \"Asia Pacific (Singapore)\" },\n { value: \"ap-northeast-1\", label: \"Asia Pacific (Tokyo)\" },\n];\n\n/** Hetzner Cloud locations */\nexport const HETZNER_LOCATIONS = [\n { value: \"fsn1\", label: \"Falkenstein, DE (fsn1)\" },\n { value: \"nbg1\", label: \"Nuremberg, DE (nbg1)\" },\n { value: \"hel1\", label: \"Helsinki, FI (hel1)\" },\n { value: \"ash\", label: \"Ashburn, US (ash)\" },\n];\n\n/** Instance type options (AWS) */\nexport const INSTANCE_TYPES = [\n { value: \"t3.small\", label: \"t3.small \u2014 2 vCPU, 2 GB (~$15/mo)\" },\n { value: \"t3.medium\", label: \"t3.medium \u2014 2 vCPU, 4 GB (~$30/mo)\" },\n { value: \"t3.large\", label: \"t3.large \u2014 2 vCPU, 8 GB (~$60/mo)\" },\n];\n\n/** Hetzner server types \u2014 EU locations (cx shared vCPU) */\nexport const HETZNER_SERVER_TYPES_EU = [\n { value: \"cx22\", label: \"cx22 \u2014 2 vCPU, 4 GB (~$4/mo)\" },\n { value: \"cx32\", label: \"cx32 \u2014 4 vCPU, 8 GB (~$7/mo)\" },\n { value: \"cx42\", label: \"cx42 \u2014 8 vCPU, 16 GB (~$14/mo)\" },\n];\n\n/** Hetzner server types \u2014 US locations (cpx shared vCPU, cx not available) */\nexport const HETZNER_SERVER_TYPES_US = [\n { value: \"cpx21\", label: \"cpx21 \u2014 3 vCPU, 4 GB (~$5/mo)\" },\n { value: \"cpx31\", label: \"cpx31 \u2014 4 vCPU, 8 GB (~$9/mo)\" },\n { value: \"cpx41\", label: \"cpx41 \u2014 8 vCPU, 16 GB (~$16/mo)\" },\n];\n\n/** US Hetzner locations (cx types not available) */\nexport const HETZNER_US_LOCATIONS = [\"ash\", \"hil\"];\n\n/** Get server type options for a Hetzner location */\nexport function hetznerServerTypes(location: string) {\n return HETZNER_US_LOCATIONS.includes(location)\n ? HETZNER_SERVER_TYPES_US\n : HETZNER_SERVER_TYPES_EU;\n}\n\n/** Default SSH user for agent instances (Ubuntu 24.04 AMI default) */\nexport const SSH_USER = \"ubuntu\";\n\n/** Estimated monthly cost per instance type (AWS) */\nexport const COST_ESTIMATES: Record<string, number> = {\n \"t3.small\": 15,\n \"t3.medium\": 30,\n \"t3.large\": 60,\n};\n\n/** Estimated monthly cost per server type (Hetzner) */\nexport const HETZNER_COST_ESTIMATES: Record<string, number> = {\n cx22: 4,\n cx32: 7,\n cx42: 14,\n cpx21: 5,\n cpx31: 9,\n cpx41: 16,\n};\n\n/** Manifest filename */\nexport const MANIFEST_FILE = \"clawup.yaml\";\n\n/** Config directory under home (~/.clawup/configs/) */\nexport const CONFIG_DIR = \".clawup/configs\";\n\n/** Plugins config subdirectory name */\nexport const PLUGINS_DIR = \"plugins\";\n\n/**\n * Supported model providers with their API key prefixes and available models\n */\nexport const MODEL_PROVIDERS = {\n anthropic: {\n name: \"Anthropic\",\n envVar: \"ANTHROPIC_API_KEY\",\n keyPrefix: \"sk-ant-\",\n models: [\n { value: \"anthropic/claude-opus-4-6\", label: \"Claude Opus 4.6 (Recommended)\" },\n { value: \"anthropic/claude-sonnet-4-5\", label: \"Claude Sonnet 4.5\" },\n { value: \"anthropic/claude-haiku-4-5\", label: \"Claude Haiku 4.5\" },\n ],\n },\n} as const;\n\n/**\n * Build the Tailscale hostname for an agent.\n * Includes the stack name to avoid conflicts across deployments.\n * Example: \"dev-agent-pm\", \"prod-agent-eng\"\n */\nexport function tailscaleHostname(stackName: string, agentName: string): string {\n return `${stackName}-${agentName}`;\n}\n\n/** Key instructions for onboarding prompts */\nexport const KEY_INSTRUCTIONS = {\n anthropicApiKey: {\n title: \"Anthropic API Key\",\n steps: [\n \"To get your Anthropic API key:\",\n \"1. Go to https://console.anthropic.com/account/keys\",\n \"2. Click \\\"Create Key\\\"\",\n \"3. Copy the key (starts with sk-ant-)\",\n ],\n },\n tailscaleAuthKey: {\n title: \"Tailscale Auth Key\",\n steps: [\n \"To get your Tailscale auth key:\",\n \"1. Go to https://login.tailscale.com/admin/settings/keys\",\n \"2. Click \\\"Generate auth key\\\"\",\n \"3. Enable \\\"Reusable\\\" AND \\\"Ephemeral\\\" \u2014 ephemeral nodes auto-remove when offline\",\n \"4. Copy the key (starts with tskey-auth-)\",\n ],\n },\n tailscaleApiKey: {\n title: \"Tailscale API Key (optional)\",\n steps: [\n \"For reliable cleanup of Tailscale devices during destroy:\",\n \"1. Go to https://login.tailscale.com/admin/settings/keys\",\n \"2. Under \\\"API access tokens\\\", click \\\"Generate access token\\\"\",\n \"3. Copy the key (starts with tskey-api-)\",\n \"4. This is optional but recommended for clean teardowns\",\n ],\n },\n tailnetDnsName: {\n title: \"Tailnet DNS Name\",\n steps: [\n \"To find your Tailnet DNS name:\",\n \"1. Go to https://login.tailscale.com/admin/dns\",\n \"2. Look for your tailnet name at the top\",\n \"3. It looks like \\\"tailXXXXX.ts.net\\\" or a custom domain\",\n ],\n },\n slackCredentials: {\n title: \"Slack App Setup\",\n steps: [\n \"Create a Slack app for each agent using the manifest shown below:\",\n \"1. Go to https://api.slack.com/apps \u2192 \\\"Create New App\\\" \u2192 \\\"From a manifest\\\"\",\n \"2. Select your workspace, paste the JSON manifest, and create the app\",\n \"3. Go to \\\"OAuth & Permissions\\\" \u2014 copy the Bot Token (xoxb-...)\",\n \"4. Under \\\"Basic Information\\\" \u2192 \\\"App-Level Tokens\\\", generate a token\",\n \" with the connections:write scope \u2014 copy it (xapp-...)\",\n ],\n },\n linearApiKey: {\n title: \"Linear API Key\",\n steps: [\n \"Create a separate Linear account for each agent (used by openclaw-linear plugin):\",\n \"1. Invite you+agentname@domain.com to your Linear workspace\",\n \" (plus-addressing forwards to your inbox \u2014 no new email needed)\",\n \" Follow the link in the invite email to create the account and join the org\",\n \"2. Go to Settings \u2192 Security & Access \u2192 Personal API keys \u2192 \\\"New API key\\\"\",\n \"3. Copy the key (starts with lin_api_)\",\n ],\n },\n githubToken: {\n title: \"GitHub Token\",\n steps: [\n \"To get a GitHub personal access token for gh CLI:\",\n \"1. Go to https://github.com/settings/tokens?type=beta\",\n \"2. Click \\\"Generate new token\\\" \u2192 Fine-grained token\",\n \"3. Select repositories, set expiration, and permissions (e.g., repo, read:org)\",\n \"4. Copy the token (starts with github_pat_ or ghp_)\",\n ],\n },\n braveApiKey: {\n title: \"Brave Search API Key\",\n steps: [\n \"To get a Brave Search API key for web search:\",\n \"1. Go to https://brave.com/search/api/\",\n \"2. Sign up or log in to get an API key\",\n \"3. Copy the key (starts with BSA)\",\n ],\n },\n hcloudToken: {\n title: \"Hetzner Cloud API Token\",\n steps: [\n \"To get your Hetzner Cloud API token:\",\n \"1. Go to https://console.hetzner.cloud/\",\n \"2. Select your project (or create one)\",\n \"3. Go to Security \u2192 API Tokens\",\n \"4. Click \\\"Generate API Token\\\" with Read & Write permissions\",\n \"5. Copy the token\",\n ],\n },\n} as const;\n\n/** Generate a Slack app manifest JSON for a given agent */\nexport function slackAppManifest(agentName: string): string {\n return JSON.stringify({\n display_information: {\n name: agentName,\n description: \"Slack connector for OpenClaw\",\n },\n features: {\n bot_user: {\n display_name: agentName,\n always_online: false,\n },\n app_home: {\n messages_tab_enabled: true,\n messages_tab_read_only_enabled: false,\n },\n slash_commands: [\n {\n command: \"/openclaw\",\n description: \"Send a message to OpenClaw\",\n should_escape: false,\n },\n ],\n },\n oauth_config: {\n scopes: {\n bot: [\n \"chat:write\",\n \"chat:write.customize\",\n \"channels:history\",\n \"channels:read\",\n \"groups:history\",\n \"groups:read\",\n \"groups:write\",\n \"im:history\",\n \"im:read\",\n \"im:write\",\n \"mpim:history\",\n \"mpim:read\",\n \"mpim:write\",\n \"users:read\",\n \"app_mentions:read\",\n \"reactions:read\",\n \"reactions:write\",\n \"pins:read\",\n \"pins:write\",\n \"emoji:read\",\n \"commands\",\n \"files:read\",\n \"files:write\",\n ],\n user: [\n \"channels:history\",\n \"channels:read\",\n \"groups:history\",\n \"groups:read\",\n \"im:history\",\n \"im:read\",\n \"mpim:history\",\n \"mpim:read\",\n \"users:read\",\n \"reactions:read\",\n \"pins:read\",\n \"emoji:read\",\n \"search:read\",\n ],\n },\n },\n settings: {\n socket_mode_enabled: true,\n event_subscriptions: {\n bot_events: [\n \"app_mention\",\n \"message.channels\",\n \"message.groups\",\n \"message.im\",\n \"message.mpim\",\n \"reaction_added\",\n \"reaction_removed\",\n \"member_joined_channel\",\n \"member_left_channel\",\n \"channel_rename\",\n \"pin_added\",\n \"pin_removed\",\n ],\n },\n },\n }, null, 2);\n}\n", "/**\n * Shared plugin registry \u2014 metadata used by both index.ts (Pulumi) and the CLI.\n */\n\nexport interface PluginRegistryEntry {\n /** Secret env var mappings: { configKey: envVarName } */\n secretEnvVars: Record<string, string>;\n /** Whether to run `openclaw plugins install` during cloud-init */\n installable: boolean;\n /** Whether this plugin needs Tailscale Funnel (public HTTPS for webhooks) */\n needsFunnel?: boolean;\n}\n\nexport const PLUGIN_REGISTRY: Record<string, PluginRegistryEntry> = {\n \"openclaw-linear\": {\n secretEnvVars: {\n apiKey: \"LINEAR_API_KEY\",\n webhookSecret: \"LINEAR_WEBHOOK_SECRET\",\n },\n installable: true,\n needsFunnel: true,\n },\n slack: {\n secretEnvVars: {\n botToken: \"SLACK_BOT_TOKEN\",\n appToken: \"SLACK_APP_TOKEN\",\n },\n installable: false,\n },\n};\n", "/**\n * Coding agent registry \u2014 defines how each coding agent CLI is installed and configured.\n *\n * Similar to DEP_REGISTRY but for coding agent CLIs (Claude Code, Codex, Amp, etc.)\n * that OpenClaw uses as its backend for AI-assisted coding sessions.\n */\n\nexport interface CodingAgentEntry {\n /** Human-readable display name */\n displayName: string;\n /** Bash script to install the coding agent CLI (runs as ubuntu user via sudo) */\n installScript: string;\n /**\n * Bash script to configure the agent's default model.\n * Receives ${MODEL} variable with the stripped model name (e.g., \"claude-opus-4-6\").\n */\n configureModelScript: string;\n /** OpenClaw cliBackends entry for openclaw.json */\n cliBackend: {\n command: string;\n args: string[];\n output: string;\n modelArg: string;\n sessionArg: string;\n sessionMode: string;\n systemPromptArg: string;\n systemPromptWhen: string;\n imageArg?: string;\n imageMode?: string;\n };\n}\n\nexport const CODING_AGENT_REGISTRY: Record<string, CodingAgentEntry> = {\n \"claude-code\": {\n displayName: \"Claude Code\",\n installScript: `\n# Install Claude Code CLI for ubuntu user\necho \"Installing Claude Code...\"\nsudo -u ubuntu bash << 'CLAUDE_CODE_INSTALL_SCRIPT' || echo \"WARNING: Claude Code installation failed. Install manually with: curl -fsSL https://claude.ai/install.sh | bash\"\nset -e\ncd ~\n\n# Install Claude Code via official installer\ncurl -fsSL https://claude.ai/install.sh | bash\n\n# Add .local/bin to PATH in .bashrc if not already there\nif ! grep -q '.local/bin' ~/.bashrc; then\n echo 'export PATH=\"$HOME/.local/bin:$PATH\"' >> ~/.bashrc\nfi\n\n# Verify installation\nBINARY_PATH=\"$HOME/.local/bin/claude\"\nif [ -x \"$BINARY_PATH\" ] || command -v claude &>/dev/null; then\n echo \"Claude Code installed successfully\"\nelse\n echo \"WARNING: Claude Code installation may have failed\"\n exit 1\nfi\nCLAUDE_CODE_INSTALL_SCRIPT`.trim(),\n configureModelScript: `\n# Configure Claude Code default model\nsudo -u ubuntu bash -c '\nmkdir -p ~/.claude\necho '\"'\"'{\"model\":\"\\${MODEL}\",\"fastMode\":true}'\"'\"' > ~/.claude/settings.json\necho \"Claude Code default model set to \\${MODEL} (fast mode)\"\n'`.trim(),\n cliBackend: {\n command: \"claude\",\n args: [\"-p\", \"--output-format\", \"stream-json\", \"--verbose\"],\n output: \"stream-json\",\n modelArg: \"--model\",\n sessionArg: \"--resume\",\n sessionMode: \"id\",\n systemPromptArg: \"--append-system-prompt\",\n systemPromptWhen: \"always\",\n },\n },\n};\n", "/**\n * Dep registry \u2014 defines how each agent dependency is installed and what secrets it needs.\n *\n * Similar to PLUGIN_REGISTRY but for system-level tools (gh, brave-search, etc.)\n * that agents need but that aren't OpenClaw plugins.\n */\n\nexport interface DepSecret {\n /** Environment variable name (e.g., \"GITHUB_TOKEN\") */\n envVar: string;\n /** Whether the secret is per-agent or shared globally */\n scope: \"agent\" | \"global\";\n}\n\nexport interface DepRegistryEntry {\n /** Human-readable name for display */\n displayName: string;\n /** Bash script to install the dep (runs as root in cloud-init). Empty string = no install needed. */\n installScript: string;\n /** Bash script to run after install for auth/config (runs as ubuntu user).\n * Can reference ${ENV_VAR} placeholders. Empty string = no post-install. */\n postInstallScript: string;\n /** Secret env vars this dep needs. Key = config key suffix, value = env var details. */\n secrets: Record<string, DepSecret>;\n}\n\nexport const DEP_REGISTRY: Record<string, DepRegistryEntry> = {\n gh: {\n displayName: \"GitHub CLI\",\n installScript: `\n# Install GitHub CLI\necho \"Installing GitHub CLI...\"\ntype -p curl >/dev/null || apt-get install -y curl\ncurl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg\nchmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg\necho \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null\napt-get update\napt-get install -y gh\necho \"GitHub CLI installed: $(gh --version | head -n1)\"\n`,\n postInstallScript: `\nif echo \"\\${GITHUB_TOKEN}\" | gh auth login --with-token 2>&1; then\n gh auth setup-git\n echo \"GitHub CLI authenticated successfully\"\nelse\n echo \"WARNING: GitHub CLI authentication failed\"\n echo \" You can authenticate manually later with: gh auth login\"\nfi\n`,\n secrets: {\n GithubToken: { envVar: \"GITHUB_TOKEN\", scope: \"agent\" },\n },\n },\n \"brave-search\": {\n displayName: \"Brave Search\",\n installScript: \"\", // config-only, no binary to install\n postInstallScript: \"\", // config patching stays in config-generator.ts\n secrets: {\n BraveApiKey: { envVar: \"BRAVE_API_KEY\", scope: \"global\" },\n },\n },\n};\n", "/**\n * Dep resolution utilities \u2014 resolves dep names to registry entries\n * and collects the secret env vars they need.\n */\n\nimport { DEP_REGISTRY, DepRegistryEntry } from \"./dep-registry\";\n\nexport interface ResolvedDep {\n name: string;\n entry: DepRegistryEntry;\n}\n\n/** Resolve dep names to registry entries. Throws on unknown deps. */\nexport function resolveDeps(depNames: string[]): ResolvedDep[] {\n return depNames.map((name) => {\n const entry = DEP_REGISTRY[name];\n if (!entry) {\n const known = Object.keys(DEP_REGISTRY).join(\", \");\n throw new Error(\n `Unknown dep \"${name}\". Known deps: ${known}`\n );\n }\n return { name, entry };\n });\n}\n\n/** Collect all secret env vars needed by a set of deps. */\nexport function collectDepSecrets(\n deps: ResolvedDep[]\n): { envVar: string; scope: \"agent\" | \"global\"; configKeySuffix: string }[] {\n const secrets: { envVar: string; scope: \"agent\" | \"global\"; configKeySuffix: string }[] = [];\n const seen = new Set<string>();\n\n for (const dep of deps) {\n for (const [suffix, secret] of Object.entries(dep.entry.secrets)) {\n if (!seen.has(secret.envVar)) {\n seen.add(secret.envVar);\n secrets.push({\n envVar: secret.envVar,\n scope: secret.scope,\n configKeySuffix: suffix,\n });\n }\n }\n }\n\n return secrets;\n}\n", "/**\n * Skill parsing and classification utilities.\n *\n * Skills come in two types:\n * - Private: bundled as files in the identity repo under `skills/`\n * - Public: installed from clawhub via `clawhub install <slug>`\n *\n * Convention: public skills are prefixed with \"clawhub:\" in the skills array.\n */\n\nexport const CLAWHUB_PREFIX = \"clawhub:\";\n\nexport interface ParsedSkill {\n /** Original string from the skills array */\n raw: string;\n /** Slug used for installation or directory lookup */\n slug: string;\n /** Whether this skill is installed from clawhub (public) */\n isPublic: boolean;\n}\n\n/**\n * Parse a single skill string into its components.\n */\nexport function parseSkill(skill: string): ParsedSkill {\n if (skill.startsWith(CLAWHUB_PREFIX)) {\n return {\n raw: skill,\n slug: skill.slice(CLAWHUB_PREFIX.length),\n isPublic: true,\n };\n }\n return {\n raw: skill,\n slug: skill,\n isPublic: false,\n };\n}\n\n/**\n * Classify an array of skill strings into private and public buckets.\n */\nexport function classifySkills(skills: string[]): {\n private: ParsedSkill[];\n public: ParsedSkill[];\n} {\n const result: { private: ParsedSkill[]; public: ParsedSkill[] } = {\n private: [],\n public: [],\n };\n for (const skill of skills) {\n const parsed = parseSkill(skill);\n if (parsed.isPublic) {\n result.public.push(parsed);\n } else {\n result.private.push(parsed);\n }\n }\n return result;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getParsedType = exports.ZodParsedType = exports.objectUtil = exports.util = void 0;\nvar util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (exports.util = util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (exports.objectUtil = objectUtil = {}));\nexports.ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return exports.ZodParsedType.undefined;\n case \"string\":\n return exports.ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? exports.ZodParsedType.nan : exports.ZodParsedType.number;\n case \"boolean\":\n return exports.ZodParsedType.boolean;\n case \"function\":\n return exports.ZodParsedType.function;\n case \"bigint\":\n return exports.ZodParsedType.bigint;\n case \"symbol\":\n return exports.ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return exports.ZodParsedType.array;\n }\n if (data === null) {\n return exports.ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return exports.ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return exports.ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return exports.ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return exports.ZodParsedType.date;\n }\n return exports.ZodParsedType.object;\n default:\n return exports.ZodParsedType.unknown;\n }\n};\nexports.getParsedType = getParsedType;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ZodError = exports.quotelessJson = exports.ZodIssueCode = void 0;\nconst util_js_1 = require(\"./helpers/util.cjs\");\nexports.ZodIssueCode = util_js_1.util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexports.quotelessJson = quotelessJson;\nclass ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util_js_1.util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nexports.ZodError = ZodError;\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ZodError_js_1 = require(\"../ZodError.cjs\");\nconst util_js_1 = require(\"../helpers/util.cjs\");\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodError_js_1.ZodIssueCode.invalid_type:\n if (issue.received === util_js_1.ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodError_js_1.ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util_js_1.util.jsonStringifyReplacer)}`;\n break;\n case ZodError_js_1.ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util_js_1.util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util_js_1.util.joinValues(issue.options)}`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util_js_1.util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util_js_1.util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodError_js_1.ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodError_js_1.ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodError_js_1.ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodError_js_1.ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodError_js_1.ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util_js_1.util.assertNever(issue);\n }\n return { message };\n};\nexports.default = errorMap;\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultErrorMap = void 0;\nexports.setErrorMap = setErrorMap;\nexports.getErrorMap = getErrorMap;\nconst en_js_1 = __importDefault(require(\"./locales/en.cjs\"));\nexports.defaultErrorMap = en_js_1.default;\nlet overrideErrorMap = en_js_1.default;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAsync = exports.isValid = exports.isDirty = exports.isAborted = exports.OK = exports.DIRTY = exports.INVALID = exports.ParseStatus = exports.EMPTY_PATH = exports.makeIssue = void 0;\nexports.addIssueToContext = addIssueToContext;\nconst errors_js_1 = require(\"../errors.cjs\");\nconst en_js_1 = __importDefault(require(\"../locales/en.cjs\"));\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexports.makeIssue = makeIssue;\nexports.EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = (0, errors_js_1.getErrorMap)();\n const issue = (0, exports.makeIssue)({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === en_js_1.default ? undefined : en_js_1.default, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return exports.INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return exports.INVALID;\n if (value.status === \"aborted\")\n return exports.INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexports.ParseStatus = ParseStatus;\nexports.INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nexports.DIRTY = DIRTY;\nconst OK = (value) => ({ status: \"valid\", value });\nexports.OK = OK;\nconst isAborted = (x) => x.status === \"aborted\";\nexports.isAborted = isAborted;\nconst isDirty = (x) => x.status === \"dirty\";\nexports.isDirty = isDirty;\nconst isValid = (x) => x.status === \"valid\";\nexports.isValid = isValid;\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\nexports.isAsync = isAsync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.errorUtil = void 0;\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (exports.errorUtil = errorUtil = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.discriminatedUnion = exports.date = exports.boolean = exports.bigint = exports.array = exports.any = exports.coerce = exports.ZodFirstPartyTypeKind = exports.late = exports.ZodSchema = exports.Schema = exports.ZodReadonly = exports.ZodPipeline = exports.ZodBranded = exports.BRAND = exports.ZodNaN = exports.ZodCatch = exports.ZodDefault = exports.ZodNullable = exports.ZodOptional = exports.ZodTransformer = exports.ZodEffects = exports.ZodPromise = exports.ZodNativeEnum = exports.ZodEnum = exports.ZodLiteral = exports.ZodLazy = exports.ZodFunction = exports.ZodSet = exports.ZodMap = exports.ZodRecord = exports.ZodTuple = exports.ZodIntersection = exports.ZodDiscriminatedUnion = exports.ZodUnion = exports.ZodObject = exports.ZodArray = exports.ZodVoid = exports.ZodNever = exports.ZodUnknown = exports.ZodAny = exports.ZodNull = exports.ZodUndefined = exports.ZodSymbol = exports.ZodDate = exports.ZodBoolean = exports.ZodBigInt = exports.ZodNumber = exports.ZodString = exports.ZodType = void 0;\nexports.NEVER = exports.void = exports.unknown = exports.union = exports.undefined = exports.tuple = exports.transformer = exports.symbol = exports.string = exports.strictObject = exports.set = exports.record = exports.promise = exports.preprocess = exports.pipeline = exports.ostring = exports.optional = exports.onumber = exports.oboolean = exports.object = exports.number = exports.nullable = exports.null = exports.never = exports.nativeEnum = exports.nan = exports.map = exports.literal = exports.lazy = exports.intersection = exports.instanceof = exports.function = exports.enum = exports.effect = void 0;\nexports.datetimeRegex = datetimeRegex;\nexports.custom = custom;\nconst ZodError_js_1 = require(\"./ZodError.cjs\");\nconst errors_js_1 = require(\"./errors.cjs\");\nconst errorUtil_js_1 = require(\"./helpers/errorUtil.cjs\");\nconst parseUtil_js_1 = require(\"./helpers/parseUtil.cjs\");\nconst util_js_1 = require(\"./helpers/util.cjs\");\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if ((0, parseUtil_js_1.isValid)(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError_js_1.ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return (0, util_js_1.getParsedType)(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: (0, util_js_1.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new parseUtil_js_1.ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: (0, util_js_1.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if ((0, parseUtil_js_1.isAsync)(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0, util_js_1.getParsedType)(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0, util_js_1.getParsedType)(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return (0, parseUtil_js_1.isValid)(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => (0, parseUtil_js_1.isValid)(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0, util_js_1.getParsedType)(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await ((0, parseUtil_js_1.isAsync)(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodError_js_1.ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nexports.ZodType = ZodType;\nexports.Schema = ZodType;\nexports.ZodSchema = ZodType;\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.string,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const status = new parseUtil_js_1.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"email\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"emoji\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"uuid\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"nanoid\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"cuid\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"cuid2\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"ulid\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"url\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"regex\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"duration\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"ip\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"jwt\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"cidr\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"base64\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"base64url\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util_js_1.util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil_js_1.errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil_js_1.errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil_js_1.errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil_js_1.errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil_js_1.errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil_js_1.errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil_js_1.errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nexports.ZodString = ZodString;\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.number,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n let ctx = undefined;\n const status = new parseUtil_js_1.ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util_js_1.util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util_js_1.util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil_js_1.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil_js_1.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil_js_1.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil_js_1.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil_js_1.errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil_js_1.errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util_js_1.util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nexports.ZodNumber = ZodNumber;\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new parseUtil_js_1.ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util_js_1.util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil_js_1.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil_js_1.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil_js_1.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil_js_1.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil_js_1.errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nexports.ZodBigInt = ZodBigInt;\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodBoolean = ZodBoolean;\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.date,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_date,\n });\n return parseUtil_js_1.INVALID;\n }\n const status = new parseUtil_js_1.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util_js_1.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nexports.ZodDate = ZodDate;\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodSymbol = ZodSymbol;\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodUndefined = ZodUndefined;\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.null,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodNull = ZodNull;\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodAny = ZodAny;\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodUnknown = ZodUnknown;\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.never,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n}\nexports.ZodNever = ZodNever;\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.void,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodVoid = ZodVoid;\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== util_js_1.ZodParsedType.array) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.array,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: tooBig ? ZodError_js_1.ZodIssueCode.too_big : ZodError_js_1.ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return parseUtil_js_1.ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return parseUtil_js_1.ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nexports.ZodArray = ZodArray;\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util_js_1.util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.object,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return parseUtil_js_1.ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return parseUtil_js_1.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil_js_1.errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil_js_1.errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util_js_1.util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util_js_1.util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util_js_1.util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util_js_1.util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util_js_1.util.objectKeys(this.shape));\n }\n}\nexports.ZodObject = ZodObject;\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError_js_1.ZodError(result.ctx.common.issues));\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_union,\n unionErrors,\n });\n return parseUtil_js_1.INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError_js_1.ZodError(issues));\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_union,\n unionErrors,\n });\n return parseUtil_js_1.INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nexports.ZodUnion = ZodUnion;\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util_js_1.util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.object) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.object,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return parseUtil_js_1.INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nexports.ZodDiscriminatedUnion = ZodDiscriminatedUnion;\nfunction mergeValues(a, b) {\n const aType = (0, util_js_1.getParsedType)(a);\n const bType = (0, util_js_1.getParsedType)(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === util_js_1.ZodParsedType.object && bType === util_js_1.ZodParsedType.object) {\n const bKeys = util_js_1.util.objectKeys(b);\n const sharedKeys = util_js_1.util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === util_js_1.ZodParsedType.array && bType === util_js_1.ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === util_js_1.ZodParsedType.date && bType === util_js_1.ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if ((0, parseUtil_js_1.isAborted)(parsedLeft) || (0, parseUtil_js_1.isAborted)(parsedRight)) {\n return parseUtil_js_1.INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_intersection_types,\n });\n return parseUtil_js_1.INVALID;\n }\n if ((0, parseUtil_js_1.isDirty)(parsedLeft) || (0, parseUtil_js_1.isDirty)(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nexports.ZodIntersection = ZodIntersection;\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.array) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.array,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return parseUtil_js_1.INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return parseUtil_js_1.ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return parseUtil_js_1.ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nexports.ZodTuple = ZodTuple;\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.object) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.object,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return parseUtil_js_1.ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return parseUtil_js_1.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexports.ZodRecord = ZodRecord;\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.map) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.map,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return parseUtil_js_1.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return parseUtil_js_1.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nexports.ZodMap = ZodMap;\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.set) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.set,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nexports.ZodSet = ZodSet;\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.function) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.function,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n function makeArgsIssue(args, error) {\n return (0, parseUtil_js_1.makeIssue)({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, (0, errors_js_1.getErrorMap)(), errors_js_1.defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodError_js_1.ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return (0, parseUtil_js_1.makeIssue)({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, (0, errors_js_1.getErrorMap)(), errors_js_1.defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodError_js_1.ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0, parseUtil_js_1.OK)(async function (...args) {\n const error = new ZodError_js_1.ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0, parseUtil_js_1.OK)(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError_js_1.ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError_js_1.ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexports.ZodFunction = ZodFunction;\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nexports.ZodLazy = ZodLazy;\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n received: ctx.data,\n code: ZodError_js_1.ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return parseUtil_js_1.INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nexports.ZodLiteral = ZodLiteral;\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n expected: util_js_1.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n });\n return parseUtil_js_1.INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n received: ctx.data,\n code: ZodError_js_1.ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nexports.ZodEnum = ZodEnum;\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util_js_1.util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.string && ctx.parsedType !== util_js_1.ZodParsedType.number) {\n const expectedValues = util_js_1.util.objectValues(nativeEnumValues);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n expected: util_js_1.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n });\n return parseUtil_js_1.INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util_js_1.util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util_js_1.util.objectValues(nativeEnumValues);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n received: ctx.data,\n code: ZodError_js_1.ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nexports.ZodNativeEnum = ZodNativeEnum;\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.promise && ctx.common.async === false) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const promisified = ctx.parsedType === util_js_1.ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return (0, parseUtil_js_1.OK)(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nexports.ZodPromise = ZodPromise;\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n (0, parseUtil_js_1.addIssueToContext)(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return parseUtil_js_1.INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (result.status === \"dirty\")\n return (0, parseUtil_js_1.DIRTY)(result.value);\n if (status.value === \"dirty\")\n return (0, parseUtil_js_1.DIRTY)(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return parseUtil_js_1.INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (result.status === \"dirty\")\n return (0, parseUtil_js_1.DIRTY)(result.value);\n if (status.value === \"dirty\")\n return (0, parseUtil_js_1.DIRTY)(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!(0, parseUtil_js_1.isValid)(base))\n return parseUtil_js_1.INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!(0, parseUtil_js_1.isValid)(base))\n return parseUtil_js_1.INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util_js_1.util.assertNever(effect);\n }\n}\nexports.ZodEffects = ZodEffects;\nexports.ZodTransformer = ZodEffects;\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === util_js_1.ZodParsedType.undefined) {\n return (0, parseUtil_js_1.OK)(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nexports.ZodOptional = ZodOptional;\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === util_js_1.ZodParsedType.null) {\n return (0, parseUtil_js_1.OK)(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nexports.ZodNullable = ZodNullable;\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === util_js_1.ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nexports.ZodDefault = ZodDefault;\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if ((0, parseUtil_js_1.isAsync)(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError_js_1.ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError_js_1.ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nexports.ZodCatch = ZodCatch;\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nexports.ZodNaN = ZodNaN;\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexports.BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexports.ZodBranded = ZodBranded;\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return (0, parseUtil_js_1.DIRTY)(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexports.ZodPipeline = ZodPipeline;\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if ((0, parseUtil_js_1.isValid)(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return (0, parseUtil_js_1.isAsync)(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nexports.ZodReadonly = ZodReadonly;\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nfunction custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexports.late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (exports.ZodFirstPartyTypeKind = ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nexports.instanceof = instanceOfType;\nconst stringType = ZodString.create;\nexports.string = stringType;\nconst numberType = ZodNumber.create;\nexports.number = numberType;\nconst nanType = ZodNaN.create;\nexports.nan = nanType;\nconst bigIntType = ZodBigInt.create;\nexports.bigint = bigIntType;\nconst booleanType = ZodBoolean.create;\nexports.boolean = booleanType;\nconst dateType = ZodDate.create;\nexports.date = dateType;\nconst symbolType = ZodSymbol.create;\nexports.symbol = symbolType;\nconst undefinedType = ZodUndefined.create;\nexports.undefined = undefinedType;\nconst nullType = ZodNull.create;\nexports.null = nullType;\nconst anyType = ZodAny.create;\nexports.any = anyType;\nconst unknownType = ZodUnknown.create;\nexports.unknown = unknownType;\nconst neverType = ZodNever.create;\nexports.never = neverType;\nconst voidType = ZodVoid.create;\nexports.void = voidType;\nconst arrayType = ZodArray.create;\nexports.array = arrayType;\nconst objectType = ZodObject.create;\nexports.object = objectType;\nconst strictObjectType = ZodObject.strictCreate;\nexports.strictObject = strictObjectType;\nconst unionType = ZodUnion.create;\nexports.union = unionType;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nexports.discriminatedUnion = discriminatedUnionType;\nconst intersectionType = ZodIntersection.create;\nexports.intersection = intersectionType;\nconst tupleType = ZodTuple.create;\nexports.tuple = tupleType;\nconst recordType = ZodRecord.create;\nexports.record = recordType;\nconst mapType = ZodMap.create;\nexports.map = mapType;\nconst setType = ZodSet.create;\nexports.set = setType;\nconst functionType = ZodFunction.create;\nexports.function = functionType;\nconst lazyType = ZodLazy.create;\nexports.lazy = lazyType;\nconst literalType = ZodLiteral.create;\nexports.literal = literalType;\nconst enumType = ZodEnum.create;\nexports.enum = enumType;\nconst nativeEnumType = ZodNativeEnum.create;\nexports.nativeEnum = nativeEnumType;\nconst promiseType = ZodPromise.create;\nexports.promise = promiseType;\nconst effectsType = ZodEffects.create;\nexports.effect = effectsType;\nexports.transformer = effectsType;\nconst optionalType = ZodOptional.create;\nexports.optional = optionalType;\nconst nullableType = ZodNullable.create;\nexports.nullable = nullableType;\nconst preprocessType = ZodEffects.createWithPreprocess;\nexports.preprocess = preprocessType;\nconst pipelineType = ZodPipeline.create;\nexports.pipeline = pipelineType;\nconst ostring = () => stringType().optional();\nexports.ostring = ostring;\nconst onumber = () => numberType().optional();\nexports.onumber = onumber;\nconst oboolean = () => booleanType().optional();\nexports.oboolean = oboolean;\nexports.coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexports.NEVER = parseUtil_js_1.INVALID;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./errors.cjs\"), exports);\n__exportStar(require(\"./helpers/parseUtil.cjs\"), exports);\n__exportStar(require(\"./helpers/typeAliases.cjs\"), exports);\n__exportStar(require(\"./helpers/util.cjs\"), exports);\n__exportStar(require(\"./types.cjs\"), exports);\n__exportStar(require(\"./ZodError.cjs\"), exports);\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.z = void 0;\nconst z = __importStar(require(\"./v3/external.cjs\"));\nexports.z = z;\n__exportStar(require(\"./v3/external.cjs\"), exports);\nexports.default = z;\n", "/**\n * Zod schemas for the clawup.yaml manifest and agent definitions.\n * These are the source of truth \u2014 TypeScript types are derived via z.infer<>.\n */\n\nimport { z } from \"zod\";\n\n/** Schema for a single agent in the manifest */\nexport const AgentDefinitionSchema = z.object({\n /** Resource name (e.g., \"agent-pm\") */\n name: z.string().min(1, \"Agent name is required\"),\n /** Display name (e.g., \"Juno\") */\n displayName: z.string().min(1, \"Agent displayName is required\"),\n /** Role identifier (e.g., \"pm\", \"eng\", \"tester\") */\n role: z.string().min(1, \"Agent role is required\"),\n /**\n * Git URL or local path to an identity repo/folder.\n * Supports `repo#subfolder` syntax for mono-repos.\n */\n identity: z.string().min(1, \"Agent identity is required\"),\n /** Pin the identity to a specific Git tag or commit hash */\n identityVersion: z.string().optional(),\n /** EBS volume size in GB */\n volumeSize: z.number().positive(\"volumeSize must be a positive number\"),\n /** Override instance type for this agent */\n instanceType: z.string().optional(),\n /** Additional environment variables */\n envVars: z.record(z.string(), z.string()).optional(),\n /** Inline plugin config (non-secret values only) */\n plugins: z.record(z.string(), z.record(z.string(), z.unknown())).optional(),\n});\n\n/** Schema for per-plugin configuration file */\nexport const PluginConfigFileSchema = z.object({\n agents: z.record(z.string(), z.record(z.string(), z.unknown())),\n});\n\n/** Schema for the clawup.yaml manifest */\nexport const ClawupManifestSchema = z.object({\n stackName: z.string().min(1, \"stackName is required\"),\n provider: z.enum([\"aws\", \"hetzner\"]),\n region: z.string().min(1, \"region is required\"),\n instanceType: z.string().min(1, \"instanceType is required\"),\n ownerName: z.string().min(1, \"ownerName is required\"),\n /** Owner timezone (e.g., \"America/New_York\") */\n timezone: z.string().optional(),\n /** Owner working hours (e.g., \"9am-6pm\") */\n workingHours: z.string().optional(),\n /** Additional notes about the owner for agents */\n userNotes: z.string().optional(),\n /** Generic template variables (e.g., LINEAR_TEAM, GITHUB_REPO) */\n templateVars: z.record(z.string(), z.string()).optional(),\n agents: z.array(AgentDefinitionSchema).min(1, \"At least one agent is required\"),\n});\n", "/**\n * Zod schema for identity.yaml manifests.\n * Source of truth \u2014 the IdentityManifest type is derived via z.infer<>.\n */\n\nimport { z } from \"zod\";\n\n/** Schema for an agent identity manifest (identity.yaml) */\nexport const IdentityManifestSchema = z.object({\n /** Machine-readable identity name (e.g., \"juno\", \"titus\") */\n name: z.string().min(1, '\"name\" must be a non-empty string'),\n /** Human-readable display name (e.g., \"Juno\", \"Titus\") */\n displayName: z.string().min(1, '\"displayName\" must be a non-empty string'),\n /** Role identifier (e.g., \"pm\", \"eng\", \"tester\") */\n role: z.string().min(1, '\"role\" must be a non-empty string'),\n /** Emoji for the agent (GitHub shortcode, e.g., \"clipboard\") */\n emoji: z.string().min(1, '\"emoji\" must be a non-empty string'),\n /** Short description of the agent's purpose */\n description: z.string().min(1, '\"description\" must be a non-empty string'),\n /** Default EBS volume size in GB */\n volumeSize: z.number({ invalid_type_error: '\"volumeSize\" must be a number' }).positive(),\n /** Optional default instance type override */\n instanceType: z.string().optional(),\n /**\n * List of skill identifiers for this identity.\n * Plain names are private skills; \"clawhub:\" prefixed are public.\n */\n skills: z.array(z.string(), { invalid_type_error: '\"skills\" must be an array' }),\n /** Recommended plugins for this identity (e.g., [\"openclaw-linear\"]) */\n plugins: z.array(\n z.string().min(1, \"each plugin must be a non-empty string\"),\n { invalid_type_error: '\"plugins\" must be an array of strings' },\n ).optional(),\n /** Recommended deps for this identity (e.g., [\"gh\", \"brave-search\"]) */\n deps: z.array(z.string()).optional(),\n /** Per-plugin default config (merged with user plugin config at deploy time) */\n pluginDefaults: z.record(\n z.string(),\n z.record(z.string(), z.unknown()),\n ).optional(),\n /** List of template variable names this identity uses */\n templateVars: z.array(z.string(), { invalid_type_error: '\"templateVars\" must be an array' }),\n /** Default AI model for this identity (e.g., \"anthropic/claude-opus-4-6\") */\n model: z.string().optional(),\n /** Backup/fallback model (e.g., \"anthropic/claude-sonnet-4-5\") */\n backupModel: z.string().optional(),\n /** Coding agent CLI to use (e.g., \"claude-code\", \"codex\", \"amp\"). Defaults to \"claude-code\". */\n codingAgent: z.string().optional(),\n});\n", "/**\n * Barrel export for all Zod schemas.\n */\n\nexport {\n AgentDefinitionSchema,\n ClawupManifestSchema,\n PluginConfigFileSchema,\n} from \"./manifest\";\n\nexport {\n IdentityManifestSchema,\n} from \"./identity\";\n", "/**\n * @clawup/core \u2014 shared types, constants, registries, and utilities\n */\n\n// Types\nexport type {\n AgentDefinition,\n ClawupManifest,\n IdentityManifest,\n IdentityResult,\n PluginConfigFile,\n PrereqResult,\n VoidResult,\n Result,\n} from \"./types\";\nexport { validateAgentDefinition } from \"./types\";\n\n// Constants\nexport {\n AGENT_ALIASES,\n AWS_REGIONS,\n BUILT_IN_IDENTITIES,\n CONFIG_DIR,\n COST_ESTIMATES,\n HETZNER_COST_ESTIMATES,\n HETZNER_LOCATIONS,\n HETZNER_SERVER_TYPES_EU,\n HETZNER_SERVER_TYPES_US,\n HETZNER_US_LOCATIONS,\n INSTANCE_TYPES,\n KEY_INSTRUCTIONS,\n MANIFEST_FILE,\n MODEL_PROVIDERS,\n PLUGINS_DIR,\n PROVIDERS,\n SSH_USER,\n hetznerServerTypes,\n slackAppManifest,\n tailscaleHostname,\n} from \"./constants\";\n\n// Plugin registry\nexport type { PluginRegistryEntry } from \"./plugin-registry\";\nexport { PLUGIN_REGISTRY } from \"./plugin-registry\";\n\n// Coding agent registry\nexport type { CodingAgentEntry } from \"./coding-agent-registry\";\nexport { CODING_AGENT_REGISTRY } from \"./coding-agent-registry\";\n\n// Dep registry\nexport type { DepSecret, DepRegistryEntry } from \"./dep-registry\";\nexport { DEP_REGISTRY } from \"./dep-registry\";\n\n// Deps\nexport type { ResolvedDep } from \"./deps\";\nexport { resolveDeps, collectDepSecrets } from \"./deps\";\n\n// Skills\nexport type { ParsedSkill } from \"./skills\";\nexport { CLAWHUB_PREFIX, parseSkill, classifySkills } from \"./skills\";\n\n// Identity \u2014 re-exported from \"@clawup/core/identity\" subpath to avoid\n// pulling Node.js-only modules (fs, child_process) into browser bundles.\n\n// Schemas\nexport {\n AgentDefinitionSchema,\n ClawupManifestSchema,\n PluginConfigFileSchema,\n IdentityManifestSchema,\n} from \"./schemas\";\n", "/**\n * Identity loader \u2014 fetches agent identities from Git repos or local paths.\n *\n * An identity is a directory containing an `identity.yaml` manifest and\n * workspace files (SOUL.md, IDENTITY.md, skills/, etc.) that define an agent's\n * persona and capabilities.\n */\n\nimport { execFileSync } from \"child_process\";\nimport { existsSync, mkdirSync, readFileSync, readdirSync, statSync } from \"fs\";\nimport { join, relative, resolve } from \"path\";\nimport { createHash } from \"crypto\";\nimport YAML from \"yaml\";\nimport type { IdentityManifest, IdentityResult } from \"./types\";\nimport { IdentityManifestSchema } from \"./schemas\";\n\n/** Result of a captured command execution */\ninterface ExecResult {\n stdout: string;\n stderr: string;\n exitCode: number;\n}\n\n/**\n * Simple command runner for git operations.\n * No vendored binary resolution needed \u2014 only used for git clone/pull/rm.\n */\nfunction capture(command: string, args: string[] = [], cwd?: string): ExecResult {\n try {\n const result = execFileSync(command, args, {\n cwd,\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n return { stdout: result.trim(), stderr: \"\", exitCode: 0 };\n } catch (err: unknown) {\n const e = err as { stdout?: string; stderr?: string; status?: number };\n return {\n stdout: (e.stdout ?? \"\").toString().trim(),\n stderr: (e.stderr ?? \"\").toString().trim(),\n exitCode: e.status ?? 1,\n };\n }\n}\n\n\n/**\n * Parse a source string into its components.\n * Supports:\n * - Local paths: `./my-identity`, `/abs/path/to/identity`\n * - Git HTTPS URLs: `https://github.com/org/repo#subfolder`\n * - Git SSH URLs: `git@github.com:org/repo#subfolder`\n */\nfunction parseSource(source: string): { type: \"local\"; path: string } | { type: \"git\"; url: string; subfolder?: string } {\n // Local path \u2014 starts with `.` or `/`\n if (source.startsWith(\".\") || source.startsWith(\"/\")) {\n return { type: \"local\", path: source };\n }\n\n // SSH-style Git URL (git@host:org/repo or user@host:path)\n if (source.startsWith(\"git@\") || /^[\\w.-]+@[\\w.-]+:/.test(source)) {\n return parseGitUrl(source);\n }\n\n // HTTPS Git URL \u2014 contains ://\n if (source.includes(\"://\")) {\n return parseGitUrl(source);\n }\n\n // Fallback: treat as local path\n return { type: \"local\", path: source };\n}\n\nfunction parseGitUrl(source: string): { type: \"git\"; url: string; subfolder?: string } {\n const hashIdx = source.indexOf(\"#\");\n if (hashIdx === -1) {\n return { type: \"git\", url: source };\n }\n return {\n type: \"git\",\n url: source.slice(0, hashIdx),\n subfolder: source.slice(hashIdx + 1),\n };\n}\n\n/**\n * Generate a stable cache key for a Git URL.\n */\nfunction cacheKey(url: string): string {\n return createHash(\"sha256\").update(url).digest(\"hex\").slice(0, 16);\n}\n\n/**\n * Clone or update a Git repo into the cache directory.\n * Returns the path to the cloned repo.\n */\nfunction ensureRepo(url: string, cacheDir: string): string {\n mkdirSync(cacheDir, { recursive: true });\n\n const repoDir = join(cacheDir, cacheKey(url));\n\n if (existsSync(join(repoDir, \".git\"))) {\n // Cache hit \u2014 pull latest\n const result = capture(\"git\", [\"pull\", \"--ff-only\"], repoDir);\n if (result.exitCode !== 0) {\n // Pull failed (e.g., diverged) \u2014 re-clone\n capture(\"rm\", [\"-rf\", repoDir]);\n const clone = capture(\"git\", [\"clone\", \"--depth\", \"1\", url, repoDir]);\n if (clone.exitCode !== 0) {\n throw new Error(`Failed to clone ${url}: ${clone.stderr}`);\n }\n }\n } else {\n // Cache miss \u2014 shallow clone\n const result = capture(\"git\", [\"clone\", \"--depth\", \"1\", url, repoDir]);\n if (result.exitCode !== 0) {\n throw new Error(`Failed to clone ${url}: ${result.stderr}`);\n }\n }\n\n return repoDir;\n}\n\n/**\n * Recursively read all files in a directory, returning a map of\n * relative paths to file contents (text files only).\n */\nfunction readFilesRecursive(dir: string, base?: string): Record<string, string> {\n const root = base ?? dir;\n const files: Record<string, string> = {};\n\n for (const entry of readdirSync(dir)) {\n // Skip hidden dirs (e.g., .git)\n if (entry.startsWith(\".\")) continue;\n\n const full = join(dir, entry);\n const stat = statSync(full);\n\n if (stat.isDirectory()) {\n Object.assign(files, readFilesRecursive(full, root));\n } else if (stat.isFile()) {\n const rel = relative(root, full);\n try {\n files[rel] = readFileSync(full, \"utf-8\");\n } catch {\n // Skip binary / unreadable files\n }\n }\n }\n\n return files;\n}\n\n/**\n * Validate and parse an identity manifest object using Zod schema.\n * Throws with descriptive errors if required fields are missing or malformed.\n */\nexport function parseManifest(raw: unknown, sourcePath: string): IdentityManifest {\n const result = IdentityManifestSchema.safeParse(raw);\n\n if (!result.success) {\n // Build a human-readable error message from Zod issues\n const issues = result.error.issues;\n\n // Check for missing required fields\n const missingFields = issues\n .filter((i) => i.code === \"invalid_type\" && i.received === \"undefined\")\n .map((i) => i.path.join(\".\"));\n\n if (missingFields.length > 0) {\n throw new Error(\n `identity manifest at ${sourcePath} is missing required fields: ${missingFields.join(\", \")}`\n );\n }\n\n // For other errors, use the first issue's message\n const firstIssue = issues[0];\n const fieldPath = firstIssue.path.length > 0 ? `\"${firstIssue.path.join(\".\")}\"` : \"root\";\n throw new Error(`identity manifest: ${fieldPath} \u2014 ${firstIssue.message}`);\n }\n\n return result.data;\n}\n\n/**\n * Synchronous version of fetchIdentity for use in contexts that don't support async\n * (e.g., Pulumi resource construction).\n */\nexport function fetchIdentitySync(source: string, cacheDir: string): IdentityResult {\n return _fetchIdentity(source, cacheDir);\n}\n\nexport async function fetchIdentity(source: string, cacheDir: string): Promise<IdentityResult> {\n return _fetchIdentity(source, cacheDir);\n}\n\nfunction _fetchIdentity(source: string, cacheDir: string): IdentityResult {\n const parsed = parseSource(source);\n let identityDir: string;\n\n if (parsed.type === \"local\") {\n identityDir = resolve(parsed.path);\n } else {\n const repoDir = ensureRepo(parsed.url, cacheDir);\n identityDir = parsed.subfolder ? join(repoDir, parsed.subfolder) : repoDir;\n }\n\n // Verify the directory exists\n if (!existsSync(identityDir) || !statSync(identityDir).isDirectory()) {\n throw new Error(`Identity directory not found: ${identityDir}`);\n }\n\n // Read and parse identity manifest (prefer .yaml, fall back to .json for third-party compat)\n const yamlPath = join(identityDir, \"identity.yaml\");\n const jsonPath = join(identityDir, \"identity.json\");\n let manifestPath: string;\n let manifestFilename: string;\n\n if (existsSync(yamlPath)) {\n manifestPath = yamlPath;\n manifestFilename = \"identity.yaml\";\n } else if (existsSync(jsonPath)) {\n manifestPath = jsonPath;\n manifestFilename = \"identity.json\";\n } else {\n throw new Error(`identity.yaml not found in ${identityDir}`);\n }\n\n let raw: unknown;\n try {\n const content = readFileSync(manifestPath, \"utf-8\");\n raw = manifestFilename.endsWith(\".yaml\") ? YAML.parse(content) : JSON.parse(content);\n } catch (err) {\n throw new Error(`Failed to parse ${manifestFilename} in ${identityDir}: ${(err as Error).message}`);\n }\n\n const manifest = parseManifest(raw, identityDir);\n\n // Read all files (excluding the manifest file itself and .git)\n const allFiles = readFilesRecursive(identityDir);\n delete allFiles[manifestFilename];\n\n return { manifest, files: allFiles };\n}\n", "/**\n * Vendor binary management\n *\n * Resolves vendored CLI binaries (Pulumi, AWS CLI) installed to cli/vendor/\n * by the postinstall script. Falls back to system PATH if not found.\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { spawnSync } from \"child_process\";\n\n/**\n * Get the vendor directory path.\n * At runtime this resolves from cli/dist/lib/vendor.js \u2192 ../../vendor/\n */\nexport function getVendorDir(): string {\n return path.join(__dirname, \"..\", \"..\", \"vendor\");\n}\n\n/**\n * Get the vendor bin directory for the current platform.\n * Structure: vendor/pulumi/, vendor/aws-cli/\n */\nfunction getVendorBinDir(tool: string): string {\n return path.join(getVendorDir(), tool);\n}\n\n/**\n * Map of commands to their vendor subdirectory and binary name.\n */\nconst VENDOR_COMMANDS: Record<string, { dir: string; bin: string }> = {\n pulumi: { dir: \"pulumi\", bin: process.platform === \"win32\" ? \"pulumi.exe\" : \"pulumi\" },\n aws: { dir: \"aws-cli\", bin: process.platform === \"win32\" ? \"aws.exe\" : \"aws\" },\n};\n\n/**\n * Resolve a command to its vendored binary path if available.\n * Returns the full path to the vendored binary, or null if not found.\n */\nexport function resolveVendoredBinary(command: string): string | null {\n const entry = VENDOR_COMMANDS[command];\n if (!entry) return null;\n\n const binPath = path.join(getVendorBinDir(entry.dir), entry.bin);\n if (fs.existsSync(binPath)) {\n return binPath;\n }\n\n return null;\n}\n\n/**\n * Resolve a command, checking vendor directory first, then system PATH.\n * Returns the resolved command string (full path for vendor, original for system).\n */\nexport function resolveCommand(command: string): string {\n const vendored = resolveVendoredBinary(command);\n if (vendored) return vendored;\n return command;\n}\n\n/**\n * Check if a vendored binary exists for the given command.\n */\nexport function isVendored(command: string): boolean {\n return resolveVendoredBinary(command) !== null;\n}\n\n/**\n * Check if a command exists, checking vendor directory first, then system PATH.\n */\nexport function commandExistsWithVendor(command: string): boolean {\n // Check vendor first\n if (isVendored(command)) return true;\n\n // Fall back to system PATH\n const bin = process.platform === \"win32\" ? \"where\" : \"which\";\n const result = spawnSync(bin, [command], { shell: false, stdio: \"ignore\" });\n return result.status === 0;\n}\n\n/**\n * Get the vendor PATH prefix for adding to child process environment.\n * This allows vendored binaries to be found by child processes.\n */\nexport function getVendorPATH(): string {\n const dirs: string[] = [];\n for (const entry of Object.values(VENDOR_COMMANDS)) {\n const dir = getVendorBinDir(entry.dir);\n if (fs.existsSync(dir)) {\n dirs.push(dir);\n }\n }\n return dirs.join(path.delimiter);\n}\n", "/**\n * Child process helpers for CLI commands\n */\n\nimport { execSync, spawn, type SpawnOptions } from \"child_process\";\nimport { trackChild } from \"./process\";\nimport { resolveCommand, commandExistsWithVendor } from \"./vendor\";\n\n/** Result of a captured command execution */\nexport interface ExecResult {\n stdout: string;\n stderr: string;\n exitCode: number;\n}\n\n/**\n * Execute a command and capture output.\n * Resolves vendored binaries before falling back to system PATH.\n */\nexport function capture(command: string, args: string[] = [], cwd?: string): ExecResult {\n const resolved = resolveCommand(command);\n try {\n const result = execSync([resolved, ...args].join(\" \"), {\n cwd,\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n return { stdout: result.trim(), stderr: \"\", exitCode: 0 };\n } catch (err: unknown) {\n const e = err as { stdout?: string; stderr?: string; status?: number };\n return {\n stdout: (e.stdout ?? \"\").toString().trim(),\n stderr: (e.stderr ?? \"\").toString().trim(),\n exitCode: e.status ?? 1,\n };\n }\n}\n\n/**\n * Execute a command with streaming output (stdout/stderr pass-through)\n * Returns the exit code.\n * Resolves vendored binaries before falling back to system PATH.\n */\nexport function stream(command: string, args: string[] = [], cwd?: string): Promise<number> {\n const resolved = resolveCommand(command);\n return new Promise((resolve) => {\n const opts: SpawnOptions = {\n cwd,\n stdio: \"inherit\",\n shell: true,\n };\n const child = spawn(resolved, args, opts);\n trackChild(child);\n child.on(\"close\", (code) => resolve(code ?? 1));\n child.on(\"error\", (err) => {\n console.warn(`[exec] Child process error: ${err.message}`);\n resolve(1);\n });\n });\n}\n\n/**\n * Check if a command exists, checking vendor directory first, then system PATH.\n */\nexport function commandExists(command: string): boolean {\n return commandExistsWithVendor(command);\n}\n", "/**\n * Workspace management for installed CLI mode.\n *\n * Dev mode: repo root has Pulumi.yaml + node_modules/@pulumi \u2192 use repo directly\n * Installed: bundle infra to ~/.clawup/workspace/, npm-install Pulumi SDK there\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport { execSync } from \"child_process\";\nimport type { VoidResult } from \"@clawup/core\";\n\nconst WORKSPACE_DIR = path.join(os.homedir(), \".clawup\", \"workspace\");\nconst VERSION_FILE = \".cli-version\";\n\n/**\n * Resolve the CLI package root directory.\n * Works for both tsc output (dist/lib/workspace.js \u2192 ../../) and\n * esbuild bundle (dist/bin.js \u2192 ../).\n */\nfunction getCliPackageRoot(): string {\n const oneUp = path.resolve(__dirname, \"..\");\n if (fs.existsSync(path.join(oneUp, \"package.json\"))) return oneUp;\n return path.resolve(__dirname, \"..\", \"..\");\n}\n\n/**\n * Read the CLI package version from cli/package.json.\n */\nfunction cliVersion(): string {\n try {\n const pkgPath = path.join(getCliPackageRoot(), \"package.json\");\n return JSON.parse(fs.readFileSync(pkgPath, \"utf-8\")).version as string;\n } catch {\n return \"unknown\";\n }\n}\n\n/**\n * Resolve the bundled infra directory shipped inside the npm package.\n */\nfunction getBundledInfraDir(): string {\n return path.join(getCliPackageRoot(), \"infra\");\n}\n\n/**\n * Returns true when running from the development repo (not from an npm install).\n * Detected by the presence of Pulumi.yaml AND node_modules/@pulumi at the repo root.\n */\nexport function isDevMode(): boolean {\n const repoRoot = path.resolve(getCliPackageRoot(), \"..\");\n return (\n fs.existsSync(path.join(repoRoot, \"Pulumi.yaml\")) &&\n fs.existsSync(path.join(repoRoot, \"node_modules\", \"@pulumi\"))\n );\n}\n\n/**\n * Returns the workspace directory for installed mode, or undefined in dev mode.\n */\nexport function getWorkspaceDir(): string | undefined {\n if (isDevMode()) return undefined;\n return WORKSPACE_DIR;\n}\n\n/**\n * Ensure the workspace is set up (copy bundled infra, install deps).\n * No-op in dev mode.\n */\nexport function ensureWorkspace(): VoidResult {\n if (isDevMode()) return { ok: true };\n\n const bundled = getBundledInfraDir();\n if (!fs.existsSync(bundled)) {\n return {\n ok: false,\n error: `Bundled infrastructure not found at ${bundled}. The CLI package may be corrupt \u2014 try reinstalling.`,\n };\n }\n\n const version = cliVersion();\n const versionFile = path.join(WORKSPACE_DIR, VERSION_FILE);\n const currentVersion = fs.existsSync(versionFile)\n ? fs.readFileSync(versionFile, \"utf-8\").trim()\n : null;\n\n if (currentVersion === version) {\n // Already up-to-date\n return { ok: true };\n }\n\n // Create workspace directory\n fs.mkdirSync(WORKSPACE_DIR, { recursive: true });\n\n // Preserve user state files across re-sync\n const preservePatterns = [\"Pulumi.*.yaml\", \"clawup.yaml\"];\n const preserved = new Map<string, Buffer>();\n for (const pattern of preservePatterns) {\n // Simple glob: Pulumi.*.yaml\n const files = fs.readdirSync(WORKSPACE_DIR).filter((f) => {\n if (pattern === \"clawup.yaml\") return f === \"clawup.yaml\";\n // Match Pulumi.<stack>.yaml but not Pulumi.yaml itself\n return f.startsWith(\"Pulumi.\") && f.endsWith(\".yaml\") && f !== \"Pulumi.yaml\";\n });\n for (const f of files) {\n preserved.set(f, fs.readFileSync(path.join(WORKSPACE_DIR, f)));\n }\n }\n\n // Sync bundled infra \u2192 workspace (overwrite everything except preserved files)\n copyDirSync(bundled, WORKSPACE_DIR);\n\n // Restore preserved files\n for (const [name, content] of preserved) {\n fs.writeFileSync(path.join(WORKSPACE_DIR, name), content);\n }\n\n // Install Pulumi SDK deps\n try {\n execSync(\"npm install --production\", {\n cwd: WORKSPACE_DIR,\n stdio: \"pipe\",\n timeout: 300_000, // 5 minutes\n });\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n return {\n ok: false,\n error: `Failed to install Pulumi SDK dependencies in workspace:\\n${msg}`,\n };\n }\n\n // Write version marker only after successful install\n fs.writeFileSync(versionFile, version, \"utf-8\");\n\n return { ok: true };\n}\n\n/**\n * Recursively copy a directory, overwriting existing files.\n */\nfunction copyDirSync(src: string, dest: string): void {\n fs.mkdirSync(dest, { recursive: true });\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n const srcPath = path.join(src, entry.name);\n const destPath = path.join(dest, entry.name);\n if (entry.isDirectory()) {\n copyDirSync(srcPath, destPath);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n", "/**\n * Tailscale local daemon detection + API helpers for device management.\n *\n * Detection functions (isTailscaleInstalled, isTailscaleRunning, requireTailscale)\n * check the local Tailscale daemon status for CLI commands that need it.\n *\n * API helpers (listTailscaleDevices, deleteTailscaleDevice) call the Tailscale\n * control-plane API. All API calls retry up to 3 times with exponential backoff\n * and log warnings on failure instead of silently returning null.\n */\n\nimport { execSync } from \"child_process\";\nimport { spawnSync } from \"child_process\";\nimport pc from \"picocolors\";\n\n/**\n * Check if the Tailscale CLI is installed.\n * Checks system PATH first, then the macOS App Store location.\n */\nexport function isTailscaleInstalled(): boolean {\n const bin = process.platform === \"win32\" ? \"where\" : \"which\";\n const result = spawnSync(bin, [\"tailscale\"], { shell: false, stdio: \"ignore\" });\n if (result.status === 0) return true;\n\n // macOS App Store installs Tailscale here\n if (process.platform === \"darwin\") {\n try {\n const fs = require(\"fs\");\n return fs.existsSync(\"/Applications/Tailscale.app/Contents/MacOS/Tailscale\");\n } catch {\n return false;\n }\n }\n\n return false;\n}\n\n/**\n * Check if the Tailscale daemon is running and connected.\n * Returns true if BackendState is \"Running\".\n */\nexport function isTailscaleRunning(): boolean {\n try {\n const output = execSync(\"tailscale status --json\", {\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n timeout: 5000,\n });\n const status = JSON.parse(output);\n return status.BackendState === \"Running\";\n } catch {\n return false;\n }\n}\n\n/**\n * Require Tailscale to be installed and running.\n * Exits with a clear error message if not.\n */\nexport function requireTailscale(): void {\n if (!isTailscaleInstalled()) {\n const installHint =\n process.platform === \"darwin\"\n ? \"Install from the Mac App Store or https://tailscale.com/download\"\n : \"Install from https://tailscale.com/download\";\n\n console.error(\n `\\n${pc.red(pc.bold(\"Error:\"))} Tailscale is not installed.\\n\\n` +\n `This command connects to agents over Tailscale.\\n` +\n ` ${installHint}\\n`\n );\n process.exit(1);\n }\n\n if (!isTailscaleRunning()) {\n console.error(\n `\\n${pc.red(pc.bold(\"Error:\"))} Tailscale is not connected.\\n\\n` +\n `This command connects to agents over Tailscale.\\n` +\n ` Tailscale is not running. Open the Tailscale app or run: ${pc.cyan(\"tailscale up\")}\\n`\n );\n process.exit(1);\n }\n}\n\ninterface TailscaleDevice {\n id: string;\n name: string;\n hostname: string;\n}\n\nconst MAX_RETRIES = 3;\nconst BASE_DELAY_MS = 1000;\n\n/**\n * Synchronous sleep using Atomics.wait (safe for CLI context).\n */\nfunction sleepSync(ms: number): void {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);\n}\n\n/**\n * List all devices on a tailnet via the Tailscale API.\n * Retries up to 3 times with exponential backoff.\n * Returns null on failure.\n */\nexport function listTailscaleDevices(\n apiKey: string,\n tailnet: string\n): TailscaleDevice[] | null {\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n try {\n const result = execSync(\n `curl -sf -H \"Authorization: Bearer ${apiKey}\" \"https://api.tailscale.com/api/v2/tailnet/${tailnet}/devices?fields=default\"`,\n { encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"pipe\"], timeout: 15000 }\n );\n const data = JSON.parse(result);\n if (!data.devices || !Array.isArray(data.devices)) return null;\n return data.devices.map((d: Record<string, unknown>) => ({\n id: d.id as string,\n name: (d.name as string) ?? \"\",\n hostname: (d.hostname as string) ?? \"\",\n }));\n } catch (err) {\n lastError = err;\n if (attempt < MAX_RETRIES) {\n sleepSync(BASE_DELAY_MS * Math.pow(2, attempt));\n }\n }\n }\n\n console.warn(\n `[tailscale] Failed to list devices after ${MAX_RETRIES + 1} attempts: ${\n lastError instanceof Error ? lastError.message : String(lastError)\n }`\n );\n return null;\n}\n\n/**\n * Remove stale Tailscale devices for a set of agents.\n * Used before deploy/redeploy to prevent duplicate device entries\n * when Pulumi replaces servers (create-before-delete).\n *\n * Returns counts of cleaned, failed, and not-found devices.\n */\nexport function cleanupTailscaleDevices(\n apiKey: string,\n tailnet: string,\n stackName: string,\n agents: { name: string }[],\n): { cleaned: string[]; failed: string[] } {\n const cleaned: string[] = [];\n const failed: string[] = [];\n\n const devices = listTailscaleDevices(apiKey, tailnet);\n if (!devices) return { cleaned, failed };\n\n for (const agent of agents) {\n const tsHost = `${stackName}-${agent.name}`;\n const matching = devices.filter((d) =>\n d.hostname === tsHost || d.name.startsWith(`${tsHost}.`)\n );\n for (const device of matching) {\n const deleted = deleteTailscaleDevice(apiKey, device.id);\n if (deleted) {\n cleaned.push(`${agent.name} (${device.hostname})`);\n } else {\n failed.push(agent.name);\n }\n }\n }\n\n return { cleaned, failed };\n}\n\n/**\n * Delete a single Tailscale device by ID.\n * Retries up to 3 times with exponential backoff.\n * Returns true on success.\n */\nexport function deleteTailscaleDevice(\n apiKey: string,\n deviceId: string\n): boolean {\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n try {\n execSync(\n `curl -sf -X DELETE -H \"Authorization: Bearer ${apiKey}\" \"https://api.tailscale.com/api/v2/device/${deviceId}\"`,\n { encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"pipe\"], timeout: 15000 }\n );\n return true;\n } catch (err) {\n lastError = err;\n if (attempt < MAX_RETRIES) {\n sleepSync(BASE_DELAY_MS * Math.pow(2, attempt));\n }\n }\n }\n\n console.warn(\n `[tailscale] Failed to delete device ${deviceId} after ${MAX_RETRIES + 1} attempts: ${\n lastError instanceof Error ? lastError.message : String(lastError)\n }`\n );\n return false;\n}\n\n/**\n * Ensure MagicDNS is enabled on the tailnet.\n * MagicDNS requires at least one nameserver \u2014 adds Cloudflare + Google DNS if none set.\n * Returns true if MagicDNS was newly enabled.\n * Warns on failure instead of throwing.\n */\nexport function ensureMagicDns(apiKey: string): boolean {\n try {\n const dnsResp = tsApiGet(apiKey, \"/tailnet/-/dns/preferences\");\n const dns = JSON.parse(dnsResp);\n if (dns.magicDNS) return false; // already enabled\n\n // MagicDNS requires at least one nameserver\n const nsResp = tsApiGet(apiKey, \"/tailnet/-/dns/nameservers\");\n const ns = JSON.parse(nsResp);\n if (!ns.dns || ns.dns.length === 0) {\n tsApiPost(apiKey, \"/tailnet/-/dns/nameservers\", { dns: [\"1.1.1.1\", \"8.8.8.8\"] });\n }\n\n tsApiPost(apiKey, \"/tailnet/-/dns/preferences\", { magicDNS: true });\n return true;\n } catch (err) {\n console.warn(\n `[tailscale] Could not check/enable MagicDNS: ${err instanceof Error ? err.message : String(err)}`\n );\n return false;\n }\n}\n\n/**\n * Ensure Tailscale Funnel prerequisites are configured for the tailnet.\n * 1. Enables MagicDNS (required for HTTPS certs)\n * 2. Adds funnel capability to ACL nodeAttrs for all members\n *\n * Returns { magicDns: boolean; funnelAcl: boolean } indicating what was changed.\n * Warns on failure instead of throwing.\n */\nexport function ensureTailscaleFunnel(\n apiKey: string,\n): { magicDns: boolean; funnelAcl: boolean } {\n const result = { magicDns: false, funnelAcl: false };\n\n // 1. Ensure MagicDNS is enabled\n result.magicDns = ensureMagicDns(apiKey);\n\n // 2. Ensure Funnel is allowed in ACL\n try {\n const aclResp = tsApiGet(apiKey, \"/tailnet/-/acl\");\n const acl = JSON.parse(aclResp);\n\n const nodeAttrs: Array<{ target?: string[]; attr?: string[] }> = acl.nodeAttrs ?? [];\n const hasFunnel = nodeAttrs.some(\n (a) => Array.isArray(a.attr) && a.attr.includes(\"funnel\")\n );\n\n if (!hasFunnel) {\n nodeAttrs.push({ target: [\"autogroup:member\"], attr: [\"funnel\"] });\n acl.nodeAttrs = nodeAttrs;\n tsApiPost(apiKey, \"/tailnet/-/acl\", acl);\n result.funnelAcl = true;\n }\n } catch (err) {\n console.warn(\n `[tailscale] Could not check/enable Funnel ACL: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n\n return result;\n}\n\n/** GET a Tailscale API endpoint. Returns response body as string. */\nfunction tsApiGet(apiKey: string, path: string): string {\n return execSync(\n `curl -sf -H \"Authorization: Bearer ${apiKey}\" -H \"Accept: application/json\" \"https://api.tailscale.com/api/v2${path}\"`,\n { encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"pipe\"], timeout: 15000 }\n );\n}\n\n/** POST JSON to a Tailscale API endpoint. Uses a temp file for the payload. */\nfunction tsApiPost(apiKey: string, path: string, body: unknown): string {\n const fs = require(\"fs\");\n const os = require(\"os\");\n const nodePath = require(\"path\");\n const tmpFile = nodePath.join(os.tmpdir(), `ts-api-${Date.now()}.json`);\n try {\n fs.writeFileSync(tmpFile, JSON.stringify(body));\n return execSync(\n `curl -sf -X POST -H \"Authorization: Bearer ${apiKey}\" -H \"Content-Type: application/json\" -d @${tmpFile} \"https://api.tailscale.com/api/v2${path}\"`,\n { encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"pipe\"], timeout: 15000 }\n );\n } finally {\n try { fs.unlinkSync(tmpFile); } catch { /* ignore */ }\n }\n}\n", "/**\n * Pulumi CLI wrappers\n */\n\nimport { capture, stream } from \"./exec\";\nimport type { VoidResult } from \"@clawup/core\";\n\n/**\n * Get the current Pulumi stack name\n */\nexport function currentStack(cwd?: string): string | null {\n const result = capture(\"pulumi\", [\"stack\", \"--show-name\"], cwd);\n return result.exitCode === 0 ? result.stdout.trim() : null;\n}\n\n/**\n * Select a Pulumi stack (create if it doesn't exist).\n * Returns { ok, error } so callers can display the error message.\n */\nexport function selectOrCreateStack(stackName: string, cwd?: string): VoidResult {\n const select = capture(\"pulumi\", [\"stack\", \"select\", stackName], cwd);\n if (select.exitCode === 0) return { ok: true };\n\n const init = capture(\"pulumi\", [\"stack\", \"init\", stackName], cwd);\n if (init.exitCode === 0) return { ok: true };\n\n return { ok: false, error: init.stderr || select.stderr };\n}\n\n/**\n * Set a Pulumi config value\n */\nexport function setConfig(key: string, value: string, secret: boolean = false, cwd?: string): boolean {\n const args = [\"config\", \"set\", key, value];\n if (secret) args.push(\"--secret\");\n const result = capture(\"pulumi\", args, cwd);\n return result.exitCode === 0;\n}\n\n/**\n * Get a Pulumi config value\n */\nexport function getConfig(key: string, cwd?: string): string | null {\n const result = capture(\"pulumi\", [\"config\", \"get\", key], cwd);\n return result.exitCode === 0 ? result.stdout.trim() : null;\n}\n\n/**\n * Get stack outputs as JSON\n */\nexport function getStackOutputs(showSecrets: boolean = false, cwd?: string): Record<string, unknown> | null {\n const args = [\"stack\", \"output\", \"--json\"];\n if (showSecrets) args.push(\"--show-secrets\");\n const result = capture(\"pulumi\", args, cwd);\n if (result.exitCode !== 0) return null;\n try {\n return JSON.parse(result.stdout);\n } catch {\n return null;\n }\n}\n\n/**\n * Run pulumi up with streaming output\n */\nexport function pulumiUp(cwd?: string): Promise<number> {\n return stream(\"pulumi\", [\"up\", \"--yes\"], cwd);\n}\n\n/**\n * Run pulumi destroy with streaming output\n */\nexport function pulumiDestroy(cwd?: string): Promise<number> {\n return stream(\"pulumi\", [\"destroy\", \"--yes\"], cwd);\n}\n\n/**\n * Run pulumi preview with streaming output\n */\nexport function pulumiPreview(cwd?: string): Promise<number> {\n return stream(\"pulumi\", [\"preview\"], cwd);\n}\n", "/**\n * Load/save clawup manifests from ~/.clawup/configs/\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport YAML from \"yaml\";\nimport type { ClawupManifest, PluginConfigFile } from \"@clawup/core\";\nimport { CONFIG_DIR, MANIFEST_FILE, PLUGINS_DIR } from \"@clawup/core\";\n\n/**\n * Get the configs directory path (~/.clawup/configs/)\n */\nexport function configsDir(): string {\n return path.join(os.homedir(), CONFIG_DIR);\n}\n\n/**\n * Ensure the configs directory exists\n */\nexport function ensureConfigsDir(): void {\n const dir = configsDir();\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n}\n\n/**\n * Get the path to a config file by name\n */\nexport function configPath(name: string): string {\n return path.join(configsDir(), `${name}.yaml`);\n}\n\n/**\n * Copy a named config to clawup.yaml so the Pulumi program can read it.\n * When projectDir is provided, writes there instead of process.cwd().\n */\nexport function syncManifestToProject(name: string, projectDir?: string): void {\n const src = configPath(name);\n const dest = path.join(projectDir ?? process.cwd(), MANIFEST_FILE);\n fs.copyFileSync(src, dest);\n}\n\n/**\n * Check if a config exists by name\n */\nexport function manifestExists(name: string): boolean {\n return fs.existsSync(configPath(name));\n}\n\n/**\n * Load a manifest by name. Returns null if not found or invalid.\n */\nexport function loadManifest(name: string): ClawupManifest | null {\n const filePath = configPath(name);\n if (!fs.existsSync(filePath)) return null;\n\n try {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n return YAML.parse(raw) as ClawupManifest;\n } catch (err) {\n console.warn(`[config] Failed to load manifest '${name}' at ${filePath}: ${err instanceof Error ? err.message : String(err)}`);\n return null;\n }\n}\n\n/**\n * Save a manifest by name\n */\nexport function saveManifest(name: string, manifest: ClawupManifest): void {\n ensureConfigsDir();\n const filePath = configPath(name);\n fs.writeFileSync(filePath, YAML.stringify(manifest), \"utf-8\");\n}\n\n/**\n * List all saved config names\n */\nexport function listManifests(): string[] {\n const dir = configsDir();\n if (!fs.existsSync(dir)) return [];\n\n return fs\n .readdirSync(dir)\n .filter((f) => f.endsWith(\".yaml\"))\n .map((f) => f.replace(/\\.yaml$/, \"\"))\n .sort();\n}\n\n/**\n * Delete a config by name. Returns true if deleted, false if not found.\n */\nexport function deleteManifest(name: string): boolean {\n const filePath = configPath(name);\n if (!fs.existsSync(filePath)) return false;\n\n fs.unlinkSync(filePath);\n return true;\n}\n\n/**\n * Resolve a config name: auto-selects if only one config exists,\n * errors with list if ambiguous or none found.\n * @param name Optional explicit config name\n * @returns The resolved config name\n * @throws Error if no configs exist or multiple configs exist without explicit name\n */\nexport function resolveConfigName(name?: string): string {\n if (name) {\n if (!manifestExists(name)) {\n const available = listManifests();\n if (available.length === 0) {\n throw new Error(`Config '${name}' not found. No configs exist. Run 'clawup init' to create one.`);\n }\n throw new Error(\n `Config '${name}' not found. Available configs:\\n ${available.join(\"\\n \")}`\n );\n }\n return name;\n }\n\n const configs = listManifests();\n\n if (configs.length === 0) {\n throw new Error(\"No configs found. Run 'clawup init' to create one.\");\n }\n\n if (configs.length === 1) {\n return configs[0];\n }\n\n throw new Error(\n `Multiple configs found. Specify one with --config:\\n ${configs.join(\"\\n \")}`\n );\n}\n\n// ---------------------------------------------------------------------------\n// Plugin config helpers (deprecated \u2014 plugin config is now inline in manifest)\n// These remain for backward compat and the `config migrate` command.\n// ---------------------------------------------------------------------------\n\n/**\n * Get the plugins directory for a stack (~/.clawup/configs/<stackName>/plugins/)\n * @deprecated Plugin config is now inline in the manifest. Use `clawup config migrate` to upgrade.\n */\nexport function pluginsDir(stackName: string): string {\n return path.join(configsDir(), stackName, PLUGINS_DIR);\n}\n\n/**\n * Ensure the plugins directory exists for a stack\n * @deprecated Plugin config is now inline in the manifest.\n */\nexport function ensurePluginsDir(stackName: string): void {\n const dir = pluginsDir(stackName);\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n}\n\n/**\n * Load a plugin config file. Returns null if not found or invalid.\n * @deprecated Plugin config is now inline in the manifest. Use `clawup config migrate` to upgrade.\n */\nexport function loadPluginConfig(stackName: string, pluginName: string): PluginConfigFile | null {\n const filePath = path.join(pluginsDir(stackName), `${pluginName}.yaml`);\n if (!fs.existsSync(filePath)) return null;\n\n try {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n return YAML.parse(raw) as PluginConfigFile;\n } catch (err) {\n console.warn(`[config] Failed to load plugin config '${pluginName}' for stack '${stackName}': ${err instanceof Error ? err.message : String(err)}`);\n return null;\n }\n}\n\n/**\n * Save a plugin config file\n * @deprecated Plugin config is now inline in the manifest. Use `clawup config migrate` to upgrade.\n */\nexport function savePluginConfig(stackName: string, pluginName: string, data: PluginConfigFile): void {\n ensurePluginsDir(stackName);\n const filePath = path.join(pluginsDir(stackName), `${pluginName}.yaml`);\n fs.writeFileSync(filePath, YAML.stringify(data), \"utf-8\");\n}\n", "/**\n * Shared UI helpers using @clack/prompts\n */\n\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\n\n/**\n * Display the Agent Army banner\n */\nexport function showBanner(): void {\n console.log();\n p.intro(pc.bgCyan(pc.black(\" Agent Army \")));\n}\n\n/**\n * Handle user cancellation (Ctrl+C)\n */\nexport function handleCancel(value: unknown): void {\n if (p.isCancel(value)) {\n p.cancel(\"Operation cancelled.\");\n process.exit(0);\n }\n}\n\n/**\n * Show an error and exit\n */\nexport function exitWithError(message: string): never {\n p.log.error(message);\n process.exit(1);\n}\n\n/**\n * Format a cost estimate string\n */\nexport function formatCost(monthlyCost: number): string {\n return `~$${monthlyCost}/mo`;\n}\n\n/**\n * Format agent list for display\n */\nexport function formatAgentList(agents: { displayName: string; role: string }[]): string {\n return agents\n .map((a) => ` ${pc.bold(a.displayName)} (${a.role})`)\n .join(\"\\n\");\n}\n", "/**\n * Shared helpers for tool implementations (adapter-aware).\n *\n * These mirror the functions in pulumi.ts but accept an ExecAdapter\n * instead of using the global capture() directly.\n */\n\nimport type { ExecAdapter } from \"../adapters\";\n\n/**\n * Get a Pulumi config value via ExecAdapter.\n */\nexport function getConfig(exec: ExecAdapter, key: string, cwd?: string): string | null {\n const result = exec.capture(\"pulumi\", [\"config\", \"get\", key], cwd);\n return result.exitCode === 0 ? result.stdout.trim() : null;\n}\n\n/**\n * Get stack outputs as JSON via ExecAdapter.\n */\nexport function getStackOutputs(exec: ExecAdapter, showSecrets: boolean = false, cwd?: string): Record<string, unknown> | null {\n const args = [\"stack\", \"output\", \"--json\"];\n if (showSecrets) args.push(\"--show-secrets\");\n const result = exec.capture(\"pulumi\", args, cwd);\n if (result.exitCode !== 0) return null;\n try {\n return JSON.parse(result.stdout);\n } catch {\n return null;\n }\n}\n", "/**\n * Deploy Tool \u2014 Deploy agents with pulumi up\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation } from \"../adapters\";\nimport { loadManifest, resolveConfigName, syncManifestToProject } from \"../lib/config\";\nimport { COST_ESTIMATES, HETZNER_COST_ESTIMATES } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { isTailscaleInstalled, isTailscaleRunning, cleanupTailscaleDevices, ensureMagicDns, ensureTailscaleFunnel } from \"../lib/tailscale\";\nimport { getConfig } from \"../lib/tool-helpers\";\nimport { formatAgentList, formatCost } from \"../lib/ui\";\nimport pc from \"picocolors\";\n\nexport interface DeployOptions {\n /** Skip confirmation prompt */\n yes?: boolean;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/**\n * Deploy tool implementation\n */\nexport const deployTool: ToolImplementation<DeployOptions> = async (\n runtime: RuntimeAdapter,\n options: DeployOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army\");\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select/create stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n ui.log.error(initResult.stderr || selectResult.stderr);\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n process.exit(1);\n }\n }\n\n // Calculate estimated cost\n const totalCost = manifest.agents.reduce((sum, a) => {\n const costs = manifest.provider === \"hetzner\" ? HETZNER_COST_ESTIMATES : COST_ESTIMATES;\n return sum + (costs[a.instanceType ?? manifest.instanceType] ?? 30);\n }, 0);\n\n // Show deployment summary\n ui.note(\n [\n `Stack: ${manifest.stackName}`,\n `Region: ${manifest.region}`,\n ``,\n `Agents (${manifest.agents.length}):`,\n formatAgentList(manifest.agents),\n ``,\n `Estimated cost: ${formatCost(totalCost)}`,\n ].join(\"\\n\"),\n \"Deployment Summary\"\n );\n\n // Confirm deployment\n if (!options.yes) {\n const confirmed = await ui.confirm({\n message: \"Proceed with deployment?\",\n });\n if (!confirmed) {\n ui.cancel(\"Deployment cancelled.\");\n }\n }\n\n // Sync manifest to project root so the Pulumi program can read it\n syncManifestToProject(configName, cwd);\n\n // Sync instanceType from manifest to Pulumi config\n exec.capture(\"pulumi\", [\"config\", \"set\", \"instanceType\", manifest.instanceType], cwd);\n\n // Clean up stale Tailscale devices before deploying\n // This prevents duplicates when Pulumi replaces servers (create-before-delete)\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n const tailscaleApiKey = getConfig(exec, \"tailscaleApiKey\", cwd);\n\n if (tailnetDnsName && tailscaleApiKey) {\n const spinner = ui.spinner(\"Cleaning up stale Tailscale devices...\");\n const { cleaned, failed } = cleanupTailscaleDevices(\n tailscaleApiKey, tailnetDnsName, manifest.stackName, manifest.agents\n );\n if (cleaned.length > 0) {\n spinner.stop(`Removed ${cleaned.length} stale Tailscale device(s)`);\n } else {\n spinner.stop(\"No stale Tailscale devices found\");\n }\n if (failed.length > 0) {\n ui.log.warn(\n `Could not remove some devices: ${failed.join(\", \")}. Check https://login.tailscale.com/admin/machines`\n );\n }\n }\n\n // Ensure MagicDNS is enabled (required for Tailscale hostname resolution)\n if (tailscaleApiKey) {\n const spinner = ui.spinner(\"Ensuring Tailscale MagicDNS is enabled...\");\n const magicDnsChanged = ensureMagicDns(tailscaleApiKey);\n spinner.stop(magicDnsChanged ? \"MagicDNS enabled\" : \"MagicDNS OK\");\n }\n\n // Ensure Tailscale Funnel prerequisites (identity plugins may need webhooks)\n if (tailscaleApiKey) {\n const spinner = ui.spinner(\"Ensuring Tailscale Funnel prerequisites...\");\n const funnel = ensureTailscaleFunnel(tailscaleApiKey);\n const changes: string[] = [];\n if (funnel.funnelAcl) changes.push(\"Funnel ACL enabled\");\n spinner.stop(changes.length > 0 ? changes.join(\", \") : \"Funnel prerequisites OK\");\n }\n\n // Deploy\n ui.log.step(\"Running pulumi up...\");\n console.log();\n const exitCode = await exec.stream(\"pulumi\", [\"up\", \"--yes\"], { cwd });\n console.log();\n\n if (exitCode !== 0) {\n ui.log.error(\"Deployment failed. Check the output above for details.\");\n process.exit(1);\n }\n\n ui.log.success(\"Deployment complete!\");\n\n // Show outputs\n const outputsResult = exec.capture(\"pulumi\", [\n \"stack\",\n \"output\",\n \"--json\",\n \"--show-secrets\",\n ], cwd);\n if (outputsResult.exitCode === 0) {\n try {\n const outputs = JSON.parse(outputsResult.stdout) as Record<string, unknown>;\n const lines: string[] = [];\n\n for (const agent of manifest.agents) {\n const urlKey = `${agent.role}TailscaleUrl`;\n const ipKey = `${agent.role}PublicIp`;\n const idKey = `${agent.role}InstanceId`;\n lines.push(`${agent.displayName} (${agent.role}):`);\n if (outputs[urlKey]) lines.push(` Tailscale URL: ${outputs[urlKey]}`);\n if (outputs[ipKey]) lines.push(` Public IP: ${outputs[ipKey]}`);\n if (outputs[idKey]) lines.push(` Instance ID: ${outputs[idKey]}`);\n lines.push(\"\");\n }\n\n ui.note(lines.join(\"\\n\"), \"Agent Details\");\n\n // Show webhook URLs if available\n const webhookLines: string[] = [];\n for (const agent of manifest.agents) {\n const webhookUrl = outputs[`${agent.role}WebhookUrl`] as string | undefined;\n if (webhookUrl) {\n webhookLines.push(` ${agent.displayName} (${agent.role}): ${webhookUrl}`);\n }\n }\n if (webhookLines.length > 0) {\n ui.note(webhookLines.join(\"\\n\"), \"Webhook URLs\");\n }\n } catch (err) {\n ui.log.warn(`Could not parse stack outputs: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n // Remind user about Tailscale if not connected\n if (!isTailscaleInstalled()) {\n const hint =\n process.platform === \"darwin\"\n ? \"Install from the Mac App Store or https://tailscale.com/download\"\n : \"Install from https://tailscale.com/download\";\n ui.log.warn(\n `Tailscale is required to connect to agents.\\n ${hint}\\n Then run: ${pc.cyan(\"tailscale up\")}`\n );\n } else if (!isTailscaleRunning()) {\n ui.log.warn(\n `Tailscale is not running. Start it before validating agents.\\n Open the Tailscale app or run: ${pc.cyan(\"tailscale up\")}`\n );\n }\n\n ui.log.info(\n `Run ${pc.cyan(\"clawup webhooks setup\")} to configure Linear webhooks for your agents.`\n );\n\n ui.outro(\"Agents will be ready in 3-5 minutes. Run `clawup validate` to check.\");\n};\n", "/**\n * Status Tool \u2014 Show agent statuses from stack outputs\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation, ExecAdapter } from \"../adapters\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { isTailscaleRunning } from \"../lib/tailscale\";\nimport { getConfig, getStackOutputs } from \"../lib/tool-helpers\";\n\nexport interface StatusOptions {\n /** Output as JSON */\n json?: boolean;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/**\n * SSH options for non-interactive connections\n */\nconst SSH_OPTS = [\n \"-o\", \"StrictHostKeyChecking=no\",\n \"-o\", \"UserKnownHostsFile=/dev/null\",\n \"-o\", \"BatchMode=yes\",\n];\n\n/**\n * Fetch Claude Code version via SSH (best effort, returns \"\u2014\" on failure)\n */\nfunction getClaudeCodeVersion(exec: ExecAdapter, host: string, timeout: number = 5): string {\n const result = exec.capture(\"ssh\", [\n \"-o\", `ConnectTimeout=${timeout}`,\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"/home/${SSH_USER}/.local/bin/claude --version 2>/dev/null || echo ''\"`,\n ]);\n if (result.exitCode === 0 && result.stdout?.trim()) {\n return result.stdout.trim();\n }\n return \"\u2014\";\n}\n\n/**\n * Fetch GitHub CLI version via SSH (best effort, returns \"\u2014\" on failure)\n */\nfunction getGhVersion(exec: ExecAdapter, host: string, timeout: number = 5): string {\n const result = exec.capture(\"ssh\", [\n \"-o\", `ConnectTimeout=${timeout}`,\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"gh --version 2>/dev/null | head -n1 | awk '{print \\\\$3}' || echo ''\"`,\n ]);\n if (result.exitCode === 0 && result.stdout?.trim()) {\n return result.stdout.trim();\n }\n return \"\u2014\";\n}\n\n/**\n * Fetch GitHub CLI auth status via SSH (best effort, returns \"\u2713\" or \"\u2014\")\n */\nfunction getGhAuthStatus(exec: ExecAdapter, host: string, timeout: number = 5): string {\n const result = exec.capture(\"ssh\", [\n \"-o\", `ConnectTimeout=${timeout}`,\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"gh auth status 2>&1 >/dev/null && echo 'OK' || echo 'no'\"`,\n ]);\n if (result.exitCode === 0 && result.stdout?.trim() === \"OK\") {\n return \"\u2713\";\n }\n return \"\u2014\";\n}\n\n/**\n * Status tool implementation\n */\nexport const statusTool: ToolImplementation<StatusOptions> = async (\n runtime: RuntimeAdapter,\n options: StatusOptions\n) => {\n const { ui, exec } = runtime;\n\n if (!options.json) {\n ui.intro(\"Agent Army\");\n }\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select/create stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n if (!options.json) {\n ui.log.error(initResult.stderr || selectResult.stderr);\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n }\n process.exit(1);\n }\n }\n\n // Get outputs\n const outputs = getStackOutputs(exec, true, cwd);\n if (!outputs) {\n ui.log.error(\"Could not fetch stack outputs. Has the stack been deployed?\");\n process.exit(1);\n }\n\n // Get tailnet DNS name for SSH connections\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n\n // Warn if Tailscale is not running (SSH version columns will show \"\u2014\")\n const tailscaleUp = isTailscaleRunning();\n if (!tailscaleUp && !options.json) {\n ui.log.warn(\n \"Tailscale is not running \u2014 CLI version columns will show \\\"\u2014\\\".\\n\" +\n \" Open the Tailscale app or run: tailscale up\"\n );\n }\n\n // Build status data with Claude Code and GitHub CLI versions (fetched via SSH)\n const statusData = manifest.agents.map((agent) => {\n let claudeCodeVersion = \"\u2014\";\n let ghVersion = \"\u2014\";\n let ghAuth = \"\u2014\";\n if (tailnetDnsName) {\n const tsHost = tailscaleHostname(manifest.stackName, agent.name);\n const host = `${tsHost}.${tailnetDnsName}`;\n claudeCodeVersion = getClaudeCodeVersion(exec, host);\n ghVersion = getGhVersion(exec, host);\n if (ghVersion !== \"\u2014\") {\n ghAuth = getGhAuthStatus(exec, host);\n }\n }\n return {\n name: agent.displayName,\n role: agent.role,\n instanceId: (outputs[`${agent.role}InstanceId`] as string) ?? \"\u2014\",\n publicIp: (outputs[`${agent.role}PublicIp`] as string) ?? \"\u2014\",\n tailscaleUrl: (outputs[`${agent.role}TailscaleUrl`] as string) ?? \"\u2014\",\n claudeCodeVersion,\n ghVersion,\n ghAuth,\n };\n });\n\n // JSON output\n if (options.json) {\n console.log(JSON.stringify(statusData, null, 2));\n return;\n }\n\n // Table output\n ui.log.step(`Stack: ${manifest.stackName} | Region: ${manifest.region}`);\n console.log();\n\n // Header\n const nameW = 12;\n const roleW = 10;\n const idW = 22;\n const ipW = 16;\n const claudeW = 16;\n const ghW = 8;\n const authW = 6;\n\n const header = [\n \"Agent\".padEnd(nameW),\n \"Role\".padEnd(roleW),\n \"Instance ID\".padEnd(idW),\n \"Public IP\".padEnd(ipW),\n \"Claude Code\".padEnd(claudeW),\n \"gh\".padEnd(ghW),\n \"Auth\".padEnd(authW),\n ].join(\" \");\n\n const separator = [\n \"\u2500\".repeat(nameW),\n \"\u2500\".repeat(roleW),\n \"\u2500\".repeat(idW),\n \"\u2500\".repeat(ipW),\n \"\u2500\".repeat(claudeW),\n \"\u2500\".repeat(ghW),\n \"\u2500\".repeat(authW),\n ].join(\" \");\n\n console.log(` ${header}`);\n console.log(` ${separator}`);\n\n for (const s of statusData) {\n const row = [\n s.name.padEnd(nameW),\n s.role.padEnd(roleW),\n s.instanceId.padEnd(idW),\n s.publicIp.padEnd(ipW),\n s.claudeCodeVersion.padEnd(claudeW),\n s.ghVersion.padEnd(ghW),\n s.ghAuth.padEnd(authW),\n ].join(\" \");\n console.log(` ${row}`);\n }\n\n console.log();\n\n // Show Tailscale URLs\n const urlLines = statusData\n .filter((s) => s.tailscaleUrl !== \"\u2014\")\n .map((s) => ` ${s.name}: ${s.tailscaleUrl}`);\n\n if (urlLines.length > 0) {\n ui.note(urlLines.join(\"\\n\"), \"Tailscale URLs\");\n }\n};\n", "/**\n * Validate Tool \u2014 Health check agents via Tailscale SSH\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation, ExecAdapter } from \"../adapters\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { requireTailscale } from \"../lib/tailscale\";\nimport { getConfig } from \"../lib/tool-helpers\";\nimport pc from \"picocolors\";\n\nexport interface ValidateOptions {\n /** SSH timeout in seconds */\n timeout?: string;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\ninterface CheckResult {\n agent: string;\n checks: { name: string; passed: boolean; detail?: string }[];\n passed: boolean;\n}\n\n/**\n * SSH options for non-interactive connections\n */\nconst SSH_OPTS = [\n \"-o\", \"StrictHostKeyChecking=no\",\n \"-o\", \"UserKnownHostsFile=/dev/null\",\n \"-o\", \"BatchMode=yes\",\n];\n\n/**\n * Run an SSH check command\n */\nfunction runSshCheck(\n exec: ExecAdapter,\n host: string,\n command: string,\n timeout: number\n): { ok: boolean; output: string } {\n const result = exec.capture(\"ssh\", [\n \"-o\", `ConnectTimeout=${timeout}`,\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"${command.replace(/\"/g, '\\\\\"')}\"`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Validate tool implementation\n */\nexport const validateTool: ToolImplementation<ValidateOptions> = async (\n runtime: RuntimeAdapter,\n options: ValidateOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army\");\n\n requireTailscale();\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select/create stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n process.exit(1);\n }\n }\n\n // Get tailnet\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n if (!tailnetDnsName) {\n ui.log.error(\"Could not determine tailnet DNS name from Pulumi config.\");\n process.exit(1);\n }\n\n const timeout = parseInt(options.timeout ?? \"30\", 10);\n const results: CheckResult[] = [];\n\n ui.log.step(`Validating ${manifest.agents.length} agents (timeout: ${timeout}s)...`);\n console.log();\n\n for (const agent of manifest.agents) {\n const tsHost = tailscaleHostname(manifest.stackName, agent.name);\n const host = `${tsHost}.${tailnetDnsName}`;\n const checks: CheckResult[\"checks\"] = [];\n\n ui.log.info(`${pc.bold(agent.displayName)} (${agent.role}) \u2014 ${host}`);\n\n // Check 1: SSH connectivity\n const ssh = runSshCheck(exec, host, \"echo 'SSH OK'\", timeout);\n checks.push({\n name: \"SSH connectivity\",\n passed: ssh.ok,\n detail: ssh.ok ? \"connected\" : \"connection failed\",\n });\n\n if (ssh.ok) {\n // Check 2: OpenClaw gateway running (systemd user service)\n const gateway = runSshCheck(exec, host, \"systemctl --user is-active openclaw-gateway\", timeout);\n checks.push({\n name: \"OpenClaw gateway\",\n passed: gateway.ok,\n detail: gateway.ok ? \"running\" : gateway.output || \"not running\",\n });\n\n // Check 3: Workspace files present\n const workspace = runSshCheck(\n exec,\n host,\n `test -f /home/${SSH_USER}/.openclaw/workspace/SOUL.md && test -f /home/${SSH_USER}/.openclaw/workspace/HEARTBEAT.md && echo 'OK'`,\n timeout\n );\n checks.push({\n name: \"Workspace files\",\n passed: workspace.ok,\n detail: workspace.ok ? \"SOUL.md + HEARTBEAT.md present\" : \"missing files\",\n });\n\n // Check 4: Claude Code CLI installed\n const claudeCode = runSshCheck(\n exec,\n host,\n `/home/${SSH_USER}/.local/bin/claude --version 2>/dev/null || echo 'not installed'`,\n timeout\n );\n const claudeVersion = claudeCode.output.trim();\n const claudeInstalled = claudeCode.ok && !claudeVersion.includes(\"not installed\");\n checks.push({\n name: \"Claude Code CLI\",\n passed: claudeInstalled,\n detail: claudeInstalled ? claudeVersion : \"not installed\",\n });\n\n // Check 5: Claude Code auth (API key or OAuth token)\n if (claudeInstalled) {\n const credCheck = runSshCheck(\n exec,\n host,\n `grep -E '\"(ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN)\"' /home/${SSH_USER}/.openclaw/openclaw.json | head -1`,\n timeout\n );\n const hasApiKey = credCheck.output.includes(\"ANTHROPIC_API_KEY\");\n const hasOAuthToken = credCheck.output.includes(\"CLAUDE_CODE_OAUTH_TOKEN\");\n const credIsConfigured = credCheck.ok && (hasApiKey || hasOAuthToken);\n const credType = hasOAuthToken ? \"OAuth token\" : \"API key\";\n\n if (credIsConfigured) {\n const envVar = hasOAuthToken ? \"CLAUDE_CODE_OAUTH_TOKEN\" : \"ANTHROPIC_API_KEY\";\n const testScript = `\nexport ${envVar}=$(jq -r '.env.${envVar}' /home/${SSH_USER}/.openclaw/openclaw.json)\ntimeout 15 /home/${SSH_USER}/.local/bin/claude -p 'hi' 2>&1 | head -5\n `.trim();\n const authTest = runSshCheck(exec, host, testScript, timeout + 15);\n const authWorks = authTest.ok && \n !authTest.output.includes(\"Invalid API key\") && \n !authTest.output.includes(\"not authenticated\");\n checks.push({\n name: \"Claude Code auth\",\n passed: authWorks,\n detail: authWorks ? `${credType} verified` : `${credType} test failed: ${authTest.output.substring(0, 50)}`,\n });\n } else {\n checks.push({\n name: \"Claude Code auth\",\n passed: false,\n detail: \"No credentials configured\",\n });\n }\n }\n\n // Check 6: GitHub CLI installed\n const ghVersion = runSshCheck(\n exec,\n host,\n `gh --version 2>/dev/null | head -n1 || echo 'not installed'`,\n timeout\n );\n const ghVersionStr = ghVersion.output.trim();\n const ghInstalled = ghVersion.ok && !ghVersionStr.includes(\"not installed\");\n checks.push({\n name: \"GitHub CLI\",\n passed: ghInstalled,\n detail: ghInstalled ? ghVersionStr : \"not installed\",\n });\n\n // Check 7: GitHub CLI auth status (if installed)\n if (ghInstalled) {\n const ghAuth = runSshCheck(\n exec,\n host,\n `gh auth status 2>&1 | head -n2 || echo 'not authenticated'`,\n timeout\n );\n const ghAuthStr = ghAuth.output.trim();\n const ghAuthenticated = ghAuth.ok && \n !ghAuthStr.includes(\"not authenticated\") && \n !ghAuthStr.includes(\"not logged\");\n checks.push({\n name: \"GitHub CLI auth\",\n passed: ghAuthenticated,\n detail: ghAuthenticated ? \"authenticated\" : \"not authenticated (optional)\",\n });\n }\n } else {\n checks.push({ name: \"OpenClaw gateway\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"Workspace files\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"Claude Code CLI\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"Claude Code auth\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"GitHub CLI\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"GitHub CLI auth\", passed: false, detail: \"skipped (no SSH)\" });\n }\n\n // Display check results\n const allPassed = checks.every((c) => c.passed);\n for (const check of checks) {\n const icon = check.passed ? pc.green(\"PASS\") : pc.red(\"FAIL\");\n console.log(` ${icon} ${check.name}: ${check.detail ?? \"\"}`);\n }\n console.log();\n\n results.push({ agent: agent.displayName, checks, passed: allPassed });\n }\n\n // Summary\n const passed = results.filter((r) => r.passed).length;\n const failed = results.filter((r) => !r.passed).length;\n\n const summaryLines = [\n `Total: ${results.length}`,\n `Passed: ${passed}`,\n `Failed: ${failed}`,\n ];\n\n ui.note(summaryLines.join(\"\\n\"), \"Validation Summary\");\n\n if (failed > 0) {\n ui.log.warn(\"Some agents failed validation.\");\n console.log(\" 1. Wait 3-5 minutes for cloud-init to complete\");\n const agentHints = results\n .filter((r) => !r.passed)\n .map((r) => {\n const agent = manifest.agents.find((a) => a.displayName === r.agent);\n return agent ? agent.role : r.agent;\n });\n console.log(` 2. Check logs: clawup ssh ${agentHints[0] ?? \"<role>\"} -- journalctl -u openclaw`);\n console.log(\" 3. Verify Tailscale: tailscale status\");\n process.exit(1);\n } else {\n ui.log.success(\"All agents are healthy!\");\n }\n};\n", "/**\n * Destroy Tool \u2014 Tear down resources with safety confirmations\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation } from \"../adapters\";\nimport { loadManifest, resolveConfigName, syncManifestToProject } from \"../lib/config\";\nimport { cleanupTailscaleDevices } from \"../lib/tailscale\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { getConfig } from \"../lib/tool-helpers\";\nimport { formatAgentList } from \"../lib/ui\";\n\nexport interface DestroyOptions {\n /** Skip confirmation prompts (dangerous!) */\n yes?: boolean;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/**\n * Destroy tool implementation\n */\nexport const destroyTool: ToolImplementation<DestroyOptions> = async (\n runtime: RuntimeAdapter,\n options: DestroyOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army\");\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select/create stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n process.exit(1);\n }\n }\n\n // Show what will be destroyed (provider-aware)\n const manifestProvider = manifest.provider ?? \"aws\";\n const resourceLabel = manifestProvider === \"hetzner\" ? \"Hetzner servers\" : \"EC2 instances\";\n const infraLabel = manifestProvider === \"hetzner\" ? \"Firewall rules\" : \"VPC, subnet, and security group\";\n\n ui.note(\n [\n `Stack: ${manifest.stackName}`,\n `Region: ${manifest.region}`,\n ``,\n `Agents (${manifest.agents.length}):`,\n formatAgentList(manifest.agents),\n ``,\n `This will PERMANENTLY DESTROY:`,\n ` - ${manifest.agents.length} ${resourceLabel}`,\n ` - All workspace data on those instances`,\n ` - ${infraLabel}`,\n ` - Tailscale device registrations`,\n ].join(\"\\n\"),\n \"Destruction Plan\"\n );\n\n // Confirm\n if (!options.yes) {\n const typedName = await ui.text({\n message: `Type the stack name to confirm: \"${manifest.stackName}\"`,\n validate: (val) => {\n if (val !== manifest.stackName) return `Must type \"${manifest.stackName}\" to confirm`;\n return undefined;\n },\n });\n\n const confirmed = await ui.confirm({\n message: \"Are you ABSOLUTELY sure?\",\n initialValue: false,\n });\n if (!confirmed) {\n ui.cancel(\"Destruction cancelled.\");\n }\n }\n\n // Sync manifest to project root so the Pulumi program can read it\n syncManifestToProject(configName, cwd);\n\n // Destroy infrastructure\n ui.log.step(\"Running pulumi destroy...\");\n console.log();\n const exitCode = await exec.stream(\"pulumi\", [\"destroy\", \"--yes\"], { cwd });\n console.log();\n\n if (exitCode !== 0) {\n ui.log.error(\"Destruction failed. Check the output above for details.\");\n process.exit(1);\n }\n\n // Clean up Tailscale devices after infrastructure is destroyed\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n const tailscaleApiKey = getConfig(exec, \"tailscaleApiKey\", cwd);\n\n if (tailnetDnsName && tailscaleApiKey) {\n const spinner = ui.spinner(\"Removing agents from Tailscale...\");\n const { cleaned, failed } = cleanupTailscaleDevices(\n tailscaleApiKey, tailnetDnsName, manifest.stackName, manifest.agents\n );\n if (failed.length === 0) {\n spinner.stop(cleaned.length > 0 ? \"Tailscale devices cleaned up\" : \"No Tailscale devices found\");\n } else {\n spinner.stop(\"Some Tailscale devices could not be removed\");\n ui.log.warn(\n `Could not remove: ${failed.join(\", \")}. Remove manually from https://login.tailscale.com/admin/machines`\n );\n }\n } else if (tailnetDnsName && !tailscaleApiKey) {\n ui.log.warn(\"No Tailscale API key configured - devices must be removed manually.\");\n console.log(\" Remove devices at: https://login.tailscale.com/admin/machines\");\n console.log(\" Tip: Set a Tailscale API key (`clawup init`) for automatic cleanup.\");\n }\n\n ui.log.success(`Stack \"${manifest.stackName}\" has been destroyed.`);\n ui.outro(\"Done!\");\n};\n", "/**\n * Redeploy Tool \u2014 Update agents in-place with pulumi up --refresh\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n * Unlike destroy+deploy, this reuses existing infrastructure (including Tailscale devices).\n */\n\nimport type { RuntimeAdapter, ToolImplementation } from \"../adapters\";\nimport { loadManifest, resolveConfigName, syncManifestToProject } from \"../lib/config\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { isTailscaleInstalled, isTailscaleRunning, cleanupTailscaleDevices, ensureMagicDns, ensureTailscaleFunnel } from \"../lib/tailscale\";\nimport { getConfig } from \"../lib/tool-helpers\";\nimport { formatAgentList } from \"../lib/ui\";\nimport pc from \"picocolors\";\n\nexport interface RedeployOptions {\n /** Skip confirmation prompt */\n yes?: boolean;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/**\n * Redeploy tool implementation\n */\nexport const redeployTool: ToolImplementation<RedeployOptions> = async (\n runtime: RuntimeAdapter,\n options: RedeployOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army\");\n\n // Ensure workspace is set up\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Try to select existing stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n const stackExists = selectResult.exitCode === 0;\n\n if (!stackExists) {\n // Stack doesn't exist \u2014 fall back to regular deploy flow\n ui.log.warn(`Stack \"${manifest.stackName}\" does not exist. Falling back to fresh deploy.`);\n\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n ui.log.error(initResult.stderr || `Could not create Pulumi stack \"${manifest.stackName}\".`);\n process.exit(1);\n }\n }\n\n // Show redeploy summary\n ui.note(\n [\n `Stack: ${manifest.stackName}`,\n `Region: ${manifest.region}`,\n `Mode: ${stackExists ? \"In-place update (--refresh)\" : \"Fresh deploy (new stack)\"}`,\n ``,\n `Agents (${manifest.agents.length}):`,\n formatAgentList(manifest.agents),\n ``,\n stackExists\n ? `This will update resources in-place where possible.\\nTailscale devices will be preserved.`\n : `This will create all resources from scratch.`,\n ].join(\"\\n\"),\n \"Redeploy Summary\"\n );\n\n // Confirm\n if (!options.yes) {\n const confirmed = await ui.confirm({\n message: \"Proceed with redeploy?\",\n });\n if (!confirmed) {\n ui.cancel(\"Redeploy cancelled.\");\n return;\n }\n }\n\n // Sync manifest to project root so the Pulumi program can read it\n syncManifestToProject(configName, cwd);\n\n // Sync instanceType from manifest to Pulumi config\n const configSetResult = exec.capture(\"pulumi\", [\"config\", \"set\", \"instanceType\", manifest.instanceType], cwd);\n if (configSetResult.exitCode !== 0) {\n ui.log.error(`Failed to set Pulumi config: ${configSetResult.stderr || \"unknown error\"}`);\n process.exit(1);\n }\n\n // Clean up stale Tailscale devices before deploying\n // This prevents duplicates when Pulumi replaces servers (create-before-delete)\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n const tailscaleApiKey = getConfig(exec, \"tailscaleApiKey\", cwd);\n\n if (tailnetDnsName && tailscaleApiKey) {\n const spinner = ui.spinner(\"Cleaning up stale Tailscale devices...\");\n const { cleaned, failed } = cleanupTailscaleDevices(\n tailscaleApiKey, tailnetDnsName, manifest.stackName, manifest.agents\n );\n if (cleaned.length > 0) {\n spinner.stop(`Removed ${cleaned.length} stale Tailscale device(s)`);\n } else {\n spinner.stop(\"No stale Tailscale devices found\");\n }\n if (failed.length > 0) {\n ui.log.warn(\n `Could not remove some devices: ${failed.join(\", \")}. Check https://login.tailscale.com/admin/machines`\n );\n }\n }\n\n // Ensure MagicDNS is enabled (required for Tailscale hostname resolution)\n if (tailscaleApiKey) {\n const spinner = ui.spinner(\"Ensuring Tailscale MagicDNS is enabled...\");\n const magicDnsChanged = ensureMagicDns(tailscaleApiKey);\n spinner.stop(magicDnsChanged ? \"MagicDNS enabled\" : \"MagicDNS OK\");\n }\n\n // Ensure Tailscale Funnel prerequisites if any agent uses Linear\n const hasLinearAgents = manifest.agents.some(\n (a) => !!getConfig(exec, `${a.role}LinearApiKey`, cwd)\n );\n if (hasLinearAgents && tailscaleApiKey) {\n const spinner = ui.spinner(\"Ensuring Tailscale Funnel prerequisites...\");\n const funnel = ensureTailscaleFunnel(tailscaleApiKey);\n const changes: string[] = [];\n if (funnel.funnelAcl) changes.push(\"Funnel ACL enabled\");\n spinner.stop(changes.length > 0 ? changes.join(\", \") : \"Funnel prerequisites OK\");\n }\n\n // Run pulumi up with --refresh to read actual cloud state first\n const pulumiArgs = stackExists\n ? [\"up\", \"--refresh\", \"--yes\"]\n : [\"up\", \"--yes\"];\n\n ui.log.step(stackExists ? \"Running pulumi up --refresh...\" : \"Running pulumi up...\");\n console.log();\n const exitCode = await exec.stream(\"pulumi\", pulumiArgs, { cwd });\n console.log();\n\n if (exitCode !== 0) {\n ui.log.error(\"Redeploy failed. Check the output above for details.\");\n if (stackExists) {\n ui.log.warn(\n \"If the in-place update cannot recover, try: clawup destroy && clawup deploy\"\n );\n }\n process.exit(1);\n }\n\n ui.log.success(\"Redeploy complete!\");\n\n // Show outputs\n const outputsResult = exec.capture(\"pulumi\", [\n \"stack\",\n \"output\",\n \"--json\",\n \"--show-secrets\",\n ], cwd);\n if (outputsResult.exitCode === 0) {\n try {\n const outputs = JSON.parse(outputsResult.stdout) as Record<string, unknown>;\n const lines: string[] = [];\n\n for (const agent of manifest.agents) {\n const urlKey = `${agent.role}TailscaleUrl`;\n const ipKey = `${agent.role}PublicIp`;\n const idKey = `${agent.role}InstanceId`;\n lines.push(`${agent.displayName} (${agent.role}):`);\n if (outputs[urlKey]) lines.push(` Tailscale URL: ${outputs[urlKey]}`);\n if (outputs[ipKey]) lines.push(` Public IP: ${outputs[ipKey]}`);\n if (outputs[idKey]) lines.push(` Instance ID: ${outputs[idKey]}`);\n lines.push(\"\");\n }\n\n ui.note(lines.join(\"\\n\"), \"Agent Details\");\n } catch (err) {\n ui.log.warn(`Could not parse stack outputs: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n // Remind user about Tailscale if not connected\n if (!isTailscaleInstalled()) {\n const hint =\n process.platform === \"darwin\"\n ? \"Install from the Mac App Store or https://tailscale.com/download\"\n : \"Install from https://tailscale.com/download\";\n ui.log.warn(\n `Tailscale is required to connect to agents.\\n ${hint}\\n Then run: ${pc.cyan(\"tailscale up\")}`\n );\n } else if (!isTailscaleRunning()) {\n ui.log.warn(\n `Tailscale is not running. Start it before validating agents.\\n Open the Tailscale app or run: ${pc.cyan(\"tailscale up\")}`\n );\n }\n\n ui.outro(\"Agents updated. Run `clawup validate` to verify.\");\n};\n", "/**\n * Push Tool \u2014 Live-update running agents via Tailscale SSH\n *\n * Syncs workspace files, skills, config, and OpenClaw updates to\n * running agent instances without redeploying infrastructure.\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport type { RuntimeAdapter, ToolImplementation, ExecAdapter } from \"../adapters\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { AGENT_ALIASES, SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { getConfig, selectOrCreateStack } from \"../lib/pulumi\";\nimport type { AgentDefinition } from \"@clawup/core\";\nimport { fetchIdentitySync } from \"@clawup/core/identity\";\nimport { classifySkills } from \"@clawup/core\";\nimport { resolveDeps } from \"@clawup/core\";\nimport * as os from \"os\";\nimport pc from \"picocolors\";\n\nexport interface PushOptions {\n /** Sync skills to remote workspace */\n skills?: boolean;\n /** Sync workspace files to remote agents */\n workspace?: boolean;\n /** Remove remote memory/ dir and MEMORY.md */\n memoryReset?: boolean;\n /** Run npm install -g openclaw@latest + gateway restart */\n openclaw?: boolean;\n /** Copy local openclaw.json to remote + gateway restart */\n pushConfig?: boolean;\n /** Filter to a single agent (name, role, or alias) */\n agent?: string;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/** SSH options for non-interactive connections */\nconst SSH_OPTS = [\n \"-o\", \"StrictHostKeyChecking=no\",\n \"-o\", \"UserKnownHostsFile=/dev/null\",\n \"-o\", \"BatchMode=yes\",\n];\n\nconst REMOTE_WORKSPACE = `/home/${SSH_USER}/.openclaw/workspace`;\nconst REMOTE_SKILLS = `${REMOTE_WORKSPACE}/skills`;\n\n/**\n * Run a command over SSH, returning success/failure and output.\n */\nfunction sshExec(\n exec: ExecAdapter,\n host: string,\n command: string,\n): { ok: boolean; output: string } {\n const result = exec.capture(\"ssh\", [\n \"-o\", \"ConnectTimeout=15\",\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"${command.replace(/\"/g, '\\\\\"')}\"`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Run rsync to sync a local directory to a remote path.\n */\nfunction rsyncDir(\n exec: ExecAdapter,\n localDir: string,\n host: string,\n remoteDir: string,\n): { ok: boolean; output: string } {\n // Ensure trailing slash on localDir so rsync syncs contents\n const src = localDir.endsWith(\"/\") ? localDir : `${localDir}/`;\n const result = exec.capture(\"rsync\", [\n \"-avz\", \"--delete\",\n \"-e\", `ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes`,\n src,\n `${SSH_USER}@${host}:${remoteDir}/`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Copy a single file to a remote path via scp.\n */\nfunction scpFile(\n exec: ExecAdapter,\n localFile: string,\n host: string,\n remotePath: string,\n): { ok: boolean; output: string } {\n const result = exec.capture(\"scp\", [\n ...SSH_OPTS,\n localFile,\n `${SSH_USER}@${host}:${remotePath}`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Resolve an agent query (name, role, alias, displayName) against the manifest.\n */\nfunction findAgent(agents: AgentDefinition[], query: string): AgentDefinition | undefined {\n const q = query.toLowerCase();\n const resolvedRole = AGENT_ALIASES[q] ?? q;\n return agents.find(\n (a) =>\n a.role === resolvedRole ||\n a.name === q ||\n a.name === `agent-${q}` ||\n a.displayName.toLowerCase() === q\n );\n}\n\n/**\n * Push tool implementation\n */\nexport const pushTool: ToolImplementation<PushOptions> = async (\n runtime: RuntimeAdapter,\n options: PushOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Clawup\");\n\n // Ensure workspace is set up\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n throw new Error(wsResult.error ?? \"Failed to set up workspace.\");\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n throw new Error((err as Error).message);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n throw new Error(`Config '${configName}' could not be loaded.`);\n }\n\n // Select Pulumi stack to read tailnet config\n const stackResult = selectOrCreateStack(manifest.stackName, cwd);\n if (!stackResult.ok) {\n throw new Error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n }\n\n // Get tailnet DNS name\n const tailnetDnsName = getConfig(\"tailnetDnsName\", cwd);\n if (!tailnetDnsName) {\n throw new Error(\"Could not determine tailnet DNS name from Pulumi config.\");\n }\n\n // Default behavior: if no flags are set, push skills + workspace\n const noFlags = !options.skills && !options.workspace && !options.memoryReset &&\n !options.openclaw && !options.pushConfig;\n const doSkills = options.skills || noFlags;\n const doWorkspace = options.workspace || noFlags;\n\n // Determine target agents\n let targetAgents = manifest.agents;\n if (options.agent) {\n const matched = findAgent(manifest.agents, options.agent);\n if (!matched) {\n const validNames = manifest.agents\n .map((a) => `${a.role}, ${a.displayName.toLowerCase()}, ${a.name}`)\n .join(\"\\n \");\n ui.log.error(\n `Unknown agent: \"${options.agent}\"\\nValid identifiers:\\n ${validNames}`\n );\n return;\n }\n targetAgents = [matched];\n }\n\n // Describe what we're pushing\n const actions: string[] = [];\n if (doSkills) actions.push(\"skills\");\n if (doWorkspace) actions.push(\"workspace\");\n if (options.memoryReset) actions.push(\"memory-reset\");\n if (options.openclaw) actions.push(\"openclaw upgrade\");\n if (options.pushConfig) actions.push(\"config\");\n\n ui.log.step(\n `Pushing [${actions.join(\", \")}] to ${targetAgents.length} agent(s)...`\n );\n console.log();\n\n let allOk = true;\n\n for (const agent of targetAgents) {\n const tsHost = tailscaleHostname(manifest.stackName, agent.name);\n const host = `${tsHost}.${tailnetDnsName}`;\n\n ui.log.info(`${pc.bold(agent.displayName)} (${agent.role}) \u2014 ${host}`);\n\n let needsRestart = false;\n\n // 1. Push workspace files and skills (unified via identity system)\n if (doWorkspace || doSkills) {\n try {\n const identityCacheDir = path.join(os.homedir(), \".clawup\", \"identity-cache\");\n const identity = fetchIdentitySync(agent.identity, identityCacheDir);\n\n // Ensure remote workspace dir exists\n sshExec(exec, host, `mkdir -p ${REMOTE_WORKSPACE}`);\n\n // Write identity files to a temp dir for transfer\n const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"push-identity-\"));\n\n for (const [relPath, content] of Object.entries(identity.files)) {\n const localFile = path.join(tmpDir, relPath);\n fs.mkdirSync(path.dirname(localFile), { recursive: true });\n fs.writeFileSync(localFile, content);\n }\n\n // Sync workspace files (non-skill files)\n if (doWorkspace) {\n const topFiles = Object.keys(identity.files).filter(f => !f.startsWith(\"skills/\"));\n let wsOk = true;\n for (const relPath of topFiles) {\n const localFile = path.join(tmpDir, relPath);\n const result = scpFile(exec, localFile, host, `${REMOTE_WORKSPACE}/${relPath}`);\n if (!result.ok) {\n console.log(` ${pc.red(\"FAIL\")} workspace file ${relPath}: ${result.output.substring(0, 100)}`);\n wsOk = false;\n allOk = false;\n }\n }\n if (wsOk) {\n console.log(` ${pc.green(\"OK\")} workspace files synced (${topFiles.length} files)`);\n }\n }\n\n // Sync skills\n if (doSkills) {\n const skillsLocalDir = path.join(tmpDir, \"skills\");\n if (fs.existsSync(skillsLocalDir)) {\n sshExec(exec, host, `mkdir -p ${REMOTE_SKILLS}`);\n const result = rsyncDir(exec, skillsLocalDir, host, REMOTE_SKILLS);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} skills synced`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} skills sync failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n // Install public skills via clawhub\n const { public: publicSkills } = classifySkills(identity.manifest.skills);\n for (const skill of publicSkills) {\n const cmd = `export NVM_DIR=\"$HOME/.nvm\" && [ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\" && clawhub install ${skill.slug}`;\n const result = sshExec(exec, host, cmd);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} clawhub skill installed: ${skill.slug}`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} clawhub skill ${skill.slug}: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n // Run dep post-install scripts (e.g., gh auth)\n if (identity.manifest.deps?.length) {\n const resolved = resolveDeps(identity.manifest.deps);\n for (const dep of resolved) {\n if (!dep.entry.postInstallScript) continue;\n const cmd = dep.entry.postInstallScript;\n const result = sshExec(exec, host, cmd);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} dep post-install: ${dep.name}`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} dep post-install ${dep.name}: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n }\n }\n\n // Cleanup temp dir\n fs.rmSync(tmpDir, { recursive: true, force: true });\n } catch (err) {\n console.log(` ${pc.red(\"FAIL\")} identity fetch failed: ${(err as Error).message}`);\n allOk = false;\n }\n }\n\n // 3. Memory reset\n if (options.memoryReset) {\n const cmd = `rm -rf ${REMOTE_WORKSPACE}/memory ${REMOTE_WORKSPACE}/MEMORY.md`;\n const result = sshExec(exec, host, cmd);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} memory reset`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} memory reset failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n // 4. OpenClaw upgrade\n if (options.openclaw) {\n const cmd = `npm install -g openclaw@latest 2>&1`;\n const result = sshExec(exec, host, cmd);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} openclaw upgraded`);\n needsRestart = true;\n } else {\n console.log(` ${pc.red(\"FAIL\")} openclaw upgrade failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n // 5. Config push\n if (options.pushConfig) {\n const localConfig = path.join(\n `/home/${SSH_USER}/.openclaw`,\n \"openclaw.json\"\n );\n // The local config is on the operator's machine at ~/.openclaw/openclaw.json\n // However, this should reference the operator's local file\n const operatorConfig = path.join(\n process.env.HOME ?? \"\",\n \".openclaw\",\n \"openclaw.json\"\n );\n if (fs.existsSync(operatorConfig)) {\n const result = scpFile(\n exec,\n operatorConfig,\n host,\n `/home/${SSH_USER}/.openclaw/openclaw.json`\n );\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} openclaw.json pushed`);\n needsRestart = true;\n } else {\n console.log(` ${pc.red(\"FAIL\")} config push failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n } else {\n console.log(` ${pc.red(\"FAIL\")} local openclaw.json not found at ${operatorConfig}`);\n allOk = false;\n }\n }\n\n // 6. Restart gateway if needed\n if (needsRestart) {\n const result = sshExec(exec, host, \"systemctl --user restart openclaw-gateway\");\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} gateway restarted`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} gateway restart failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n console.log();\n }\n\n // Summary\n if (allOk) {\n ui.log.success(`Push completed successfully for ${targetAgents.length} agent(s).`);\n } else {\n ui.log.warn(\"Push completed with some failures. Check output above.\");\n throw new Error(\"Push completed with failures.\");\n }\n};\n", "/**\n * Webhooks Setup Tool \u2014 Configure Linear webhooks for deployed agents\n *\n * Collects signing secrets, stores them in Pulumi config for persistence,\n * then applies them live via SSH (no redeploy needed).\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation, ExecAdapter } from \"../adapters\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { getConfig, getStackOutputs } from \"../lib/tool-helpers\";\nimport pc from \"picocolors\";\n\nexport interface WebhooksSetupOptions {\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/** SSH options for non-interactive connections */\nconst SSH_OPTS = [\n \"-o\", \"StrictHostKeyChecking=no\",\n \"-o\", \"UserKnownHostsFile=/dev/null\",\n \"-o\", \"BatchMode=yes\",\n];\n\n/**\n * Run a command over SSH\n */\nfunction sshExec(\n exec: ExecAdapter,\n host: string,\n command: string,\n): { ok: boolean; output: string } {\n const result = exec.capture(\"ssh\", [\n \"-o\", \"ConnectTimeout=15\",\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"${command.replace(/\"/g, '\\\\\"')}\"`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Webhooks setup tool implementation\n */\nexport const webhooksSetupTool: ToolImplementation<WebhooksSetupOptions> = async (\n runtime: RuntimeAdapter,\n options: WebhooksSetupOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army \u2014 Webhook Setup\");\n\n // Ensure workspace is set up\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\". Run ${pc.cyan(\"clawup deploy\")} first.`);\n process.exit(1);\n }\n\n // Get stack outputs\n const outputs = getStackOutputs(exec, true, cwd);\n if (!outputs) {\n ui.log.error(`Could not fetch stack outputs. Run ${pc.cyan(\"clawup deploy\")} first.`);\n process.exit(1);\n }\n\n // Get tailnet DNS name for SSH\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n if (!tailnetDnsName) {\n ui.log.error(\"Could not read tailnetDnsName from Pulumi config.\");\n process.exit(1);\n }\n\n // Check if any webhook URLs exist\n const agentsWithUrls = manifest.agents.filter(\n (agent) => outputs[`${agent.role}WebhookUrl`]\n );\n\n if (agentsWithUrls.length === 0) {\n ui.log.error(\n \"No webhook URLs found in stack outputs.\\n\" +\n ` Make sure agents are deployed and exposing webhook endpoints.\\n` +\n ` Run ${pc.cyan(\"clawup deploy\")} if you haven't already.`\n );\n process.exit(1);\n }\n\n ui.note(\n [\n \"This will walk you through creating Linear webhooks for each agent.\",\n \"You'll need access to your Linear workspace settings.\",\n ].join(\"\\n\"),\n \"Linear Webhook Setup\"\n );\n\n // Collect webhook secrets for each agent\n const secrets: { role: string; name: string; agentName: string; secret: string }[] = [];\n\n for (const agent of manifest.agents) {\n const webhookUrl = outputs[`${agent.role}WebhookUrl`] as string | undefined;\n if (!webhookUrl) {\n ui.log.warn(`No webhook URL found for ${agent.displayName} (${agent.role}) \u2014 skipping.`);\n continue;\n }\n\n ui.note(\n [\n `Webhook URL: ${pc.cyan(String(webhookUrl))}`,\n \"\",\n \"Steps:\",\n \"1. Go to Linear Settings \u2192 API \u2192 Webhooks \u2192 \\\"New webhook\\\"\",\n \"2. Paste the URL above\",\n \"3. Select events to receive (e.g., Issues, Comments)\",\n \"4. Create the webhook and copy the \\\"Signing secret\\\"\",\n ].join(\"\\n\"),\n `${agent.displayName} (${agent.role})`\n );\n\n const secret = await ui.text({\n message: `Signing secret for ${agent.displayName}`,\n placeholder: \"Paste the signing secret from Linear\",\n validate: (val: string) => {\n if (!val) return \"Signing secret is required\";\n },\n });\n\n secrets.push({\n role: agent.role,\n name: agent.name,\n agentName: agent.displayName,\n secret: secret as string,\n });\n }\n\n if (secrets.length === 0) {\n ui.log.warn(\"No webhook secrets collected.\");\n ui.outro(\"Nothing to do.\");\n return;\n }\n\n // Store secrets in Pulumi config (for persistence across deploys)\n const configSpinner = ui.spinner(\"Saving webhook secrets to Pulumi config...\");\n for (const { role, secret } of secrets) {\n exec.capture(\n \"pulumi\",\n [\"config\", \"set\", `${role}LinearWebhookSecret`, secret, \"--secret\"],\n cwd\n );\n }\n configSpinner.stop(`Saved ${secrets.length} webhook secret(s) to Pulumi config`);\n\n // Apply secrets live via SSH\n const applySpinner = ui.spinner(\"Applying webhook secrets to running agents...\");\n let applied = 0;\n let failed = 0;\n\n for (const { role, name, agentName, secret } of secrets) {\n const tsHost = tailscaleHostname(manifest.stackName, name);\n const host = `${tsHost}.${tailnetDnsName}`;\n\n // Escape the secret for use inside jq\n const escapedSecret = secret.replace(/'/g, \"'\\\\''\");\n const jqCmd =\n `jq '.plugins.entries.linear.config.webhookSecret = \\\\\\\"${escapedSecret.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\\\\\\\\\"')}\\\\\\\"' ` +\n `/home/${SSH_USER}/.openclaw/openclaw.json > /tmp/openclaw-patched.json && ` +\n `mv /tmp/openclaw-patched.json /home/${SSH_USER}/.openclaw/openclaw.json`;\n\n const patchResult = sshExec(exec, host, jqCmd);\n if (!patchResult.ok) {\n applySpinner.stop(`Failed to patch config on ${agentName}`);\n ui.log.warn(` ${agentName}: ${patchResult.output}`);\n failed++;\n continue;\n }\n\n const restartResult = sshExec(exec, host, \"systemctl --user restart openclaw-gateway\");\n if (!restartResult.ok) {\n applySpinner.stop(`Failed to restart gateway on ${agentName}`);\n ui.log.warn(` ${agentName}: ${restartResult.output}`);\n failed++;\n continue;\n }\n\n applied++;\n }\n\n if (applied > 0 && failed === 0) {\n applySpinner.stop(`Applied to ${applied} agent(s)`);\n } else if (applied > 0) {\n applySpinner.stop(`Applied to ${applied} agent(s), ${failed} failed`);\n } else {\n applySpinner.stop(`Failed to apply to any agents`);\n }\n\n if (failed > 0) {\n ui.log.warn(\n `Some agents could not be reached. They will pick up the secrets on next deploy.`\n );\n }\n\n ui.outro(\"Webhook setup complete!\");\n};\n", "/**\n * CLI Runtime Adapter\n *\n * Implements RuntimeAdapter for interactive terminal usage\n * using @clack/prompts for UI and child_process for execution.\n */\n\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { execSync, spawn, spawnSync, type SpawnOptions } from \"child_process\";\nimport { trackChild } from \"../lib/process\";\nimport { resolveCommand, commandExistsWithVendor } from \"../lib/vendor\";\nimport type {\n RuntimeAdapter,\n UIAdapter,\n ExecAdapter,\n ExecResult,\n TextOptions,\n ConfirmOptions,\n SelectOptions,\n MultiSelectOptions,\n SpinnerController,\n StreamOptions,\n} from \"./types\";\n\n// ============================================================================\n// Execution Adapter Implementation\n// ============================================================================\n\nclass CLIExecAdapter implements ExecAdapter {\n capture(command: string, args: string[] = [], cwd?: string): ExecResult {\n const resolved = resolveCommand(command);\n try {\n const result = execSync([resolved, ...args].join(\" \"), {\n cwd,\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n return { stdout: result.trim(), stderr: \"\", exitCode: 0 };\n } catch (err: unknown) {\n const e = err as { stdout?: string; stderr?: string; status?: number };\n return {\n stdout: (e.stdout ?? \"\").toString().trim(),\n stderr: (e.stderr ?? \"\").toString().trim(),\n exitCode: e.status ?? 1,\n };\n }\n }\n\n stream(command: string, args: string[] = [], options?: StreamOptions): Promise<number> {\n const resolved = resolveCommand(command);\n return new Promise((resolve) => {\n const opts: SpawnOptions = {\n cwd: options?.cwd,\n stdio: options?.capture ? \"pipe\" : \"inherit\",\n shell: true,\n };\n const child = spawn(resolved, args, opts);\n trackChild(child);\n child.on(\"close\", (code) => resolve(code ?? 1));\n child.on(\"error\", (err) => {\n console.warn(`[exec] Child process error: ${err.message}`);\n resolve(1);\n });\n });\n }\n\n commandExists(command: string): boolean {\n return commandExistsWithVendor(command);\n }\n}\n\n// ============================================================================\n// UI Adapter Implementation\n// ============================================================================\n\nclass CLIUIAdapter implements UIAdapter {\n intro(message: string): void {\n console.log();\n p.intro(pc.bgCyan(pc.black(` ${message} `)));\n }\n\n note(content: string, title?: string): void {\n p.note(content, title);\n }\n\n outro(message: string): void {\n p.outro(message);\n }\n\n cancel(message: string): never {\n p.cancel(message);\n process.exit(0);\n }\n\n log = {\n info(message: string): void {\n p.log.info(message);\n },\n step(message: string): void {\n p.log.step(message);\n },\n success(message: string): void {\n p.log.success(message);\n },\n warn(message: string): void {\n p.log.warn(message);\n },\n error(message: string): void {\n p.log.error(message);\n },\n };\n\n async text(options: TextOptions): Promise<string> {\n const result = await p.text({\n message: options.message,\n placeholder: options.placeholder,\n defaultValue: options.defaultValue,\n validate: options.validate,\n });\n\n if (p.isCancel(result)) {\n this.cancel(\"Operation cancelled.\");\n }\n\n return result as string;\n }\n\n async confirm(options: ConfirmOptions): Promise<boolean> {\n const result = await p.confirm({\n message: options.message,\n initialValue: options.initialValue,\n });\n\n if (p.isCancel(result)) {\n this.cancel(\"Operation cancelled.\");\n }\n\n return result as boolean;\n }\n\n async select<T>(options: SelectOptions<T>): Promise<T> {\n const result = await p.select({\n message: options.message,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: options.options as any,\n initialValue: options.initialValue,\n });\n\n if (p.isCancel(result)) {\n this.cancel(\"Operation cancelled.\");\n }\n\n return result as T;\n }\n\n async multiSelect<T>(options: MultiSelectOptions<T>): Promise<T[]> {\n const result = await p.multiselect({\n message: options.message,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: options.options as any,\n initialValues: options.initialValues,\n required: options.required,\n });\n\n if (p.isCancel(result)) {\n this.cancel(\"Operation cancelled.\");\n }\n\n return result as T[];\n }\n\n spinner(message: string): SpinnerController {\n const s = p.spinner();\n s.start(message);\n return {\n stop(msg?: string, code?: number) {\n s.stop(msg, code);\n },\n message(msg: string) {\n s.message(msg);\n },\n };\n }\n}\n\n// ============================================================================\n// Runtime Adapter\n// ============================================================================\n\n/**\n * Create a CLI runtime adapter for interactive terminal usage\n */\nexport function createCLIAdapter(): RuntimeAdapter {\n return {\n ui: new CLIUIAdapter(),\n exec: new CLIExecAdapter(),\n platform: \"cli\",\n };\n}\n\n/**\n * Singleton CLI adapter instance for convenience\n */\nexport const cliAdapter = createCLIAdapter();\n", "/**\n * API Runtime Adapter\n *\n * Implements RuntimeAdapter for HTTP API usage.\n * Instead of interactive prompts, collects inputs from a request body\n * and accumulates responses as structured JSON.\n */\n\nimport { resolveCommand, commandExistsWithVendor } from \"../lib/vendor\";\nimport type {\n RuntimeAdapter,\n UIAdapter,\n ExecAdapter,\n ExecResult,\n TextOptions,\n ConfirmOptions,\n SelectOptions,\n MultiSelectOptions,\n SpinnerController,\n StreamOptions,\n LogAdapter,\n} from \"./types\";\n\n// ============================================================================\n// API Response Types\n// ============================================================================\n\n/** A field descriptor returned instead of prompting */\nexport interface FieldDescriptor {\n type: \"text\" | \"confirm\" | \"select\" | \"multiSelect\";\n name: string;\n message: string;\n placeholder?: string;\n defaultValue?: unknown;\n options?: Array<{ value: unknown; label: string; hint?: string }>;\n required?: boolean;\n}\n\n/** A log entry accumulated during execution */\nexport interface LogEntry {\n level: \"info\" | \"step\" | \"success\" | \"warn\" | \"error\";\n message: string;\n timestamp: number;\n}\n\n/** Accumulated API response */\nexport interface APIResponse {\n /** Fields that need user input (wizard mode) */\n fields: FieldDescriptor[];\n /** Log messages accumulated during execution */\n logs: LogEntry[];\n /** Notes/messages shown to the user */\n messages: Array<{ type: \"intro\" | \"note\" | \"outro\" | \"cancel\"; content: string; title?: string }>;\n /** Whether the operation completed or needs more input */\n status: \"needsInput\" | \"complete\" | \"cancelled\" | \"error\";\n}\n\n// ============================================================================\n// Execution Adapter Implementation\n// ============================================================================\n\nclass APIExecAdapter implements ExecAdapter {\n capture(command: string, args: string[] = [], cwd?: string): ExecResult {\n const { execFileSync } = require(\"child_process\");\n const resolved = resolveCommand(command);\n try {\n const result = execFileSync(resolved, args, {\n cwd,\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n return { stdout: (result as string).trim(), stderr: \"\", exitCode: 0 };\n } catch (err: unknown) {\n const e = err as { stdout?: string; stderr?: string; status?: number };\n return {\n stdout: (e.stdout ?? \"\").toString().trim(),\n stderr: (e.stderr ?? \"\").toString().trim(),\n exitCode: e.status ?? 1,\n };\n }\n }\n\n async stream(command: string, args: string[] = [], options?: StreamOptions): Promise<number> {\n // In API context, always capture output\n const result = this.capture(command, args, options?.cwd);\n return result.exitCode;\n }\n\n commandExists(command: string): boolean {\n return commandExistsWithVendor(command);\n }\n}\n\n// ============================================================================\n// UI Adapter Implementation\n// ============================================================================\n\nclass APIUIAdapter implements UIAdapter {\n private response: APIResponse;\n private inputs: Record<string, unknown>;\n private fieldIndex = 0;\n\n constructor(inputs: Record<string, unknown>, response: APIResponse) {\n this.inputs = inputs;\n this.response = response;\n }\n\n intro(message: string): void {\n this.response.messages.push({ type: \"intro\", content: message });\n }\n\n note(content: string, title?: string): void {\n this.response.messages.push({ type: \"note\", content, title });\n }\n\n outro(message: string): void {\n this.response.messages.push({ type: \"outro\", content: message });\n this.response.status = \"complete\";\n }\n\n cancel(message: string): never {\n this.response.messages.push({ type: \"cancel\", content: message });\n this.response.status = \"cancelled\";\n throw new APIAdapterCancelError(message);\n }\n\n log: LogAdapter = {\n info: (message: string): void => {\n this.response.logs.push({ level: \"info\", message, timestamp: Date.now() });\n },\n step: (message: string): void => {\n this.response.logs.push({ level: \"step\", message, timestamp: Date.now() });\n },\n success: (message: string): void => {\n this.response.logs.push({ level: \"success\", message, timestamp: Date.now() });\n },\n warn: (message: string): void => {\n this.response.logs.push({ level: \"warn\", message, timestamp: Date.now() });\n },\n error: (message: string): void => {\n this.response.logs.push({ level: \"error\", message, timestamp: Date.now() });\n },\n };\n\n async text(options: TextOptions): Promise<string> {\n const fieldName = `field_${this.fieldIndex++}`;\n\n // Check if input was provided\n if (fieldName in this.inputs || options.message in this.inputs) {\n const key = fieldName in this.inputs ? fieldName : options.message;\n const value = String(this.inputs[key]);\n if (options.validate) {\n const error = options.validate(value);\n if (error) {\n throw new APIAdapterValidationError(fieldName, error);\n }\n }\n return value;\n }\n\n // No input provided \u2014 add field descriptor for client\n this.response.fields.push({\n type: \"text\",\n name: fieldName,\n message: options.message,\n placeholder: options.placeholder,\n defaultValue: options.defaultValue,\n });\n this.response.status = \"needsInput\";\n throw new APIAdapterNeedsInputError(fieldName);\n }\n\n async confirm(options: ConfirmOptions): Promise<boolean> {\n const fieldName = `field_${this.fieldIndex++}`;\n\n if (fieldName in this.inputs || options.message in this.inputs) {\n const key = fieldName in this.inputs ? fieldName : options.message;\n return Boolean(this.inputs[key]);\n }\n\n this.response.fields.push({\n type: \"confirm\",\n name: fieldName,\n message: options.message,\n defaultValue: options.initialValue,\n });\n this.response.status = \"needsInput\";\n throw new APIAdapterNeedsInputError(fieldName);\n }\n\n async select<T>(options: SelectOptions<T>): Promise<T> {\n const fieldName = `field_${this.fieldIndex++}`;\n\n if (fieldName in this.inputs || options.message in this.inputs) {\n const key = fieldName in this.inputs ? fieldName : options.message;\n return this.inputs[key] as T;\n }\n\n this.response.fields.push({\n type: \"select\",\n name: fieldName,\n message: options.message,\n options: options.options.map((o) => ({\n value: o.value as unknown,\n label: o.label,\n hint: o.hint,\n })),\n defaultValue: options.initialValue,\n });\n this.response.status = \"needsInput\";\n throw new APIAdapterNeedsInputError(fieldName);\n }\n\n async multiSelect<T>(options: MultiSelectOptions<T>): Promise<T[]> {\n const fieldName = `field_${this.fieldIndex++}`;\n\n if (fieldName in this.inputs || options.message in this.inputs) {\n const key = fieldName in this.inputs ? fieldName : options.message;\n const value = this.inputs[key];\n return Array.isArray(value) ? value : [value as T];\n }\n\n this.response.fields.push({\n type: \"multiSelect\",\n name: fieldName,\n message: options.message,\n options: options.options.map((o) => ({\n value: o.value as unknown,\n label: o.label,\n hint: o.hint,\n })),\n defaultValue: options.initialValues,\n required: options.required,\n });\n this.response.status = \"needsInput\";\n throw new APIAdapterNeedsInputError(fieldName);\n }\n\n spinner(message: string): SpinnerController {\n this.response.logs.push({ level: \"info\", message: `[spinner] ${message}`, timestamp: Date.now() });\n return {\n stop(msg?: string) {\n // No-op in API mode\n },\n message(_msg: string) {\n // No-op in API mode\n },\n };\n }\n}\n\n// ============================================================================\n// Error Types\n// ============================================================================\n\n/** Thrown when the adapter needs more input from the client */\nexport class APIAdapterNeedsInputError extends Error {\n constructor(public fieldName: string) {\n super(`Input required for field: ${fieldName}`);\n this.name = \"APIAdapterNeedsInputError\";\n }\n}\n\n/** Thrown when validation fails on a provided input */\nexport class APIAdapterValidationError extends Error {\n constructor(\n public fieldName: string,\n public validationMessage: string\n ) {\n super(`Validation failed for ${fieldName}: ${validationMessage}`);\n this.name = \"APIAdapterValidationError\";\n }\n}\n\n/** Thrown when the operation is cancelled */\nexport class APIAdapterCancelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"APIAdapterCancelError\";\n }\n}\n\n// ============================================================================\n// Runtime Adapter\n// ============================================================================\n\n/**\n * Create an API runtime adapter for HTTP request handling.\n *\n * @param inputs - Key-value pairs from the request body providing answers to wizard fields\n * @returns A tuple of [RuntimeAdapter, APIResponse] \u2014 use the response to send back to the client\n *\n * @example\n * const [adapter, response] = createAPIAdapter({ field_0: \"my-project\", field_1: \"aws\" });\n * try {\n * await initTool(adapter, {});\n * } catch (e) {\n * if (e instanceof APIAdapterNeedsInputError) {\n * // Return response.fields to client for more input\n * }\n * }\n * res.json(response);\n */\nexport function createAPIAdapter(inputs: Record<string, unknown> = {}): [RuntimeAdapter, APIResponse] {\n const response: APIResponse = {\n fields: [],\n logs: [],\n messages: [],\n status: \"complete\",\n };\n\n const adapter: RuntimeAdapter = {\n ui: new APIUIAdapter(inputs, response),\n exec: new APIExecAdapter(),\n platform: \"api\",\n };\n\n return [adapter, response];\n}\n", "/**\n * Runtime Adapters Module\n *\n * Provides platform-agnostic abstractions for UI and execution,\n * enabling the same core command logic to run in different environments.\n *\n * @example\n * import { createCLIAdapter, type RuntimeAdapter, type ToolImplementation } from './adapters';\n *\n * const myTool: ToolImplementation<{ name: string }> = async (runtime, options) => {\n * runtime.ui.intro(\"My Tool\");\n * const name = options.name || await runtime.ui.text({ message: \"Enter name:\" });\n * runtime.ui.log.success(`Hello, ${name}!`);\n * };\n *\n * // Run with CLI adapter\n * await myTool(createCLIAdapter(), { name: \"World\" });\n */\n\n// Export types\nexport type {\n RuntimeAdapter,\n UIAdapter,\n ExecAdapter,\n LogAdapter,\n ExecResult,\n TextOptions,\n ConfirmOptions,\n SelectOptions,\n SelectOption,\n MultiSelectOptions,\n SpinnerController,\n StreamOptions,\n ToolImplementation,\n ToolDefinition,\n} from \"./types\";\n\n// Export CLI adapter\nexport { createCLIAdapter, cliAdapter } from \"./cli-adapter\";\n\n// Export API adapter\nexport {\n createAPIAdapter,\n APIAdapterNeedsInputError,\n APIAdapterValidationError,\n APIAdapterCancelError,\n} from \"./api-adapter\";\nexport type { FieldDescriptor, LogEntry, APIResponse } from \"./api-adapter\";\n", "/**\n * Tools Module\n *\n * Platform-agnostic tool implementations using the RuntimeAdapter pattern.\n * Each tool is a ToolImplementation that can run with any adapter.\n *\n * @example\n * import { deployTool, createCLIAdapter } from './tools';\n *\n * // Run with CLI adapter\n * await deployTool(createCLIAdapter(), { yes: false });\n */\n\n// Export all tools\nexport { deployTool, type DeployOptions } from \"./deploy\";\nexport { statusTool, type StatusOptions } from \"./status\";\nexport { validateTool, type ValidateOptions } from \"./validate\";\nexport { destroyTool, type DestroyOptions } from \"./destroy\";\nexport { redeployTool, type RedeployOptions } from \"./redeploy\";\nexport { pushTool, type PushOptions } from \"./push\";\nexport { webhooksSetupTool, type WebhooksSetupOptions } from \"./webhooks\";\n\n// Re-export adapter types and factory for convenience\nexport {\n type RuntimeAdapter,\n type ToolImplementation,\n type ToolDefinition,\n createCLIAdapter,\n} from \"../adapters\";\n", "/**\n * clawup deploy \u2014 Deploy agents with pulumi up\n *\n * This command wraps the platform-agnostic deployTool with the CLI adapter.\n */\n\nimport { deployTool, createCLIAdapter, type DeployOptions } from \"../tools\";\n\nexport async function deployCommand(opts: DeployOptions): Promise<void> {\n await deployTool(createCLIAdapter(), opts);\n}\n", "#!/usr/bin/env node\n\n/**\n * Agent Army CLI \u2014 Entry point\n *\n * Provides interactive commands for the full agent lifecycle:\n * init, deploy, redeploy, status, ssh, validate, destroy, config\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { Command } from \"commander\";\nimport { setupGracefulShutdown } from \"./lib/process\";\nimport { initCommand } from \"./commands/init\";\nimport { deployCommand } from \"./commands/deploy\";\nimport { statusCommand } from \"./commands/status\";\nimport { sshCommand } from \"./commands/ssh\";\nimport { validateCommand } from \"./commands/validate\";\nimport { pushCommand } from \"./commands/push\";\nimport type { PushOptions } from \"./tools/push\";\nimport { destroyCommand } from \"./commands/destroy\";\nimport { listCommand } from \"./commands/list\";\nimport { updateCommand } from \"./commands/update\";\nimport { configShowCommand, configSetCommand, configMigrateCommand } from \"./commands/config\";\nimport { secretsSetCommand, secretsListCommand } from \"./commands/secrets\";\nimport { redeployCommand } from \"./commands/redeploy\";\nimport { webhooksSetupCommand } from \"./commands/webhooks\";\nimport { checkForUpdates } from \"./lib/update-check\";\n\n// Forward SIGINT/SIGTERM to child processes before exiting\nsetupGracefulShutdown();\n\n// Read version from package.json so it stays in sync with npm publish\nconst pkgJson = JSON.parse(fs.readFileSync(path.join(__dirname, \"..\", \"package.json\"), \"utf-8\"));\n\nconst program = new Command();\n\nprogram\n .name(\"clawup\")\n .description(\"Deploy and manage a fleet of OpenClaw AI agents on AWS\")\n .version(pkgJson.version);\n\nprogram\n .command(\"init\")\n .description(\"Interactive setup wizard \u2014 configure stack, secrets, and agents\")\n .option(\"--deploy\", \"Deploy immediately after init\")\n .option(\"-y, --yes\", \"Skip confirmation prompt (for deploy)\")\n .action(async (opts) => {\n await initCommand(opts);\n });\n\nprogram\n .command(\"deploy\")\n .description(\"Deploy agents with pulumi up\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await deployCommand(opts);\n });\n\nprogram\n .command(\"status\")\n .description(\"Show agent statuses from stack outputs\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await statusCommand(opts);\n });\n\nprogram\n .command(\"ssh <agent>\")\n .description(\"SSH to an agent by name or alias (juno, titus, scout)\")\n .option(\"-u, --user <user>\", \"SSH user\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .argument(\"[command...]\", \"Command to run on the agent\")\n .action(async (agent: string, commandArgs: string[], opts) => {\n await sshCommand(agent, commandArgs, opts);\n });\n\nprogram\n .command(\"validate\")\n .description(\"Health check agents via Tailscale SSH\")\n .option(\"-t, --timeout <seconds>\", \"SSH timeout in seconds\", \"30\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await validateCommand(opts);\n });\n\nprogram\n .command(\"push\")\n .description(\"Push workspace files, skills, and config to running agents\")\n .option(\"--skills\", \"Sync skills to remote workspace\")\n .option(\"--workspace\", \"Sync workspace files from identity\")\n .option(\"--memory-reset\", \"Remove remote memory/ dir and MEMORY.md\")\n .option(\"--openclaw\", \"Upgrade openclaw to latest + restart gateway\")\n .option(\"--config-push\", \"Copy local openclaw.json to remote + restart gateway\")\n .option(\"-a, --agent <name>\", \"Target a single agent (name, role, or alias)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts: PushOptions & { configPush?: boolean }) => {\n await pushCommand({\n skills: opts.skills,\n workspace: opts.workspace,\n memoryReset: opts.memoryReset,\n openclaw: opts.openclaw,\n pushConfig: opts.configPush,\n agent: opts.agent,\n config: opts.config,\n });\n });\n\nprogram\n .command(\"redeploy\")\n .description(\"Update agents in-place without destroying infrastructure\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await redeployCommand(opts);\n });\n\nprogram\n .command(\"destroy\")\n .description(\"Tear down all resources with safety confirmations\")\n .option(\"-y, --yes\", \"Skip confirmation prompts (dangerous!)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await destroyCommand(opts);\n });\n\nprogram\n .command(\"list\")\n .description(\"List all saved configs\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n await listCommand(opts);\n });\n\nconst configCmd = program\n .command(\"config\")\n .description(\"View or modify config without re-running init\");\n\nconfigCmd\n .command(\"show\")\n .description(\"Display current config\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await configShowCommand(opts);\n });\n\nconfigCmd\n .command(\"set <key> <value>\")\n .description(\"Update a config value\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .option(\"-a, --agent <name>\", \"Target a specific agent\")\n .action(async (key: string, value: string, opts) => {\n await configSetCommand(key, value, opts);\n });\n\nconfigCmd\n .command(\"migrate\")\n .description(\"Migrate plugin config files into the manifest (one-time upgrade)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await configMigrateCommand(opts);\n });\n\nconst secretsCmd = program\n .command(\"secrets\")\n .description(\"View or update Pulumi secrets without re-running init\");\n\nsecretsCmd\n .command(\"set <key> <value>\")\n .description(\"Set a secret (e.g. braveApiKey, anthropicApiKey)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .option(\"-a, --agent <role>\", \"Agent role for per-agent secrets (e.g. eng, pm, tester)\")\n .action(async (key: string, value: string, opts) => {\n await secretsSetCommand(key, value, opts);\n });\n\nsecretsCmd\n .command(\"list\")\n .description(\"Show which secrets are configured (values redacted)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await secretsListCommand(opts);\n });\n\nconst webhooksCmd = program\n .command(\"webhooks\")\n .description(\"Manage agent webhooks\");\n\nwebhooksCmd\n .command(\"setup\")\n .description(\"Configure Linear webhooks for deployed agents\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await webhooksSetupCommand(opts);\n });\n\nprogram\n .command(\"update\")\n .description(\"Update clawup CLI to the latest version\")\n .action(async (opts) => {\n await updateCommand(opts);\n });\n\n// Fire-and-forget update check \u2014 must run before parse() because\n// Commander's --help/--version call process.exit() synchronously.\n// The cached path (no await) prints the notice before exit;\n// the stale-cache path fetches in the background for the next run.\ncheckForUpdates(pkgJson.version).catch(() => {});\n\nprogram.parse();\n", "/**\n * clawup init \u2014 Interactive setup wizard\n *\n * Identity-driven: every agent must have an identity source.\n * The manifest stores only team composition (which agents to deploy).\n * Plugins, deps, and config come from identities at deploy time.\n */\n\nimport { execSync } from \"child_process\";\nimport * as p from \"@clack/prompts\";\nimport type { AgentDefinition, ClawupManifest, IdentityManifest } from \"@clawup/core\";\nimport {\n BUILT_IN_IDENTITIES,\n PROVIDERS,\n AWS_REGIONS,\n HETZNER_LOCATIONS,\n INSTANCE_TYPES,\n hetznerServerTypes,\n COST_ESTIMATES,\n HETZNER_COST_ESTIMATES,\n KEY_INSTRUCTIONS,\n MODEL_PROVIDERS,\n slackAppManifest,\n tailscaleHostname,\n PLUGIN_REGISTRY,\n DEP_REGISTRY,\n} from \"@clawup/core\";\nimport { fetchIdentity } from \"@clawup/core/identity\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport { checkPrerequisites } from \"../lib/prerequisites\";\nimport { selectOrCreateStack, setConfig } from \"../lib/pulumi\";\nimport { saveManifest } from \"../lib/config\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { showBanner, handleCancel, exitWithError, formatCost, formatAgentList } from \"../lib/ui\";\n\ninterface InitOptions {\n deploy?: boolean;\n yes?: boolean;\n}\n\n/** Fetched identity data stored alongside the agent definition */\ninterface FetchedIdentity {\n agent: AgentDefinition;\n manifest: IdentityManifest;\n}\n\nexport async function initCommand(opts: InitOptions = {}): Promise<void> {\n showBanner();\n\n // -------------------------------------------------------------------------\n // Step 1: Check prerequisites\n // -------------------------------------------------------------------------\n p.log.step(\"Checking prerequisites...\");\n const prereqsOk = await checkPrerequisites();\n if (!prereqsOk) {\n exitWithError(\"Prerequisites not met. Please install the missing tools and try again.\");\n }\n p.log.success(\"All prerequisites satisfied!\");\n\n // -------------------------------------------------------------------------\n // Step 2: Infrastructure config\n // -------------------------------------------------------------------------\n const stackName = await p.text({\n message: \"Pulumi stack name\",\n placeholder: \"dev\",\n defaultValue: \"dev\",\n });\n handleCancel(stackName);\n\n const provider = await p.select({\n message: \"Cloud provider\",\n options: PROVIDERS.map((prov) => ({ value: prov.value, label: prov.label, hint: prov.hint })),\n initialValue: \"aws\",\n });\n handleCancel(provider);\n\n let region: string;\n let instanceType: string;\n\n if (provider === \"aws\") {\n const awsRegion = await p.select({\n message: \"AWS region\",\n options: AWS_REGIONS,\n initialValue: \"us-east-1\",\n });\n handleCancel(awsRegion);\n region = awsRegion as string;\n\n const awsInstanceType = await p.select({\n message: \"Default instance type\",\n options: INSTANCE_TYPES,\n initialValue: \"t3.medium\",\n });\n handleCancel(awsInstanceType);\n instanceType = awsInstanceType as string;\n } else {\n const hetznerLocation = await p.select({\n message: \"Hetzner location\",\n options: HETZNER_LOCATIONS,\n initialValue: \"fsn1\",\n });\n handleCancel(hetznerLocation);\n region = hetznerLocation as string;\n\n const serverTypeOptions = hetznerServerTypes(region);\n const hetznerServerType = await p.select({\n message: \"Default server type\",\n options: serverTypeOptions,\n initialValue: serverTypeOptions[0].value,\n });\n handleCancel(hetznerServerType);\n instanceType = hetznerServerType as string;\n }\n\n // -------------------------------------------------------------------------\n // Step 3: Owner info\n // -------------------------------------------------------------------------\n const ownerName = await p.text({\n message: \"Owner name (for workspace templates)\",\n placeholder: \"Boss\",\n defaultValue: \"Boss\",\n });\n handleCancel(ownerName);\n\n const timezone = await p.text({\n message: \"Your timezone\",\n placeholder: \"PST (America/Los_Angeles)\",\n defaultValue: \"PST (America/Los_Angeles)\",\n });\n handleCancel(timezone);\n\n const workingHours = await p.text({\n message: \"Your working hours\",\n placeholder: \"9am-6pm\",\n defaultValue: \"9am-6pm\",\n });\n handleCancel(workingHours);\n\n const userNotes = await p.text({\n message: \"Any notes for your agents about you? (optional)\",\n placeholder: \"e.g., Prefers concise updates, hates unnecessary meetings\",\n defaultValue: \"\",\n });\n handleCancel(userNotes);\n\n const basicConfig = {\n stackName: stackName as string,\n provider: provider as \"aws\" | \"hetzner\",\n region,\n instanceType,\n ownerName: ownerName as string,\n timezone: timezone as string,\n workingHours: workingHours as string,\n userNotes: (userNotes as string) || \"No additional notes provided yet.\",\n };\n\n // -------------------------------------------------------------------------\n // Step 4: Secrets (Anthropic, Tailscale, Hetzner)\n // -------------------------------------------------------------------------\n p.log.step(\"Configure Anthropic API key\");\n\n p.note(\n KEY_INSTRUCTIONS.anthropicApiKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.anthropicApiKey.title\n );\n\n const anthropicApiKey = await p.text({\n message: \"Anthropic API key\",\n placeholder: `${MODEL_PROVIDERS.anthropic.keyPrefix}...`,\n validate: (val) => {\n if (!val) return \"API key is required\";\n if (!val.startsWith(MODEL_PROVIDERS.anthropic.keyPrefix)) {\n return `Must start with ${MODEL_PROVIDERS.anthropic.keyPrefix}`;\n }\n },\n });\n handleCancel(anthropicApiKey);\n\n p.log.step(\"Configure infrastructure secrets\");\n\n p.note(\n KEY_INSTRUCTIONS.tailscaleAuthKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.tailscaleAuthKey.title\n );\n\n const tailscaleAuthKey = await p.password({\n message: \"Tailscale auth key\",\n validate: (val) => {\n if (!val.startsWith(\"tskey-auth-\")) return \"Must start with tskey-auth-\";\n },\n });\n handleCancel(tailscaleAuthKey);\n\n p.note(\n KEY_INSTRUCTIONS.tailnetDnsName.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.tailnetDnsName.title\n );\n\n const tailnetDnsName = await p.text({\n message: \"Tailnet DNS name\",\n placeholder: \"my-tailnet.ts.net\",\n validate: (val) => {\n if (!val.endsWith(\".ts.net\")) return \"Must end with .ts.net\";\n },\n });\n handleCancel(tailnetDnsName);\n\n p.note(\n KEY_INSTRUCTIONS.tailscaleApiKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.tailscaleApiKey.title\n );\n\n const tailscaleApiKey = await p.text({\n message: \"Tailscale API key (press Enter to skip)\",\n placeholder: \"tskey-api-... (optional)\",\n defaultValue: \"\",\n });\n handleCancel(tailscaleApiKey);\n\n let hcloudToken: string | undefined;\n if (provider === \"hetzner\") {\n p.note(\n KEY_INSTRUCTIONS.hcloudToken.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.hcloudToken.title\n );\n\n const token = await p.password({\n message: \"Hetzner Cloud API token\",\n validate: (val) => {\n if (!val) return \"API token is required for Hetzner deployments\";\n },\n });\n handleCancel(token);\n hcloudToken = token as string;\n }\n\n // -------------------------------------------------------------------------\n // Step 5: Agent selection (identity-driven, no custom mode)\n // -------------------------------------------------------------------------\n p.log.step(\"Configure agents\");\n\n const agentMode = await p.select({\n message: \"How would you like to configure agents?\",\n options: [\n { value: \"built-in\", label: \"Built-in agents\", hint: \"PM (Juno), Eng (Titus), QA (Scout)\" },\n { value: \"identity\", label: \"From identity source\", hint: \"Load from a Git URL or local path\" },\n { value: \"mix\", label: \"Mix of both\", hint: \"Pick built-in + add from identity source\" },\n ],\n });\n handleCancel(agentMode);\n\n const fetchedIdentities: FetchedIdentity[] = [];\n const identityCacheDir = path.join(os.homedir(), \".clawup\", \"identity-cache\");\n\n // Collect built-in agents\n if (agentMode === \"built-in\" || agentMode === \"mix\") {\n const selectedBuiltIns = await p.multiselect({\n message: \"Select agents\",\n options: Object.entries(BUILT_IN_IDENTITIES).map(([key, entry]) => ({\n value: key,\n label: entry.label,\n hint: entry.hint,\n })),\n required: agentMode === \"built-in\",\n });\n handleCancel(selectedBuiltIns);\n\n for (const key of selectedBuiltIns as string[]) {\n const entry = BUILT_IN_IDENTITIES[key];\n const identity = await fetchIdentity(entry.path, identityCacheDir);\n const agent: AgentDefinition = {\n name: `agent-${identity.manifest.name}`,\n displayName: identity.manifest.displayName,\n role: identity.manifest.role,\n identity: entry.path,\n volumeSize: identity.manifest.volumeSize,\n };\n fetchedIdentities.push({ agent, manifest: identity.manifest });\n }\n }\n\n // Collect identity-source agents\n if (agentMode === \"identity\" || agentMode === \"mix\") {\n let addMore = true;\n\n while (addMore) {\n const identityUrl = await p.text({\n message: \"Identity source (Git URL or local path)\",\n placeholder: \"https://github.com/org/identities#agent-name\",\n validate: (val) => {\n if (!val.trim()) return \"Identity source is required\";\n },\n });\n handleCancel(identityUrl);\n\n const spinner = p.spinner();\n spinner.start(\"Validating identity...\");\n\n try {\n const identity = await fetchIdentity(identityUrl as string, identityCacheDir);\n spinner.stop(\n `Found: ${identity.manifest.displayName} (${identity.manifest.role}) \u2014 ${identity.manifest.description}`\n );\n\n // Allow volume size override\n const volumeOverride = await p.text({\n message: `Volume size in GB (default: ${identity.manifest.volumeSize})`,\n placeholder: String(identity.manifest.volumeSize),\n defaultValue: String(identity.manifest.volumeSize),\n validate: (val) => {\n const n = parseInt(val, 10);\n if (isNaN(n) || n < 8 || n > 500) return \"Must be between 8 and 500\";\n },\n });\n handleCancel(volumeOverride);\n\n const agent: AgentDefinition = {\n name: `agent-${identity.manifest.name}`,\n displayName: identity.manifest.displayName,\n role: identity.manifest.role,\n identity: identityUrl as string,\n volumeSize: parseInt(volumeOverride as string, 10),\n };\n fetchedIdentities.push({ agent, manifest: identity.manifest });\n } catch (err) {\n spinner.stop(`Failed to validate identity: ${(err as Error).message}`);\n p.log.error(\"Please check the URL and try again.\");\n continue;\n }\n\n const more = await p.confirm({\n message: \"Add another identity-based agent?\",\n initialValue: false,\n });\n handleCancel(more);\n addMore = more as boolean;\n }\n }\n\n if (fetchedIdentities.length === 0) {\n exitWithError(\"No agents configured. At least one agent is required.\");\n }\n\n const agents = fetchedIdentities.map((fi) => fi.agent);\n\n // -------------------------------------------------------------------------\n // Step 6: Collect template variable values\n // -------------------------------------------------------------------------\n\n // Auto-fillable vars from owner info\n const autoVars: Record<string, string> = {\n OWNER_NAME: basicConfig.ownerName,\n TIMEZONE: basicConfig.timezone,\n WORKING_HOURS: basicConfig.workingHours,\n USER_NOTES: basicConfig.userNotes,\n };\n\n // Scan all identities for template vars and deduplicate\n const allTemplateVarNames = new Set<string>();\n for (const fi of fetchedIdentities) {\n for (const v of fi.manifest.templateVars ?? []) {\n allTemplateVarNames.add(v);\n }\n }\n\n const templateVars: Record<string, string> = {};\n\n // Auto-fill known vars\n for (const varName of allTemplateVarNames) {\n if (autoVars[varName]) {\n templateVars[varName] = autoVars[varName];\n }\n }\n\n // Prompt for remaining vars\n const remainingVars = [...allTemplateVarNames].filter((v) => !templateVars[v]);\n if (remainingVars.length > 0) {\n p.log.step(\"Configure template variables\");\n p.log.info(`Your agents use the following template variables: ${remainingVars.join(\", \")}`);\n\n for (const varName of remainingVars) {\n const value = await p.text({\n message: `Value for ${varName}`,\n placeholder: varName === \"LINEAR_TEAM\" ? \"e.g., ENG\" : varName === \"GITHUB_REPO\" ? \"https://github.com/org/repo\" : \"\",\n validate: (val) => {\n if (!val.trim()) return `${varName} is required`;\n },\n });\n handleCancel(value);\n templateVars[varName] = value as string;\n }\n }\n\n // -------------------------------------------------------------------------\n // Step 7: Collect integration credentials (driven by identity plugins/deps)\n // -------------------------------------------------------------------------\n p.log.step(\"Configure integrations\");\n\n // Determine which plugins and deps are needed across all identities\n const agentPlugins = new Map<string, Set<string>>(); // agent name \u2192 plugin names\n const agentDeps = new Map<string, Set<string>>(); // agent name \u2192 dep names\n const allPluginNames = new Set<string>();\n const allDepNames = new Set<string>();\n\n for (const fi of fetchedIdentities) {\n const plugins = new Set(fi.manifest.plugins ?? []);\n const deps = new Set(fi.manifest.deps ?? []);\n agentPlugins.set(fi.agent.name, plugins);\n agentDeps.set(fi.agent.name, deps);\n for (const pl of plugins) allPluginNames.add(pl);\n for (const d of deps) allDepNames.add(d);\n }\n\n // Track identity pluginDefaults per agent name for seeding plugin config files\n const identityPluginDefaults: Record<string, Record<string, Record<string, unknown>>> = {};\n for (const fi of fetchedIdentities) {\n if (fi.manifest.pluginDefaults) {\n identityPluginDefaults[fi.agent.name] = fi.manifest.pluginDefaults;\n }\n }\n\n // Per-agent integration credentials\n const integrationCredentials: Record<string, {\n linearApiKey?: string;\n linearWebhookSecret?: string;\n linearUserUuid?: string;\n githubToken?: string;\n }> = {};\n for (const agent of agents) {\n integrationCredentials[agent.role] = {};\n }\n\n // Slack credentials \u2014 only if any identity has the slack plugin\n const slackCredentials: Record<string, { botToken: string; appToken: string }> = {};\n if (allPluginNames.has(\"slack\")) {\n p.note(\n KEY_INSTRUCTIONS.slackCredentials.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.slackCredentials.title\n );\n\n for (const fi of fetchedIdentities) {\n if (!agentPlugins.get(fi.agent.name)?.has(\"slack\")) continue;\n\n const slackManifest = slackAppManifest(fi.agent.displayName);\n try {\n execSync(\n process.platform === \"darwin\" ? \"pbcopy\" : \"xclip -selection clipboard\",\n { input: slackManifest },\n );\n p.log.success(`Slack manifest for ${fi.agent.displayName} copied to clipboard \u2014 paste it into Slack`);\n } catch {\n p.log.warn(`Could not copy to clipboard. Manifest for ${fi.agent.displayName}:`);\n console.log(slackManifest);\n }\n\n const botToken = await p.password({\n message: `Slack Bot Token for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val.startsWith(\"xoxb-\")) return \"Must start with xoxb-\";\n },\n });\n handleCancel(botToken);\n\n const appToken = await p.password({\n message: `Slack App Token for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val.startsWith(\"xapp-\")) return \"Must start with xapp-\";\n },\n });\n handleCancel(appToken);\n\n slackCredentials[fi.agent.role] = {\n botToken: botToken as string,\n appToken: appToken as string,\n };\n }\n }\n\n // Linear credentials \u2014 only if any identity has the openclaw-linear plugin\n if (allPluginNames.has(\"openclaw-linear\")) {\n p.note(\n KEY_INSTRUCTIONS.linearApiKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.linearApiKey.title\n );\n\n const linearAgents = fetchedIdentities.filter(\n (fi) => agentPlugins.get(fi.agent.name)?.has(\"openclaw-linear\")\n );\n\n for (const fi of linearAgents) {\n const linearKey = await p.password({\n message: `Linear API key for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val.startsWith(\"lin_api_\")) return \"Must start with lin_api_\";\n },\n });\n handleCancel(linearKey);\n\n integrationCredentials[fi.agent.role].linearApiKey = linearKey as string;\n\n // Auto-fetch user UUID from Linear API\n const s = p.spinner();\n s.start(`Fetching Linear user ID for ${fi.agent.displayName}...`);\n try {\n const res = await fetch(\"https://api.linear.app/graphql\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: linearKey as string,\n },\n body: JSON.stringify({ query: \"{ viewer { id } }\" }),\n });\n const data = (await res.json()) as { data?: { viewer?: { id?: string } } };\n const uuid = data?.data?.viewer?.id;\n if (!uuid) throw new Error(\"No user ID in response\");\n integrationCredentials[fi.agent.role].linearUserUuid = uuid;\n s.stop(`${fi.agent.displayName}: ${uuid}`);\n } catch (err) {\n s.stop(`Could not fetch Linear user ID for ${fi.agent.displayName}`);\n p.log.warn(`${err instanceof Error ? err.message : String(err)}`);\n const linearUserUuid = await p.text({\n message: `Enter Linear user UUID manually for ${fi.agent.displayName}`,\n placeholder: \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n validate: (val) => {\n if (!val) return \"Linear user UUID is required\";\n if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(val)) {\n return \"Must be a valid UUID format\";\n }\n },\n });\n handleCancel(linearUserUuid);\n integrationCredentials[fi.agent.role].linearUserUuid = linearUserUuid as string;\n }\n }\n\n // Linear webhook signing secrets\n p.note(\n [\n \"Create a webhook in Linear for each agent:\",\n \"1. Go to Settings \u2192 API \u2192 Webhooks \u2192 \\\"New webhook\\\"\",\n \"2. Paste the webhook URL shown below for each agent\",\n \"3. Select events to receive (e.g., Issues, Comments)\",\n \"4. Copy the \\\"Signing secret\\\" shown after creating the webhook\",\n ].join(\"\\n\"),\n \"Linear Webhook Setup\"\n );\n\n for (const fi of linearAgents) {\n const webhookUrl = `https://${tailscaleHostname(basicConfig.stackName, fi.agent.name)}.${tailnetDnsName as string}/hooks/linear`;\n\n p.log.info(`${fi.agent.displayName} (${fi.agent.role}): ${webhookUrl}`);\n\n const webhookSecretInput = await p.password({\n message: `Signing secret for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val) return \"Webhook signing secret is required\";\n },\n });\n handleCancel(webhookSecretInput);\n\n integrationCredentials[fi.agent.role].linearWebhookSecret = webhookSecretInput as string;\n }\n }\n\n // GitHub token \u2014 only if any identity has the gh dep\n if (allDepNames.has(\"gh\")) {\n p.note(\n KEY_INSTRUCTIONS.githubToken.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.githubToken.title\n );\n\n for (const fi of fetchedIdentities) {\n if (!agentDeps.get(fi.agent.name)?.has(\"gh\")) continue;\n\n const githubKey = await p.password({\n message: `GitHub token for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val.startsWith(\"ghp_\") && !val.startsWith(\"github_pat_\")) {\n return \"Must start with ghp_ or github_pat_\";\n }\n },\n });\n handleCancel(githubKey);\n\n integrationCredentials[fi.agent.role].githubToken = githubKey as string;\n }\n }\n\n // Brave Search API key \u2014 only if any identity has the brave-search dep (global, once)\n let braveApiKey: string | undefined;\n if (allDepNames.has(\"brave-search\")) {\n p.note(\n KEY_INSTRUCTIONS.braveApiKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.braveApiKey.title\n );\n\n const braveKey = await p.password({\n message: \"Brave Search API key\",\n validate: (val) => {\n if (!val) return \"API key is required\";\n },\n });\n handleCancel(braveKey);\n braveApiKey = braveKey as string;\n }\n\n // -------------------------------------------------------------------------\n // Step 8: Summary\n // -------------------------------------------------------------------------\n const costEstimates = basicConfig.provider === \"aws\" ? COST_ESTIMATES : HETZNER_COST_ESTIMATES;\n const costPerAgent = costEstimates[basicConfig.instanceType] ?? 30;\n const totalCost = agents.reduce((sum, a) => {\n const agentCost = costEstimates[a.instanceType ?? basicConfig.instanceType] ?? costPerAgent;\n return sum + agentCost;\n }, 0);\n\n const integrationNames: string[] = [];\n if (allPluginNames.has(\"openclaw-linear\")) integrationNames.push(\"Linear\");\n if (allPluginNames.has(\"slack\")) integrationNames.push(\"Slack\");\n if (allDepNames.has(\"gh\")) integrationNames.push(\"GitHub CLI\");\n if (allDepNames.has(\"brave-search\")) integrationNames.push(\"Brave Search\");\n\n const providerLabel = basicConfig.provider === \"aws\" ? \"AWS\" : \"Hetzner\";\n const regionLabel = basicConfig.provider === \"aws\" ? \"Region\" : \"Location\";\n\n // Build template vars display (excluding auto-filled owner vars)\n const customVarEntries = Object.entries(templateVars).filter(\n ([k]) => !autoVars[k]\n );\n\n const summaryLines = [\n `Stack: ${basicConfig.stackName}`,\n `Provider: ${providerLabel}`,\n `${regionLabel.padEnd(14, \" \")} ${basicConfig.region}`,\n `Instance type: ${basicConfig.instanceType}`,\n `Owner: ${basicConfig.ownerName}`,\n `Timezone: ${basicConfig.timezone}`,\n `Working hours: ${basicConfig.workingHours}`,\n ];\n if (customVarEntries.length > 0) {\n for (const [k, v] of customVarEntries) {\n summaryLines.push(`${k.padEnd(14, \" \")} ${v}`);\n }\n }\n if (integrationNames.length > 0) {\n summaryLines.push(`Integrations: ${integrationNames.join(\", \")}`);\n }\n summaryLines.push(\n ``,\n `Agents (${agents.length}):`,\n formatAgentList(agents),\n ``,\n `Estimated cost: ${formatCost(totalCost)}`\n );\n\n p.note(summaryLines.join(\"\\n\"), \"Deployment Summary\");\n\n // -------------------------------------------------------------------------\n // Step 9: Confirm\n // -------------------------------------------------------------------------\n const confirmed = await p.confirm({\n message: \"Proceed with setup?\",\n });\n handleCancel(confirmed);\n if (!confirmed) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n // -------------------------------------------------------------------------\n // Step 10: Execute setup\n // -------------------------------------------------------------------------\n const s = p.spinner();\n\n // Set up workspace\n s.start(\"Setting up workspace...\");\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n s.stop(\"Failed to set up workspace\");\n exitWithError(wsResult.error ?? \"Failed to set up workspace.\");\n }\n s.stop(\"Workspace ready\");\n const cwd = getWorkspaceDir();\n\n // Select/create stack\n s.start(\"Selecting Pulumi stack...\");\n const stackResult = selectOrCreateStack(basicConfig.stackName, cwd);\n if (!stackResult.ok) {\n s.stop(\"Failed to select/create stack\");\n if (stackResult.error) p.log.error(stackResult.error);\n exitWithError(`Could not select or create Pulumi stack \"${basicConfig.stackName}\".`);\n }\n s.stop(\"Pulumi stack ready\");\n\n // Set Pulumi config\n s.start(\"Setting Pulumi configuration...\");\n setConfig(\"provider\", basicConfig.provider, false, cwd);\n if (basicConfig.provider === \"aws\") {\n setConfig(\"aws:region\", basicConfig.region, false, cwd);\n } else {\n setConfig(\"hetzner:location\", basicConfig.region, false, cwd);\n if (hcloudToken) {\n setConfig(\"hcloud:token\", hcloudToken, true, cwd);\n }\n }\n setConfig(\"anthropicApiKey\", anthropicApiKey as string, true, cwd);\n setConfig(\"tailscaleAuthKey\", tailscaleAuthKey as string, true, cwd);\n setConfig(\"tailnetDnsName\", tailnetDnsName as string, false, cwd);\n if (tailscaleApiKey) {\n setConfig(\"tailscaleApiKey\", tailscaleApiKey as string, true, cwd);\n }\n setConfig(\"instanceType\", basicConfig.instanceType, false, cwd);\n setConfig(\"ownerName\", basicConfig.ownerName, false, cwd);\n setConfig(\"timezone\", basicConfig.timezone, false, cwd);\n setConfig(\"workingHours\", basicConfig.workingHours, false, cwd);\n setConfig(\"userNotes\", basicConfig.userNotes, false, cwd);\n\n // Set per-agent integration credentials\n for (const [role, creds] of Object.entries(integrationCredentials)) {\n if (creds.linearApiKey) setConfig(`${role}LinearApiKey`, creds.linearApiKey, true, cwd);\n if (creds.linearWebhookSecret) setConfig(`${role}LinearWebhookSecret`, creds.linearWebhookSecret, true, cwd);\n if (creds.linearUserUuid) setConfig(`${role}LinearUserUuid`, creds.linearUserUuid, false, cwd);\n if (creds.githubToken) setConfig(`${role}GithubToken`, creds.githubToken, true, cwd);\n }\n // Set per-agent Slack credentials\n for (const [role, creds] of Object.entries(slackCredentials)) {\n setConfig(`${role}SlackBotToken`, creds.botToken, true, cwd);\n setConfig(`${role}SlackAppToken`, creds.appToken, true, cwd);\n }\n if (braveApiKey) setConfig(\"braveApiKey\", braveApiKey, true, cwd);\n s.stop(\"Configuration saved\");\n\n // Write manifest\n const configName = basicConfig.stackName;\n s.start(`Writing config to ~/.clawup/configs/${configName}.yaml...`);\n\n // Only include non-auto template vars in manifest (owner vars are derived at deploy time)\n const manifestTemplateVars: Record<string, string> = {};\n for (const [k, v] of Object.entries(templateVars)) {\n if (!autoVars[k]) {\n manifestTemplateVars[k] = v;\n }\n }\n\n const manifest: ClawupManifest = {\n stackName: configName,\n provider: basicConfig.provider,\n region: basicConfig.region,\n instanceType: basicConfig.instanceType,\n ownerName: basicConfig.ownerName,\n timezone: basicConfig.timezone,\n workingHours: basicConfig.workingHours,\n userNotes: basicConfig.userNotes,\n templateVars: Object.keys(manifestTemplateVars).length > 0 ? manifestTemplateVars : undefined,\n agents,\n };\n // Inline plugin config into each agent definition\n for (const fi of fetchedIdentities) {\n const rolePlugins = agentPlugins.get(fi.agent.name);\n if (!rolePlugins || rolePlugins.size === 0) continue;\n\n const inlinePlugins: Record<string, Record<string, unknown>> = {};\n const defaults = identityPluginDefaults[fi.agent.name] ?? {};\n\n for (const pluginName of rolePlugins) {\n const pluginDefaults = defaults[pluginName] ?? {};\n const agentConfig: Record<string, unknown> = {\n ...pluginDefaults,\n agentId: fi.agent.name,\n };\n\n // Layer on user-provided config\n if (pluginName === \"openclaw-linear\") {\n const creds = integrationCredentials[fi.agent.role];\n if (creds?.linearUserUuid) {\n agentConfig.linearUserUuid = creds.linearUserUuid;\n }\n }\n\n inlinePlugins[pluginName] = agentConfig;\n }\n\n if (Object.keys(inlinePlugins).length > 0) {\n fi.agent.plugins = inlinePlugins;\n }\n }\n\n saveManifest(configName, manifest);\n s.stop(\"Config saved\");\n\n if (opts.deploy) {\n p.log.success(\"Config saved! Starting deployment...\\n\");\n const { deployCommand } = await import(\"./deploy.js\");\n await deployCommand({ config: configName, yes: opts.yes });\n } else {\n p.outro(\"Setup complete! Run `clawup deploy` to deploy your agents.\");\n }\n}\n", "/**\n * Prerequisite checking for CLI\n */\n\nimport * as p from \"@clack/prompts\";\nimport type { PrereqResult } from \"@clawup/core\";\nimport { commandExists, capture } from \"./exec\";\nimport { isVendored } from \"./vendor\";\nimport { isDevMode } from \"./workspace\";\nimport { isTailscaleInstalled } from \"./tailscale\";\n\n/**\n * Run all prerequisite checks and display results.\n * Returns true if all pass, false otherwise.\n */\nexport async function checkPrerequisites(): Promise<boolean> {\n const results: PrereqResult[] = [];\n\n // Pulumi CLI\n if (commandExists(\"pulumi\")) {\n const ver = capture(\"pulumi\", [\"version\"]);\n const source = isVendored(\"pulumi\") ? \"vendored\" : \"system\";\n results.push({ name: \"Pulumi\", ok: true, message: `found (${ver.stdout}, ${source})` });\n } else {\n results.push({\n name: \"Pulumi\",\n ok: false,\n message: \"not found\",\n hint: \"Install from https://www.pulumi.com/docs/iac/download-install/ or run `npm install` to vendor automatically\",\n });\n }\n\n // Node.js 18+\n if (commandExists(\"node\")) {\n const ver = capture(\"node\", [\"-v\"]);\n const major = parseInt(ver.stdout.replace(\"v\", \"\").split(\".\")[0], 10);\n if (major >= 18) {\n results.push({ name: \"Node.js\", ok: true, message: `${ver.stdout} (>= 18 required)` });\n } else {\n results.push({\n name: \"Node.js\",\n ok: false,\n message: `${ver.stdout} is too old`,\n hint: \"Requires Node.js 18+. Install from https://nodejs.org/\",\n });\n }\n } else {\n results.push({\n name: \"Node.js\",\n ok: false,\n message: \"not found\",\n hint: \"Install from https://nodejs.org/\",\n });\n }\n\n // AWS CLI\n if (commandExists(\"aws\")) {\n const source = isVendored(\"aws\") ? \"vendored\" : \"system\";\n results.push({ name: \"AWS CLI\", ok: true, message: `found (${source})` });\n } else {\n results.push({\n name: \"AWS CLI\",\n ok: false,\n message: \"not found\",\n hint: \"Install from https://aws.amazon.com/cli/ or run `npm install` to vendor automatically\",\n });\n }\n\n // Tailscale\n if (isTailscaleInstalled()) {\n results.push({ name: \"Tailscale\", ok: true, message: \"found\" });\n } else {\n const hint =\n process.platform === \"darwin\"\n ? \"Install from the Mac App Store or https://tailscale.com/download\"\n : \"Install from https://tailscale.com/download\";\n results.push({\n name: \"Tailscale\",\n ok: false,\n message: \"not found\",\n hint,\n });\n }\n\n // pnpm (only required in dev mode \u2014 installed mode uses npm in the workspace)\n if (isDevMode()) {\n if (commandExists(\"pnpm\")) {\n results.push({ name: \"pnpm\", ok: true, message: \"found\" });\n } else {\n results.push({\n name: \"pnpm\",\n ok: false,\n message: \"not found\",\n hint: \"Install with: npm install -g pnpm\",\n });\n }\n }\n\n // Display results\n const allOk = results.every((r) => r.ok);\n\n for (const r of results) {\n if (r.ok) {\n p.log.success(`${r.name}: ${r.message}`);\n } else {\n p.log.error(`${r.name}: ${r.message}`);\n if (r.hint) {\n p.log.message(` ${r.hint}`);\n }\n }\n }\n\n return allOk;\n}\n", "/**\n * clawup status \u2014 Show agent statuses from stack outputs\n *\n * This command wraps the platform-agnostic statusTool with the CLI adapter.\n */\n\nimport { statusTool, createCLIAdapter, type StatusOptions } from \"../tools\";\n\nexport async function statusCommand(opts: StatusOptions): Promise<void> {\n await statusTool(createCLIAdapter(), opts);\n}\n", "/**\n * clawup ssh \u2014 SSH to agent by name/alias\n */\n\nimport * as p from \"@clack/prompts\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { getConfig, selectOrCreateStack } from \"../lib/pulumi\";\nimport { AGENT_ALIASES, SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { showBanner, exitWithError } from \"../lib/ui\";\nimport { requireTailscale } from \"../lib/tailscale\";\nimport { spawn } from \"child_process\";\n\ninterface SshOptions {\n user?: string;\n config?: string;\n}\n\nexport async function sshCommand(agentNameOrAlias: string, commandArgs: string[], opts: SshOptions): Promise<void> {\n requireTailscale();\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n exitWithError(wsResult.error ?? \"Failed to set up workspace.\");\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n exitWithError((err as Error).message);\n }\n\n // Load manifest\n const manifest = loadManifest(configName);\n if (!manifest) {\n exitWithError(`Config '${configName}' could not be loaded.`);\n }\n\n // Select stack\n const stackResult = selectOrCreateStack(manifest.stackName, cwd);\n if (!stackResult.ok) {\n exitWithError(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n }\n\n // Resolve agent name/alias\n const query = agentNameOrAlias.toLowerCase();\n const resolvedRole = AGENT_ALIASES[query] ?? query;\n\n // Find agent in manifest\n const agent = manifest.agents.find(\n (a) =>\n a.role === resolvedRole ||\n a.name === query ||\n a.name === `agent-${query}` ||\n a.displayName.toLowerCase() === query\n );\n\n if (!agent) {\n const validNames = manifest.agents\n .map((a) => `${a.role}, ${a.displayName.toLowerCase()}, ${a.name}`)\n .join(\"\\n \");\n exitWithError(\n `Unknown agent: \"${agentNameOrAlias}\"\\nValid identifiers (any of these work):\\n ${validNames}`\n );\n }\n\n // Get tailnet DNS name\n const tailnetDnsName = getConfig(\"tailnetDnsName\", cwd);\n if (!tailnetDnsName) {\n exitWithError(\"Could not determine tailnet DNS name from Pulumi config.\");\n }\n\n const tsHost = tailscaleHostname(manifest.stackName, agent.name);\n const sshHost = `${tsHost}.${tailnetDnsName}`;\n const user = opts.user ?? SSH_USER;\n\n p.log.info(`Connecting to ${agent.displayName} (${sshHost})...`);\n\n // Build SSH command\n const sshArgs = [\"-o\", \"StrictHostKeyChecking=no\", \"-o\", \"UserKnownHostsFile=/dev/null\", `${user}@${sshHost}`];\n\n if (commandArgs.length > 0) {\n sshArgs.push(commandArgs.join(\" \"));\n }\n\n // Spawn interactive SSH\n const child = spawn(\"ssh\", sshArgs, { stdio: \"inherit\" });\n child.on(\"close\", (code) => {\n process.exit(code ?? 0);\n });\n}\n", "/**\n * clawup validate \u2014 Health check agents via Tailscale SSH\n *\n * This command wraps the platform-agnostic validateTool with the CLI adapter.\n */\n\nimport { validateTool, createCLIAdapter, type ValidateOptions } from \"../tools\";\n\nexport async function validateCommand(opts: ValidateOptions): Promise<void> {\n await validateTool(createCLIAdapter(), opts);\n}\n", "/**\n * clawup push \u2014 Live-update running agents via Tailscale SSH\n *\n * This command wraps the platform-agnostic pushTool with the CLI adapter.\n */\n\nimport { pushTool, createCLIAdapter, type PushOptions } from \"../tools\";\nimport { exitWithError } from \"../lib/ui\";\n\nexport async function pushCommand(opts: PushOptions): Promise<void> {\n try {\n await pushTool(createCLIAdapter(), opts);\n } catch (err) {\n exitWithError(err instanceof Error ? err.message : String(err));\n }\n}\n", "/**\n * clawup destroy \u2014 Tear down resources with safety confirmations\n *\n * This command wraps the platform-agnostic destroyTool with the CLI adapter.\n */\n\nimport { destroyTool, createCLIAdapter, type DestroyOptions } from \"../tools\";\n\nexport async function destroyCommand(opts: DestroyOptions): Promise<void> {\n await destroyTool(createCLIAdapter(), opts);\n}\n", "/**\n * List all saved configs in a table\n */\n\nimport { listManifests, loadManifest, configPath } from \"../lib/config\";\n\ninterface ListOptions {\n json?: boolean;\n}\n\nexport async function listCommand(opts: ListOptions): Promise<void> {\n const configs = listManifests();\n\n if (configs.length === 0) {\n console.log(\"No configs found. Run 'clawup init' to create one.\");\n return;\n }\n\n const data = configs.map((name) => {\n const manifest = loadManifest(name);\n return {\n name,\n agents: manifest?.agents.length ?? 0,\n region: manifest?.region ?? \"-\",\n stack: manifest?.stackName ?? \"-\",\n path: configPath(name),\n };\n });\n\n if (opts.json) {\n console.log(JSON.stringify(data, null, 2));\n return;\n }\n\n // Calculate column widths\n const nameWidth = Math.max(6, ...data.map((d) => d.name.length));\n const agentsWidth = 6;\n const regionWidth = Math.max(6, ...data.map((d) => d.region.length));\n const stackWidth = Math.max(5, ...data.map((d) => d.stack.length));\n\n // Print header\n console.log(\n `${\"NAME\".padEnd(nameWidth)} ${\"AGENTS\".padEnd(agentsWidth)} ${\"REGION\".padEnd(regionWidth)} ${\"STACK\".padEnd(stackWidth)}`\n );\n console.log(\n `${\"-\".repeat(nameWidth)} ${\"-\".repeat(agentsWidth)} ${\"-\".repeat(regionWidth)} ${\"-\".repeat(stackWidth)}`\n );\n\n // Print rows\n for (const row of data) {\n console.log(\n `${row.name.padEnd(nameWidth)} ${String(row.agents).padEnd(agentsWidth)} ${row.region.padEnd(regionWidth)} ${row.stack.padEnd(stackWidth)}`\n );\n }\n\n console.log(`\\n${data.length} config(s) found`);\n}\n", "/**\n * Update the clawup CLI to the latest version\n */\n\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { stream } from \"../lib/exec\";\n\ninterface UpdateOptions {\n // reserved for future flags\n}\n\nexport async function updateCommand(_opts: UpdateOptions): Promise<void> {\n p.intro(pc.bgCyan(pc.black(\" Agent Army \u2014 Update \")));\n\n const s = p.spinner();\n s.start(\"Checking npm for latest version\u2026\");\n\n // Fetch latest version info\n const { default: https } = await import(\"https\");\n const latest = await new Promise<string | null>((resolve) => {\n const req = https.get(\n \"https://registry.npmjs.org/clawup/latest\",\n { timeout: 5000 },\n (res) => {\n let data = \"\";\n res.on(\"data\", (chunk: Buffer) => (data += chunk));\n res.on(\"end\", () => {\n try {\n resolve(JSON.parse(data).version ?? null);\n } catch {\n resolve(null);\n }\n });\n }\n );\n req.on(\"timeout\", () => { req.destroy(); resolve(null); });\n req.on(\"error\", () => resolve(null));\n });\n\n if (!latest) {\n s.stop(\"Failed to reach npm registry\");\n p.log.error(\"Could not check for updates. Check your internet connection.\");\n process.exit(1);\n }\n\n // Read current version (go up two levels: dist/commands/ \u2192 dist/ \u2192 cli/)\n const fs = await import(\"fs\");\n const path = await import(\"path\");\n const pkgJson = JSON.parse(\n fs.readFileSync(path.join(__dirname, \"..\", \"..\", \"package.json\"), \"utf-8\")\n );\n const current: string = pkgJson.version;\n\n s.stop(`Current: ${pc.dim(current)} Latest: ${pc.green(latest)}`);\n\n // Compare versions\n const cParts = current.split(\".\").map(Number);\n const lParts = latest.split(\".\").map(Number);\n let isOutdated = false;\n for (let i = 0; i < 3; i++) {\n if ((lParts[i] ?? 0) > (cParts[i] ?? 0)) { isOutdated = true; break; }\n if ((lParts[i] ?? 0) < (cParts[i] ?? 0)) break;\n }\n\n if (!isOutdated) {\n p.log.success(\"You're already on the latest version!\");\n p.outro(\"Done\");\n return;\n }\n\n p.log.step(`Updating ${pc.dim(current)} \u2192 ${pc.green(latest)}`);\n console.log();\n\n // Retry logic: npm registry metadata can propagate before the tarball is\n // available on the CDN, causing ETARGET errors on freshly-published versions.\n const MAX_RETRIES = 3;\n const RETRY_DELAY_MS = 10_000;\n let exitCode = 1;\n\n for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\n exitCode = await stream(\"npm\", [\"install\", \"-g\", `clawup@${latest}`]);\n if (exitCode === 0) break;\n\n if (attempt < MAX_RETRIES) {\n console.log();\n p.log.warn(\n `Install failed (attempt ${attempt}/${MAX_RETRIES}). ` +\n `Retrying in ${RETRY_DELAY_MS / 1000}s \u2014 the new version may still be propagating\u2026`\n );\n await new Promise((r) => setTimeout(r, RETRY_DELAY_MS));\n console.log();\n }\n }\n\n console.log();\n if (exitCode === 0) {\n p.log.success(`Updated to ${pc.green(latest)}`);\n } else {\n p.log.error(\"Update failed. You may need to run with sudo:\");\n p.log.message(` sudo npm install -g clawup@${latest}`);\n process.exit(1);\n }\n\n p.outro(\"Done\");\n}\n", "/**\n * clawup config \u2014 View and modify config without re-running init\n *\n * Subcommands:\n * show \u2014 Display current config\n * set \u2014 Update a config value\n */\n\nimport * as process from \"process\";\nimport YAML from \"yaml\";\nimport * as fs from \"fs\";\nimport {\n loadManifest,\n saveManifest,\n resolveConfigName,\n pluginsDir,\n loadPluginConfig,\n} from \"../lib/config\";\nimport {\n AWS_REGIONS,\n HETZNER_LOCATIONS,\n INSTANCE_TYPES,\n HETZNER_SERVER_TYPES_EU,\n HETZNER_SERVER_TYPES_US,\n hetznerServerTypes,\n} from \"@clawup/core\";\nimport type { ClawupManifest, AgentDefinition } from \"@clawup/core\";\nimport pc from \"picocolors\";\n\n// ---------------------------------------------------------------------------\n// Validation helpers\n// ---------------------------------------------------------------------------\n\n/** Top-level manifest keys that can be set */\nconst SETTABLE_TOP_KEYS = [\n \"region\",\n \"instanceType\",\n \"ownerName\",\n \"timezone\",\n \"workingHours\",\n \"userNotes\",\n] as const;\n\ntype SettableTopKey = (typeof SETTABLE_TOP_KEYS)[number];\n\n/** Per-agent keys that can be set */\nconst SETTABLE_AGENT_KEYS = [\n \"instanceType\",\n \"volumeSize\",\n \"displayName\",\n] as const;\n\ntype SettableAgentKey = (typeof SETTABLE_AGENT_KEYS)[number];\n\nfunction isSettableTopKey(key: string): key is SettableTopKey {\n return (SETTABLE_TOP_KEYS as readonly string[]).includes(key);\n}\n\nfunction isSettableAgentKey(key: string): key is SettableAgentKey {\n return (SETTABLE_AGENT_KEYS as readonly string[]).includes(key);\n}\n\nfunction allRegionValues(provider: string): string[] {\n if (provider === \"hetzner\") return HETZNER_LOCATIONS.map((r) => r.value);\n return AWS_REGIONS.map((r) => r.value);\n}\n\nfunction allInstanceTypeValues(provider: string, region?: string): string[] {\n if (provider === \"hetzner\") {\n const types = region ? hetznerServerTypes(region) : [...HETZNER_SERVER_TYPES_EU, ...HETZNER_SERVER_TYPES_US];\n return types.map((t) => t.value);\n }\n return INSTANCE_TYPES.map((t) => t.value);\n}\n\nfunction validateTopValue(\n manifest: ClawupManifest,\n key: SettableTopKey,\n value: string\n): string | null {\n const provider = manifest.provider ?? \"aws\";\n\n if (key === \"region\") {\n const valid = allRegionValues(provider);\n if (!valid.includes(value)) {\n return `Invalid region '${value}' for provider '${provider}'. Valid options:\\n ${valid.join(\"\\n \")}`;\n }\n // Cross-validate: check if current instanceType is valid for the new region\n if (provider === \"hetzner\" && manifest.instanceType) {\n const validTypes = allInstanceTypeValues(provider, value);\n if (!validTypes.includes(manifest.instanceType)) {\n return `Region '${value}' is not compatible with current instanceType '${manifest.instanceType}'.\\nUpdate instanceType first, or set both:\\n clawup config set instanceType <type>\\n clawup config set region ${value}`;\n }\n }\n }\n\n if (key === \"instanceType\") {\n const valid = allInstanceTypeValues(provider, manifest.region);\n if (!valid.includes(value)) {\n return `Invalid instanceType '${value}' for provider '${provider}'. Valid options:\\n ${valid.join(\"\\n \")}`;\n }\n }\n\n return null;\n}\n\nfunction validateAgentValue(\n manifest: ClawupManifest,\n key: SettableAgentKey,\n value: string\n): string | null {\n if (key === \"instanceType\") {\n const provider = manifest.provider ?? \"aws\";\n const valid = allInstanceTypeValues(provider, manifest.region);\n if (!valid.includes(value)) {\n return `Invalid instanceType '${value}' for provider '${provider}'. Valid options:\\n ${valid.join(\"\\n \")}`;\n }\n }\n\n if (key === \"volumeSize\") {\n const num = Number(value);\n if (isNaN(num) || num < 8 || num > 1000) {\n return `volumeSize must be a number between 8 and 1000 (GB). Got: '${value}'`;\n }\n }\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Show\n// ---------------------------------------------------------------------------\n\nexport interface ConfigShowOptions {\n json?: boolean;\n config?: string;\n}\n\nexport async function configShowCommand(opts: ConfigShowOptions): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n if (opts.json) {\n console.log(YAML.stringify(manifest).trimEnd());\n return;\n }\n\n // Human-readable output\n console.log();\n console.log(pc.bold(`Config: ${configName}`));\n console.log();\n console.log(` Stack: ${manifest.stackName}`);\n console.log(` Provider: ${manifest.provider ?? \"aws\"}`);\n console.log(` Region: ${manifest.region}`);\n console.log(` Instance Type: ${manifest.instanceType}`);\n console.log(` Owner: ${manifest.ownerName}`);\n if (manifest.timezone) console.log(` Timezone: ${manifest.timezone}`);\n if (manifest.workingHours) console.log(` Working Hours: ${manifest.workingHours}`);\n if (manifest.userNotes) console.log(` User Notes: ${manifest.userNotes}`);\n\n if (manifest.templateVars && Object.keys(manifest.templateVars).length > 0) {\n console.log();\n console.log(pc.bold(\"Template Variables:\"));\n for (const [key, value] of Object.entries(manifest.templateVars)) {\n console.log(` ${key}: ${value}`);\n }\n }\n\n console.log();\n console.log(pc.bold(`Agents (${manifest.agents.length}):`));\n for (const agent of manifest.agents) {\n const override = agent.instanceType ? ` [${agent.instanceType}]` : \"\";\n console.log(` ${pc.bold(agent.displayName)} (${agent.role}) vol:${agent.volumeSize}GB${override}`);\n console.log(` identity: ${agent.identity}`);\n }\n console.log();\n}\n\n// ---------------------------------------------------------------------------\n// Set\n// ---------------------------------------------------------------------------\n\nexport interface ConfigSetOptions {\n config?: string;\n agent?: string;\n}\n\nexport async function configSetCommand(\n key: string,\n value: string,\n opts: ConfigSetOptions\n): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n if (opts.agent) {\n // Per-agent set\n if (!isSettableAgentKey(key)) {\n console.error(pc.red(`Invalid per-agent key '${key}'. Valid keys:\\n ${SETTABLE_AGENT_KEYS.join(\"\\n \")}`));\n process.exit(1);\n }\n\n const agent = manifest.agents.find(\n (a) => a.name === opts.agent || a.displayName.toLowerCase() === opts.agent!.toLowerCase() || a.role === opts.agent\n );\n if (!agent) {\n const names = manifest.agents.map((a) => `${a.displayName} (${a.role})`).join(\", \");\n console.error(pc.red(`Agent '${opts.agent}' not found. Available: ${names}`));\n process.exit(1);\n }\n\n const err = validateAgentValue(manifest, key, value);\n if (err) {\n console.error(pc.red(err));\n process.exit(1);\n }\n\n const agentRec = agent as unknown as Record<string, unknown>;\n const oldValue = agentRec[key];\n if (key === \"volumeSize\") {\n agent.volumeSize = Number(value);\n } else {\n agentRec[key] = value;\n }\n\n saveManifest(configName, manifest);\n console.log(\n pc.green(`\u2713 ${agent.displayName}.${key}: ${String(oldValue ?? \"(unset)\")} \u2192 ${value}`)\n );\n } else if (key.startsWith(\"templateVars.\")) {\n // templateVars.KEY set\n const varName = key.slice(\"templateVars.\".length);\n if (!varName) {\n console.error(pc.red(\"Template variable name cannot be empty. Use: templateVars.KEY\"));\n process.exit(1);\n }\n\n if (!manifest.templateVars) manifest.templateVars = {};\n const oldValue = manifest.templateVars[varName];\n manifest.templateVars[varName] = value;\n\n saveManifest(configName, manifest);\n console.log(pc.green(`\u2713 templateVars.${varName}: ${String(oldValue ?? \"(unset)\")} \u2192 ${value}`));\n } else {\n // Top-level set\n if (!isSettableTopKey(key)) {\n console.error(pc.red(`Invalid key '${key}'. Valid keys:\\n ${SETTABLE_TOP_KEYS.join(\"\\n \")}\\n templateVars.<KEY>`));\n process.exit(1);\n }\n\n const err = validateTopValue(manifest, key, value);\n if (err) {\n console.error(pc.red(err));\n process.exit(1);\n }\n\n const manifestRec = manifest as unknown as Record<string, unknown>;\n const oldValue = manifestRec[key];\n manifestRec[key] = value;\n\n saveManifest(configName, manifest);\n console.log(pc.green(`\u2713 ${key}: ${String(oldValue ?? \"(unset)\")} \u2192 ${value}`));\n }\n\n console.log(pc.dim(\"\\nRun 'clawup redeploy' or 'clawup destroy && clawup deploy' to apply changes.\"));\n}\n\n// ---------------------------------------------------------------------------\n// Migrate \u2014 inline plugin config files into the manifest\n// ---------------------------------------------------------------------------\n\nexport interface ConfigMigrateOptions {\n config?: string;\n}\n\nexport async function configMigrateCommand(opts: ConfigMigrateOptions): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n const pDir = pluginsDir(configName);\n if (!fs.existsSync(pDir)) {\n console.log(pc.green(\"No plugin config files found \u2014 nothing to migrate.\"));\n return;\n }\n\n const pluginFiles = fs.readdirSync(pDir).filter((f) => f.endsWith(\".yaml\"));\n if (pluginFiles.length === 0) {\n console.log(pc.green(\"No plugin config files found \u2014 nothing to migrate.\"));\n return;\n }\n\n let migratedCount = 0;\n\n for (const file of pluginFiles) {\n const pluginName = file.replace(/\\.yaml$/, \"\");\n const pluginConfig = loadPluginConfig(configName, pluginName);\n if (!pluginConfig) continue;\n\n for (const agent of manifest.agents) {\n const roleConfig = pluginConfig.agents?.[agent.role];\n if (!roleConfig) continue;\n\n // Initialize inline plugins map if needed\n if (!agent.plugins) agent.plugins = {};\n\n // Merge: existing inline config takes precedence over file-based\n if (!agent.plugins[pluginName]) {\n agent.plugins[pluginName] = roleConfig;\n migratedCount++;\n }\n }\n\n // Delete the plugin config file\n const filePath = `${pDir}/${file}`;\n fs.unlinkSync(filePath);\n console.log(pc.dim(` Removed ${filePath}`));\n }\n\n // Clean up empty plugins directory\n try {\n const remaining = fs.readdirSync(pDir);\n if (remaining.length === 0) {\n fs.rmdirSync(pDir);\n // Also remove the stack directory if empty\n const stackDir = `${pDir}/..`;\n const stackRemaining = fs.readdirSync(stackDir);\n if (stackRemaining.length === 0) {\n fs.rmdirSync(stackDir);\n }\n }\n } catch {\n // Ignore cleanup errors\n }\n\n // Save updated manifest\n saveManifest(configName, manifest);\n\n console.log(pc.green(`\\n\u2713 Migrated ${migratedCount} plugin config(s) into ${configName}.yaml`));\n console.log(pc.dim(\"Plugin config is now inline in the manifest under each agent's 'plugins' field.\"));\n}\n", "/**\n * clawup secrets \u2014 View and update Pulumi secrets without re-running init\n *\n * Subcommands:\n * set \u2014 Set a secret value (e.g. braveApiKey, anthropicApiKey)\n * list \u2014 Show which secrets are configured (values redacted)\n */\n\nimport * as process from \"process\";\nimport { resolveConfigName, loadManifest } from \"../lib/config\";\nimport { selectOrCreateStack, setConfig, getConfig } from \"../lib/pulumi\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport pc from \"picocolors\";\n\n// ---------------------------------------------------------------------------\n// Known secrets and their metadata\n// ---------------------------------------------------------------------------\n\ninterface SecretMeta {\n /** Human-readable label */\n label: string;\n /** Whether this is a per-agent secret (prefixed with role) */\n perAgent: boolean;\n /** Whether the value is stored as a Pulumi secret (encrypted) */\n isSecret: boolean;\n}\n\nconst KNOWN_SECRETS: Record<string, SecretMeta> = {\n anthropicApiKey: { label: \"Anthropic API Key\", perAgent: false, isSecret: true },\n tailscaleAuthKey: { label: \"Tailscale Auth Key\", perAgent: false, isSecret: true },\n tailscaleApiKey: { label: \"Tailscale API Key\", perAgent: false, isSecret: true },\n tailnetDnsName: { label: \"Tailnet DNS Name\", perAgent: false, isSecret: false },\n braveApiKey: { label: \"Brave Search API Key\", perAgent: false, isSecret: true },\n slackBotToken: { label: \"Slack Bot Token\", perAgent: true, isSecret: true },\n slackAppToken: { label: \"Slack App Token\", perAgent: true, isSecret: true },\n linearApiKey: { label: \"Linear API Key\", perAgent: true, isSecret: true },\n linearWebhookSecret: { label: \"Linear Webhook Secret\", perAgent: true, isSecret: true },\n linearUserUuid: { label: \"Linear User UUID\", perAgent: true, isSecret: false },\n githubToken: { label: \"GitHub Token\", perAgent: true, isSecret: true },\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction resolveStackAndCwd(configName: string): { stackName: string; cwd: string | undefined } {\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n console.error(pc.red(wsResult.error ?? \"Failed to set up workspace.\"));\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n const stackResult = selectOrCreateStack(manifest.stackName, cwd);\n if (!stackResult.ok) {\n console.error(pc.red(`Could not select Pulumi stack \"${manifest.stackName}\": ${stackResult.error}`));\n process.exit(1);\n }\n\n return { stackName: manifest.stackName, cwd };\n}\n\n// ---------------------------------------------------------------------------\n// Set\n// ---------------------------------------------------------------------------\n\nexport interface SecretsSetOptions {\n config?: string;\n agent?: string;\n}\n\nexport async function secretsSetCommand(\n key: string,\n value: string,\n opts: SecretsSetOptions\n): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n // Resolve the actual Pulumi config key\n const meta = KNOWN_SECRETS[key];\n if (!meta) {\n const validKeys = Object.entries(KNOWN_SECRETS)\n .map(([k, m]) => ` ${k}${m.perAgent ? \" (per-agent: use --agent)\" : \"\"}`)\n .join(\"\\n\");\n console.error(pc.red(`Unknown secret '${key}'. Valid keys:\\n${validKeys}`));\n process.exit(1);\n }\n\n let pulumiKey = key;\n if (meta.perAgent) {\n if (!opts.agent) {\n console.error(pc.red(`'${key}' is a per-agent secret. Use --agent <role> to specify which agent.`));\n process.exit(1);\n }\n pulumiKey = `${opts.agent}${key.charAt(0).toUpperCase()}${key.slice(1)}`;\n }\n\n const { cwd } = resolveStackAndCwd(configName);\n\n const ok = setConfig(pulumiKey, value, meta.isSecret, cwd);\n if (!ok) {\n console.error(pc.red(`Failed to set '${pulumiKey}' in Pulumi config.`));\n process.exit(1);\n }\n\n const maskedValue = meta.isSecret\n ? value.slice(0, 4) + \"...\" + value.slice(-4)\n : value;\n\n console.log(pc.green(`\u2713 ${pulumiKey}: set to ${maskedValue}`));\n console.log(pc.dim(\"\\nRun 'clawup deploy' or 'clawup redeploy' to apply changes.\"));\n}\n\n// ---------------------------------------------------------------------------\n// List\n// ---------------------------------------------------------------------------\n\nexport interface SecretsListOptions {\n config?: string;\n}\n\nexport async function secretsListCommand(opts: SecretsListOptions): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n const { cwd } = resolveStackAndCwd(configName);\n const roles = manifest.agents.map((a) => a.role);\n\n console.log();\n console.log(pc.bold(`Secrets for ${configName}:`));\n console.log();\n\n // Global secrets\n for (const [key, meta] of Object.entries(KNOWN_SECRETS)) {\n if (meta.perAgent) continue;\n\n const val = getConfig(key, cwd);\n const status = val ? pc.green(\"\u2713 set\") : pc.dim(\"\u2717 not set\");\n console.log(` ${meta.label.padEnd(24)} ${status}`);\n }\n\n // Per-agent secrets\n const perAgentKeys = Object.entries(KNOWN_SECRETS).filter(([, m]) => m.perAgent);\n if (perAgentKeys.length > 0) {\n for (const role of roles) {\n console.log();\n console.log(pc.bold(` ${role}:`));\n for (const [key, meta] of perAgentKeys) {\n const pulumiKey = `${role}${key.charAt(0).toUpperCase()}${key.slice(1)}`;\n const val = getConfig(pulumiKey, cwd);\n const status = val ? pc.green(\"\u2713 set\") : pc.dim(\"\u2717 not set\");\n console.log(` ${meta.label.padEnd(24)} ${status}`);\n }\n }\n }\n\n console.log();\n}\n", "/**\n * clawup redeploy \u2014 Update agents in-place without destroying infrastructure\n *\n * This command wraps the platform-agnostic redeployTool with the CLI adapter.\n */\n\nimport { redeployTool, createCLIAdapter, type RedeployOptions } from \"../tools\";\n\nexport async function redeployCommand(opts: RedeployOptions): Promise<void> {\n await redeployTool(createCLIAdapter(), opts);\n}\n", "/**\n * clawup webhooks setup \u2014 Configure Linear webhooks for deployed agents\n *\n * This command wraps the platform-agnostic webhooksSetupTool with the CLI adapter.\n */\n\nimport { webhooksSetupTool, createCLIAdapter, type WebhooksSetupOptions } from \"../tools\";\n\nexport async function webhooksSetupCommand(opts: WebhooksSetupOptions): Promise<void> {\n await webhooksSetupTool(createCLIAdapter(), opts);\n}\n", "/**\n * Background update notifier \u2014 checks npm for newer versions\n */\n\nimport * as https from \"https\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport pc from \"picocolors\";\n\nconst PACKAGE_NAME = \"clawup\";\nconst CACHE_FILE = \".update-check.json\";\nconst CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours\nconst FETCH_TIMEOUT_MS = 3000;\n\ninterface UpdateCache {\n lastChecked: number;\n latestVersion: string;\n}\n\nfunction getCacheDir(): string {\n // Previously ~/.agent-army \u2014 users upgrading from the old name will start a fresh cache\n return path.join(os.homedir(), \".clawup\");\n}\n\nfunction getCachePath(): string {\n return path.join(getCacheDir(), CACHE_FILE);\n}\n\nfunction loadCache(): UpdateCache | null {\n try {\n const raw = fs.readFileSync(getCachePath(), \"utf-8\");\n return JSON.parse(raw) as UpdateCache;\n } catch {\n return null;\n }\n}\n\nfunction saveCache(cache: UpdateCache): void {\n const dir = getCacheDir();\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n fs.writeFileSync(getCachePath(), JSON.stringify(cache), \"utf-8\");\n}\n\n/**\n * Compare two semver strings. Returns:\n * 1 if a > b, -1 if a < b, 0 if equal\n */\nfunction compareSemver(a: string, b: string): number {\n const pa = a.split(\".\").map(Number);\n const pb = b.split(\".\").map(Number);\n for (let i = 0; i < 3; i++) {\n const na = pa[i] ?? 0;\n const nb = pb[i] ?? 0;\n if (na > nb) return 1;\n if (na < nb) return -1;\n }\n return 0;\n}\n\nfunction fetchLatestVersion(): Promise<string | null> {\n return new Promise((resolve) => {\n const req = https.get(\n `https://registry.npmjs.org/${PACKAGE_NAME}/latest`,\n { timeout: FETCH_TIMEOUT_MS },\n (res) => {\n let data = \"\";\n res.on(\"data\", (chunk: Buffer) => (data += chunk));\n res.on(\"end\", () => {\n try {\n const json = JSON.parse(data);\n resolve(json.version ?? null);\n } catch {\n resolve(null);\n }\n });\n }\n );\n req.on(\"timeout\", () => {\n req.destroy();\n resolve(null);\n });\n req.on(\"error\", () => resolve(null));\n });\n}\n\n/**\n * Check for updates and print a notice if a newer version is available.\n * Non-blocking \u2014 errors are silently ignored.\n */\nexport async function checkForUpdates(currentVersion: string): Promise<void> {\n try {\n const cache = loadCache();\n const now = Date.now();\n\n // Use cached version if fresh enough\n if (cache && now - cache.lastChecked < CHECK_INTERVAL_MS) {\n if (compareSemver(cache.latestVersion, currentVersion) > 0) {\n printUpdateNotice(currentVersion, cache.latestVersion);\n }\n return;\n }\n\n // Fetch in background \u2014 don't block CLI exit\n const latest = await fetchLatestVersion();\n if (!latest) {\n // Cache the current version so we don't retry on every CLI run\n saveCache({ lastChecked: now, latestVersion: currentVersion });\n return;\n }\n\n saveCache({ lastChecked: now, latestVersion: latest });\n\n if (compareSemver(latest, currentVersion) > 0) {\n printUpdateNotice(currentVersion, latest);\n }\n } catch {\n // Never fail the CLI over an update check\n }\n}\n\nfunction printUpdateNotice(current: string, latest: string): void {\n console.log();\n console.log(\n ` Update available: ${pc.dim(current)} ${pc.dim(\"\u2192\")} ${pc.green(latest)}`\n );\n console.log(` Run ${pc.cyan(\"clawup update\")} to install`);\n console.log();\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Graceful shutdown and child process tracking.\n *\n * Spawn helpers in exec.ts and cli-adapter.ts register child processes here.\n * bin.ts calls setupGracefulShutdown() at startup so that SIGINT / SIGTERM\n * are forwarded to any running children before the CLI exits.\n */\n\nimport type { ChildProcess } from \"child_process\";\n\nconst activeChildren = new Set<ChildProcess>();\n\n/**\n * Register a child process for cleanup on exit.\n * Automatically unregisters when the child closes or errors.\n */\nexport function trackChild(child: ChildProcess): void {\n activeChildren.add(child);\n const remove = () => activeChildren.delete(child);\n child.on(\"close\", remove);\n child.on(\"error\", remove);\n}\n\n/**\n * Install SIGINT and SIGTERM handlers that forward the signal\n * to tracked child processes before exiting.\n */\nexport function setupGracefulShutdown(): void {\n const cleanup = (signal: NodeJS.Signals, exitCode: number) => {\n for (const child of activeChildren) {\n child.kill(signal);\n }\n process.exit(exitCode);\n };\n\n process.on(\"SIGINT\", () => cleanup(\"SIGINT\", 130));\n process.on(\"SIGTERM\", () => cleanup(\"SIGTERM\", 143));\n}\n", "/**\n * Shared type definitions for Clawup.\n * Types are derived from Zod schemas \u2014 the schemas are the source of truth.\n */\n\nimport type { z } from \"zod\";\nimport type {\n AgentDefinitionSchema,\n ClawupManifestSchema,\n PluginConfigFileSchema,\n IdentityManifestSchema,\n} from \"./schemas\";\n\n/** Definition of a single agent in the manifest */\nexport type AgentDefinition = z.infer<typeof AgentDefinitionSchema>;\n\n/** Per-plugin configuration file stored at ~/.clawup/configs/<stack>/plugins/<plugin>.yaml */\nexport type PluginConfigFile = z.infer<typeof PluginConfigFileSchema>;\n\n/** The clawup.yaml manifest */\nexport type ClawupManifest = z.infer<typeof ClawupManifestSchema>;\n\n/** Manifest schema for an agent identity (identity.yaml) */\nexport type IdentityManifest = z.infer<typeof IdentityManifestSchema>;\n\n/**\n * Result returned by fetchIdentity().\n * Contains the parsed manifest and all workspace/skill files from the identity directory.\n */\nexport interface IdentityResult {\n /** Parsed identity manifest (identity.yaml) */\n manifest: IdentityManifest;\n /** Files keyed by relative path (e.g., \"SOUL.md\", \"skills/pm-queue-handler/SKILL.md\") */\n files: Record<string, string>;\n}\n\n/**\n * Validate an AgentDefinition for consistency.\n *\n * @throws Error with descriptive message if validation fails\n */\nexport function validateAgentDefinition(agent: AgentDefinition): void {\n if (!agent.name) {\n throw new Error(`Agent definition missing required field \"name\".`);\n }\n\n if (!agent.displayName) {\n throw new Error(`Agent \"${agent.name}\" missing required field \"displayName\".`);\n }\n\n if (!agent.role) {\n throw new Error(`Agent \"${agent.name}\" missing required field \"role\".`);\n }\n\n if (!agent.identity) {\n throw new Error(`Agent \"${agent.name}\" missing required field \"identity\".`);\n }\n\n if (typeof agent.volumeSize !== \"number\" || agent.volumeSize <= 0) {\n throw new Error(`Agent \"${agent.name}\": \"volumeSize\" must be a positive number.`);\n }\n}\n\n/** Result of a single prerequisite check */\nexport interface PrereqResult {\n name: string;\n ok: boolean;\n message: string;\n hint?: string;\n}\n\n/**\n * Discriminated union for fallible operations that don't return a value.\n * Use instead of `{ ok: boolean; error?: string }` for proper type narrowing.\n */\nexport type VoidResult = { ok: true } | { ok: false; error: string };\n\n/**\n * Discriminated union for fallible operations that return a value on success.\n * After narrowing with `if (result.ok)`, `result.value` is typed as `T`.\n */\nexport type Result<T> = { ok: true; value: T } | { ok: false; error: string };\n", "/**\n * Constants, preset definitions, aliases, and defaults\n */\n\n/**\n * Built-in agent identities.\n * Each entry points to a subfolder in the army-identities Git repo.\n * The identity.yaml inside provides displayName, role, volumeSize, plugins, etc.\n */\nexport const BUILT_IN_IDENTITIES: Record<string, { path: string; label: string; hint: string }> = {\n pm: {\n path: \"https://github.com/stepandel/army-identities#pm\",\n label: \"Juno (PM)\",\n hint: \"Break down tickets, research, plan and sequence work, track progress, unblock teams\",\n },\n eng: {\n path: \"https://github.com/stepandel/army-identities#eng\",\n label: \"Titus (Engineer)\",\n hint: \"Lead engineering, coding, shipping\",\n },\n tester: {\n path: \"https://github.com/stepandel/army-identities#tester\",\n label: \"Scout (QA)\",\n hint: \"Quality assurance, verification, bug hunting\",\n },\n};\n\n\n/** Map agent aliases to role keys */\nexport const AGENT_ALIASES: Record<string, string> = {\n juno: \"pm\",\n titus: \"eng\",\n scout: \"tester\",\n};\n\n/** Available cloud providers */\nexport const PROVIDERS = [\n { value: \"aws\", label: \"AWS\", hint: \"Amazon Web Services EC2 instances\" },\n { value: \"hetzner\", label: \"Hetzner\", hint: \"Hetzner Cloud servers (EU/US)\" },\n] as const;\n\n/** Common AWS regions for selection */\nexport const AWS_REGIONS = [\n { value: \"us-east-1\", label: \"US East (N. Virginia)\" },\n { value: \"us-east-2\", label: \"US East (Ohio)\" },\n { value: \"us-west-2\", label: \"US West (Oregon)\" },\n { value: \"eu-west-1\", label: \"EU (Ireland)\" },\n { value: \"eu-central-1\", label: \"EU (Frankfurt)\" },\n { value: \"ap-southeast-1\", label: \"Asia Pacific (Singapore)\" },\n { value: \"ap-northeast-1\", label: \"Asia Pacific (Tokyo)\" },\n];\n\n/** Hetzner Cloud locations */\nexport const HETZNER_LOCATIONS = [\n { value: \"fsn1\", label: \"Falkenstein, DE (fsn1)\" },\n { value: \"nbg1\", label: \"Nuremberg, DE (nbg1)\" },\n { value: \"hel1\", label: \"Helsinki, FI (hel1)\" },\n { value: \"ash\", label: \"Ashburn, US (ash)\" },\n];\n\n/** Instance type options (AWS) */\nexport const INSTANCE_TYPES = [\n { value: \"t3.small\", label: \"t3.small \u2014 2 vCPU, 2 GB (~$15/mo)\" },\n { value: \"t3.medium\", label: \"t3.medium \u2014 2 vCPU, 4 GB (~$30/mo)\" },\n { value: \"t3.large\", label: \"t3.large \u2014 2 vCPU, 8 GB (~$60/mo)\" },\n];\n\n/** Hetzner server types \u2014 EU locations (cx shared vCPU) */\nexport const HETZNER_SERVER_TYPES_EU = [\n { value: \"cx22\", label: \"cx22 \u2014 2 vCPU, 4 GB (~$4/mo)\" },\n { value: \"cx32\", label: \"cx32 \u2014 4 vCPU, 8 GB (~$7/mo)\" },\n { value: \"cx42\", label: \"cx42 \u2014 8 vCPU, 16 GB (~$14/mo)\" },\n];\n\n/** Hetzner server types \u2014 US locations (cpx shared vCPU, cx not available) */\nexport const HETZNER_SERVER_TYPES_US = [\n { value: \"cpx21\", label: \"cpx21 \u2014 3 vCPU, 4 GB (~$5/mo)\" },\n { value: \"cpx31\", label: \"cpx31 \u2014 4 vCPU, 8 GB (~$9/mo)\" },\n { value: \"cpx41\", label: \"cpx41 \u2014 8 vCPU, 16 GB (~$16/mo)\" },\n];\n\n/** US Hetzner locations (cx types not available) */\nexport const HETZNER_US_LOCATIONS = [\"ash\", \"hil\"];\n\n/** Get server type options for a Hetzner location */\nexport function hetznerServerTypes(location: string) {\n return HETZNER_US_LOCATIONS.includes(location)\n ? HETZNER_SERVER_TYPES_US\n : HETZNER_SERVER_TYPES_EU;\n}\n\n/** Default SSH user for agent instances (Ubuntu 24.04 AMI default) */\nexport const SSH_USER = \"ubuntu\";\n\n/** Estimated monthly cost per instance type (AWS) */\nexport const COST_ESTIMATES: Record<string, number> = {\n \"t3.small\": 15,\n \"t3.medium\": 30,\n \"t3.large\": 60,\n};\n\n/** Estimated monthly cost per server type (Hetzner) */\nexport const HETZNER_COST_ESTIMATES: Record<string, number> = {\n cx22: 4,\n cx32: 7,\n cx42: 14,\n cpx21: 5,\n cpx31: 9,\n cpx41: 16,\n};\n\n/** Manifest filename */\nexport const MANIFEST_FILE = \"clawup.yaml\";\n\n/** Config directory under home (~/.clawup/configs/) */\nexport const CONFIG_DIR = \".clawup/configs\";\n\n/** Plugins config subdirectory name */\nexport const PLUGINS_DIR = \"plugins\";\n\n/**\n * Supported model providers with their API key prefixes and available models\n */\nexport const MODEL_PROVIDERS = {\n anthropic: {\n name: \"Anthropic\",\n envVar: \"ANTHROPIC_API_KEY\",\n keyPrefix: \"sk-ant-\",\n models: [\n { value: \"anthropic/claude-opus-4-6\", label: \"Claude Opus 4.6 (Recommended)\" },\n { value: \"anthropic/claude-sonnet-4-5\", label: \"Claude Sonnet 4.5\" },\n { value: \"anthropic/claude-haiku-4-5\", label: \"Claude Haiku 4.5\" },\n ],\n },\n} as const;\n\n/**\n * Build the Tailscale hostname for an agent.\n * Includes the stack name to avoid conflicts across deployments.\n * Example: \"dev-agent-pm\", \"prod-agent-eng\"\n */\nexport function tailscaleHostname(stackName: string, agentName: string): string {\n return `${stackName}-${agentName}`;\n}\n\n/** Key instructions for onboarding prompts */\nexport const KEY_INSTRUCTIONS = {\n anthropicApiKey: {\n title: \"Anthropic API Key\",\n steps: [\n \"To get your Anthropic API key:\",\n \"1. Go to https://console.anthropic.com/account/keys\",\n \"2. Click \\\"Create Key\\\"\",\n \"3. Copy the key (starts with sk-ant-)\",\n ],\n },\n tailscaleAuthKey: {\n title: \"Tailscale Auth Key\",\n steps: [\n \"To get your Tailscale auth key:\",\n \"1. Go to https://login.tailscale.com/admin/settings/keys\",\n \"2. Click \\\"Generate auth key\\\"\",\n \"3. Enable \\\"Reusable\\\" AND \\\"Ephemeral\\\" \u2014 ephemeral nodes auto-remove when offline\",\n \"4. Copy the key (starts with tskey-auth-)\",\n ],\n },\n tailscaleApiKey: {\n title: \"Tailscale API Key (optional)\",\n steps: [\n \"For reliable cleanup of Tailscale devices during destroy:\",\n \"1. Go to https://login.tailscale.com/admin/settings/keys\",\n \"2. Under \\\"API access tokens\\\", click \\\"Generate access token\\\"\",\n \"3. Copy the key (starts with tskey-api-)\",\n \"4. This is optional but recommended for clean teardowns\",\n ],\n },\n tailnetDnsName: {\n title: \"Tailnet DNS Name\",\n steps: [\n \"To find your Tailnet DNS name:\",\n \"1. Go to https://login.tailscale.com/admin/dns\",\n \"2. Look for your tailnet name at the top\",\n \"3. It looks like \\\"tailXXXXX.ts.net\\\" or a custom domain\",\n ],\n },\n slackCredentials: {\n title: \"Slack App Setup\",\n steps: [\n \"Create a Slack app for each agent using the manifest shown below:\",\n \"1. Go to https://api.slack.com/apps \u2192 \\\"Create New App\\\" \u2192 \\\"From a manifest\\\"\",\n \"2. Select your workspace, paste the JSON manifest, and create the app\",\n \"3. Go to \\\"OAuth & Permissions\\\" \u2014 copy the Bot Token (xoxb-...)\",\n \"4. Under \\\"Basic Information\\\" \u2192 \\\"App-Level Tokens\\\", generate a token\",\n \" with the connections:write scope \u2014 copy it (xapp-...)\",\n ],\n },\n linearApiKey: {\n title: \"Linear API Key\",\n steps: [\n \"Create a separate Linear account for each agent (used by openclaw-linear plugin):\",\n \"1. Invite you+agentname@domain.com to your Linear workspace\",\n \" (plus-addressing forwards to your inbox \u2014 no new email needed)\",\n \" Follow the link in the invite email to create the account and join the org\",\n \"2. Go to Settings \u2192 Security & Access \u2192 Personal API keys \u2192 \\\"New API key\\\"\",\n \"3. Copy the key (starts with lin_api_)\",\n ],\n },\n githubToken: {\n title: \"GitHub Token\",\n steps: [\n \"To get a GitHub personal access token for gh CLI:\",\n \"1. Go to https://github.com/settings/tokens?type=beta\",\n \"2. Click \\\"Generate new token\\\" \u2192 Fine-grained token\",\n \"3. Select repositories, set expiration, and permissions (e.g., repo, read:org)\",\n \"4. Copy the token (starts with github_pat_ or ghp_)\",\n ],\n },\n braveApiKey: {\n title: \"Brave Search API Key\",\n steps: [\n \"To get a Brave Search API key for web search:\",\n \"1. Go to https://brave.com/search/api/\",\n \"2. Sign up or log in to get an API key\",\n \"3. Copy the key (starts with BSA)\",\n ],\n },\n hcloudToken: {\n title: \"Hetzner Cloud API Token\",\n steps: [\n \"To get your Hetzner Cloud API token:\",\n \"1. Go to https://console.hetzner.cloud/\",\n \"2. Select your project (or create one)\",\n \"3. Go to Security \u2192 API Tokens\",\n \"4. Click \\\"Generate API Token\\\" with Read & Write permissions\",\n \"5. Copy the token\",\n ],\n },\n} as const;\n\n/** Generate a Slack app manifest JSON for a given agent */\nexport function slackAppManifest(agentName: string): string {\n return JSON.stringify({\n display_information: {\n name: agentName,\n description: \"Slack connector for OpenClaw\",\n },\n features: {\n bot_user: {\n display_name: agentName,\n always_online: false,\n },\n app_home: {\n messages_tab_enabled: true,\n messages_tab_read_only_enabled: false,\n },\n slash_commands: [\n {\n command: \"/openclaw\",\n description: \"Send a message to OpenClaw\",\n should_escape: false,\n },\n ],\n },\n oauth_config: {\n scopes: {\n bot: [\n \"chat:write\",\n \"chat:write.customize\",\n \"channels:history\",\n \"channels:read\",\n \"groups:history\",\n \"groups:read\",\n \"groups:write\",\n \"im:history\",\n \"im:read\",\n \"im:write\",\n \"mpim:history\",\n \"mpim:read\",\n \"mpim:write\",\n \"users:read\",\n \"app_mentions:read\",\n \"reactions:read\",\n \"reactions:write\",\n \"pins:read\",\n \"pins:write\",\n \"emoji:read\",\n \"commands\",\n \"files:read\",\n \"files:write\",\n ],\n user: [\n \"channels:history\",\n \"channels:read\",\n \"groups:history\",\n \"groups:read\",\n \"im:history\",\n \"im:read\",\n \"mpim:history\",\n \"mpim:read\",\n \"users:read\",\n \"reactions:read\",\n \"pins:read\",\n \"emoji:read\",\n \"search:read\",\n ],\n },\n },\n settings: {\n socket_mode_enabled: true,\n event_subscriptions: {\n bot_events: [\n \"app_mention\",\n \"message.channels\",\n \"message.groups\",\n \"message.im\",\n \"message.mpim\",\n \"reaction_added\",\n \"reaction_removed\",\n \"member_joined_channel\",\n \"member_left_channel\",\n \"channel_rename\",\n \"pin_added\",\n \"pin_removed\",\n ],\n },\n },\n }, null, 2);\n}\n", "/**\n * Shared plugin registry \u2014 metadata used by both index.ts (Pulumi) and the CLI.\n */\n\nexport interface PluginRegistryEntry {\n /** Secret env var mappings: { configKey: envVarName } */\n secretEnvVars: Record<string, string>;\n /** Whether to run `openclaw plugins install` during cloud-init */\n installable: boolean;\n /** Whether this plugin needs Tailscale Funnel (public HTTPS for webhooks) */\n needsFunnel?: boolean;\n}\n\nexport const PLUGIN_REGISTRY: Record<string, PluginRegistryEntry> = {\n \"openclaw-linear\": {\n secretEnvVars: {\n apiKey: \"LINEAR_API_KEY\",\n webhookSecret: \"LINEAR_WEBHOOK_SECRET\",\n },\n installable: true,\n needsFunnel: true,\n },\n slack: {\n secretEnvVars: {\n botToken: \"SLACK_BOT_TOKEN\",\n appToken: \"SLACK_APP_TOKEN\",\n },\n installable: false,\n },\n};\n", "/**\n * Coding agent registry \u2014 defines how each coding agent CLI is installed and configured.\n *\n * Similar to DEP_REGISTRY but for coding agent CLIs (Claude Code, Codex, Amp, etc.)\n * that OpenClaw uses as its backend for AI-assisted coding sessions.\n */\n\nexport interface CodingAgentEntry {\n /** Human-readable display name */\n displayName: string;\n /** Bash script to install the coding agent CLI (runs as ubuntu user via sudo) */\n installScript: string;\n /**\n * Bash script to configure the agent's default model.\n * Receives ${MODEL} variable with the stripped model name (e.g., \"claude-opus-4-6\").\n */\n configureModelScript: string;\n /** OpenClaw cliBackends entry for openclaw.json */\n cliBackend: {\n command: string;\n args: string[];\n output: string;\n modelArg: string;\n sessionArg: string;\n sessionMode: string;\n systemPromptArg: string;\n systemPromptWhen: string;\n imageArg?: string;\n imageMode?: string;\n };\n}\n\nexport const CODING_AGENT_REGISTRY: Record<string, CodingAgentEntry> = {\n \"claude-code\": {\n displayName: \"Claude Code\",\n installScript: `\n# Install Claude Code CLI for ubuntu user\necho \"Installing Claude Code...\"\nsudo -u ubuntu bash << 'CLAUDE_CODE_INSTALL_SCRIPT' || echo \"WARNING: Claude Code installation failed. Install manually with: curl -fsSL https://claude.ai/install.sh | bash\"\nset -e\ncd ~\n\n# Install Claude Code via official installer\ncurl -fsSL https://claude.ai/install.sh | bash\n\n# Add .local/bin to PATH in .bashrc if not already there\nif ! grep -q '.local/bin' ~/.bashrc; then\n echo 'export PATH=\"$HOME/.local/bin:$PATH\"' >> ~/.bashrc\nfi\n\n# Verify installation\nBINARY_PATH=\"$HOME/.local/bin/claude\"\nif [ -x \"$BINARY_PATH\" ] || command -v claude &>/dev/null; then\n echo \"Claude Code installed successfully\"\nelse\n echo \"WARNING: Claude Code installation may have failed\"\n exit 1\nfi\nCLAUDE_CODE_INSTALL_SCRIPT`.trim(),\n configureModelScript: `\n# Configure Claude Code default model\nsudo -u ubuntu bash -c '\nmkdir -p ~/.claude\necho '\"'\"'{\"model\":\"\\${MODEL}\",\"fastMode\":true}'\"'\"' > ~/.claude/settings.json\necho \"Claude Code default model set to \\${MODEL} (fast mode)\"\n'`.trim(),\n cliBackend: {\n command: \"claude\",\n args: [\"-p\", \"--output-format\", \"stream-json\", \"--verbose\"],\n output: \"stream-json\",\n modelArg: \"--model\",\n sessionArg: \"--resume\",\n sessionMode: \"id\",\n systemPromptArg: \"--append-system-prompt\",\n systemPromptWhen: \"always\",\n },\n },\n};\n", "/**\n * Dep registry \u2014 defines how each agent dependency is installed and what secrets it needs.\n *\n * Similar to PLUGIN_REGISTRY but for system-level tools (gh, brave-search, etc.)\n * that agents need but that aren't OpenClaw plugins.\n */\n\nexport interface DepSecret {\n /** Environment variable name (e.g., \"GITHUB_TOKEN\") */\n envVar: string;\n /** Whether the secret is per-agent or shared globally */\n scope: \"agent\" | \"global\";\n}\n\nexport interface DepRegistryEntry {\n /** Human-readable name for display */\n displayName: string;\n /** Bash script to install the dep (runs as root in cloud-init). Empty string = no install needed. */\n installScript: string;\n /** Bash script to run after install for auth/config (runs as ubuntu user).\n * Can reference ${ENV_VAR} placeholders. Empty string = no post-install. */\n postInstallScript: string;\n /** Secret env vars this dep needs. Key = config key suffix, value = env var details. */\n secrets: Record<string, DepSecret>;\n}\n\nexport const DEP_REGISTRY: Record<string, DepRegistryEntry> = {\n gh: {\n displayName: \"GitHub CLI\",\n installScript: `\n# Install GitHub CLI\necho \"Installing GitHub CLI...\"\ntype -p curl >/dev/null || apt-get install -y curl\ncurl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg\nchmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg\necho \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null\napt-get update\napt-get install -y gh\necho \"GitHub CLI installed: $(gh --version | head -n1)\"\n`,\n postInstallScript: `\nif echo \"\\${GITHUB_TOKEN}\" | gh auth login --with-token 2>&1; then\n gh auth setup-git\n echo \"GitHub CLI authenticated successfully\"\nelse\n echo \"WARNING: GitHub CLI authentication failed\"\n echo \" You can authenticate manually later with: gh auth login\"\nfi\n`,\n secrets: {\n GithubToken: { envVar: \"GITHUB_TOKEN\", scope: \"agent\" },\n },\n },\n \"brave-search\": {\n displayName: \"Brave Search\",\n installScript: \"\", // config-only, no binary to install\n postInstallScript: \"\", // config patching stays in config-generator.ts\n secrets: {\n BraveApiKey: { envVar: \"BRAVE_API_KEY\", scope: \"global\" },\n },\n },\n};\n", "/**\n * Dep resolution utilities \u2014 resolves dep names to registry entries\n * and collects the secret env vars they need.\n */\n\nimport { DEP_REGISTRY, DepRegistryEntry } from \"./dep-registry\";\n\nexport interface ResolvedDep {\n name: string;\n entry: DepRegistryEntry;\n}\n\n/** Resolve dep names to registry entries. Throws on unknown deps. */\nexport function resolveDeps(depNames: string[]): ResolvedDep[] {\n return depNames.map((name) => {\n const entry = DEP_REGISTRY[name];\n if (!entry) {\n const known = Object.keys(DEP_REGISTRY).join(\", \");\n throw new Error(\n `Unknown dep \"${name}\". Known deps: ${known}`\n );\n }\n return { name, entry };\n });\n}\n\n/** Collect all secret env vars needed by a set of deps. */\nexport function collectDepSecrets(\n deps: ResolvedDep[]\n): { envVar: string; scope: \"agent\" | \"global\"; configKeySuffix: string }[] {\n const secrets: { envVar: string; scope: \"agent\" | \"global\"; configKeySuffix: string }[] = [];\n const seen = new Set<string>();\n\n for (const dep of deps) {\n for (const [suffix, secret] of Object.entries(dep.entry.secrets)) {\n if (!seen.has(secret.envVar)) {\n seen.add(secret.envVar);\n secrets.push({\n envVar: secret.envVar,\n scope: secret.scope,\n configKeySuffix: suffix,\n });\n }\n }\n }\n\n return secrets;\n}\n", "/**\n * Skill parsing and classification utilities.\n *\n * Skills come in two types:\n * - Private: bundled as files in the identity repo under `skills/`\n * - Public: installed from clawhub via `clawhub install <slug>`\n *\n * Convention: public skills are prefixed with \"clawhub:\" in the skills array.\n */\n\nexport const CLAWHUB_PREFIX = \"clawhub:\";\n\nexport interface ParsedSkill {\n /** Original string from the skills array */\n raw: string;\n /** Slug used for installation or directory lookup */\n slug: string;\n /** Whether this skill is installed from clawhub (public) */\n isPublic: boolean;\n}\n\n/**\n * Parse a single skill string into its components.\n */\nexport function parseSkill(skill: string): ParsedSkill {\n if (skill.startsWith(CLAWHUB_PREFIX)) {\n return {\n raw: skill,\n slug: skill.slice(CLAWHUB_PREFIX.length),\n isPublic: true,\n };\n }\n return {\n raw: skill,\n slug: skill,\n isPublic: false,\n };\n}\n\n/**\n * Classify an array of skill strings into private and public buckets.\n */\nexport function classifySkills(skills: string[]): {\n private: ParsedSkill[];\n public: ParsedSkill[];\n} {\n const result: { private: ParsedSkill[]; public: ParsedSkill[] } = {\n private: [],\n public: [],\n };\n for (const skill of skills) {\n const parsed = parseSkill(skill);\n if (parsed.isPublic) {\n result.public.push(parsed);\n } else {\n result.private.push(parsed);\n }\n }\n return result;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getParsedType = exports.ZodParsedType = exports.objectUtil = exports.util = void 0;\nvar util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (exports.util = util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (exports.objectUtil = objectUtil = {}));\nexports.ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return exports.ZodParsedType.undefined;\n case \"string\":\n return exports.ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? exports.ZodParsedType.nan : exports.ZodParsedType.number;\n case \"boolean\":\n return exports.ZodParsedType.boolean;\n case \"function\":\n return exports.ZodParsedType.function;\n case \"bigint\":\n return exports.ZodParsedType.bigint;\n case \"symbol\":\n return exports.ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return exports.ZodParsedType.array;\n }\n if (data === null) {\n return exports.ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return exports.ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return exports.ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return exports.ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return exports.ZodParsedType.date;\n }\n return exports.ZodParsedType.object;\n default:\n return exports.ZodParsedType.unknown;\n }\n};\nexports.getParsedType = getParsedType;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ZodError = exports.quotelessJson = exports.ZodIssueCode = void 0;\nconst util_js_1 = require(\"./helpers/util.cjs\");\nexports.ZodIssueCode = util_js_1.util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexports.quotelessJson = quotelessJson;\nclass ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util_js_1.util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nexports.ZodError = ZodError;\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ZodError_js_1 = require(\"../ZodError.cjs\");\nconst util_js_1 = require(\"../helpers/util.cjs\");\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodError_js_1.ZodIssueCode.invalid_type:\n if (issue.received === util_js_1.ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodError_js_1.ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util_js_1.util.jsonStringifyReplacer)}`;\n break;\n case ZodError_js_1.ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util_js_1.util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util_js_1.util.joinValues(issue.options)}`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util_js_1.util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util_js_1.util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodError_js_1.ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodError_js_1.ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodError_js_1.ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodError_js_1.ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodError_js_1.ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodError_js_1.ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util_js_1.util.assertNever(issue);\n }\n return { message };\n};\nexports.default = errorMap;\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultErrorMap = void 0;\nexports.setErrorMap = setErrorMap;\nexports.getErrorMap = getErrorMap;\nconst en_js_1 = __importDefault(require(\"./locales/en.cjs\"));\nexports.defaultErrorMap = en_js_1.default;\nlet overrideErrorMap = en_js_1.default;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAsync = exports.isValid = exports.isDirty = exports.isAborted = exports.OK = exports.DIRTY = exports.INVALID = exports.ParseStatus = exports.EMPTY_PATH = exports.makeIssue = void 0;\nexports.addIssueToContext = addIssueToContext;\nconst errors_js_1 = require(\"../errors.cjs\");\nconst en_js_1 = __importDefault(require(\"../locales/en.cjs\"));\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexports.makeIssue = makeIssue;\nexports.EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = (0, errors_js_1.getErrorMap)();\n const issue = (0, exports.makeIssue)({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === en_js_1.default ? undefined : en_js_1.default, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return exports.INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return exports.INVALID;\n if (value.status === \"aborted\")\n return exports.INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexports.ParseStatus = ParseStatus;\nexports.INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nexports.DIRTY = DIRTY;\nconst OK = (value) => ({ status: \"valid\", value });\nexports.OK = OK;\nconst isAborted = (x) => x.status === \"aborted\";\nexports.isAborted = isAborted;\nconst isDirty = (x) => x.status === \"dirty\";\nexports.isDirty = isDirty;\nconst isValid = (x) => x.status === \"valid\";\nexports.isValid = isValid;\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\nexports.isAsync = isAsync;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.errorUtil = void 0;\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (exports.errorUtil = errorUtil = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.discriminatedUnion = exports.date = exports.boolean = exports.bigint = exports.array = exports.any = exports.coerce = exports.ZodFirstPartyTypeKind = exports.late = exports.ZodSchema = exports.Schema = exports.ZodReadonly = exports.ZodPipeline = exports.ZodBranded = exports.BRAND = exports.ZodNaN = exports.ZodCatch = exports.ZodDefault = exports.ZodNullable = exports.ZodOptional = exports.ZodTransformer = exports.ZodEffects = exports.ZodPromise = exports.ZodNativeEnum = exports.ZodEnum = exports.ZodLiteral = exports.ZodLazy = exports.ZodFunction = exports.ZodSet = exports.ZodMap = exports.ZodRecord = exports.ZodTuple = exports.ZodIntersection = exports.ZodDiscriminatedUnion = exports.ZodUnion = exports.ZodObject = exports.ZodArray = exports.ZodVoid = exports.ZodNever = exports.ZodUnknown = exports.ZodAny = exports.ZodNull = exports.ZodUndefined = exports.ZodSymbol = exports.ZodDate = exports.ZodBoolean = exports.ZodBigInt = exports.ZodNumber = exports.ZodString = exports.ZodType = void 0;\nexports.NEVER = exports.void = exports.unknown = exports.union = exports.undefined = exports.tuple = exports.transformer = exports.symbol = exports.string = exports.strictObject = exports.set = exports.record = exports.promise = exports.preprocess = exports.pipeline = exports.ostring = exports.optional = exports.onumber = exports.oboolean = exports.object = exports.number = exports.nullable = exports.null = exports.never = exports.nativeEnum = exports.nan = exports.map = exports.literal = exports.lazy = exports.intersection = exports.instanceof = exports.function = exports.enum = exports.effect = void 0;\nexports.datetimeRegex = datetimeRegex;\nexports.custom = custom;\nconst ZodError_js_1 = require(\"./ZodError.cjs\");\nconst errors_js_1 = require(\"./errors.cjs\");\nconst errorUtil_js_1 = require(\"./helpers/errorUtil.cjs\");\nconst parseUtil_js_1 = require(\"./helpers/parseUtil.cjs\");\nconst util_js_1 = require(\"./helpers/util.cjs\");\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if ((0, parseUtil_js_1.isValid)(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError_js_1.ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return (0, util_js_1.getParsedType)(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: (0, util_js_1.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new parseUtil_js_1.ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: (0, util_js_1.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if ((0, parseUtil_js_1.isAsync)(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0, util_js_1.getParsedType)(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0, util_js_1.getParsedType)(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return (0, parseUtil_js_1.isValid)(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => (0, parseUtil_js_1.isValid)(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0, util_js_1.getParsedType)(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await ((0, parseUtil_js_1.isAsync)(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodError_js_1.ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nexports.ZodType = ZodType;\nexports.Schema = ZodType;\nexports.ZodSchema = ZodType;\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.string,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const status = new parseUtil_js_1.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"email\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"emoji\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"uuid\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"nanoid\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"cuid\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"cuid2\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"ulid\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"url\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"regex\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"duration\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"ip\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"jwt\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"cidr\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"base64\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n validation: \"base64url\",\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util_js_1.util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodError_js_1.ZodIssueCode.invalid_string,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil_js_1.errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil_js_1.errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil_js_1.errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil_js_1.errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil_js_1.errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil_js_1.errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil_js_1.errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil_js_1.errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil_js_1.errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nexports.ZodString = ZodString;\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.number,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n let ctx = undefined;\n const status = new parseUtil_js_1.ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util_js_1.util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util_js_1.util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil_js_1.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil_js_1.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil_js_1.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil_js_1.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil_js_1.errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil_js_1.errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util_js_1.util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nexports.ZodNumber = ZodNumber;\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new parseUtil_js_1.ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util_js_1.util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil_js_1.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil_js_1.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil_js_1.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil_js_1.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil_js_1.errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nexports.ZodBigInt = ZodBigInt;\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodBoolean = ZodBoolean;\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.date,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_date,\n });\n return parseUtil_js_1.INVALID;\n }\n const status = new parseUtil_js_1.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util_js_1.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil_js_1.errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nexports.ZodDate = ZodDate;\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodSymbol = ZodSymbol;\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodUndefined = ZodUndefined;\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.null,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodNull = ZodNull;\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodAny = ZodAny;\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodUnknown = ZodUnknown;\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.never,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n}\nexports.ZodNever = ZodNever;\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.void,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n}\nexports.ZodVoid = ZodVoid;\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== util_js_1.ZodParsedType.array) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.array,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: tooBig ? ZodError_js_1.ZodIssueCode.too_big : ZodError_js_1.ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return parseUtil_js_1.ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return parseUtil_js_1.ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nexports.ZodArray = ZodArray;\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util_js_1.util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.object,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return parseUtil_js_1.ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return parseUtil_js_1.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil_js_1.errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil_js_1.errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util_js_1.util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util_js_1.util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util_js_1.util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util_js_1.util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util_js_1.util.objectKeys(this.shape));\n }\n}\nexports.ZodObject = ZodObject;\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError_js_1.ZodError(result.ctx.common.issues));\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_union,\n unionErrors,\n });\n return parseUtil_js_1.INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError_js_1.ZodError(issues));\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_union,\n unionErrors,\n });\n return parseUtil_js_1.INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nexports.ZodUnion = ZodUnion;\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util_js_1.util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.object) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.object,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return parseUtil_js_1.INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nexports.ZodDiscriminatedUnion = ZodDiscriminatedUnion;\nfunction mergeValues(a, b) {\n const aType = (0, util_js_1.getParsedType)(a);\n const bType = (0, util_js_1.getParsedType)(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === util_js_1.ZodParsedType.object && bType === util_js_1.ZodParsedType.object) {\n const bKeys = util_js_1.util.objectKeys(b);\n const sharedKeys = util_js_1.util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === util_js_1.ZodParsedType.array && bType === util_js_1.ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === util_js_1.ZodParsedType.date && bType === util_js_1.ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if ((0, parseUtil_js_1.isAborted)(parsedLeft) || (0, parseUtil_js_1.isAborted)(parsedRight)) {\n return parseUtil_js_1.INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_intersection_types,\n });\n return parseUtil_js_1.INVALID;\n }\n if ((0, parseUtil_js_1.isDirty)(parsedLeft) || (0, parseUtil_js_1.isDirty)(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nexports.ZodIntersection = ZodIntersection;\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.array) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.array,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return parseUtil_js_1.INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return parseUtil_js_1.ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return parseUtil_js_1.ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nexports.ZodTuple = ZodTuple;\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.object) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.object,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return parseUtil_js_1.ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return parseUtil_js_1.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexports.ZodRecord = ZodRecord;\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.map) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.map,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return parseUtil_js_1.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return parseUtil_js_1.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nexports.ZodMap = ZodMap;\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.set) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.set,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil_js_1.errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nexports.ZodSet = ZodSet;\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.function) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.function,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n function makeArgsIssue(args, error) {\n return (0, parseUtil_js_1.makeIssue)({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, (0, errors_js_1.getErrorMap)(), errors_js_1.defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodError_js_1.ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return (0, parseUtil_js_1.makeIssue)({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, (0, errors_js_1.getErrorMap)(), errors_js_1.defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodError_js_1.ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0, parseUtil_js_1.OK)(async function (...args) {\n const error = new ZodError_js_1.ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0, parseUtil_js_1.OK)(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError_js_1.ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError_js_1.ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexports.ZodFunction = ZodFunction;\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nexports.ZodLazy = ZodLazy;\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n received: ctx.data,\n code: ZodError_js_1.ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return parseUtil_js_1.INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nexports.ZodLiteral = ZodLiteral;\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n expected: util_js_1.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n });\n return parseUtil_js_1.INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n received: ctx.data,\n code: ZodError_js_1.ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nexports.ZodEnum = ZodEnum;\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util_js_1.util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.string && ctx.parsedType !== util_js_1.ZodParsedType.number) {\n const expectedValues = util_js_1.util.objectValues(nativeEnumValues);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n expected: util_js_1.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n });\n return parseUtil_js_1.INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util_js_1.util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util_js_1.util.objectValues(nativeEnumValues);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n received: ctx.data,\n code: ZodError_js_1.ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return parseUtil_js_1.INVALID;\n }\n return (0, parseUtil_js_1.OK)(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nexports.ZodNativeEnum = ZodNativeEnum;\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== util_js_1.ZodParsedType.promise && ctx.common.async === false) {\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n const promisified = ctx.parsedType === util_js_1.ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return (0, parseUtil_js_1.OK)(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nexports.ZodPromise = ZodPromise;\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n (0, parseUtil_js_1.addIssueToContext)(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return parseUtil_js_1.INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (result.status === \"dirty\")\n return (0, parseUtil_js_1.DIRTY)(result.value);\n if (status.value === \"dirty\")\n return (0, parseUtil_js_1.DIRTY)(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return parseUtil_js_1.INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (result.status === \"dirty\")\n return (0, parseUtil_js_1.DIRTY)(result.value);\n if (status.value === \"dirty\")\n return (0, parseUtil_js_1.DIRTY)(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!(0, parseUtil_js_1.isValid)(base))\n return parseUtil_js_1.INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!(0, parseUtil_js_1.isValid)(base))\n return parseUtil_js_1.INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util_js_1.util.assertNever(effect);\n }\n}\nexports.ZodEffects = ZodEffects;\nexports.ZodTransformer = ZodEffects;\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === util_js_1.ZodParsedType.undefined) {\n return (0, parseUtil_js_1.OK)(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nexports.ZodOptional = ZodOptional;\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === util_js_1.ZodParsedType.null) {\n return (0, parseUtil_js_1.OK)(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nexports.ZodNullable = ZodNullable;\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === util_js_1.ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nexports.ZodDefault = ZodDefault;\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if ((0, parseUtil_js_1.isAsync)(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError_js_1.ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError_js_1.ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nexports.ZodCatch = ZodCatch;\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== util_js_1.ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n (0, parseUtil_js_1.addIssueToContext)(ctx, {\n code: ZodError_js_1.ZodIssueCode.invalid_type,\n expected: util_js_1.ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return parseUtil_js_1.INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nexports.ZodNaN = ZodNaN;\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexports.BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexports.ZodBranded = ZodBranded;\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return (0, parseUtil_js_1.DIRTY)(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return parseUtil_js_1.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexports.ZodPipeline = ZodPipeline;\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if ((0, parseUtil_js_1.isValid)(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return (0, parseUtil_js_1.isAsync)(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nexports.ZodReadonly = ZodReadonly;\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nfunction custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexports.late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (exports.ZodFirstPartyTypeKind = ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nexports.instanceof = instanceOfType;\nconst stringType = ZodString.create;\nexports.string = stringType;\nconst numberType = ZodNumber.create;\nexports.number = numberType;\nconst nanType = ZodNaN.create;\nexports.nan = nanType;\nconst bigIntType = ZodBigInt.create;\nexports.bigint = bigIntType;\nconst booleanType = ZodBoolean.create;\nexports.boolean = booleanType;\nconst dateType = ZodDate.create;\nexports.date = dateType;\nconst symbolType = ZodSymbol.create;\nexports.symbol = symbolType;\nconst undefinedType = ZodUndefined.create;\nexports.undefined = undefinedType;\nconst nullType = ZodNull.create;\nexports.null = nullType;\nconst anyType = ZodAny.create;\nexports.any = anyType;\nconst unknownType = ZodUnknown.create;\nexports.unknown = unknownType;\nconst neverType = ZodNever.create;\nexports.never = neverType;\nconst voidType = ZodVoid.create;\nexports.void = voidType;\nconst arrayType = ZodArray.create;\nexports.array = arrayType;\nconst objectType = ZodObject.create;\nexports.object = objectType;\nconst strictObjectType = ZodObject.strictCreate;\nexports.strictObject = strictObjectType;\nconst unionType = ZodUnion.create;\nexports.union = unionType;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nexports.discriminatedUnion = discriminatedUnionType;\nconst intersectionType = ZodIntersection.create;\nexports.intersection = intersectionType;\nconst tupleType = ZodTuple.create;\nexports.tuple = tupleType;\nconst recordType = ZodRecord.create;\nexports.record = recordType;\nconst mapType = ZodMap.create;\nexports.map = mapType;\nconst setType = ZodSet.create;\nexports.set = setType;\nconst functionType = ZodFunction.create;\nexports.function = functionType;\nconst lazyType = ZodLazy.create;\nexports.lazy = lazyType;\nconst literalType = ZodLiteral.create;\nexports.literal = literalType;\nconst enumType = ZodEnum.create;\nexports.enum = enumType;\nconst nativeEnumType = ZodNativeEnum.create;\nexports.nativeEnum = nativeEnumType;\nconst promiseType = ZodPromise.create;\nexports.promise = promiseType;\nconst effectsType = ZodEffects.create;\nexports.effect = effectsType;\nexports.transformer = effectsType;\nconst optionalType = ZodOptional.create;\nexports.optional = optionalType;\nconst nullableType = ZodNullable.create;\nexports.nullable = nullableType;\nconst preprocessType = ZodEffects.createWithPreprocess;\nexports.preprocess = preprocessType;\nconst pipelineType = ZodPipeline.create;\nexports.pipeline = pipelineType;\nconst ostring = () => stringType().optional();\nexports.ostring = ostring;\nconst onumber = () => numberType().optional();\nexports.onumber = onumber;\nconst oboolean = () => booleanType().optional();\nexports.oboolean = oboolean;\nexports.coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexports.NEVER = parseUtil_js_1.INVALID;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./errors.cjs\"), exports);\n__exportStar(require(\"./helpers/parseUtil.cjs\"), exports);\n__exportStar(require(\"./helpers/typeAliases.cjs\"), exports);\n__exportStar(require(\"./helpers/util.cjs\"), exports);\n__exportStar(require(\"./types.cjs\"), exports);\n__exportStar(require(\"./ZodError.cjs\"), exports);\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.z = void 0;\nconst z = __importStar(require(\"./v3/external.cjs\"));\nexports.z = z;\n__exportStar(require(\"./v3/external.cjs\"), exports);\nexports.default = z;\n", "/**\n * Zod schemas for the clawup.yaml manifest and agent definitions.\n * These are the source of truth \u2014 TypeScript types are derived via z.infer<>.\n */\n\nimport { z } from \"zod\";\n\n/** Schema for a single agent in the manifest */\nexport const AgentDefinitionSchema = z.object({\n /** Resource name (e.g., \"agent-pm\") */\n name: z.string().min(1, \"Agent name is required\"),\n /** Display name (e.g., \"Juno\") */\n displayName: z.string().min(1, \"Agent displayName is required\"),\n /** Role identifier (e.g., \"pm\", \"eng\", \"tester\") */\n role: z.string().min(1, \"Agent role is required\"),\n /**\n * Git URL or local path to an identity repo/folder.\n * Supports `repo#subfolder` syntax for mono-repos.\n */\n identity: z.string().min(1, \"Agent identity is required\"),\n /** Pin the identity to a specific Git tag or commit hash */\n identityVersion: z.string().optional(),\n /** EBS volume size in GB */\n volumeSize: z.number().positive(\"volumeSize must be a positive number\"),\n /** Override instance type for this agent */\n instanceType: z.string().optional(),\n /** Additional environment variables */\n envVars: z.record(z.string(), z.string()).optional(),\n /** Inline plugin config (non-secret values only) */\n plugins: z.record(z.string(), z.record(z.string(), z.unknown())).optional(),\n});\n\n/** Schema for per-plugin configuration file */\nexport const PluginConfigFileSchema = z.object({\n agents: z.record(z.string(), z.record(z.string(), z.unknown())),\n});\n\n/** Schema for the clawup.yaml manifest */\nexport const ClawupManifestSchema = z.object({\n stackName: z.string().min(1, \"stackName is required\"),\n provider: z.enum([\"aws\", \"hetzner\"]),\n region: z.string().min(1, \"region is required\"),\n instanceType: z.string().min(1, \"instanceType is required\"),\n ownerName: z.string().min(1, \"ownerName is required\"),\n /** Owner timezone (e.g., \"America/New_York\") */\n timezone: z.string().optional(),\n /** Owner working hours (e.g., \"9am-6pm\") */\n workingHours: z.string().optional(),\n /** Additional notes about the owner for agents */\n userNotes: z.string().optional(),\n /** Generic template variables (e.g., LINEAR_TEAM, GITHUB_REPO) */\n templateVars: z.record(z.string(), z.string()).optional(),\n agents: z.array(AgentDefinitionSchema).min(1, \"At least one agent is required\"),\n});\n", "/**\n * Zod schema for identity.yaml manifests.\n * Source of truth \u2014 the IdentityManifest type is derived via z.infer<>.\n */\n\nimport { z } from \"zod\";\n\n/** Schema for an agent identity manifest (identity.yaml) */\nexport const IdentityManifestSchema = z.object({\n /** Machine-readable identity name (e.g., \"juno\", \"titus\") */\n name: z.string().min(1, '\"name\" must be a non-empty string'),\n /** Human-readable display name (e.g., \"Juno\", \"Titus\") */\n displayName: z.string().min(1, '\"displayName\" must be a non-empty string'),\n /** Role identifier (e.g., \"pm\", \"eng\", \"tester\") */\n role: z.string().min(1, '\"role\" must be a non-empty string'),\n /** Emoji for the agent (GitHub shortcode, e.g., \"clipboard\") */\n emoji: z.string().min(1, '\"emoji\" must be a non-empty string'),\n /** Short description of the agent's purpose */\n description: z.string().min(1, '\"description\" must be a non-empty string'),\n /** Default EBS volume size in GB */\n volumeSize: z.number({ invalid_type_error: '\"volumeSize\" must be a number' }).positive(),\n /** Optional default instance type override */\n instanceType: z.string().optional(),\n /**\n * List of skill identifiers for this identity.\n * Plain names are private skills; \"clawhub:\" prefixed are public.\n */\n skills: z.array(z.string(), { invalid_type_error: '\"skills\" must be an array' }),\n /** Recommended plugins for this identity (e.g., [\"openclaw-linear\"]) */\n plugins: z.array(\n z.string().min(1, \"each plugin must be a non-empty string\"),\n { invalid_type_error: '\"plugins\" must be an array of strings' },\n ).optional(),\n /** Recommended deps for this identity (e.g., [\"gh\", \"brave-search\"]) */\n deps: z.array(z.string()).optional(),\n /** Per-plugin default config (merged with user plugin config at deploy time) */\n pluginDefaults: z.record(\n z.string(),\n z.record(z.string(), z.unknown()),\n ).optional(),\n /** List of template variable names this identity uses */\n templateVars: z.array(z.string(), { invalid_type_error: '\"templateVars\" must be an array' }),\n /** Default AI model for this identity (e.g., \"anthropic/claude-opus-4-6\") */\n model: z.string().optional(),\n /** Backup/fallback model (e.g., \"anthropic/claude-sonnet-4-5\") */\n backupModel: z.string().optional(),\n /** Coding agent CLI to use (e.g., \"claude-code\", \"codex\", \"amp\"). Defaults to \"claude-code\". */\n codingAgent: z.string().optional(),\n});\n", "/**\n * Barrel export for all Zod schemas.\n */\n\nexport {\n AgentDefinitionSchema,\n ClawupManifestSchema,\n PluginConfigFileSchema,\n} from \"./manifest\";\n\nexport {\n IdentityManifestSchema,\n} from \"./identity\";\n", "/**\n * @clawup/core \u2014 shared types, constants, registries, and utilities\n */\n\n// Types\nexport type {\n AgentDefinition,\n ClawupManifest,\n IdentityManifest,\n IdentityResult,\n PluginConfigFile,\n PrereqResult,\n VoidResult,\n Result,\n} from \"./types\";\nexport { validateAgentDefinition } from \"./types\";\n\n// Constants\nexport {\n AGENT_ALIASES,\n AWS_REGIONS,\n BUILT_IN_IDENTITIES,\n CONFIG_DIR,\n COST_ESTIMATES,\n HETZNER_COST_ESTIMATES,\n HETZNER_LOCATIONS,\n HETZNER_SERVER_TYPES_EU,\n HETZNER_SERVER_TYPES_US,\n HETZNER_US_LOCATIONS,\n INSTANCE_TYPES,\n KEY_INSTRUCTIONS,\n MANIFEST_FILE,\n MODEL_PROVIDERS,\n PLUGINS_DIR,\n PROVIDERS,\n SSH_USER,\n hetznerServerTypes,\n slackAppManifest,\n tailscaleHostname,\n} from \"./constants\";\n\n// Plugin registry\nexport type { PluginRegistryEntry } from \"./plugin-registry\";\nexport { PLUGIN_REGISTRY } from \"./plugin-registry\";\n\n// Coding agent registry\nexport type { CodingAgentEntry } from \"./coding-agent-registry\";\nexport { CODING_AGENT_REGISTRY } from \"./coding-agent-registry\";\n\n// Dep registry\nexport type { DepSecret, DepRegistryEntry } from \"./dep-registry\";\nexport { DEP_REGISTRY } from \"./dep-registry\";\n\n// Deps\nexport type { ResolvedDep } from \"./deps\";\nexport { resolveDeps, collectDepSecrets } from \"./deps\";\n\n// Skills\nexport type { ParsedSkill } from \"./skills\";\nexport { CLAWHUB_PREFIX, parseSkill, classifySkills } from \"./skills\";\n\n// Identity \u2014 re-exported from \"@clawup/core/identity\" subpath to avoid\n// pulling Node.js-only modules (fs, child_process) into browser bundles.\n\n// Schemas\nexport {\n AgentDefinitionSchema,\n ClawupManifestSchema,\n PluginConfigFileSchema,\n IdentityManifestSchema,\n} from \"./schemas\";\n", "/**\n * Identity loader \u2014 fetches agent identities from Git repos or local paths.\n *\n * An identity is a directory containing an `identity.yaml` manifest and\n * workspace files (SOUL.md, IDENTITY.md, skills/, etc.) that define an agent's\n * persona and capabilities.\n */\n\nimport { execFileSync } from \"child_process\";\nimport { existsSync, mkdirSync, readFileSync, readdirSync, statSync } from \"fs\";\nimport { join, relative, resolve } from \"path\";\nimport { createHash } from \"crypto\";\nimport YAML from \"yaml\";\nimport type { IdentityManifest, IdentityResult } from \"./types\";\nimport { IdentityManifestSchema } from \"./schemas\";\n\n/** Result of a captured command execution */\ninterface ExecResult {\n stdout: string;\n stderr: string;\n exitCode: number;\n}\n\n/**\n * Simple command runner for git operations.\n * No vendored binary resolution needed \u2014 only used for git clone/pull/rm.\n */\nfunction capture(command: string, args: string[] = [], cwd?: string): ExecResult {\n try {\n const result = execFileSync(command, args, {\n cwd,\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n return { stdout: result.trim(), stderr: \"\", exitCode: 0 };\n } catch (err: unknown) {\n const e = err as { stdout?: string; stderr?: string; status?: number };\n return {\n stdout: (e.stdout ?? \"\").toString().trim(),\n stderr: (e.stderr ?? \"\").toString().trim(),\n exitCode: e.status ?? 1,\n };\n }\n}\n\n\n/**\n * Parse a source string into its components.\n * Supports:\n * - Local paths: `./my-identity`, `/abs/path/to/identity`\n * - Git HTTPS URLs: `https://github.com/org/repo#subfolder`\n * - Git SSH URLs: `git@github.com:org/repo#subfolder`\n */\nfunction parseSource(source: string): { type: \"local\"; path: string } | { type: \"git\"; url: string; subfolder?: string } {\n // Local path \u2014 starts with `.` or `/`\n if (source.startsWith(\".\") || source.startsWith(\"/\")) {\n return { type: \"local\", path: source };\n }\n\n // SSH-style Git URL (git@host:org/repo or user@host:path)\n if (source.startsWith(\"git@\") || /^[\\w.-]+@[\\w.-]+:/.test(source)) {\n return parseGitUrl(source);\n }\n\n // HTTPS Git URL \u2014 contains ://\n if (source.includes(\"://\")) {\n return parseGitUrl(source);\n }\n\n // Fallback: treat as local path\n return { type: \"local\", path: source };\n}\n\nfunction parseGitUrl(source: string): { type: \"git\"; url: string; subfolder?: string } {\n const hashIdx = source.indexOf(\"#\");\n if (hashIdx === -1) {\n return { type: \"git\", url: source };\n }\n return {\n type: \"git\",\n url: source.slice(0, hashIdx),\n subfolder: source.slice(hashIdx + 1),\n };\n}\n\n/**\n * Generate a stable cache key for a Git URL.\n */\nfunction cacheKey(url: string): string {\n return createHash(\"sha256\").update(url).digest(\"hex\").slice(0, 16);\n}\n\n/**\n * Clone or update a Git repo into the cache directory.\n * Returns the path to the cloned repo.\n */\nfunction ensureRepo(url: string, cacheDir: string): string {\n mkdirSync(cacheDir, { recursive: true });\n\n const repoDir = join(cacheDir, cacheKey(url));\n\n if (existsSync(join(repoDir, \".git\"))) {\n // Cache hit \u2014 pull latest\n const result = capture(\"git\", [\"pull\", \"--ff-only\"], repoDir);\n if (result.exitCode !== 0) {\n // Pull failed (e.g., diverged) \u2014 re-clone\n capture(\"rm\", [\"-rf\", repoDir]);\n const clone = capture(\"git\", [\"clone\", \"--depth\", \"1\", url, repoDir]);\n if (clone.exitCode !== 0) {\n throw new Error(`Failed to clone ${url}: ${clone.stderr}`);\n }\n }\n } else {\n // Cache miss \u2014 shallow clone\n const result = capture(\"git\", [\"clone\", \"--depth\", \"1\", url, repoDir]);\n if (result.exitCode !== 0) {\n throw new Error(`Failed to clone ${url}: ${result.stderr}`);\n }\n }\n\n return repoDir;\n}\n\n/**\n * Recursively read all files in a directory, returning a map of\n * relative paths to file contents (text files only).\n */\nfunction readFilesRecursive(dir: string, base?: string): Record<string, string> {\n const root = base ?? dir;\n const files: Record<string, string> = {};\n\n for (const entry of readdirSync(dir)) {\n // Skip hidden dirs (e.g., .git)\n if (entry.startsWith(\".\")) continue;\n\n const full = join(dir, entry);\n const stat = statSync(full);\n\n if (stat.isDirectory()) {\n Object.assign(files, readFilesRecursive(full, root));\n } else if (stat.isFile()) {\n const rel = relative(root, full);\n try {\n files[rel] = readFileSync(full, \"utf-8\");\n } catch {\n // Skip binary / unreadable files\n }\n }\n }\n\n return files;\n}\n\n/**\n * Validate and parse an identity manifest object using Zod schema.\n * Throws with descriptive errors if required fields are missing or malformed.\n */\nexport function parseManifest(raw: unknown, sourcePath: string): IdentityManifest {\n const result = IdentityManifestSchema.safeParse(raw);\n\n if (!result.success) {\n // Build a human-readable error message from Zod issues\n const issues = result.error.issues;\n\n // Check for missing required fields\n const missingFields = issues\n .filter((i) => i.code === \"invalid_type\" && i.received === \"undefined\")\n .map((i) => i.path.join(\".\"));\n\n if (missingFields.length > 0) {\n throw new Error(\n `identity manifest at ${sourcePath} is missing required fields: ${missingFields.join(\", \")}`\n );\n }\n\n // For other errors, use the first issue's message\n const firstIssue = issues[0];\n const fieldPath = firstIssue.path.length > 0 ? `\"${firstIssue.path.join(\".\")}\"` : \"root\";\n throw new Error(`identity manifest: ${fieldPath} \u2014 ${firstIssue.message}`);\n }\n\n return result.data;\n}\n\n/**\n * Synchronous version of fetchIdentity for use in contexts that don't support async\n * (e.g., Pulumi resource construction).\n */\nexport function fetchIdentitySync(source: string, cacheDir: string): IdentityResult {\n return _fetchIdentity(source, cacheDir);\n}\n\nexport async function fetchIdentity(source: string, cacheDir: string): Promise<IdentityResult> {\n return _fetchIdentity(source, cacheDir);\n}\n\nfunction _fetchIdentity(source: string, cacheDir: string): IdentityResult {\n const parsed = parseSource(source);\n let identityDir: string;\n\n if (parsed.type === \"local\") {\n identityDir = resolve(parsed.path);\n } else {\n const repoDir = ensureRepo(parsed.url, cacheDir);\n identityDir = parsed.subfolder ? join(repoDir, parsed.subfolder) : repoDir;\n }\n\n // Verify the directory exists\n if (!existsSync(identityDir) || !statSync(identityDir).isDirectory()) {\n throw new Error(`Identity directory not found: ${identityDir}`);\n }\n\n // Read and parse identity manifest (prefer .yaml, fall back to .json for third-party compat)\n const yamlPath = join(identityDir, \"identity.yaml\");\n const jsonPath = join(identityDir, \"identity.json\");\n let manifestPath: string;\n let manifestFilename: string;\n\n if (existsSync(yamlPath)) {\n manifestPath = yamlPath;\n manifestFilename = \"identity.yaml\";\n } else if (existsSync(jsonPath)) {\n manifestPath = jsonPath;\n manifestFilename = \"identity.json\";\n } else {\n throw new Error(`identity.yaml not found in ${identityDir}`);\n }\n\n let raw: unknown;\n try {\n const content = readFileSync(manifestPath, \"utf-8\");\n raw = manifestFilename.endsWith(\".yaml\") ? YAML.parse(content) : JSON.parse(content);\n } catch (err) {\n throw new Error(`Failed to parse ${manifestFilename} in ${identityDir}: ${(err as Error).message}`);\n }\n\n const manifest = parseManifest(raw, identityDir);\n\n // Read all files (excluding the manifest file itself and .git)\n const allFiles = readFilesRecursive(identityDir);\n delete allFiles[manifestFilename];\n\n return { manifest, files: allFiles };\n}\n", "/**\n * Vendor binary management\n *\n * Resolves vendored CLI binaries (Pulumi, AWS CLI) installed to cli/vendor/\n * by the postinstall script. Falls back to system PATH if not found.\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { spawnSync } from \"child_process\";\n\n/**\n * Get the vendor directory path.\n * At runtime this resolves from cli/dist/lib/vendor.js \u2192 ../../vendor/\n */\nexport function getVendorDir(): string {\n return path.join(__dirname, \"..\", \"..\", \"vendor\");\n}\n\n/**\n * Get the vendor bin directory for the current platform.\n * Structure: vendor/pulumi/, vendor/aws-cli/\n */\nfunction getVendorBinDir(tool: string): string {\n return path.join(getVendorDir(), tool);\n}\n\n/**\n * Map of commands to their vendor subdirectory and binary name.\n */\nconst VENDOR_COMMANDS: Record<string, { dir: string; bin: string }> = {\n pulumi: { dir: \"pulumi\", bin: process.platform === \"win32\" ? \"pulumi.exe\" : \"pulumi\" },\n aws: { dir: \"aws-cli\", bin: process.platform === \"win32\" ? \"aws.exe\" : \"aws\" },\n};\n\n/**\n * Resolve a command to its vendored binary path if available.\n * Returns the full path to the vendored binary, or null if not found.\n */\nexport function resolveVendoredBinary(command: string): string | null {\n const entry = VENDOR_COMMANDS[command];\n if (!entry) return null;\n\n const binPath = path.join(getVendorBinDir(entry.dir), entry.bin);\n if (fs.existsSync(binPath)) {\n return binPath;\n }\n\n return null;\n}\n\n/**\n * Resolve a command, checking vendor directory first, then system PATH.\n * Returns the resolved command string (full path for vendor, original for system).\n */\nexport function resolveCommand(command: string): string {\n const vendored = resolveVendoredBinary(command);\n if (vendored) return vendored;\n return command;\n}\n\n/**\n * Check if a vendored binary exists for the given command.\n */\nexport function isVendored(command: string): boolean {\n return resolveVendoredBinary(command) !== null;\n}\n\n/**\n * Check if a command exists, checking vendor directory first, then system PATH.\n */\nexport function commandExistsWithVendor(command: string): boolean {\n // Check vendor first\n if (isVendored(command)) return true;\n\n // Fall back to system PATH\n const bin = process.platform === \"win32\" ? \"where\" : \"which\";\n const result = spawnSync(bin, [command], { shell: false, stdio: \"ignore\" });\n return result.status === 0;\n}\n\n/**\n * Get the vendor PATH prefix for adding to child process environment.\n * This allows vendored binaries to be found by child processes.\n */\nexport function getVendorPATH(): string {\n const dirs: string[] = [];\n for (const entry of Object.values(VENDOR_COMMANDS)) {\n const dir = getVendorBinDir(entry.dir);\n if (fs.existsSync(dir)) {\n dirs.push(dir);\n }\n }\n return dirs.join(path.delimiter);\n}\n", "/**\n * Child process helpers for CLI commands\n */\n\nimport { execSync, spawn, type SpawnOptions } from \"child_process\";\nimport { trackChild } from \"./process\";\nimport { resolveCommand, commandExistsWithVendor } from \"./vendor\";\n\n/** Result of a captured command execution */\nexport interface ExecResult {\n stdout: string;\n stderr: string;\n exitCode: number;\n}\n\n/**\n * Execute a command and capture output.\n * Resolves vendored binaries before falling back to system PATH.\n */\nexport function capture(command: string, args: string[] = [], cwd?: string): ExecResult {\n const resolved = resolveCommand(command);\n try {\n const result = execSync([resolved, ...args].join(\" \"), {\n cwd,\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n return { stdout: result.trim(), stderr: \"\", exitCode: 0 };\n } catch (err: unknown) {\n const e = err as { stdout?: string; stderr?: string; status?: number };\n return {\n stdout: (e.stdout ?? \"\").toString().trim(),\n stderr: (e.stderr ?? \"\").toString().trim(),\n exitCode: e.status ?? 1,\n };\n }\n}\n\n/**\n * Execute a command with streaming output (stdout/stderr pass-through)\n * Returns the exit code.\n * Resolves vendored binaries before falling back to system PATH.\n */\nexport function stream(command: string, args: string[] = [], cwd?: string): Promise<number> {\n const resolved = resolveCommand(command);\n return new Promise((resolve) => {\n const opts: SpawnOptions = {\n cwd,\n stdio: \"inherit\",\n shell: true,\n };\n const child = spawn(resolved, args, opts);\n trackChild(child);\n child.on(\"close\", (code) => resolve(code ?? 1));\n child.on(\"error\", (err) => {\n console.warn(`[exec] Child process error: ${err.message}`);\n resolve(1);\n });\n });\n}\n\n/**\n * Check if a command exists, checking vendor directory first, then system PATH.\n */\nexport function commandExists(command: string): boolean {\n return commandExistsWithVendor(command);\n}\n", "/**\n * Workspace management for installed CLI mode.\n *\n * Dev mode: repo root has Pulumi.yaml + node_modules/@pulumi \u2192 use repo directly\n * Installed: bundle infra to ~/.clawup/workspace/, npm-install Pulumi SDK there\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport { execSync } from \"child_process\";\nimport type { VoidResult } from \"@clawup/core\";\n\nconst WORKSPACE_DIR = path.join(os.homedir(), \".clawup\", \"workspace\");\nconst VERSION_FILE = \".cli-version\";\n\n/**\n * Read the CLI package version from cli/package.json at build time.\n * At runtime this resolves to cli/dist/lib/workspace.js \u2192 ../../package.json.\n */\nfunction cliVersion(): string {\n const pkgPath = path.join(__dirname, \"..\", \"..\", \"package.json\");\n try {\n return JSON.parse(fs.readFileSync(pkgPath, \"utf-8\")).version as string;\n } catch {\n return \"unknown\";\n }\n}\n\n/**\n * Resolve the bundled infra directory shipped inside the npm package.\n * From cli/dist/lib/ \u2192 ../../infra/\n */\nfunction getBundledInfraDir(): string {\n return path.join(__dirname, \"..\", \"..\", \"infra\");\n}\n\n/**\n * Returns true when running from the development repo (not from an npm install).\n * Detected by the presence of Pulumi.yaml AND node_modules/@pulumi at the repo root.\n */\nexport function isDevMode(): boolean {\n // cli/dist/lib/ \u2192 3 levels up \u2192 repo root\n const repoRoot = path.resolve(__dirname, \"..\", \"..\", \"..\");\n return (\n fs.existsSync(path.join(repoRoot, \"Pulumi.yaml\")) &&\n fs.existsSync(path.join(repoRoot, \"node_modules\", \"@pulumi\"))\n );\n}\n\n/**\n * Returns the workspace directory for installed mode, or undefined in dev mode.\n */\nexport function getWorkspaceDir(): string | undefined {\n if (isDevMode()) return undefined;\n return WORKSPACE_DIR;\n}\n\n/**\n * Ensure the workspace is set up (copy bundled infra, install deps).\n * No-op in dev mode.\n */\nexport function ensureWorkspace(): VoidResult {\n if (isDevMode()) return { ok: true };\n\n const bundled = getBundledInfraDir();\n if (!fs.existsSync(bundled)) {\n return {\n ok: false,\n error: `Bundled infrastructure not found at ${bundled}. The CLI package may be corrupt \u2014 try reinstalling.`,\n };\n }\n\n const version = cliVersion();\n const versionFile = path.join(WORKSPACE_DIR, VERSION_FILE);\n const currentVersion = fs.existsSync(versionFile)\n ? fs.readFileSync(versionFile, \"utf-8\").trim()\n : null;\n\n if (currentVersion === version) {\n // Already up-to-date\n return { ok: true };\n }\n\n // Create workspace directory\n fs.mkdirSync(WORKSPACE_DIR, { recursive: true });\n\n // Preserve user state files across re-sync\n const preservePatterns = [\"Pulumi.*.yaml\", \"clawup.yaml\"];\n const preserved = new Map<string, Buffer>();\n for (const pattern of preservePatterns) {\n // Simple glob: Pulumi.*.yaml\n const files = fs.readdirSync(WORKSPACE_DIR).filter((f) => {\n if (pattern === \"clawup.yaml\") return f === \"clawup.yaml\";\n // Match Pulumi.<stack>.yaml but not Pulumi.yaml itself\n return f.startsWith(\"Pulumi.\") && f.endsWith(\".yaml\") && f !== \"Pulumi.yaml\";\n });\n for (const f of files) {\n preserved.set(f, fs.readFileSync(path.join(WORKSPACE_DIR, f)));\n }\n }\n\n // Sync bundled infra \u2192 workspace (overwrite everything except preserved files)\n copyDirSync(bundled, WORKSPACE_DIR);\n\n // Restore preserved files\n for (const [name, content] of preserved) {\n fs.writeFileSync(path.join(WORKSPACE_DIR, name), content);\n }\n\n // Install Pulumi SDK deps\n try {\n execSync(\"npm install --production\", {\n cwd: WORKSPACE_DIR,\n stdio: \"pipe\",\n timeout: 300_000, // 5 minutes\n });\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n return {\n ok: false,\n error: `Failed to install Pulumi SDK dependencies in workspace:\\n${msg}`,\n };\n }\n\n // Re-copy @clawup/core after npm install, which prunes it since it's\n // not in package.json (it's a private workspace package, not on npm).\n const bundledCore = path.join(bundled, \"node_modules\", \"@clawup\", \"core\");\n if (fs.existsSync(bundledCore)) {\n const destCore = path.join(WORKSPACE_DIR, \"node_modules\", \"@clawup\", \"core\");\n fs.mkdirSync(destCore, { recursive: true });\n copyDirSync(bundledCore, destCore);\n }\n\n // Write version marker only after successful install\n fs.writeFileSync(versionFile, version, \"utf-8\");\n\n return { ok: true };\n}\n\n/**\n * Recursively copy a directory, overwriting existing files.\n */\nfunction copyDirSync(src: string, dest: string): void {\n fs.mkdirSync(dest, { recursive: true });\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n const srcPath = path.join(src, entry.name);\n const destPath = path.join(dest, entry.name);\n if (entry.isDirectory()) {\n copyDirSync(srcPath, destPath);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n", "/**\n * Tailscale local daemon detection + API helpers for device management.\n *\n * Detection functions (isTailscaleInstalled, isTailscaleRunning, requireTailscale)\n * check the local Tailscale daemon status for CLI commands that need it.\n *\n * API helpers (listTailscaleDevices, deleteTailscaleDevice) call the Tailscale\n * control-plane API. All API calls retry up to 3 times with exponential backoff\n * and log warnings on failure instead of silently returning null.\n */\n\nimport { execSync } from \"child_process\";\nimport { spawnSync } from \"child_process\";\nimport pc from \"picocolors\";\n\n/**\n * Check if the Tailscale CLI is installed.\n * Checks system PATH first, then the macOS App Store location.\n */\nexport function isTailscaleInstalled(): boolean {\n const bin = process.platform === \"win32\" ? \"where\" : \"which\";\n const result = spawnSync(bin, [\"tailscale\"], { shell: false, stdio: \"ignore\" });\n if (result.status === 0) return true;\n\n // macOS App Store installs Tailscale here\n if (process.platform === \"darwin\") {\n try {\n const fs = require(\"fs\");\n return fs.existsSync(\"/Applications/Tailscale.app/Contents/MacOS/Tailscale\");\n } catch {\n return false;\n }\n }\n\n return false;\n}\n\n/**\n * Check if the Tailscale daemon is running and connected.\n * Returns true if BackendState is \"Running\".\n */\nexport function isTailscaleRunning(): boolean {\n try {\n const output = execSync(\"tailscale status --json\", {\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n timeout: 5000,\n });\n const status = JSON.parse(output);\n return status.BackendState === \"Running\";\n } catch {\n return false;\n }\n}\n\n/**\n * Require Tailscale to be installed and running.\n * Exits with a clear error message if not.\n */\nexport function requireTailscale(): void {\n if (!isTailscaleInstalled()) {\n const installHint =\n process.platform === \"darwin\"\n ? \"Install from the Mac App Store or https://tailscale.com/download\"\n : \"Install from https://tailscale.com/download\";\n\n console.error(\n `\\n${pc.red(pc.bold(\"Error:\"))} Tailscale is not installed.\\n\\n` +\n `This command connects to agents over Tailscale.\\n` +\n ` ${installHint}\\n`\n );\n process.exit(1);\n }\n\n if (!isTailscaleRunning()) {\n console.error(\n `\\n${pc.red(pc.bold(\"Error:\"))} Tailscale is not connected.\\n\\n` +\n `This command connects to agents over Tailscale.\\n` +\n ` Tailscale is not running. Open the Tailscale app or run: ${pc.cyan(\"tailscale up\")}\\n`\n );\n process.exit(1);\n }\n}\n\ninterface TailscaleDevice {\n id: string;\n name: string;\n hostname: string;\n}\n\nconst MAX_RETRIES = 3;\nconst BASE_DELAY_MS = 1000;\n\n/**\n * Synchronous sleep using Atomics.wait (safe for CLI context).\n */\nfunction sleepSync(ms: number): void {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);\n}\n\n/**\n * List all devices on a tailnet via the Tailscale API.\n * Retries up to 3 times with exponential backoff.\n * Returns null on failure.\n */\nexport function listTailscaleDevices(\n apiKey: string,\n tailnet: string\n): TailscaleDevice[] | null {\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n try {\n const result = execSync(\n `curl -sf -H \"Authorization: Bearer ${apiKey}\" \"https://api.tailscale.com/api/v2/tailnet/${tailnet}/devices?fields=default\"`,\n { encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"pipe\"], timeout: 15000 }\n );\n const data = JSON.parse(result);\n if (!data.devices || !Array.isArray(data.devices)) return null;\n return data.devices.map((d: Record<string, unknown>) => ({\n id: d.id as string,\n name: (d.name as string) ?? \"\",\n hostname: (d.hostname as string) ?? \"\",\n }));\n } catch (err) {\n lastError = err;\n if (attempt < MAX_RETRIES) {\n sleepSync(BASE_DELAY_MS * Math.pow(2, attempt));\n }\n }\n }\n\n console.warn(\n `[tailscale] Failed to list devices after ${MAX_RETRIES + 1} attempts: ${\n lastError instanceof Error ? lastError.message : String(lastError)\n }`\n );\n return null;\n}\n\n/**\n * Remove stale Tailscale devices for a set of agents.\n * Used before deploy/redeploy to prevent duplicate device entries\n * when Pulumi replaces servers (create-before-delete).\n *\n * Returns counts of cleaned, failed, and not-found devices.\n */\nexport function cleanupTailscaleDevices(\n apiKey: string,\n tailnet: string,\n stackName: string,\n agents: { name: string }[],\n): { cleaned: string[]; failed: string[] } {\n const cleaned: string[] = [];\n const failed: string[] = [];\n\n const devices = listTailscaleDevices(apiKey, tailnet);\n if (!devices) return { cleaned, failed };\n\n for (const agent of agents) {\n const tsHost = `${stackName}-${agent.name}`;\n const matching = devices.filter((d) =>\n d.hostname === tsHost || d.name.startsWith(`${tsHost}.`)\n );\n for (const device of matching) {\n const deleted = deleteTailscaleDevice(apiKey, device.id);\n if (deleted) {\n cleaned.push(`${agent.name} (${device.hostname})`);\n } else {\n failed.push(agent.name);\n }\n }\n }\n\n return { cleaned, failed };\n}\n\n/**\n * Delete a single Tailscale device by ID.\n * Retries up to 3 times with exponential backoff.\n * Returns true on success.\n */\nexport function deleteTailscaleDevice(\n apiKey: string,\n deviceId: string\n): boolean {\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n try {\n execSync(\n `curl -sf -X DELETE -H \"Authorization: Bearer ${apiKey}\" \"https://api.tailscale.com/api/v2/device/${deviceId}\"`,\n { encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"pipe\"], timeout: 15000 }\n );\n return true;\n } catch (err) {\n lastError = err;\n if (attempt < MAX_RETRIES) {\n sleepSync(BASE_DELAY_MS * Math.pow(2, attempt));\n }\n }\n }\n\n console.warn(\n `[tailscale] Failed to delete device ${deviceId} after ${MAX_RETRIES + 1} attempts: ${\n lastError instanceof Error ? lastError.message : String(lastError)\n }`\n );\n return false;\n}\n\n/**\n * Ensure MagicDNS is enabled on the tailnet.\n * MagicDNS requires at least one nameserver \u2014 adds Cloudflare + Google DNS if none set.\n * Returns true if MagicDNS was newly enabled.\n * Warns on failure instead of throwing.\n */\nexport function ensureMagicDns(apiKey: string): boolean {\n try {\n const dnsResp = tsApiGet(apiKey, \"/tailnet/-/dns/preferences\");\n const dns = JSON.parse(dnsResp);\n if (dns.magicDNS) return false; // already enabled\n\n // MagicDNS requires at least one nameserver\n const nsResp = tsApiGet(apiKey, \"/tailnet/-/dns/nameservers\");\n const ns = JSON.parse(nsResp);\n if (!ns.dns || ns.dns.length === 0) {\n tsApiPost(apiKey, \"/tailnet/-/dns/nameservers\", { dns: [\"1.1.1.1\", \"8.8.8.8\"] });\n }\n\n tsApiPost(apiKey, \"/tailnet/-/dns/preferences\", { magicDNS: true });\n return true;\n } catch (err) {\n console.warn(\n `[tailscale] Could not check/enable MagicDNS: ${err instanceof Error ? err.message : String(err)}`\n );\n return false;\n }\n}\n\n/**\n * Ensure Tailscale Funnel prerequisites are configured for the tailnet.\n * 1. Enables MagicDNS (required for HTTPS certs)\n * 2. Adds funnel capability to ACL nodeAttrs for all members\n *\n * Returns { magicDns: boolean; funnelAcl: boolean } indicating what was changed.\n * Warns on failure instead of throwing.\n */\nexport function ensureTailscaleFunnel(\n apiKey: string,\n): { magicDns: boolean; funnelAcl: boolean } {\n const result = { magicDns: false, funnelAcl: false };\n\n // 1. Ensure MagicDNS is enabled\n result.magicDns = ensureMagicDns(apiKey);\n\n // 2. Ensure Funnel is allowed in ACL\n try {\n const aclResp = tsApiGet(apiKey, \"/tailnet/-/acl\");\n const acl = JSON.parse(aclResp);\n\n const nodeAttrs: Array<{ target?: string[]; attr?: string[] }> = acl.nodeAttrs ?? [];\n const hasFunnel = nodeAttrs.some(\n (a) => Array.isArray(a.attr) && a.attr.includes(\"funnel\")\n );\n\n if (!hasFunnel) {\n nodeAttrs.push({ target: [\"autogroup:member\"], attr: [\"funnel\"] });\n acl.nodeAttrs = nodeAttrs;\n tsApiPost(apiKey, \"/tailnet/-/acl\", acl);\n result.funnelAcl = true;\n }\n } catch (err) {\n console.warn(\n `[tailscale] Could not check/enable Funnel ACL: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n\n return result;\n}\n\n/** GET a Tailscale API endpoint. Returns response body as string. */\nfunction tsApiGet(apiKey: string, path: string): string {\n return execSync(\n `curl -sf -H \"Authorization: Bearer ${apiKey}\" -H \"Accept: application/json\" \"https://api.tailscale.com/api/v2${path}\"`,\n { encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"pipe\"], timeout: 15000 }\n );\n}\n\n/** POST JSON to a Tailscale API endpoint. Uses a temp file for the payload. */\nfunction tsApiPost(apiKey: string, path: string, body: unknown): string {\n const fs = require(\"fs\");\n const os = require(\"os\");\n const nodePath = require(\"path\");\n const tmpFile = nodePath.join(os.tmpdir(), `ts-api-${Date.now()}.json`);\n try {\n fs.writeFileSync(tmpFile, JSON.stringify(body));\n return execSync(\n `curl -sf -X POST -H \"Authorization: Bearer ${apiKey}\" -H \"Content-Type: application/json\" -d @${tmpFile} \"https://api.tailscale.com/api/v2${path}\"`,\n { encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"pipe\"], timeout: 15000 }\n );\n } finally {\n try { fs.unlinkSync(tmpFile); } catch { /* ignore */ }\n }\n}\n", "/**\n * Pulumi CLI wrappers\n */\n\nimport { capture, stream } from \"./exec\";\nimport type { VoidResult } from \"@clawup/core\";\n\n/**\n * Get the current Pulumi stack name\n */\nexport function currentStack(cwd?: string): string | null {\n const result = capture(\"pulumi\", [\"stack\", \"--show-name\"], cwd);\n return result.exitCode === 0 ? result.stdout.trim() : null;\n}\n\n/**\n * Select a Pulumi stack (create if it doesn't exist).\n * Returns { ok, error } so callers can display the error message.\n */\nexport function selectOrCreateStack(stackName: string, cwd?: string): VoidResult {\n const select = capture(\"pulumi\", [\"stack\", \"select\", stackName], cwd);\n if (select.exitCode === 0) return { ok: true };\n\n const init = capture(\"pulumi\", [\"stack\", \"init\", stackName], cwd);\n if (init.exitCode === 0) return { ok: true };\n\n return { ok: false, error: init.stderr || select.stderr };\n}\n\n/**\n * Set a Pulumi config value\n */\nexport function setConfig(key: string, value: string, secret: boolean = false, cwd?: string): boolean {\n const args = [\"config\", \"set\", key, value];\n if (secret) args.push(\"--secret\");\n const result = capture(\"pulumi\", args, cwd);\n return result.exitCode === 0;\n}\n\n/**\n * Get a Pulumi config value\n */\nexport function getConfig(key: string, cwd?: string): string | null {\n const result = capture(\"pulumi\", [\"config\", \"get\", key], cwd);\n return result.exitCode === 0 ? result.stdout.trim() : null;\n}\n\n/**\n * Get stack outputs as JSON\n */\nexport function getStackOutputs(showSecrets: boolean = false, cwd?: string): Record<string, unknown> | null {\n const args = [\"stack\", \"output\", \"--json\"];\n if (showSecrets) args.push(\"--show-secrets\");\n const result = capture(\"pulumi\", args, cwd);\n if (result.exitCode !== 0) return null;\n try {\n return JSON.parse(result.stdout);\n } catch {\n return null;\n }\n}\n\n/**\n * Run pulumi up with streaming output\n */\nexport function pulumiUp(cwd?: string): Promise<number> {\n return stream(\"pulumi\", [\"up\", \"--yes\"], cwd);\n}\n\n/**\n * Run pulumi destroy with streaming output\n */\nexport function pulumiDestroy(cwd?: string): Promise<number> {\n return stream(\"pulumi\", [\"destroy\", \"--yes\"], cwd);\n}\n\n/**\n * Run pulumi preview with streaming output\n */\nexport function pulumiPreview(cwd?: string): Promise<number> {\n return stream(\"pulumi\", [\"preview\"], cwd);\n}\n", "/**\n * Load/save clawup manifests from ~/.clawup/configs/\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport YAML from \"yaml\";\nimport type { ClawupManifest, PluginConfigFile } from \"@clawup/core\";\nimport { CONFIG_DIR, MANIFEST_FILE, PLUGINS_DIR } from \"@clawup/core\";\n\n/**\n * Get the configs directory path (~/.clawup/configs/)\n */\nexport function configsDir(): string {\n return path.join(os.homedir(), CONFIG_DIR);\n}\n\n/**\n * Ensure the configs directory exists\n */\nexport function ensureConfigsDir(): void {\n const dir = configsDir();\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n}\n\n/**\n * Get the path to a config file by name\n */\nexport function configPath(name: string): string {\n return path.join(configsDir(), `${name}.yaml`);\n}\n\n/**\n * Copy a named config to clawup.yaml so the Pulumi program can read it.\n * When projectDir is provided, writes there instead of process.cwd().\n */\nexport function syncManifestToProject(name: string, projectDir?: string): void {\n const src = configPath(name);\n const dest = path.join(projectDir ?? process.cwd(), MANIFEST_FILE);\n fs.copyFileSync(src, dest);\n}\n\n/**\n * Check if a config exists by name\n */\nexport function manifestExists(name: string): boolean {\n return fs.existsSync(configPath(name));\n}\n\n/**\n * Load a manifest by name. Returns null if not found or invalid.\n */\nexport function loadManifest(name: string): ClawupManifest | null {\n const filePath = configPath(name);\n if (!fs.existsSync(filePath)) return null;\n\n try {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n return YAML.parse(raw) as ClawupManifest;\n } catch (err) {\n console.warn(`[config] Failed to load manifest '${name}' at ${filePath}: ${err instanceof Error ? err.message : String(err)}`);\n return null;\n }\n}\n\n/**\n * Save a manifest by name\n */\nexport function saveManifest(name: string, manifest: ClawupManifest): void {\n ensureConfigsDir();\n const filePath = configPath(name);\n fs.writeFileSync(filePath, YAML.stringify(manifest), \"utf-8\");\n}\n\n/**\n * List all saved config names\n */\nexport function listManifests(): string[] {\n const dir = configsDir();\n if (!fs.existsSync(dir)) return [];\n\n return fs\n .readdirSync(dir)\n .filter((f) => f.endsWith(\".yaml\"))\n .map((f) => f.replace(/\\.yaml$/, \"\"))\n .sort();\n}\n\n/**\n * Delete a config by name. Returns true if deleted, false if not found.\n */\nexport function deleteManifest(name: string): boolean {\n const filePath = configPath(name);\n if (!fs.existsSync(filePath)) return false;\n\n fs.unlinkSync(filePath);\n return true;\n}\n\n/**\n * Resolve a config name: auto-selects if only one config exists,\n * errors with list if ambiguous or none found.\n * @param name Optional explicit config name\n * @returns The resolved config name\n * @throws Error if no configs exist or multiple configs exist without explicit name\n */\nexport function resolveConfigName(name?: string): string {\n if (name) {\n if (!manifestExists(name)) {\n const available = listManifests();\n if (available.length === 0) {\n throw new Error(`Config '${name}' not found. No configs exist. Run 'clawup init' to create one.`);\n }\n throw new Error(\n `Config '${name}' not found. Available configs:\\n ${available.join(\"\\n \")}`\n );\n }\n return name;\n }\n\n const configs = listManifests();\n\n if (configs.length === 0) {\n throw new Error(\"No configs found. Run 'clawup init' to create one.\");\n }\n\n if (configs.length === 1) {\n return configs[0];\n }\n\n throw new Error(\n `Multiple configs found. Specify one with --config:\\n ${configs.join(\"\\n \")}`\n );\n}\n\n// ---------------------------------------------------------------------------\n// Plugin config helpers (deprecated \u2014 plugin config is now inline in manifest)\n// These remain for backward compat and the `config migrate` command.\n// ---------------------------------------------------------------------------\n\n/**\n * Get the plugins directory for a stack (~/.clawup/configs/<stackName>/plugins/)\n * @deprecated Plugin config is now inline in the manifest. Use `clawup config migrate` to upgrade.\n */\nexport function pluginsDir(stackName: string): string {\n return path.join(configsDir(), stackName, PLUGINS_DIR);\n}\n\n/**\n * Ensure the plugins directory exists for a stack\n * @deprecated Plugin config is now inline in the manifest.\n */\nexport function ensurePluginsDir(stackName: string): void {\n const dir = pluginsDir(stackName);\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n}\n\n/**\n * Load a plugin config file. Returns null if not found or invalid.\n * @deprecated Plugin config is now inline in the manifest. Use `clawup config migrate` to upgrade.\n */\nexport function loadPluginConfig(stackName: string, pluginName: string): PluginConfigFile | null {\n const filePath = path.join(pluginsDir(stackName), `${pluginName}.yaml`);\n if (!fs.existsSync(filePath)) return null;\n\n try {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n return YAML.parse(raw) as PluginConfigFile;\n } catch (err) {\n console.warn(`[config] Failed to load plugin config '${pluginName}' for stack '${stackName}': ${err instanceof Error ? err.message : String(err)}`);\n return null;\n }\n}\n\n/**\n * Save a plugin config file\n * @deprecated Plugin config is now inline in the manifest. Use `clawup config migrate` to upgrade.\n */\nexport function savePluginConfig(stackName: string, pluginName: string, data: PluginConfigFile): void {\n ensurePluginsDir(stackName);\n const filePath = path.join(pluginsDir(stackName), `${pluginName}.yaml`);\n fs.writeFileSync(filePath, YAML.stringify(data), \"utf-8\");\n}\n", "/**\n * Shared UI helpers using @clack/prompts\n */\n\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\n\n/**\n * Display the Agent Army banner\n */\nexport function showBanner(): void {\n console.log();\n p.intro(pc.bgCyan(pc.black(\" Agent Army \")));\n}\n\n/**\n * Handle user cancellation (Ctrl+C)\n */\nexport function handleCancel(value: unknown): void {\n if (p.isCancel(value)) {\n p.cancel(\"Operation cancelled.\");\n process.exit(0);\n }\n}\n\n/**\n * Show an error and exit\n */\nexport function exitWithError(message: string): never {\n p.log.error(message);\n process.exit(1);\n}\n\n/**\n * Format a cost estimate string\n */\nexport function formatCost(monthlyCost: number): string {\n return `~$${monthlyCost}/mo`;\n}\n\n/**\n * Format agent list for display\n */\nexport function formatAgentList(agents: { displayName: string; role: string }[]): string {\n return agents\n .map((a) => ` ${pc.bold(a.displayName)} (${a.role})`)\n .join(\"\\n\");\n}\n", "/**\n * Shared helpers for tool implementations (adapter-aware).\n *\n * These mirror the functions in pulumi.ts but accept an ExecAdapter\n * instead of using the global capture() directly.\n */\n\nimport type { ExecAdapter } from \"../adapters\";\n\n/**\n * Get a Pulumi config value via ExecAdapter.\n */\nexport function getConfig(exec: ExecAdapter, key: string, cwd?: string): string | null {\n const result = exec.capture(\"pulumi\", [\"config\", \"get\", key], cwd);\n return result.exitCode === 0 ? result.stdout.trim() : null;\n}\n\n/**\n * Get stack outputs as JSON via ExecAdapter.\n */\nexport function getStackOutputs(exec: ExecAdapter, showSecrets: boolean = false, cwd?: string): Record<string, unknown> | null {\n const args = [\"stack\", \"output\", \"--json\"];\n if (showSecrets) args.push(\"--show-secrets\");\n const result = exec.capture(\"pulumi\", args, cwd);\n if (result.exitCode !== 0) return null;\n try {\n return JSON.parse(result.stdout);\n } catch {\n return null;\n }\n}\n", "/**\n * Deploy Tool \u2014 Deploy agents with pulumi up\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation } from \"../adapters\";\nimport { loadManifest, resolveConfigName, syncManifestToProject } from \"../lib/config\";\nimport { COST_ESTIMATES, HETZNER_COST_ESTIMATES } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { isTailscaleInstalled, isTailscaleRunning, cleanupTailscaleDevices, ensureMagicDns, ensureTailscaleFunnel } from \"../lib/tailscale\";\nimport { getConfig } from \"../lib/tool-helpers\";\nimport { formatAgentList, formatCost } from \"../lib/ui\";\nimport pc from \"picocolors\";\n\nexport interface DeployOptions {\n /** Skip confirmation prompt */\n yes?: boolean;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/**\n * Deploy tool implementation\n */\nexport const deployTool: ToolImplementation<DeployOptions> = async (\n runtime: RuntimeAdapter,\n options: DeployOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army\");\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select/create stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n ui.log.error(initResult.stderr || selectResult.stderr);\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n process.exit(1);\n }\n }\n\n // Calculate estimated cost\n const totalCost = manifest.agents.reduce((sum, a) => {\n const costs = manifest.provider === \"hetzner\" ? HETZNER_COST_ESTIMATES : COST_ESTIMATES;\n return sum + (costs[a.instanceType ?? manifest.instanceType] ?? 30);\n }, 0);\n\n // Show deployment summary\n ui.note(\n [\n `Stack: ${manifest.stackName}`,\n `Region: ${manifest.region}`,\n ``,\n `Agents (${manifest.agents.length}):`,\n formatAgentList(manifest.agents),\n ``,\n `Estimated cost: ${formatCost(totalCost)}`,\n ].join(\"\\n\"),\n \"Deployment Summary\"\n );\n\n // Confirm deployment\n if (!options.yes) {\n const confirmed = await ui.confirm({\n message: \"Proceed with deployment?\",\n });\n if (!confirmed) {\n ui.cancel(\"Deployment cancelled.\");\n }\n }\n\n // Sync manifest to project root so the Pulumi program can read it\n syncManifestToProject(configName, cwd);\n\n // Sync instanceType from manifest to Pulumi config\n exec.capture(\"pulumi\", [\"config\", \"set\", \"instanceType\", manifest.instanceType], cwd);\n\n // Clean up stale Tailscale devices before deploying\n // This prevents duplicates when Pulumi replaces servers (create-before-delete)\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n const tailscaleApiKey = getConfig(exec, \"tailscaleApiKey\", cwd);\n\n if (tailnetDnsName && tailscaleApiKey) {\n const spinner = ui.spinner(\"Cleaning up stale Tailscale devices...\");\n const { cleaned, failed } = cleanupTailscaleDevices(\n tailscaleApiKey, tailnetDnsName, manifest.stackName, manifest.agents\n );\n if (cleaned.length > 0) {\n spinner.stop(`Removed ${cleaned.length} stale Tailscale device(s)`);\n } else {\n spinner.stop(\"No stale Tailscale devices found\");\n }\n if (failed.length > 0) {\n ui.log.warn(\n `Could not remove some devices: ${failed.join(\", \")}. Check https://login.tailscale.com/admin/machines`\n );\n }\n }\n\n // Ensure MagicDNS is enabled (required for Tailscale hostname resolution)\n if (tailscaleApiKey) {\n const spinner = ui.spinner(\"Ensuring Tailscale MagicDNS is enabled...\");\n const magicDnsChanged = ensureMagicDns(tailscaleApiKey);\n spinner.stop(magicDnsChanged ? \"MagicDNS enabled\" : \"MagicDNS OK\");\n }\n\n // Ensure Tailscale Funnel prerequisites (identity plugins may need webhooks)\n if (tailscaleApiKey) {\n const spinner = ui.spinner(\"Ensuring Tailscale Funnel prerequisites...\");\n const funnel = ensureTailscaleFunnel(tailscaleApiKey);\n const changes: string[] = [];\n if (funnel.funnelAcl) changes.push(\"Funnel ACL enabled\");\n spinner.stop(changes.length > 0 ? changes.join(\", \") : \"Funnel prerequisites OK\");\n }\n\n // Deploy\n ui.log.step(\"Running pulumi up...\");\n console.log();\n const exitCode = await exec.stream(\"pulumi\", [\"up\", \"--yes\"], { cwd });\n console.log();\n\n if (exitCode !== 0) {\n ui.log.error(\"Deployment failed. Check the output above for details.\");\n process.exit(1);\n }\n\n ui.log.success(\"Deployment complete!\");\n\n // Show outputs\n const outputsResult = exec.capture(\"pulumi\", [\n \"stack\",\n \"output\",\n \"--json\",\n \"--show-secrets\",\n ], cwd);\n if (outputsResult.exitCode === 0) {\n try {\n const outputs = JSON.parse(outputsResult.stdout) as Record<string, unknown>;\n const lines: string[] = [];\n\n for (const agent of manifest.agents) {\n const urlKey = `${agent.role}TailscaleUrl`;\n const ipKey = `${agent.role}PublicIp`;\n const idKey = `${agent.role}InstanceId`;\n lines.push(`${agent.displayName} (${agent.role}):`);\n if (outputs[urlKey]) lines.push(` Tailscale URL: ${outputs[urlKey]}`);\n if (outputs[ipKey]) lines.push(` Public IP: ${outputs[ipKey]}`);\n if (outputs[idKey]) lines.push(` Instance ID: ${outputs[idKey]}`);\n lines.push(\"\");\n }\n\n ui.note(lines.join(\"\\n\"), \"Agent Details\");\n\n // Show webhook URLs if available\n const webhookLines: string[] = [];\n for (const agent of manifest.agents) {\n const webhookUrl = outputs[`${agent.role}WebhookUrl`] as string | undefined;\n if (webhookUrl) {\n webhookLines.push(` ${agent.displayName} (${agent.role}): ${webhookUrl}`);\n }\n }\n if (webhookLines.length > 0) {\n ui.note(webhookLines.join(\"\\n\"), \"Webhook URLs\");\n }\n } catch (err) {\n ui.log.warn(`Could not parse stack outputs: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n // Remind user about Tailscale if not connected\n if (!isTailscaleInstalled()) {\n const hint =\n process.platform === \"darwin\"\n ? \"Install from the Mac App Store or https://tailscale.com/download\"\n : \"Install from https://tailscale.com/download\";\n ui.log.warn(\n `Tailscale is required to connect to agents.\\n ${hint}\\n Then run: ${pc.cyan(\"tailscale up\")}`\n );\n } else if (!isTailscaleRunning()) {\n ui.log.warn(\n `Tailscale is not running. Start it before validating agents.\\n Open the Tailscale app or run: ${pc.cyan(\"tailscale up\")}`\n );\n }\n\n ui.log.info(\n `Run ${pc.cyan(\"clawup webhooks setup\")} to configure Linear webhooks for your agents.`\n );\n\n ui.outro(\"Agents will be ready in 3-5 minutes. Run `clawup validate` to check.\");\n};\n", "/**\n * Status Tool \u2014 Show agent statuses from stack outputs\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation, ExecAdapter } from \"../adapters\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { isTailscaleRunning } from \"../lib/tailscale\";\nimport { getConfig, getStackOutputs } from \"../lib/tool-helpers\";\n\nexport interface StatusOptions {\n /** Output as JSON */\n json?: boolean;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/**\n * SSH options for non-interactive connections\n */\nconst SSH_OPTS = [\n \"-o\", \"StrictHostKeyChecking=no\",\n \"-o\", \"UserKnownHostsFile=/dev/null\",\n \"-o\", \"BatchMode=yes\",\n];\n\n/**\n * Fetch Claude Code version via SSH (best effort, returns \"\u2014\" on failure)\n */\nfunction getClaudeCodeVersion(exec: ExecAdapter, host: string, timeout: number = 5): string {\n const result = exec.capture(\"ssh\", [\n \"-o\", `ConnectTimeout=${timeout}`,\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"/home/${SSH_USER}/.local/bin/claude --version 2>/dev/null || echo ''\"`,\n ]);\n if (result.exitCode === 0 && result.stdout?.trim()) {\n return result.stdout.trim();\n }\n return \"\u2014\";\n}\n\n/**\n * Fetch GitHub CLI version via SSH (best effort, returns \"\u2014\" on failure)\n */\nfunction getGhVersion(exec: ExecAdapter, host: string, timeout: number = 5): string {\n const result = exec.capture(\"ssh\", [\n \"-o\", `ConnectTimeout=${timeout}`,\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"gh --version 2>/dev/null | head -n1 | awk '{print \\\\$3}' || echo ''\"`,\n ]);\n if (result.exitCode === 0 && result.stdout?.trim()) {\n return result.stdout.trim();\n }\n return \"\u2014\";\n}\n\n/**\n * Fetch GitHub CLI auth status via SSH (best effort, returns \"\u2713\" or \"\u2014\")\n */\nfunction getGhAuthStatus(exec: ExecAdapter, host: string, timeout: number = 5): string {\n const result = exec.capture(\"ssh\", [\n \"-o\", `ConnectTimeout=${timeout}`,\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"gh auth status 2>&1 >/dev/null && echo 'OK' || echo 'no'\"`,\n ]);\n if (result.exitCode === 0 && result.stdout?.trim() === \"OK\") {\n return \"\u2713\";\n }\n return \"\u2014\";\n}\n\n/**\n * Status tool implementation\n */\nexport const statusTool: ToolImplementation<StatusOptions> = async (\n runtime: RuntimeAdapter,\n options: StatusOptions\n) => {\n const { ui, exec } = runtime;\n\n if (!options.json) {\n ui.intro(\"Agent Army\");\n }\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select/create stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n if (!options.json) {\n ui.log.error(initResult.stderr || selectResult.stderr);\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n }\n process.exit(1);\n }\n }\n\n // Get outputs\n const outputs = getStackOutputs(exec, true, cwd);\n if (!outputs) {\n ui.log.error(\"Could not fetch stack outputs. Has the stack been deployed?\");\n process.exit(1);\n }\n\n // Get tailnet DNS name for SSH connections\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n\n // Warn if Tailscale is not running (SSH version columns will show \"\u2014\")\n const tailscaleUp = isTailscaleRunning();\n if (!tailscaleUp && !options.json) {\n ui.log.warn(\n \"Tailscale is not running \u2014 CLI version columns will show \\\"\u2014\\\".\\n\" +\n \" Open the Tailscale app or run: tailscale up\"\n );\n }\n\n // Build status data with Claude Code and GitHub CLI versions (fetched via SSH)\n const statusData = manifest.agents.map((agent) => {\n let claudeCodeVersion = \"\u2014\";\n let ghVersion = \"\u2014\";\n let ghAuth = \"\u2014\";\n if (tailnetDnsName) {\n const tsHost = tailscaleHostname(manifest.stackName, agent.name);\n const host = `${tsHost}.${tailnetDnsName}`;\n claudeCodeVersion = getClaudeCodeVersion(exec, host);\n ghVersion = getGhVersion(exec, host);\n if (ghVersion !== \"\u2014\") {\n ghAuth = getGhAuthStatus(exec, host);\n }\n }\n return {\n name: agent.displayName,\n role: agent.role,\n instanceId: (outputs[`${agent.role}InstanceId`] as string) ?? \"\u2014\",\n publicIp: (outputs[`${agent.role}PublicIp`] as string) ?? \"\u2014\",\n tailscaleUrl: (outputs[`${agent.role}TailscaleUrl`] as string) ?? \"\u2014\",\n claudeCodeVersion,\n ghVersion,\n ghAuth,\n };\n });\n\n // JSON output\n if (options.json) {\n console.log(JSON.stringify(statusData, null, 2));\n return;\n }\n\n // Table output\n ui.log.step(`Stack: ${manifest.stackName} | Region: ${manifest.region}`);\n console.log();\n\n // Header\n const nameW = 12;\n const roleW = 10;\n const idW = 22;\n const ipW = 16;\n const claudeW = 16;\n const ghW = 8;\n const authW = 6;\n\n const header = [\n \"Agent\".padEnd(nameW),\n \"Role\".padEnd(roleW),\n \"Instance ID\".padEnd(idW),\n \"Public IP\".padEnd(ipW),\n \"Claude Code\".padEnd(claudeW),\n \"gh\".padEnd(ghW),\n \"Auth\".padEnd(authW),\n ].join(\" \");\n\n const separator = [\n \"\u2500\".repeat(nameW),\n \"\u2500\".repeat(roleW),\n \"\u2500\".repeat(idW),\n \"\u2500\".repeat(ipW),\n \"\u2500\".repeat(claudeW),\n \"\u2500\".repeat(ghW),\n \"\u2500\".repeat(authW),\n ].join(\" \");\n\n console.log(` ${header}`);\n console.log(` ${separator}`);\n\n for (const s of statusData) {\n const row = [\n s.name.padEnd(nameW),\n s.role.padEnd(roleW),\n s.instanceId.padEnd(idW),\n s.publicIp.padEnd(ipW),\n s.claudeCodeVersion.padEnd(claudeW),\n s.ghVersion.padEnd(ghW),\n s.ghAuth.padEnd(authW),\n ].join(\" \");\n console.log(` ${row}`);\n }\n\n console.log();\n\n // Show Tailscale URLs\n const urlLines = statusData\n .filter((s) => s.tailscaleUrl !== \"\u2014\")\n .map((s) => ` ${s.name}: ${s.tailscaleUrl}`);\n\n if (urlLines.length > 0) {\n ui.note(urlLines.join(\"\\n\"), \"Tailscale URLs\");\n }\n};\n", "/**\n * Validate Tool \u2014 Health check agents via Tailscale SSH\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation, ExecAdapter } from \"../adapters\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { requireTailscale } from \"../lib/tailscale\";\nimport { getConfig } from \"../lib/tool-helpers\";\nimport pc from \"picocolors\";\n\nexport interface ValidateOptions {\n /** SSH timeout in seconds */\n timeout?: string;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\ninterface CheckResult {\n agent: string;\n checks: { name: string; passed: boolean; detail?: string }[];\n passed: boolean;\n}\n\n/**\n * SSH options for non-interactive connections\n */\nconst SSH_OPTS = [\n \"-o\", \"StrictHostKeyChecking=no\",\n \"-o\", \"UserKnownHostsFile=/dev/null\",\n \"-o\", \"BatchMode=yes\",\n];\n\n/**\n * Run an SSH check command\n */\nfunction runSshCheck(\n exec: ExecAdapter,\n host: string,\n command: string,\n timeout: number\n): { ok: boolean; output: string } {\n const result = exec.capture(\"ssh\", [\n \"-o\", `ConnectTimeout=${timeout}`,\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"${command.replace(/\"/g, '\\\\\"')}\"`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Validate tool implementation\n */\nexport const validateTool: ToolImplementation<ValidateOptions> = async (\n runtime: RuntimeAdapter,\n options: ValidateOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army\");\n\n requireTailscale();\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select/create stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n process.exit(1);\n }\n }\n\n // Get tailnet\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n if (!tailnetDnsName) {\n ui.log.error(\"Could not determine tailnet DNS name from Pulumi config.\");\n process.exit(1);\n }\n\n const timeout = parseInt(options.timeout ?? \"30\", 10);\n const results: CheckResult[] = [];\n\n ui.log.step(`Validating ${manifest.agents.length} agents (timeout: ${timeout}s)...`);\n console.log();\n\n for (const agent of manifest.agents) {\n const tsHost = tailscaleHostname(manifest.stackName, agent.name);\n const host = `${tsHost}.${tailnetDnsName}`;\n const checks: CheckResult[\"checks\"] = [];\n\n ui.log.info(`${pc.bold(agent.displayName)} (${agent.role}) \u2014 ${host}`);\n\n // Check 1: SSH connectivity\n const ssh = runSshCheck(exec, host, \"echo 'SSH OK'\", timeout);\n checks.push({\n name: \"SSH connectivity\",\n passed: ssh.ok,\n detail: ssh.ok ? \"connected\" : \"connection failed\",\n });\n\n if (ssh.ok) {\n // Check 2: OpenClaw gateway running (systemd user service)\n const gateway = runSshCheck(exec, host, \"systemctl --user is-active openclaw-gateway\", timeout);\n checks.push({\n name: \"OpenClaw gateway\",\n passed: gateway.ok,\n detail: gateway.ok ? \"running\" : gateway.output || \"not running\",\n });\n\n // Check 3: Workspace files present\n const workspace = runSshCheck(\n exec,\n host,\n `test -f /home/${SSH_USER}/.openclaw/workspace/SOUL.md && test -f /home/${SSH_USER}/.openclaw/workspace/HEARTBEAT.md && echo 'OK'`,\n timeout\n );\n checks.push({\n name: \"Workspace files\",\n passed: workspace.ok,\n detail: workspace.ok ? \"SOUL.md + HEARTBEAT.md present\" : \"missing files\",\n });\n\n // Check 4: Claude Code CLI installed\n const claudeCode = runSshCheck(\n exec,\n host,\n `/home/${SSH_USER}/.local/bin/claude --version 2>/dev/null || echo 'not installed'`,\n timeout\n );\n const claudeVersion = claudeCode.output.trim();\n const claudeInstalled = claudeCode.ok && !claudeVersion.includes(\"not installed\");\n checks.push({\n name: \"Claude Code CLI\",\n passed: claudeInstalled,\n detail: claudeInstalled ? claudeVersion : \"not installed\",\n });\n\n // Check 5: Claude Code auth (API key or OAuth token)\n if (claudeInstalled) {\n const credCheck = runSshCheck(\n exec,\n host,\n `grep -E '\"(ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN)\"' /home/${SSH_USER}/.openclaw/openclaw.json | head -1`,\n timeout\n );\n const hasApiKey = credCheck.output.includes(\"ANTHROPIC_API_KEY\");\n const hasOAuthToken = credCheck.output.includes(\"CLAUDE_CODE_OAUTH_TOKEN\");\n const credIsConfigured = credCheck.ok && (hasApiKey || hasOAuthToken);\n const credType = hasOAuthToken ? \"OAuth token\" : \"API key\";\n\n if (credIsConfigured) {\n const envVar = hasOAuthToken ? \"CLAUDE_CODE_OAUTH_TOKEN\" : \"ANTHROPIC_API_KEY\";\n const testScript = `\nexport ${envVar}=$(jq -r '.env.${envVar}' /home/${SSH_USER}/.openclaw/openclaw.json)\ntimeout 15 /home/${SSH_USER}/.local/bin/claude -p 'hi' 2>&1 | head -5\n `.trim();\n const authTest = runSshCheck(exec, host, testScript, timeout + 15);\n const authWorks = authTest.ok && \n !authTest.output.includes(\"Invalid API key\") && \n !authTest.output.includes(\"not authenticated\");\n checks.push({\n name: \"Claude Code auth\",\n passed: authWorks,\n detail: authWorks ? `${credType} verified` : `${credType} test failed: ${authTest.output.substring(0, 50)}`,\n });\n } else {\n checks.push({\n name: \"Claude Code auth\",\n passed: false,\n detail: \"No credentials configured\",\n });\n }\n }\n\n // Check 6: GitHub CLI installed\n const ghVersion = runSshCheck(\n exec,\n host,\n `gh --version 2>/dev/null | head -n1 || echo 'not installed'`,\n timeout\n );\n const ghVersionStr = ghVersion.output.trim();\n const ghInstalled = ghVersion.ok && !ghVersionStr.includes(\"not installed\");\n checks.push({\n name: \"GitHub CLI\",\n passed: ghInstalled,\n detail: ghInstalled ? ghVersionStr : \"not installed\",\n });\n\n // Check 7: GitHub CLI auth status (if installed)\n if (ghInstalled) {\n const ghAuth = runSshCheck(\n exec,\n host,\n `gh auth status 2>&1 | head -n2 || echo 'not authenticated'`,\n timeout\n );\n const ghAuthStr = ghAuth.output.trim();\n const ghAuthenticated = ghAuth.ok && \n !ghAuthStr.includes(\"not authenticated\") && \n !ghAuthStr.includes(\"not logged\");\n checks.push({\n name: \"GitHub CLI auth\",\n passed: ghAuthenticated,\n detail: ghAuthenticated ? \"authenticated\" : \"not authenticated (optional)\",\n });\n }\n } else {\n checks.push({ name: \"OpenClaw gateway\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"Workspace files\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"Claude Code CLI\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"Claude Code auth\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"GitHub CLI\", passed: false, detail: \"skipped (no SSH)\" });\n checks.push({ name: \"GitHub CLI auth\", passed: false, detail: \"skipped (no SSH)\" });\n }\n\n // Display check results\n const allPassed = checks.every((c) => c.passed);\n for (const check of checks) {\n const icon = check.passed ? pc.green(\"PASS\") : pc.red(\"FAIL\");\n console.log(` ${icon} ${check.name}: ${check.detail ?? \"\"}`);\n }\n console.log();\n\n results.push({ agent: agent.displayName, checks, passed: allPassed });\n }\n\n // Summary\n const passed = results.filter((r) => r.passed).length;\n const failed = results.filter((r) => !r.passed).length;\n\n const summaryLines = [\n `Total: ${results.length}`,\n `Passed: ${passed}`,\n `Failed: ${failed}`,\n ];\n\n ui.note(summaryLines.join(\"\\n\"), \"Validation Summary\");\n\n if (failed > 0) {\n ui.log.warn(\"Some agents failed validation.\");\n console.log(\" 1. Wait 3-5 minutes for cloud-init to complete\");\n const agentHints = results\n .filter((r) => !r.passed)\n .map((r) => {\n const agent = manifest.agents.find((a) => a.displayName === r.agent);\n return agent ? agent.role : r.agent;\n });\n console.log(` 2. Check logs: clawup ssh ${agentHints[0] ?? \"<role>\"} -- journalctl -u openclaw`);\n console.log(\" 3. Verify Tailscale: tailscale status\");\n process.exit(1);\n } else {\n ui.log.success(\"All agents are healthy!\");\n }\n};\n", "/**\n * Destroy Tool \u2014 Tear down resources with safety confirmations\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation } from \"../adapters\";\nimport { loadManifest, resolveConfigName, syncManifestToProject } from \"../lib/config\";\nimport { cleanupTailscaleDevices } from \"../lib/tailscale\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { getConfig } from \"../lib/tool-helpers\";\nimport { formatAgentList } from \"../lib/ui\";\n\nexport interface DestroyOptions {\n /** Skip confirmation prompts (dangerous!) */\n yes?: boolean;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/**\n * Destroy tool implementation\n */\nexport const destroyTool: ToolImplementation<DestroyOptions> = async (\n runtime: RuntimeAdapter,\n options: DestroyOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army\");\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select/create stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n process.exit(1);\n }\n }\n\n // Show what will be destroyed (provider-aware)\n const manifestProvider = manifest.provider ?? \"aws\";\n const resourceLabel = manifestProvider === \"hetzner\" ? \"Hetzner servers\" : \"EC2 instances\";\n const infraLabel = manifestProvider === \"hetzner\" ? \"Firewall rules\" : \"VPC, subnet, and security group\";\n\n ui.note(\n [\n `Stack: ${manifest.stackName}`,\n `Region: ${manifest.region}`,\n ``,\n `Agents (${manifest.agents.length}):`,\n formatAgentList(manifest.agents),\n ``,\n `This will PERMANENTLY DESTROY:`,\n ` - ${manifest.agents.length} ${resourceLabel}`,\n ` - All workspace data on those instances`,\n ` - ${infraLabel}`,\n ` - Tailscale device registrations`,\n ].join(\"\\n\"),\n \"Destruction Plan\"\n );\n\n // Confirm\n if (!options.yes) {\n const typedName = await ui.text({\n message: `Type the stack name to confirm: \"${manifest.stackName}\"`,\n validate: (val) => {\n if (val !== manifest.stackName) return `Must type \"${manifest.stackName}\" to confirm`;\n return undefined;\n },\n });\n\n const confirmed = await ui.confirm({\n message: \"Are you ABSOLUTELY sure?\",\n initialValue: false,\n });\n if (!confirmed) {\n ui.cancel(\"Destruction cancelled.\");\n }\n }\n\n // Sync manifest to project root so the Pulumi program can read it\n syncManifestToProject(configName, cwd);\n\n // Destroy infrastructure\n ui.log.step(\"Running pulumi destroy...\");\n console.log();\n const exitCode = await exec.stream(\"pulumi\", [\"destroy\", \"--yes\"], { cwd });\n console.log();\n\n if (exitCode !== 0) {\n ui.log.error(\"Destruction failed. Check the output above for details.\");\n process.exit(1);\n }\n\n // Clean up Tailscale devices after infrastructure is destroyed\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n const tailscaleApiKey = getConfig(exec, \"tailscaleApiKey\", cwd);\n\n if (tailnetDnsName && tailscaleApiKey) {\n const spinner = ui.spinner(\"Removing agents from Tailscale...\");\n const { cleaned, failed } = cleanupTailscaleDevices(\n tailscaleApiKey, tailnetDnsName, manifest.stackName, manifest.agents\n );\n if (failed.length === 0) {\n spinner.stop(cleaned.length > 0 ? \"Tailscale devices cleaned up\" : \"No Tailscale devices found\");\n } else {\n spinner.stop(\"Some Tailscale devices could not be removed\");\n ui.log.warn(\n `Could not remove: ${failed.join(\", \")}. Remove manually from https://login.tailscale.com/admin/machines`\n );\n }\n } else if (tailnetDnsName && !tailscaleApiKey) {\n ui.log.warn(\"No Tailscale API key configured - devices must be removed manually.\");\n console.log(\" Remove devices at: https://login.tailscale.com/admin/machines\");\n console.log(\" Tip: Set a Tailscale API key (`clawup init`) for automatic cleanup.\");\n }\n\n ui.log.success(`Stack \"${manifest.stackName}\" has been destroyed.`);\n ui.outro(\"Done!\");\n};\n", "/**\n * Redeploy Tool \u2014 Update agents in-place with pulumi up --refresh\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n * Unlike destroy+deploy, this reuses existing infrastructure (including Tailscale devices).\n */\n\nimport type { RuntimeAdapter, ToolImplementation } from \"../adapters\";\nimport { loadManifest, resolveConfigName, syncManifestToProject } from \"../lib/config\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { isTailscaleInstalled, isTailscaleRunning, cleanupTailscaleDevices, ensureMagicDns, ensureTailscaleFunnel } from \"../lib/tailscale\";\nimport { getConfig } from \"../lib/tool-helpers\";\nimport { formatAgentList } from \"../lib/ui\";\nimport pc from \"picocolors\";\n\nexport interface RedeployOptions {\n /** Skip confirmation prompt */\n yes?: boolean;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/**\n * Redeploy tool implementation\n */\nexport const redeployTool: ToolImplementation<RedeployOptions> = async (\n runtime: RuntimeAdapter,\n options: RedeployOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army\");\n\n // Ensure workspace is set up\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Try to select existing stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n const stackExists = selectResult.exitCode === 0;\n\n if (!stackExists) {\n // Stack doesn't exist \u2014 fall back to regular deploy flow\n ui.log.warn(`Stack \"${manifest.stackName}\" does not exist. Falling back to fresh deploy.`);\n\n const initResult = exec.capture(\"pulumi\", [\"stack\", \"init\", manifest.stackName], cwd);\n if (initResult.exitCode !== 0) {\n ui.log.error(initResult.stderr || `Could not create Pulumi stack \"${manifest.stackName}\".`);\n process.exit(1);\n }\n }\n\n // Show redeploy summary\n ui.note(\n [\n `Stack: ${manifest.stackName}`,\n `Region: ${manifest.region}`,\n `Mode: ${stackExists ? \"In-place update (--refresh)\" : \"Fresh deploy (new stack)\"}`,\n ``,\n `Agents (${manifest.agents.length}):`,\n formatAgentList(manifest.agents),\n ``,\n stackExists\n ? `This will update resources in-place where possible.\\nTailscale devices will be preserved.`\n : `This will create all resources from scratch.`,\n ].join(\"\\n\"),\n \"Redeploy Summary\"\n );\n\n // Confirm\n if (!options.yes) {\n const confirmed = await ui.confirm({\n message: \"Proceed with redeploy?\",\n });\n if (!confirmed) {\n ui.cancel(\"Redeploy cancelled.\");\n return;\n }\n }\n\n // Sync manifest to project root so the Pulumi program can read it\n syncManifestToProject(configName, cwd);\n\n // Sync instanceType from manifest to Pulumi config\n const configSetResult = exec.capture(\"pulumi\", [\"config\", \"set\", \"instanceType\", manifest.instanceType], cwd);\n if (configSetResult.exitCode !== 0) {\n ui.log.error(`Failed to set Pulumi config: ${configSetResult.stderr || \"unknown error\"}`);\n process.exit(1);\n }\n\n // Clean up stale Tailscale devices before deploying\n // This prevents duplicates when Pulumi replaces servers (create-before-delete)\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n const tailscaleApiKey = getConfig(exec, \"tailscaleApiKey\", cwd);\n\n if (tailnetDnsName && tailscaleApiKey) {\n const spinner = ui.spinner(\"Cleaning up stale Tailscale devices...\");\n const { cleaned, failed } = cleanupTailscaleDevices(\n tailscaleApiKey, tailnetDnsName, manifest.stackName, manifest.agents\n );\n if (cleaned.length > 0) {\n spinner.stop(`Removed ${cleaned.length} stale Tailscale device(s)`);\n } else {\n spinner.stop(\"No stale Tailscale devices found\");\n }\n if (failed.length > 0) {\n ui.log.warn(\n `Could not remove some devices: ${failed.join(\", \")}. Check https://login.tailscale.com/admin/machines`\n );\n }\n }\n\n // Ensure MagicDNS is enabled (required for Tailscale hostname resolution)\n if (tailscaleApiKey) {\n const spinner = ui.spinner(\"Ensuring Tailscale MagicDNS is enabled...\");\n const magicDnsChanged = ensureMagicDns(tailscaleApiKey);\n spinner.stop(magicDnsChanged ? \"MagicDNS enabled\" : \"MagicDNS OK\");\n }\n\n // Ensure Tailscale Funnel prerequisites if any agent uses Linear\n const hasLinearAgents = manifest.agents.some(\n (a) => !!getConfig(exec, `${a.role}LinearApiKey`, cwd)\n );\n if (hasLinearAgents && tailscaleApiKey) {\n const spinner = ui.spinner(\"Ensuring Tailscale Funnel prerequisites...\");\n const funnel = ensureTailscaleFunnel(tailscaleApiKey);\n const changes: string[] = [];\n if (funnel.funnelAcl) changes.push(\"Funnel ACL enabled\");\n spinner.stop(changes.length > 0 ? changes.join(\", \") : \"Funnel prerequisites OK\");\n }\n\n // Run pulumi up with --refresh to read actual cloud state first\n const pulumiArgs = stackExists\n ? [\"up\", \"--refresh\", \"--yes\"]\n : [\"up\", \"--yes\"];\n\n ui.log.step(stackExists ? \"Running pulumi up --refresh...\" : \"Running pulumi up...\");\n console.log();\n const exitCode = await exec.stream(\"pulumi\", pulumiArgs, { cwd });\n console.log();\n\n if (exitCode !== 0) {\n ui.log.error(\"Redeploy failed. Check the output above for details.\");\n if (stackExists) {\n ui.log.warn(\n \"If the in-place update cannot recover, try: clawup destroy && clawup deploy\"\n );\n }\n process.exit(1);\n }\n\n ui.log.success(\"Redeploy complete!\");\n\n // Show outputs\n const outputsResult = exec.capture(\"pulumi\", [\n \"stack\",\n \"output\",\n \"--json\",\n \"--show-secrets\",\n ], cwd);\n if (outputsResult.exitCode === 0) {\n try {\n const outputs = JSON.parse(outputsResult.stdout) as Record<string, unknown>;\n const lines: string[] = [];\n\n for (const agent of manifest.agents) {\n const urlKey = `${agent.role}TailscaleUrl`;\n const ipKey = `${agent.role}PublicIp`;\n const idKey = `${agent.role}InstanceId`;\n lines.push(`${agent.displayName} (${agent.role}):`);\n if (outputs[urlKey]) lines.push(` Tailscale URL: ${outputs[urlKey]}`);\n if (outputs[ipKey]) lines.push(` Public IP: ${outputs[ipKey]}`);\n if (outputs[idKey]) lines.push(` Instance ID: ${outputs[idKey]}`);\n lines.push(\"\");\n }\n\n ui.note(lines.join(\"\\n\"), \"Agent Details\");\n } catch (err) {\n ui.log.warn(`Could not parse stack outputs: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n // Remind user about Tailscale if not connected\n if (!isTailscaleInstalled()) {\n const hint =\n process.platform === \"darwin\"\n ? \"Install from the Mac App Store or https://tailscale.com/download\"\n : \"Install from https://tailscale.com/download\";\n ui.log.warn(\n `Tailscale is required to connect to agents.\\n ${hint}\\n Then run: ${pc.cyan(\"tailscale up\")}`\n );\n } else if (!isTailscaleRunning()) {\n ui.log.warn(\n `Tailscale is not running. Start it before validating agents.\\n Open the Tailscale app or run: ${pc.cyan(\"tailscale up\")}`\n );\n }\n\n ui.outro(\"Agents updated. Run `clawup validate` to verify.\");\n};\n", "/**\n * Push Tool \u2014 Live-update running agents via Tailscale SSH\n *\n * Syncs workspace files, skills, config, and OpenClaw updates to\n * running agent instances without redeploying infrastructure.\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport type { RuntimeAdapter, ToolImplementation, ExecAdapter } from \"../adapters\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { AGENT_ALIASES, SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { getConfig, selectOrCreateStack } from \"../lib/pulumi\";\nimport type { AgentDefinition } from \"@clawup/core\";\nimport { fetchIdentitySync } from \"@clawup/core/identity\";\nimport { classifySkills } from \"@clawup/core\";\nimport { resolveDeps } from \"@clawup/core\";\nimport * as os from \"os\";\nimport pc from \"picocolors\";\n\nexport interface PushOptions {\n /** Sync skills to remote workspace */\n skills?: boolean;\n /** Sync workspace files to remote agents */\n workspace?: boolean;\n /** Remove remote memory/ dir and MEMORY.md */\n memoryReset?: boolean;\n /** Run npm install -g openclaw@latest + gateway restart */\n openclaw?: boolean;\n /** Copy local openclaw.json to remote + gateway restart */\n pushConfig?: boolean;\n /** Filter to a single agent (name, role, or alias) */\n agent?: string;\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/** SSH options for non-interactive connections */\nconst SSH_OPTS = [\n \"-o\", \"StrictHostKeyChecking=no\",\n \"-o\", \"UserKnownHostsFile=/dev/null\",\n \"-o\", \"BatchMode=yes\",\n];\n\nconst REMOTE_WORKSPACE = `/home/${SSH_USER}/.openclaw/workspace`;\nconst REMOTE_SKILLS = `${REMOTE_WORKSPACE}/skills`;\n\n/**\n * Run a command over SSH, returning success/failure and output.\n */\nfunction sshExec(\n exec: ExecAdapter,\n host: string,\n command: string,\n): { ok: boolean; output: string } {\n const result = exec.capture(\"ssh\", [\n \"-o\", \"ConnectTimeout=15\",\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"${command.replace(/\"/g, '\\\\\"')}\"`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Run rsync to sync a local directory to a remote path.\n */\nfunction rsyncDir(\n exec: ExecAdapter,\n localDir: string,\n host: string,\n remoteDir: string,\n): { ok: boolean; output: string } {\n // Ensure trailing slash on localDir so rsync syncs contents\n const src = localDir.endsWith(\"/\") ? localDir : `${localDir}/`;\n const result = exec.capture(\"rsync\", [\n \"-avz\", \"--delete\",\n \"-e\", `ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes`,\n src,\n `${SSH_USER}@${host}:${remoteDir}/`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Copy a single file to a remote path via scp.\n */\nfunction scpFile(\n exec: ExecAdapter,\n localFile: string,\n host: string,\n remotePath: string,\n): { ok: boolean; output: string } {\n const result = exec.capture(\"scp\", [\n ...SSH_OPTS,\n localFile,\n `${SSH_USER}@${host}:${remotePath}`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Resolve an agent query (name, role, alias, displayName) against the manifest.\n */\nfunction findAgent(agents: AgentDefinition[], query: string): AgentDefinition | undefined {\n const q = query.toLowerCase();\n const resolvedRole = AGENT_ALIASES[q] ?? q;\n return agents.find(\n (a) =>\n a.role === resolvedRole ||\n a.name === q ||\n a.name === `agent-${q}` ||\n a.displayName.toLowerCase() === q\n );\n}\n\n/**\n * Push tool implementation\n */\nexport const pushTool: ToolImplementation<PushOptions> = async (\n runtime: RuntimeAdapter,\n options: PushOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Clawup\");\n\n // Ensure workspace is set up\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n throw new Error(wsResult.error ?? \"Failed to set up workspace.\");\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n throw new Error((err as Error).message);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n throw new Error(`Config '${configName}' could not be loaded.`);\n }\n\n // Select Pulumi stack to read tailnet config\n const stackResult = selectOrCreateStack(manifest.stackName, cwd);\n if (!stackResult.ok) {\n throw new Error(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n }\n\n // Get tailnet DNS name\n const tailnetDnsName = getConfig(\"tailnetDnsName\", cwd);\n if (!tailnetDnsName) {\n throw new Error(\"Could not determine tailnet DNS name from Pulumi config.\");\n }\n\n // Default behavior: if no flags are set, push skills + workspace\n const noFlags = !options.skills && !options.workspace && !options.memoryReset &&\n !options.openclaw && !options.pushConfig;\n const doSkills = options.skills || noFlags;\n const doWorkspace = options.workspace || noFlags;\n\n // Determine target agents\n let targetAgents = manifest.agents;\n if (options.agent) {\n const matched = findAgent(manifest.agents, options.agent);\n if (!matched) {\n const validNames = manifest.agents\n .map((a) => `${a.role}, ${a.displayName.toLowerCase()}, ${a.name}`)\n .join(\"\\n \");\n ui.log.error(\n `Unknown agent: \"${options.agent}\"\\nValid identifiers:\\n ${validNames}`\n );\n return;\n }\n targetAgents = [matched];\n }\n\n // Describe what we're pushing\n const actions: string[] = [];\n if (doSkills) actions.push(\"skills\");\n if (doWorkspace) actions.push(\"workspace\");\n if (options.memoryReset) actions.push(\"memory-reset\");\n if (options.openclaw) actions.push(\"openclaw upgrade\");\n if (options.pushConfig) actions.push(\"config\");\n\n ui.log.step(\n `Pushing [${actions.join(\", \")}] to ${targetAgents.length} agent(s)...`\n );\n console.log();\n\n let allOk = true;\n\n for (const agent of targetAgents) {\n const tsHost = tailscaleHostname(manifest.stackName, agent.name);\n const host = `${tsHost}.${tailnetDnsName}`;\n\n ui.log.info(`${pc.bold(agent.displayName)} (${agent.role}) \u2014 ${host}`);\n\n let needsRestart = false;\n\n // 1. Push workspace files and skills (unified via identity system)\n if (doWorkspace || doSkills) {\n try {\n const identityCacheDir = path.join(os.homedir(), \".clawup\", \"identity-cache\");\n const identity = fetchIdentitySync(agent.identity, identityCacheDir);\n\n // Ensure remote workspace dir exists\n sshExec(exec, host, `mkdir -p ${REMOTE_WORKSPACE}`);\n\n // Write identity files to a temp dir for transfer\n const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"push-identity-\"));\n\n for (const [relPath, content] of Object.entries(identity.files)) {\n const localFile = path.join(tmpDir, relPath);\n fs.mkdirSync(path.dirname(localFile), { recursive: true });\n fs.writeFileSync(localFile, content);\n }\n\n // Sync workspace files (non-skill files)\n if (doWorkspace) {\n const topFiles = Object.keys(identity.files).filter(f => !f.startsWith(\"skills/\"));\n let wsOk = true;\n for (const relPath of topFiles) {\n const localFile = path.join(tmpDir, relPath);\n const result = scpFile(exec, localFile, host, `${REMOTE_WORKSPACE}/${relPath}`);\n if (!result.ok) {\n console.log(` ${pc.red(\"FAIL\")} workspace file ${relPath}: ${result.output.substring(0, 100)}`);\n wsOk = false;\n allOk = false;\n }\n }\n if (wsOk) {\n console.log(` ${pc.green(\"OK\")} workspace files synced (${topFiles.length} files)`);\n }\n }\n\n // Sync skills\n if (doSkills) {\n const skillsLocalDir = path.join(tmpDir, \"skills\");\n if (fs.existsSync(skillsLocalDir)) {\n sshExec(exec, host, `mkdir -p ${REMOTE_SKILLS}`);\n const result = rsyncDir(exec, skillsLocalDir, host, REMOTE_SKILLS);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} skills synced`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} skills sync failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n // Install public skills via clawhub\n const { public: publicSkills } = classifySkills(identity.manifest.skills);\n for (const skill of publicSkills) {\n const cmd = `export NVM_DIR=\"$HOME/.nvm\" && [ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\" && clawhub install ${skill.slug}`;\n const result = sshExec(exec, host, cmd);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} clawhub skill installed: ${skill.slug}`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} clawhub skill ${skill.slug}: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n // Run dep post-install scripts (e.g., gh auth)\n if (identity.manifest.deps?.length) {\n const resolved = resolveDeps(identity.manifest.deps);\n for (const dep of resolved) {\n if (!dep.entry.postInstallScript) continue;\n const cmd = dep.entry.postInstallScript;\n const result = sshExec(exec, host, cmd);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} dep post-install: ${dep.name}`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} dep post-install ${dep.name}: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n }\n }\n\n // Cleanup temp dir\n fs.rmSync(tmpDir, { recursive: true, force: true });\n } catch (err) {\n console.log(` ${pc.red(\"FAIL\")} identity fetch failed: ${(err as Error).message}`);\n allOk = false;\n }\n }\n\n // 3. Memory reset\n if (options.memoryReset) {\n const cmd = `rm -rf ${REMOTE_WORKSPACE}/memory ${REMOTE_WORKSPACE}/MEMORY.md`;\n const result = sshExec(exec, host, cmd);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} memory reset`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} memory reset failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n // 4. OpenClaw upgrade\n if (options.openclaw) {\n const cmd = `npm install -g openclaw@latest 2>&1`;\n const result = sshExec(exec, host, cmd);\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} openclaw upgraded`);\n needsRestart = true;\n } else {\n console.log(` ${pc.red(\"FAIL\")} openclaw upgrade failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n // 5. Config push\n if (options.pushConfig) {\n const localConfig = path.join(\n `/home/${SSH_USER}/.openclaw`,\n \"openclaw.json\"\n );\n // The local config is on the operator's machine at ~/.openclaw/openclaw.json\n // However, this should reference the operator's local file\n const operatorConfig = path.join(\n process.env.HOME ?? \"\",\n \".openclaw\",\n \"openclaw.json\"\n );\n if (fs.existsSync(operatorConfig)) {\n const result = scpFile(\n exec,\n operatorConfig,\n host,\n `/home/${SSH_USER}/.openclaw/openclaw.json`\n );\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} openclaw.json pushed`);\n needsRestart = true;\n } else {\n console.log(` ${pc.red(\"FAIL\")} config push failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n } else {\n console.log(` ${pc.red(\"FAIL\")} local openclaw.json not found at ${operatorConfig}`);\n allOk = false;\n }\n }\n\n // 6. Restart gateway if needed\n if (needsRestart) {\n const result = sshExec(exec, host, \"systemctl --user restart openclaw-gateway\");\n if (result.ok) {\n console.log(` ${pc.green(\"OK\")} gateway restarted`);\n } else {\n console.log(` ${pc.red(\"FAIL\")} gateway restart failed: ${result.output.substring(0, 100)}`);\n allOk = false;\n }\n }\n\n console.log();\n }\n\n // Summary\n if (allOk) {\n ui.log.success(`Push completed successfully for ${targetAgents.length} agent(s).`);\n } else {\n ui.log.warn(\"Push completed with some failures. Check output above.\");\n throw new Error(\"Push completed with failures.\");\n }\n};\n", "/**\n * Webhooks Setup Tool \u2014 Configure Linear webhooks for deployed agents\n *\n * Collects signing secrets, stores them in Pulumi config for persistence,\n * then applies them live via SSH (no redeploy needed).\n *\n * Platform-agnostic implementation using RuntimeAdapter.\n */\n\nimport type { RuntimeAdapter, ToolImplementation, ExecAdapter } from \"../adapters\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { getConfig, getStackOutputs } from \"../lib/tool-helpers\";\nimport pc from \"picocolors\";\n\nexport interface WebhooksSetupOptions {\n /** Config name (auto-detected if only one) */\n config?: string;\n}\n\n/** SSH options for non-interactive connections */\nconst SSH_OPTS = [\n \"-o\", \"StrictHostKeyChecking=no\",\n \"-o\", \"UserKnownHostsFile=/dev/null\",\n \"-o\", \"BatchMode=yes\",\n];\n\n/**\n * Run a command over SSH\n */\nfunction sshExec(\n exec: ExecAdapter,\n host: string,\n command: string,\n): { ok: boolean; output: string } {\n const result = exec.capture(\"ssh\", [\n \"-o\", \"ConnectTimeout=15\",\n ...SSH_OPTS,\n `${SSH_USER}@${host}`,\n `\"${command.replace(/\"/g, '\\\\\"')}\"`,\n ]);\n return { ok: result.exitCode === 0, output: result.stdout || result.stderr };\n}\n\n/**\n * Webhooks setup tool implementation\n */\nexport const webhooksSetupTool: ToolImplementation<WebhooksSetupOptions> = async (\n runtime: RuntimeAdapter,\n options: WebhooksSetupOptions\n) => {\n const { ui, exec } = runtime;\n\n ui.intro(\"Agent Army \u2014 Webhook Setup\");\n\n // Ensure workspace is set up\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n ui.log.error(wsResult.error ?? \"Failed to set up workspace.\");\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name and load manifest\n let configName: string;\n try {\n configName = resolveConfigName(options.config);\n } catch (err) {\n ui.log.error((err as Error).message);\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n ui.log.error(`Config '${configName}' could not be loaded.`);\n process.exit(1);\n }\n\n // Select stack\n const selectResult = exec.capture(\"pulumi\", [\"stack\", \"select\", manifest.stackName], cwd);\n if (selectResult.exitCode !== 0) {\n ui.log.error(`Could not select Pulumi stack \"${manifest.stackName}\". Run ${pc.cyan(\"clawup deploy\")} first.`);\n process.exit(1);\n }\n\n // Get stack outputs\n const outputs = getStackOutputs(exec, true, cwd);\n if (!outputs) {\n ui.log.error(`Could not fetch stack outputs. Run ${pc.cyan(\"clawup deploy\")} first.`);\n process.exit(1);\n }\n\n // Get tailnet DNS name for SSH\n const tailnetDnsName = getConfig(exec, \"tailnetDnsName\", cwd);\n if (!tailnetDnsName) {\n ui.log.error(\"Could not read tailnetDnsName from Pulumi config.\");\n process.exit(1);\n }\n\n // Check if any webhook URLs exist\n const agentsWithUrls = manifest.agents.filter(\n (agent) => outputs[`${agent.role}WebhookUrl`]\n );\n\n if (agentsWithUrls.length === 0) {\n ui.log.error(\n \"No webhook URLs found in stack outputs.\\n\" +\n ` Make sure agents are deployed and exposing webhook endpoints.\\n` +\n ` Run ${pc.cyan(\"clawup deploy\")} if you haven't already.`\n );\n process.exit(1);\n }\n\n ui.note(\n [\n \"This will walk you through creating Linear webhooks for each agent.\",\n \"You'll need access to your Linear workspace settings.\",\n ].join(\"\\n\"),\n \"Linear Webhook Setup\"\n );\n\n // Collect webhook secrets for each agent\n const secrets: { role: string; name: string; agentName: string; secret: string }[] = [];\n\n for (const agent of manifest.agents) {\n const webhookUrl = outputs[`${agent.role}WebhookUrl`] as string | undefined;\n if (!webhookUrl) {\n ui.log.warn(`No webhook URL found for ${agent.displayName} (${agent.role}) \u2014 skipping.`);\n continue;\n }\n\n ui.note(\n [\n `Webhook URL: ${pc.cyan(String(webhookUrl))}`,\n \"\",\n \"Steps:\",\n \"1. Go to Linear Settings \u2192 API \u2192 Webhooks \u2192 \\\"New webhook\\\"\",\n \"2. Paste the URL above\",\n \"3. Select events to receive (e.g., Issues, Comments)\",\n \"4. Create the webhook and copy the \\\"Signing secret\\\"\",\n ].join(\"\\n\"),\n `${agent.displayName} (${agent.role})`\n );\n\n const secret = await ui.text({\n message: `Signing secret for ${agent.displayName}`,\n placeholder: \"Paste the signing secret from Linear\",\n validate: (val: string) => {\n if (!val) return \"Signing secret is required\";\n },\n });\n\n secrets.push({\n role: agent.role,\n name: agent.name,\n agentName: agent.displayName,\n secret: secret as string,\n });\n }\n\n if (secrets.length === 0) {\n ui.log.warn(\"No webhook secrets collected.\");\n ui.outro(\"Nothing to do.\");\n return;\n }\n\n // Store secrets in Pulumi config (for persistence across deploys)\n const configSpinner = ui.spinner(\"Saving webhook secrets to Pulumi config...\");\n for (const { role, secret } of secrets) {\n exec.capture(\n \"pulumi\",\n [\"config\", \"set\", `${role}LinearWebhookSecret`, secret, \"--secret\"],\n cwd\n );\n }\n configSpinner.stop(`Saved ${secrets.length} webhook secret(s) to Pulumi config`);\n\n // Apply secrets live via SSH\n const applySpinner = ui.spinner(\"Applying webhook secrets to running agents...\");\n let applied = 0;\n let failed = 0;\n\n for (const { role, name, agentName, secret } of secrets) {\n const tsHost = tailscaleHostname(manifest.stackName, name);\n const host = `${tsHost}.${tailnetDnsName}`;\n\n // Escape the secret for use inside jq\n const escapedSecret = secret.replace(/'/g, \"'\\\\''\");\n const jqCmd =\n `jq '.plugins.entries.linear.config.webhookSecret = \\\\\\\"${escapedSecret.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\\\\\\\\\"')}\\\\\\\"' ` +\n `/home/${SSH_USER}/.openclaw/openclaw.json > /tmp/openclaw-patched.json && ` +\n `mv /tmp/openclaw-patched.json /home/${SSH_USER}/.openclaw/openclaw.json`;\n\n const patchResult = sshExec(exec, host, jqCmd);\n if (!patchResult.ok) {\n applySpinner.stop(`Failed to patch config on ${agentName}`);\n ui.log.warn(` ${agentName}: ${patchResult.output}`);\n failed++;\n continue;\n }\n\n const restartResult = sshExec(exec, host, \"systemctl --user restart openclaw-gateway\");\n if (!restartResult.ok) {\n applySpinner.stop(`Failed to restart gateway on ${agentName}`);\n ui.log.warn(` ${agentName}: ${restartResult.output}`);\n failed++;\n continue;\n }\n\n applied++;\n }\n\n if (applied > 0 && failed === 0) {\n applySpinner.stop(`Applied to ${applied} agent(s)`);\n } else if (applied > 0) {\n applySpinner.stop(`Applied to ${applied} agent(s), ${failed} failed`);\n } else {\n applySpinner.stop(`Failed to apply to any agents`);\n }\n\n if (failed > 0) {\n ui.log.warn(\n `Some agents could not be reached. They will pick up the secrets on next deploy.`\n );\n }\n\n ui.outro(\"Webhook setup complete!\");\n};\n", "/**\n * CLI Runtime Adapter\n *\n * Implements RuntimeAdapter for interactive terminal usage\n * using @clack/prompts for UI and child_process for execution.\n */\n\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { execSync, spawn, spawnSync, type SpawnOptions } from \"child_process\";\nimport { trackChild } from \"../lib/process\";\nimport { resolveCommand, commandExistsWithVendor } from \"../lib/vendor\";\nimport type {\n RuntimeAdapter,\n UIAdapter,\n ExecAdapter,\n ExecResult,\n TextOptions,\n ConfirmOptions,\n SelectOptions,\n MultiSelectOptions,\n SpinnerController,\n StreamOptions,\n} from \"./types\";\n\n// ============================================================================\n// Execution Adapter Implementation\n// ============================================================================\n\nclass CLIExecAdapter implements ExecAdapter {\n capture(command: string, args: string[] = [], cwd?: string): ExecResult {\n const resolved = resolveCommand(command);\n try {\n const result = execSync([resolved, ...args].join(\" \"), {\n cwd,\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n return { stdout: result.trim(), stderr: \"\", exitCode: 0 };\n } catch (err: unknown) {\n const e = err as { stdout?: string; stderr?: string; status?: number };\n return {\n stdout: (e.stdout ?? \"\").toString().trim(),\n stderr: (e.stderr ?? \"\").toString().trim(),\n exitCode: e.status ?? 1,\n };\n }\n }\n\n stream(command: string, args: string[] = [], options?: StreamOptions): Promise<number> {\n const resolved = resolveCommand(command);\n return new Promise((resolve) => {\n const opts: SpawnOptions = {\n cwd: options?.cwd,\n stdio: options?.capture ? \"pipe\" : \"inherit\",\n shell: true,\n };\n const child = spawn(resolved, args, opts);\n trackChild(child);\n child.on(\"close\", (code) => resolve(code ?? 1));\n child.on(\"error\", (err) => {\n console.warn(`[exec] Child process error: ${err.message}`);\n resolve(1);\n });\n });\n }\n\n commandExists(command: string): boolean {\n return commandExistsWithVendor(command);\n }\n}\n\n// ============================================================================\n// UI Adapter Implementation\n// ============================================================================\n\nclass CLIUIAdapter implements UIAdapter {\n intro(message: string): void {\n console.log();\n p.intro(pc.bgCyan(pc.black(` ${message} `)));\n }\n\n note(content: string, title?: string): void {\n p.note(content, title);\n }\n\n outro(message: string): void {\n p.outro(message);\n }\n\n cancel(message: string): never {\n p.cancel(message);\n process.exit(0);\n }\n\n log = {\n info(message: string): void {\n p.log.info(message);\n },\n step(message: string): void {\n p.log.step(message);\n },\n success(message: string): void {\n p.log.success(message);\n },\n warn(message: string): void {\n p.log.warn(message);\n },\n error(message: string): void {\n p.log.error(message);\n },\n };\n\n async text(options: TextOptions): Promise<string> {\n const result = await p.text({\n message: options.message,\n placeholder: options.placeholder,\n defaultValue: options.defaultValue,\n validate: options.validate,\n });\n\n if (p.isCancel(result)) {\n this.cancel(\"Operation cancelled.\");\n }\n\n return result as string;\n }\n\n async confirm(options: ConfirmOptions): Promise<boolean> {\n const result = await p.confirm({\n message: options.message,\n initialValue: options.initialValue,\n });\n\n if (p.isCancel(result)) {\n this.cancel(\"Operation cancelled.\");\n }\n\n return result as boolean;\n }\n\n async select<T>(options: SelectOptions<T>): Promise<T> {\n const result = await p.select({\n message: options.message,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: options.options as any,\n initialValue: options.initialValue,\n });\n\n if (p.isCancel(result)) {\n this.cancel(\"Operation cancelled.\");\n }\n\n return result as T;\n }\n\n async multiSelect<T>(options: MultiSelectOptions<T>): Promise<T[]> {\n const result = await p.multiselect({\n message: options.message,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: options.options as any,\n initialValues: options.initialValues,\n required: options.required,\n });\n\n if (p.isCancel(result)) {\n this.cancel(\"Operation cancelled.\");\n }\n\n return result as T[];\n }\n\n spinner(message: string): SpinnerController {\n const s = p.spinner();\n s.start(message);\n return {\n stop(msg?: string, code?: number) {\n s.stop(msg, code);\n },\n message(msg: string) {\n s.message(msg);\n },\n };\n }\n}\n\n// ============================================================================\n// Runtime Adapter\n// ============================================================================\n\n/**\n * Create a CLI runtime adapter for interactive terminal usage\n */\nexport function createCLIAdapter(): RuntimeAdapter {\n return {\n ui: new CLIUIAdapter(),\n exec: new CLIExecAdapter(),\n platform: \"cli\",\n };\n}\n\n/**\n * Singleton CLI adapter instance for convenience\n */\nexport const cliAdapter = createCLIAdapter();\n", "/**\n * API Runtime Adapter\n *\n * Implements RuntimeAdapter for HTTP API usage.\n * Instead of interactive prompts, collects inputs from a request body\n * and accumulates responses as structured JSON.\n */\n\nimport { resolveCommand, commandExistsWithVendor } from \"../lib/vendor\";\nimport type {\n RuntimeAdapter,\n UIAdapter,\n ExecAdapter,\n ExecResult,\n TextOptions,\n ConfirmOptions,\n SelectOptions,\n MultiSelectOptions,\n SpinnerController,\n StreamOptions,\n LogAdapter,\n} from \"./types\";\n\n// ============================================================================\n// API Response Types\n// ============================================================================\n\n/** A field descriptor returned instead of prompting */\nexport interface FieldDescriptor {\n type: \"text\" | \"confirm\" | \"select\" | \"multiSelect\";\n name: string;\n message: string;\n placeholder?: string;\n defaultValue?: unknown;\n options?: Array<{ value: unknown; label: string; hint?: string }>;\n required?: boolean;\n}\n\n/** A log entry accumulated during execution */\nexport interface LogEntry {\n level: \"info\" | \"step\" | \"success\" | \"warn\" | \"error\";\n message: string;\n timestamp: number;\n}\n\n/** Accumulated API response */\nexport interface APIResponse {\n /** Fields that need user input (wizard mode) */\n fields: FieldDescriptor[];\n /** Log messages accumulated during execution */\n logs: LogEntry[];\n /** Notes/messages shown to the user */\n messages: Array<{ type: \"intro\" | \"note\" | \"outro\" | \"cancel\"; content: string; title?: string }>;\n /** Whether the operation completed or needs more input */\n status: \"needsInput\" | \"complete\" | \"cancelled\" | \"error\";\n}\n\n// ============================================================================\n// Execution Adapter Implementation\n// ============================================================================\n\nclass APIExecAdapter implements ExecAdapter {\n capture(command: string, args: string[] = [], cwd?: string): ExecResult {\n const { execFileSync } = require(\"child_process\");\n const resolved = resolveCommand(command);\n try {\n const result = execFileSync(resolved, args, {\n cwd,\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n return { stdout: (result as string).trim(), stderr: \"\", exitCode: 0 };\n } catch (err: unknown) {\n const e = err as { stdout?: string; stderr?: string; status?: number };\n return {\n stdout: (e.stdout ?? \"\").toString().trim(),\n stderr: (e.stderr ?? \"\").toString().trim(),\n exitCode: e.status ?? 1,\n };\n }\n }\n\n async stream(command: string, args: string[] = [], options?: StreamOptions): Promise<number> {\n // In API context, always capture output\n const result = this.capture(command, args, options?.cwd);\n return result.exitCode;\n }\n\n commandExists(command: string): boolean {\n return commandExistsWithVendor(command);\n }\n}\n\n// ============================================================================\n// UI Adapter Implementation\n// ============================================================================\n\nclass APIUIAdapter implements UIAdapter {\n private response: APIResponse;\n private inputs: Record<string, unknown>;\n private fieldIndex = 0;\n\n constructor(inputs: Record<string, unknown>, response: APIResponse) {\n this.inputs = inputs;\n this.response = response;\n }\n\n intro(message: string): void {\n this.response.messages.push({ type: \"intro\", content: message });\n }\n\n note(content: string, title?: string): void {\n this.response.messages.push({ type: \"note\", content, title });\n }\n\n outro(message: string): void {\n this.response.messages.push({ type: \"outro\", content: message });\n this.response.status = \"complete\";\n }\n\n cancel(message: string): never {\n this.response.messages.push({ type: \"cancel\", content: message });\n this.response.status = \"cancelled\";\n throw new APIAdapterCancelError(message);\n }\n\n log: LogAdapter = {\n info: (message: string): void => {\n this.response.logs.push({ level: \"info\", message, timestamp: Date.now() });\n },\n step: (message: string): void => {\n this.response.logs.push({ level: \"step\", message, timestamp: Date.now() });\n },\n success: (message: string): void => {\n this.response.logs.push({ level: \"success\", message, timestamp: Date.now() });\n },\n warn: (message: string): void => {\n this.response.logs.push({ level: \"warn\", message, timestamp: Date.now() });\n },\n error: (message: string): void => {\n this.response.logs.push({ level: \"error\", message, timestamp: Date.now() });\n },\n };\n\n async text(options: TextOptions): Promise<string> {\n const fieldName = `field_${this.fieldIndex++}`;\n\n // Check if input was provided\n if (fieldName in this.inputs || options.message in this.inputs) {\n const key = fieldName in this.inputs ? fieldName : options.message;\n const value = String(this.inputs[key]);\n if (options.validate) {\n const error = options.validate(value);\n if (error) {\n throw new APIAdapterValidationError(fieldName, error);\n }\n }\n return value;\n }\n\n // No input provided \u2014 add field descriptor for client\n this.response.fields.push({\n type: \"text\",\n name: fieldName,\n message: options.message,\n placeholder: options.placeholder,\n defaultValue: options.defaultValue,\n });\n this.response.status = \"needsInput\";\n throw new APIAdapterNeedsInputError(fieldName);\n }\n\n async confirm(options: ConfirmOptions): Promise<boolean> {\n const fieldName = `field_${this.fieldIndex++}`;\n\n if (fieldName in this.inputs || options.message in this.inputs) {\n const key = fieldName in this.inputs ? fieldName : options.message;\n return Boolean(this.inputs[key]);\n }\n\n this.response.fields.push({\n type: \"confirm\",\n name: fieldName,\n message: options.message,\n defaultValue: options.initialValue,\n });\n this.response.status = \"needsInput\";\n throw new APIAdapterNeedsInputError(fieldName);\n }\n\n async select<T>(options: SelectOptions<T>): Promise<T> {\n const fieldName = `field_${this.fieldIndex++}`;\n\n if (fieldName in this.inputs || options.message in this.inputs) {\n const key = fieldName in this.inputs ? fieldName : options.message;\n return this.inputs[key] as T;\n }\n\n this.response.fields.push({\n type: \"select\",\n name: fieldName,\n message: options.message,\n options: options.options.map((o) => ({\n value: o.value as unknown,\n label: o.label,\n hint: o.hint,\n })),\n defaultValue: options.initialValue,\n });\n this.response.status = \"needsInput\";\n throw new APIAdapterNeedsInputError(fieldName);\n }\n\n async multiSelect<T>(options: MultiSelectOptions<T>): Promise<T[]> {\n const fieldName = `field_${this.fieldIndex++}`;\n\n if (fieldName in this.inputs || options.message in this.inputs) {\n const key = fieldName in this.inputs ? fieldName : options.message;\n const value = this.inputs[key];\n return Array.isArray(value) ? value : [value as T];\n }\n\n this.response.fields.push({\n type: \"multiSelect\",\n name: fieldName,\n message: options.message,\n options: options.options.map((o) => ({\n value: o.value as unknown,\n label: o.label,\n hint: o.hint,\n })),\n defaultValue: options.initialValues,\n required: options.required,\n });\n this.response.status = \"needsInput\";\n throw new APIAdapterNeedsInputError(fieldName);\n }\n\n spinner(message: string): SpinnerController {\n this.response.logs.push({ level: \"info\", message: `[spinner] ${message}`, timestamp: Date.now() });\n return {\n stop(msg?: string) {\n // No-op in API mode\n },\n message(_msg: string) {\n // No-op in API mode\n },\n };\n }\n}\n\n// ============================================================================\n// Error Types\n// ============================================================================\n\n/** Thrown when the adapter needs more input from the client */\nexport class APIAdapterNeedsInputError extends Error {\n constructor(public fieldName: string) {\n super(`Input required for field: ${fieldName}`);\n this.name = \"APIAdapterNeedsInputError\";\n }\n}\n\n/** Thrown when validation fails on a provided input */\nexport class APIAdapterValidationError extends Error {\n constructor(\n public fieldName: string,\n public validationMessage: string\n ) {\n super(`Validation failed for ${fieldName}: ${validationMessage}`);\n this.name = \"APIAdapterValidationError\";\n }\n}\n\n/** Thrown when the operation is cancelled */\nexport class APIAdapterCancelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"APIAdapterCancelError\";\n }\n}\n\n// ============================================================================\n// Runtime Adapter\n// ============================================================================\n\n/**\n * Create an API runtime adapter for HTTP request handling.\n *\n * @param inputs - Key-value pairs from the request body providing answers to wizard fields\n * @returns A tuple of [RuntimeAdapter, APIResponse] \u2014 use the response to send back to the client\n *\n * @example\n * const [adapter, response] = createAPIAdapter({ field_0: \"my-project\", field_1: \"aws\" });\n * try {\n * await initTool(adapter, {});\n * } catch (e) {\n * if (e instanceof APIAdapterNeedsInputError) {\n * // Return response.fields to client for more input\n * }\n * }\n * res.json(response);\n */\nexport function createAPIAdapter(inputs: Record<string, unknown> = {}): [RuntimeAdapter, APIResponse] {\n const response: APIResponse = {\n fields: [],\n logs: [],\n messages: [],\n status: \"complete\",\n };\n\n const adapter: RuntimeAdapter = {\n ui: new APIUIAdapter(inputs, response),\n exec: new APIExecAdapter(),\n platform: \"api\",\n };\n\n return [adapter, response];\n}\n", "/**\n * Runtime Adapters Module\n *\n * Provides platform-agnostic abstractions for UI and execution,\n * enabling the same core command logic to run in different environments.\n *\n * @example\n * import { createCLIAdapter, type RuntimeAdapter, type ToolImplementation } from './adapters';\n *\n * const myTool: ToolImplementation<{ name: string }> = async (runtime, options) => {\n * runtime.ui.intro(\"My Tool\");\n * const name = options.name || await runtime.ui.text({ message: \"Enter name:\" });\n * runtime.ui.log.success(`Hello, ${name}!`);\n * };\n *\n * // Run with CLI adapter\n * await myTool(createCLIAdapter(), { name: \"World\" });\n */\n\n// Export types\nexport type {\n RuntimeAdapter,\n UIAdapter,\n ExecAdapter,\n LogAdapter,\n ExecResult,\n TextOptions,\n ConfirmOptions,\n SelectOptions,\n SelectOption,\n MultiSelectOptions,\n SpinnerController,\n StreamOptions,\n ToolImplementation,\n ToolDefinition,\n} from \"./types\";\n\n// Export CLI adapter\nexport { createCLIAdapter, cliAdapter } from \"./cli-adapter\";\n\n// Export API adapter\nexport {\n createAPIAdapter,\n APIAdapterNeedsInputError,\n APIAdapterValidationError,\n APIAdapterCancelError,\n} from \"./api-adapter\";\nexport type { FieldDescriptor, LogEntry, APIResponse } from \"./api-adapter\";\n", "/**\n * Tools Module\n *\n * Platform-agnostic tool implementations using the RuntimeAdapter pattern.\n * Each tool is a ToolImplementation that can run with any adapter.\n *\n * @example\n * import { deployTool, createCLIAdapter } from './tools';\n *\n * // Run with CLI adapter\n * await deployTool(createCLIAdapter(), { yes: false });\n */\n\n// Export all tools\nexport { deployTool, type DeployOptions } from \"./deploy\";\nexport { statusTool, type StatusOptions } from \"./status\";\nexport { validateTool, type ValidateOptions } from \"./validate\";\nexport { destroyTool, type DestroyOptions } from \"./destroy\";\nexport { redeployTool, type RedeployOptions } from \"./redeploy\";\nexport { pushTool, type PushOptions } from \"./push\";\nexport { webhooksSetupTool, type WebhooksSetupOptions } from \"./webhooks\";\n\n// Re-export adapter types and factory for convenience\nexport {\n type RuntimeAdapter,\n type ToolImplementation,\n type ToolDefinition,\n createCLIAdapter,\n} from \"../adapters\";\n", "/**\n * clawup deploy \u2014 Deploy agents with pulumi up\n *\n * This command wraps the platform-agnostic deployTool with the CLI adapter.\n */\n\nimport { deployTool, createCLIAdapter, type DeployOptions } from \"../tools\";\n\nexport async function deployCommand(opts: DeployOptions): Promise<void> {\n await deployTool(createCLIAdapter(), opts);\n}\n", "#!/usr/bin/env node\n\n/**\n * Agent Army CLI \u2014 Entry point\n *\n * Provides interactive commands for the full agent lifecycle:\n * init, deploy, redeploy, status, ssh, validate, destroy, config\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { Command } from \"commander\";\nimport { setupGracefulShutdown } from \"./lib/process\";\nimport { initCommand } from \"./commands/init\";\nimport { deployCommand } from \"./commands/deploy\";\nimport { statusCommand } from \"./commands/status\";\nimport { sshCommand } from \"./commands/ssh\";\nimport { validateCommand } from \"./commands/validate\";\nimport { pushCommand } from \"./commands/push\";\nimport type { PushOptions } from \"./tools/push\";\nimport { destroyCommand } from \"./commands/destroy\";\nimport { listCommand } from \"./commands/list\";\nimport { updateCommand } from \"./commands/update\";\nimport { configShowCommand, configSetCommand, configMigrateCommand } from \"./commands/config\";\nimport { secretsSetCommand, secretsListCommand } from \"./commands/secrets\";\nimport { redeployCommand } from \"./commands/redeploy\";\nimport { webhooksSetupCommand } from \"./commands/webhooks\";\nimport { checkForUpdates } from \"./lib/update-check\";\n\n// Forward SIGINT/SIGTERM to child processes before exiting\nsetupGracefulShutdown();\n\n// Read version from package.json so it stays in sync with npm publish\nconst pkgJson = JSON.parse(fs.readFileSync(path.join(__dirname, \"..\", \"package.json\"), \"utf-8\"));\n\nconst program = new Command();\n\nprogram\n .name(\"clawup\")\n .description(\"Deploy and manage a fleet of OpenClaw AI agents on AWS\")\n .version(pkgJson.version);\n\nprogram\n .command(\"init\")\n .description(\"Interactive setup wizard \u2014 configure stack, secrets, and agents\")\n .option(\"--deploy\", \"Deploy immediately after init\")\n .option(\"-y, --yes\", \"Skip confirmation prompt (for deploy)\")\n .action(async (opts) => {\n await initCommand(opts);\n });\n\nprogram\n .command(\"deploy\")\n .description(\"Deploy agents with pulumi up\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await deployCommand(opts);\n });\n\nprogram\n .command(\"status\")\n .description(\"Show agent statuses from stack outputs\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await statusCommand(opts);\n });\n\nprogram\n .command(\"ssh <agent>\")\n .description(\"SSH to an agent by name or alias (juno, titus, scout)\")\n .option(\"-u, --user <user>\", \"SSH user\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .argument(\"[command...]\", \"Command to run on the agent\")\n .action(async (agent: string, commandArgs: string[], opts) => {\n await sshCommand(agent, commandArgs, opts);\n });\n\nprogram\n .command(\"validate\")\n .description(\"Health check agents via Tailscale SSH\")\n .option(\"-t, --timeout <seconds>\", \"SSH timeout in seconds\", \"30\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await validateCommand(opts);\n });\n\nprogram\n .command(\"push\")\n .description(\"Push workspace files, skills, and config to running agents\")\n .option(\"--skills\", \"Sync skills to remote workspace\")\n .option(\"--workspace\", \"Sync workspace files from identity\")\n .option(\"--memory-reset\", \"Remove remote memory/ dir and MEMORY.md\")\n .option(\"--openclaw\", \"Upgrade openclaw to latest + restart gateway\")\n .option(\"--config-push\", \"Copy local openclaw.json to remote + restart gateway\")\n .option(\"-a, --agent <name>\", \"Target a single agent (name, role, or alias)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts: PushOptions & { configPush?: boolean }) => {\n await pushCommand({\n skills: opts.skills,\n workspace: opts.workspace,\n memoryReset: opts.memoryReset,\n openclaw: opts.openclaw,\n pushConfig: opts.configPush,\n agent: opts.agent,\n config: opts.config,\n });\n });\n\nprogram\n .command(\"redeploy\")\n .description(\"Update agents in-place without destroying infrastructure\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await redeployCommand(opts);\n });\n\nprogram\n .command(\"destroy\")\n .description(\"Tear down all resources with safety confirmations\")\n .option(\"-y, --yes\", \"Skip confirmation prompts (dangerous!)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await destroyCommand(opts);\n });\n\nprogram\n .command(\"list\")\n .description(\"List all saved configs\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n await listCommand(opts);\n });\n\nconst configCmd = program\n .command(\"config\")\n .description(\"View or modify config without re-running init\");\n\nconfigCmd\n .command(\"show\")\n .description(\"Display current config\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await configShowCommand(opts);\n });\n\nconfigCmd\n .command(\"set <key> <value>\")\n .description(\"Update a config value\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .option(\"-a, --agent <name>\", \"Target a specific agent\")\n .action(async (key: string, value: string, opts) => {\n await configSetCommand(key, value, opts);\n });\n\nconfigCmd\n .command(\"migrate\")\n .description(\"Migrate plugin config files into the manifest (one-time upgrade)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await configMigrateCommand(opts);\n });\n\nconst secretsCmd = program\n .command(\"secrets\")\n .description(\"View or update Pulumi secrets without re-running init\");\n\nsecretsCmd\n .command(\"set <key> <value>\")\n .description(\"Set a secret (e.g. braveApiKey, anthropicApiKey)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .option(\"-a, --agent <role>\", \"Agent role for per-agent secrets (e.g. eng, pm, tester)\")\n .action(async (key: string, value: string, opts) => {\n await secretsSetCommand(key, value, opts);\n });\n\nsecretsCmd\n .command(\"list\")\n .description(\"Show which secrets are configured (values redacted)\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await secretsListCommand(opts);\n });\n\nconst webhooksCmd = program\n .command(\"webhooks\")\n .description(\"Manage agent webhooks\");\n\nwebhooksCmd\n .command(\"setup\")\n .description(\"Configure Linear webhooks for deployed agents\")\n .option(\"-c, --config <name>\", \"Config name (auto-detected if only one)\")\n .action(async (opts) => {\n await webhooksSetupCommand(opts);\n });\n\nprogram\n .command(\"update\")\n .description(\"Update clawup CLI to the latest version\")\n .action(async (opts) => {\n await updateCommand(opts);\n });\n\n// Fire-and-forget update check \u2014 must run before parse() because\n// Commander's --help/--version call process.exit() synchronously.\n// The cached path (no await) prints the notice before exit;\n// the stale-cache path fetches in the background for the next run.\ncheckForUpdates(pkgJson.version).catch(() => {});\n\nprogram.parse();\n", "/**\n * clawup init \u2014 Interactive setup wizard\n *\n * Identity-driven: every agent must have an identity source.\n * The manifest stores only team composition (which agents to deploy).\n * Plugins, deps, and config come from identities at deploy time.\n */\n\nimport { execSync } from \"child_process\";\nimport * as p from \"@clack/prompts\";\nimport type { AgentDefinition, ClawupManifest, IdentityManifest } from \"@clawup/core\";\nimport {\n BUILT_IN_IDENTITIES,\n PROVIDERS,\n AWS_REGIONS,\n HETZNER_LOCATIONS,\n INSTANCE_TYPES,\n hetznerServerTypes,\n COST_ESTIMATES,\n HETZNER_COST_ESTIMATES,\n KEY_INSTRUCTIONS,\n MODEL_PROVIDERS,\n slackAppManifest,\n tailscaleHostname,\n PLUGIN_REGISTRY,\n DEP_REGISTRY,\n} from \"@clawup/core\";\nimport { fetchIdentity } from \"@clawup/core/identity\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport { checkPrerequisites } from \"../lib/prerequisites\";\nimport { selectOrCreateStack, setConfig } from \"../lib/pulumi\";\nimport { saveManifest } from \"../lib/config\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { showBanner, handleCancel, exitWithError, formatCost, formatAgentList } from \"../lib/ui\";\n\ninterface InitOptions {\n deploy?: boolean;\n yes?: boolean;\n}\n\n/** Fetched identity data stored alongside the agent definition */\ninterface FetchedIdentity {\n agent: AgentDefinition;\n manifest: IdentityManifest;\n}\n\nexport async function initCommand(opts: InitOptions = {}): Promise<void> {\n showBanner();\n\n // -------------------------------------------------------------------------\n // Step 1: Check prerequisites\n // -------------------------------------------------------------------------\n p.log.step(\"Checking prerequisites...\");\n const prereqsOk = await checkPrerequisites();\n if (!prereqsOk) {\n exitWithError(\"Prerequisites not met. Please install the missing tools and try again.\");\n }\n p.log.success(\"All prerequisites satisfied!\");\n\n // -------------------------------------------------------------------------\n // Step 2: Infrastructure config\n // -------------------------------------------------------------------------\n const stackName = await p.text({\n message: \"Pulumi stack name\",\n placeholder: \"dev\",\n defaultValue: \"dev\",\n });\n handleCancel(stackName);\n\n const provider = await p.select({\n message: \"Cloud provider\",\n options: PROVIDERS.map((prov) => ({ value: prov.value, label: prov.label, hint: prov.hint })),\n initialValue: \"aws\",\n });\n handleCancel(provider);\n\n let region: string;\n let instanceType: string;\n\n if (provider === \"aws\") {\n const awsRegion = await p.select({\n message: \"AWS region\",\n options: AWS_REGIONS,\n initialValue: \"us-east-1\",\n });\n handleCancel(awsRegion);\n region = awsRegion as string;\n\n const awsInstanceType = await p.select({\n message: \"Default instance type\",\n options: INSTANCE_TYPES,\n initialValue: \"t3.medium\",\n });\n handleCancel(awsInstanceType);\n instanceType = awsInstanceType as string;\n } else {\n const hetznerLocation = await p.select({\n message: \"Hetzner location\",\n options: HETZNER_LOCATIONS,\n initialValue: \"fsn1\",\n });\n handleCancel(hetznerLocation);\n region = hetznerLocation as string;\n\n const serverTypeOptions = hetznerServerTypes(region);\n const hetznerServerType = await p.select({\n message: \"Default server type\",\n options: serverTypeOptions,\n initialValue: serverTypeOptions[0].value,\n });\n handleCancel(hetznerServerType);\n instanceType = hetznerServerType as string;\n }\n\n // -------------------------------------------------------------------------\n // Step 3: Owner info\n // -------------------------------------------------------------------------\n const ownerName = await p.text({\n message: \"Owner name (for workspace templates)\",\n placeholder: \"Boss\",\n defaultValue: \"Boss\",\n });\n handleCancel(ownerName);\n\n const timezone = await p.text({\n message: \"Your timezone\",\n placeholder: \"PST (America/Los_Angeles)\",\n defaultValue: \"PST (America/Los_Angeles)\",\n });\n handleCancel(timezone);\n\n const workingHours = await p.text({\n message: \"Your working hours\",\n placeholder: \"9am-6pm\",\n defaultValue: \"9am-6pm\",\n });\n handleCancel(workingHours);\n\n const userNotes = await p.text({\n message: \"Any notes for your agents about you? (optional)\",\n placeholder: \"e.g., Prefers concise updates, hates unnecessary meetings\",\n defaultValue: \"\",\n });\n handleCancel(userNotes);\n\n const basicConfig = {\n stackName: stackName as string,\n provider: provider as \"aws\" | \"hetzner\",\n region,\n instanceType,\n ownerName: ownerName as string,\n timezone: timezone as string,\n workingHours: workingHours as string,\n userNotes: (userNotes as string) || \"No additional notes provided yet.\",\n };\n\n // -------------------------------------------------------------------------\n // Step 4: Secrets (Anthropic, Tailscale, Hetzner)\n // -------------------------------------------------------------------------\n p.log.step(\"Configure Anthropic API key\");\n\n p.note(\n KEY_INSTRUCTIONS.anthropicApiKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.anthropicApiKey.title\n );\n\n const anthropicApiKey = await p.text({\n message: \"Anthropic API key\",\n placeholder: `${MODEL_PROVIDERS.anthropic.keyPrefix}...`,\n validate: (val) => {\n if (!val) return \"API key is required\";\n if (!val.startsWith(MODEL_PROVIDERS.anthropic.keyPrefix)) {\n return `Must start with ${MODEL_PROVIDERS.anthropic.keyPrefix}`;\n }\n },\n });\n handleCancel(anthropicApiKey);\n\n p.log.step(\"Configure infrastructure secrets\");\n\n p.note(\n KEY_INSTRUCTIONS.tailscaleAuthKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.tailscaleAuthKey.title\n );\n\n const tailscaleAuthKey = await p.password({\n message: \"Tailscale auth key\",\n validate: (val) => {\n if (!val.startsWith(\"tskey-auth-\")) return \"Must start with tskey-auth-\";\n },\n });\n handleCancel(tailscaleAuthKey);\n\n p.note(\n KEY_INSTRUCTIONS.tailnetDnsName.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.tailnetDnsName.title\n );\n\n const tailnetDnsName = await p.text({\n message: \"Tailnet DNS name\",\n placeholder: \"my-tailnet.ts.net\",\n validate: (val) => {\n if (!val.endsWith(\".ts.net\")) return \"Must end with .ts.net\";\n },\n });\n handleCancel(tailnetDnsName);\n\n p.note(\n KEY_INSTRUCTIONS.tailscaleApiKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.tailscaleApiKey.title\n );\n\n const tailscaleApiKey = await p.text({\n message: \"Tailscale API key (press Enter to skip)\",\n placeholder: \"tskey-api-... (optional)\",\n defaultValue: \"\",\n });\n handleCancel(tailscaleApiKey);\n\n let hcloudToken: string | undefined;\n if (provider === \"hetzner\") {\n p.note(\n KEY_INSTRUCTIONS.hcloudToken.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.hcloudToken.title\n );\n\n const token = await p.password({\n message: \"Hetzner Cloud API token\",\n validate: (val) => {\n if (!val) return \"API token is required for Hetzner deployments\";\n },\n });\n handleCancel(token);\n hcloudToken = token as string;\n }\n\n // -------------------------------------------------------------------------\n // Step 5: Agent selection (identity-driven, no custom mode)\n // -------------------------------------------------------------------------\n p.log.step(\"Configure agents\");\n\n const agentMode = await p.select({\n message: \"How would you like to configure agents?\",\n options: [\n { value: \"built-in\", label: \"Built-in agents\", hint: \"PM (Juno), Eng (Titus), QA (Scout)\" },\n { value: \"identity\", label: \"From identity source\", hint: \"Load from a Git URL or local path\" },\n { value: \"mix\", label: \"Mix of both\", hint: \"Pick built-in + add from identity source\" },\n ],\n });\n handleCancel(agentMode);\n\n const fetchedIdentities: FetchedIdentity[] = [];\n const identityCacheDir = path.join(os.homedir(), \".clawup\", \"identity-cache\");\n\n // Collect built-in agents\n if (agentMode === \"built-in\" || agentMode === \"mix\") {\n const selectedBuiltIns = await p.multiselect({\n message: \"Select agents\",\n options: Object.entries(BUILT_IN_IDENTITIES).map(([key, entry]) => ({\n value: key,\n label: entry.label,\n hint: entry.hint,\n })),\n required: agentMode === \"built-in\",\n });\n handleCancel(selectedBuiltIns);\n\n for (const key of selectedBuiltIns as string[]) {\n const entry = BUILT_IN_IDENTITIES[key];\n const identity = await fetchIdentity(entry.path, identityCacheDir);\n const agent: AgentDefinition = {\n name: `agent-${identity.manifest.name}`,\n displayName: identity.manifest.displayName,\n role: identity.manifest.role,\n identity: entry.path,\n volumeSize: identity.manifest.volumeSize,\n };\n fetchedIdentities.push({ agent, manifest: identity.manifest });\n }\n }\n\n // Collect identity-source agents\n if (agentMode === \"identity\" || agentMode === \"mix\") {\n let addMore = true;\n\n while (addMore) {\n const identityUrl = await p.text({\n message: \"Identity source (Git URL or local path)\",\n placeholder: \"https://github.com/org/identities#agent-name\",\n validate: (val) => {\n if (!val.trim()) return \"Identity source is required\";\n },\n });\n handleCancel(identityUrl);\n\n const spinner = p.spinner();\n spinner.start(\"Validating identity...\");\n\n try {\n const identity = await fetchIdentity(identityUrl as string, identityCacheDir);\n spinner.stop(\n `Found: ${identity.manifest.displayName} (${identity.manifest.role}) \u2014 ${identity.manifest.description}`\n );\n\n // Allow volume size override\n const volumeOverride = await p.text({\n message: `Volume size in GB (default: ${identity.manifest.volumeSize})`,\n placeholder: String(identity.manifest.volumeSize),\n defaultValue: String(identity.manifest.volumeSize),\n validate: (val) => {\n const n = parseInt(val, 10);\n if (isNaN(n) || n < 8 || n > 500) return \"Must be between 8 and 500\";\n },\n });\n handleCancel(volumeOverride);\n\n const agent: AgentDefinition = {\n name: `agent-${identity.manifest.name}`,\n displayName: identity.manifest.displayName,\n role: identity.manifest.role,\n identity: identityUrl as string,\n volumeSize: parseInt(volumeOverride as string, 10),\n };\n fetchedIdentities.push({ agent, manifest: identity.manifest });\n } catch (err) {\n spinner.stop(`Failed to validate identity: ${(err as Error).message}`);\n p.log.error(\"Please check the URL and try again.\");\n continue;\n }\n\n const more = await p.confirm({\n message: \"Add another identity-based agent?\",\n initialValue: false,\n });\n handleCancel(more);\n addMore = more as boolean;\n }\n }\n\n if (fetchedIdentities.length === 0) {\n exitWithError(\"No agents configured. At least one agent is required.\");\n }\n\n const agents = fetchedIdentities.map((fi) => fi.agent);\n\n // -------------------------------------------------------------------------\n // Step 6: Collect template variable values\n // -------------------------------------------------------------------------\n\n // Auto-fillable vars from owner info\n const autoVars: Record<string, string> = {\n OWNER_NAME: basicConfig.ownerName,\n TIMEZONE: basicConfig.timezone,\n WORKING_HOURS: basicConfig.workingHours,\n USER_NOTES: basicConfig.userNotes,\n };\n\n // Scan all identities for template vars and deduplicate\n const allTemplateVarNames = new Set<string>();\n for (const fi of fetchedIdentities) {\n for (const v of fi.manifest.templateVars ?? []) {\n allTemplateVarNames.add(v);\n }\n }\n\n const templateVars: Record<string, string> = {};\n\n // Auto-fill known vars\n for (const varName of allTemplateVarNames) {\n if (autoVars[varName]) {\n templateVars[varName] = autoVars[varName];\n }\n }\n\n // Prompt for remaining vars\n const remainingVars = [...allTemplateVarNames].filter((v) => !templateVars[v]);\n if (remainingVars.length > 0) {\n p.log.step(\"Configure template variables\");\n p.log.info(`Your agents use the following template variables: ${remainingVars.join(\", \")}`);\n\n for (const varName of remainingVars) {\n const value = await p.text({\n message: `Value for ${varName}`,\n placeholder: varName === \"LINEAR_TEAM\" ? \"e.g., ENG\" : varName === \"GITHUB_REPO\" ? \"https://github.com/org/repo\" : \"\",\n validate: (val) => {\n if (!val.trim()) return `${varName} is required`;\n },\n });\n handleCancel(value);\n templateVars[varName] = value as string;\n }\n }\n\n // -------------------------------------------------------------------------\n // Step 7: Collect integration credentials (driven by identity plugins/deps)\n // -------------------------------------------------------------------------\n p.log.step(\"Configure integrations\");\n\n // Determine which plugins and deps are needed across all identities\n const agentPlugins = new Map<string, Set<string>>(); // agent name \u2192 plugin names\n const agentDeps = new Map<string, Set<string>>(); // agent name \u2192 dep names\n const allPluginNames = new Set<string>();\n const allDepNames = new Set<string>();\n\n for (const fi of fetchedIdentities) {\n const plugins = new Set(fi.manifest.plugins ?? []);\n const deps = new Set(fi.manifest.deps ?? []);\n agentPlugins.set(fi.agent.name, plugins);\n agentDeps.set(fi.agent.name, deps);\n for (const pl of plugins) allPluginNames.add(pl);\n for (const d of deps) allDepNames.add(d);\n }\n\n // Track identity pluginDefaults per agent name for seeding plugin config files\n const identityPluginDefaults: Record<string, Record<string, Record<string, unknown>>> = {};\n for (const fi of fetchedIdentities) {\n if (fi.manifest.pluginDefaults) {\n identityPluginDefaults[fi.agent.name] = fi.manifest.pluginDefaults;\n }\n }\n\n // Per-agent integration credentials\n const integrationCredentials: Record<string, {\n linearApiKey?: string;\n linearWebhookSecret?: string;\n linearUserUuid?: string;\n githubToken?: string;\n }> = {};\n for (const agent of agents) {\n integrationCredentials[agent.role] = {};\n }\n\n // Slack credentials \u2014 only if any identity has the slack plugin\n const slackCredentials: Record<string, { botToken: string; appToken: string }> = {};\n if (allPluginNames.has(\"slack\")) {\n p.note(\n KEY_INSTRUCTIONS.slackCredentials.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.slackCredentials.title\n );\n\n for (const fi of fetchedIdentities) {\n if (!agentPlugins.get(fi.agent.name)?.has(\"slack\")) continue;\n\n const slackManifest = slackAppManifest(fi.agent.displayName);\n try {\n execSync(\n process.platform === \"darwin\" ? \"pbcopy\" : \"xclip -selection clipboard\",\n { input: slackManifest },\n );\n p.log.success(`Slack manifest for ${fi.agent.displayName} copied to clipboard \u2014 paste it into Slack`);\n } catch {\n p.log.warn(`Could not copy to clipboard. Manifest for ${fi.agent.displayName}:`);\n console.log(slackManifest);\n }\n\n const botToken = await p.password({\n message: `Slack Bot Token for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val.startsWith(\"xoxb-\")) return \"Must start with xoxb-\";\n },\n });\n handleCancel(botToken);\n\n const appToken = await p.password({\n message: `Slack App Token for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val.startsWith(\"xapp-\")) return \"Must start with xapp-\";\n },\n });\n handleCancel(appToken);\n\n slackCredentials[fi.agent.role] = {\n botToken: botToken as string,\n appToken: appToken as string,\n };\n }\n }\n\n // Linear credentials \u2014 only if any identity has the openclaw-linear plugin\n if (allPluginNames.has(\"openclaw-linear\")) {\n p.note(\n KEY_INSTRUCTIONS.linearApiKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.linearApiKey.title\n );\n\n const linearAgents = fetchedIdentities.filter(\n (fi) => agentPlugins.get(fi.agent.name)?.has(\"openclaw-linear\")\n );\n\n for (const fi of linearAgents) {\n const linearKey = await p.password({\n message: `Linear API key for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val.startsWith(\"lin_api_\")) return \"Must start with lin_api_\";\n },\n });\n handleCancel(linearKey);\n\n integrationCredentials[fi.agent.role].linearApiKey = linearKey as string;\n\n // Auto-fetch user UUID from Linear API\n const s = p.spinner();\n s.start(`Fetching Linear user ID for ${fi.agent.displayName}...`);\n try {\n const res = await fetch(\"https://api.linear.app/graphql\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: linearKey as string,\n },\n body: JSON.stringify({ query: \"{ viewer { id } }\" }),\n });\n const data = (await res.json()) as { data?: { viewer?: { id?: string } } };\n const uuid = data?.data?.viewer?.id;\n if (!uuid) throw new Error(\"No user ID in response\");\n integrationCredentials[fi.agent.role].linearUserUuid = uuid;\n s.stop(`${fi.agent.displayName}: ${uuid}`);\n } catch (err) {\n s.stop(`Could not fetch Linear user ID for ${fi.agent.displayName}`);\n p.log.warn(`${err instanceof Error ? err.message : String(err)}`);\n const linearUserUuid = await p.text({\n message: `Enter Linear user UUID manually for ${fi.agent.displayName}`,\n placeholder: \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n validate: (val) => {\n if (!val) return \"Linear user UUID is required\";\n if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(val)) {\n return \"Must be a valid UUID format\";\n }\n },\n });\n handleCancel(linearUserUuid);\n integrationCredentials[fi.agent.role].linearUserUuid = linearUserUuid as string;\n }\n }\n\n // Linear webhook signing secrets\n p.note(\n [\n \"Create a webhook in Linear for each agent:\",\n \"1. Go to Settings \u2192 API \u2192 Webhooks \u2192 \\\"New webhook\\\"\",\n \"2. Paste the webhook URL shown below for each agent\",\n \"3. Select events to receive (e.g., Issues, Comments)\",\n \"4. Copy the \\\"Signing secret\\\" shown after creating the webhook\",\n ].join(\"\\n\"),\n \"Linear Webhook Setup\"\n );\n\n for (const fi of linearAgents) {\n const webhookUrl = `https://${tailscaleHostname(basicConfig.stackName, fi.agent.name)}.${tailnetDnsName as string}/hooks/linear`;\n\n p.log.info(`${fi.agent.displayName} (${fi.agent.role}): ${webhookUrl}`);\n\n const webhookSecretInput = await p.password({\n message: `Signing secret for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val) return \"Webhook signing secret is required\";\n },\n });\n handleCancel(webhookSecretInput);\n\n integrationCredentials[fi.agent.role].linearWebhookSecret = webhookSecretInput as string;\n }\n }\n\n // GitHub token \u2014 only if any identity has the gh dep\n if (allDepNames.has(\"gh\")) {\n p.note(\n KEY_INSTRUCTIONS.githubToken.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.githubToken.title\n );\n\n for (const fi of fetchedIdentities) {\n if (!agentDeps.get(fi.agent.name)?.has(\"gh\")) continue;\n\n const githubKey = await p.password({\n message: `GitHub token for ${fi.agent.displayName} (${fi.agent.role})`,\n validate: (val) => {\n if (!val.startsWith(\"ghp_\") && !val.startsWith(\"github_pat_\")) {\n return \"Must start with ghp_ or github_pat_\";\n }\n },\n });\n handleCancel(githubKey);\n\n integrationCredentials[fi.agent.role].githubToken = githubKey as string;\n }\n }\n\n // Brave Search API key \u2014 only if any identity has the brave-search dep (global, once)\n let braveApiKey: string | undefined;\n if (allDepNames.has(\"brave-search\")) {\n p.note(\n KEY_INSTRUCTIONS.braveApiKey.steps.join(\"\\n\"),\n KEY_INSTRUCTIONS.braveApiKey.title\n );\n\n const braveKey = await p.password({\n message: \"Brave Search API key\",\n validate: (val) => {\n if (!val) return \"API key is required\";\n },\n });\n handleCancel(braveKey);\n braveApiKey = braveKey as string;\n }\n\n // -------------------------------------------------------------------------\n // Step 8: Summary\n // -------------------------------------------------------------------------\n const costEstimates = basicConfig.provider === \"aws\" ? COST_ESTIMATES : HETZNER_COST_ESTIMATES;\n const costPerAgent = costEstimates[basicConfig.instanceType] ?? 30;\n const totalCost = agents.reduce((sum, a) => {\n const agentCost = costEstimates[a.instanceType ?? basicConfig.instanceType] ?? costPerAgent;\n return sum + agentCost;\n }, 0);\n\n const integrationNames: string[] = [];\n if (allPluginNames.has(\"openclaw-linear\")) integrationNames.push(\"Linear\");\n if (allPluginNames.has(\"slack\")) integrationNames.push(\"Slack\");\n if (allDepNames.has(\"gh\")) integrationNames.push(\"GitHub CLI\");\n if (allDepNames.has(\"brave-search\")) integrationNames.push(\"Brave Search\");\n\n const providerLabel = basicConfig.provider === \"aws\" ? \"AWS\" : \"Hetzner\";\n const regionLabel = basicConfig.provider === \"aws\" ? \"Region\" : \"Location\";\n\n // Build template vars display (excluding auto-filled owner vars)\n const customVarEntries = Object.entries(templateVars).filter(\n ([k]) => !autoVars[k]\n );\n\n const summaryLines = [\n `Stack: ${basicConfig.stackName}`,\n `Provider: ${providerLabel}`,\n `${regionLabel.padEnd(14, \" \")} ${basicConfig.region}`,\n `Instance type: ${basicConfig.instanceType}`,\n `Owner: ${basicConfig.ownerName}`,\n `Timezone: ${basicConfig.timezone}`,\n `Working hours: ${basicConfig.workingHours}`,\n ];\n if (customVarEntries.length > 0) {\n for (const [k, v] of customVarEntries) {\n summaryLines.push(`${k.padEnd(14, \" \")} ${v}`);\n }\n }\n if (integrationNames.length > 0) {\n summaryLines.push(`Integrations: ${integrationNames.join(\", \")}`);\n }\n summaryLines.push(\n ``,\n `Agents (${agents.length}):`,\n formatAgentList(agents),\n ``,\n `Estimated cost: ${formatCost(totalCost)}`\n );\n\n p.note(summaryLines.join(\"\\n\"), \"Deployment Summary\");\n\n // -------------------------------------------------------------------------\n // Step 9: Confirm\n // -------------------------------------------------------------------------\n const confirmed = await p.confirm({\n message: \"Proceed with setup?\",\n });\n handleCancel(confirmed);\n if (!confirmed) {\n p.cancel(\"Setup cancelled.\");\n process.exit(0);\n }\n\n // -------------------------------------------------------------------------\n // Step 10: Execute setup\n // -------------------------------------------------------------------------\n const s = p.spinner();\n\n // Set up workspace\n s.start(\"Setting up workspace...\");\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n s.stop(\"Failed to set up workspace\");\n exitWithError(wsResult.error ?? \"Failed to set up workspace.\");\n }\n s.stop(\"Workspace ready\");\n const cwd = getWorkspaceDir();\n\n // Select/create stack\n s.start(\"Selecting Pulumi stack...\");\n const stackResult = selectOrCreateStack(basicConfig.stackName, cwd);\n if (!stackResult.ok) {\n s.stop(\"Failed to select/create stack\");\n if (stackResult.error) p.log.error(stackResult.error);\n exitWithError(`Could not select or create Pulumi stack \"${basicConfig.stackName}\".`);\n }\n s.stop(\"Pulumi stack ready\");\n\n // Set Pulumi config\n s.start(\"Setting Pulumi configuration...\");\n setConfig(\"provider\", basicConfig.provider, false, cwd);\n if (basicConfig.provider === \"aws\") {\n setConfig(\"aws:region\", basicConfig.region, false, cwd);\n } else {\n setConfig(\"hetzner:location\", basicConfig.region, false, cwd);\n if (hcloudToken) {\n setConfig(\"hcloud:token\", hcloudToken, true, cwd);\n }\n }\n setConfig(\"anthropicApiKey\", anthropicApiKey as string, true, cwd);\n setConfig(\"tailscaleAuthKey\", tailscaleAuthKey as string, true, cwd);\n setConfig(\"tailnetDnsName\", tailnetDnsName as string, false, cwd);\n if (tailscaleApiKey) {\n setConfig(\"tailscaleApiKey\", tailscaleApiKey as string, true, cwd);\n }\n setConfig(\"instanceType\", basicConfig.instanceType, false, cwd);\n setConfig(\"ownerName\", basicConfig.ownerName, false, cwd);\n setConfig(\"timezone\", basicConfig.timezone, false, cwd);\n setConfig(\"workingHours\", basicConfig.workingHours, false, cwd);\n setConfig(\"userNotes\", basicConfig.userNotes, false, cwd);\n\n // Set per-agent integration credentials\n for (const [role, creds] of Object.entries(integrationCredentials)) {\n if (creds.linearApiKey) setConfig(`${role}LinearApiKey`, creds.linearApiKey, true, cwd);\n if (creds.linearWebhookSecret) setConfig(`${role}LinearWebhookSecret`, creds.linearWebhookSecret, true, cwd);\n if (creds.linearUserUuid) setConfig(`${role}LinearUserUuid`, creds.linearUserUuid, false, cwd);\n if (creds.githubToken) setConfig(`${role}GithubToken`, creds.githubToken, true, cwd);\n }\n // Set per-agent Slack credentials\n for (const [role, creds] of Object.entries(slackCredentials)) {\n setConfig(`${role}SlackBotToken`, creds.botToken, true, cwd);\n setConfig(`${role}SlackAppToken`, creds.appToken, true, cwd);\n }\n if (braveApiKey) setConfig(\"braveApiKey\", braveApiKey, true, cwd);\n s.stop(\"Configuration saved\");\n\n // Write manifest\n const configName = basicConfig.stackName;\n s.start(`Writing config to ~/.clawup/configs/${configName}.yaml...`);\n\n // Only include non-auto template vars in manifest (owner vars are derived at deploy time)\n const manifestTemplateVars: Record<string, string> = {};\n for (const [k, v] of Object.entries(templateVars)) {\n if (!autoVars[k]) {\n manifestTemplateVars[k] = v;\n }\n }\n\n const manifest: ClawupManifest = {\n stackName: configName,\n provider: basicConfig.provider,\n region: basicConfig.region,\n instanceType: basicConfig.instanceType,\n ownerName: basicConfig.ownerName,\n timezone: basicConfig.timezone,\n workingHours: basicConfig.workingHours,\n userNotes: basicConfig.userNotes,\n templateVars: Object.keys(manifestTemplateVars).length > 0 ? manifestTemplateVars : undefined,\n agents,\n };\n // Inline plugin config into each agent definition\n for (const fi of fetchedIdentities) {\n const rolePlugins = agentPlugins.get(fi.agent.name);\n if (!rolePlugins || rolePlugins.size === 0) continue;\n\n const inlinePlugins: Record<string, Record<string, unknown>> = {};\n const defaults = identityPluginDefaults[fi.agent.name] ?? {};\n\n for (const pluginName of rolePlugins) {\n const pluginDefaults = defaults[pluginName] ?? {};\n const agentConfig: Record<string, unknown> = {\n ...pluginDefaults,\n agentId: fi.agent.name,\n };\n\n // Layer on user-provided config\n if (pluginName === \"openclaw-linear\") {\n const creds = integrationCredentials[fi.agent.role];\n if (creds?.linearUserUuid) {\n agentConfig.linearUserUuid = creds.linearUserUuid;\n }\n }\n\n inlinePlugins[pluginName] = agentConfig;\n }\n\n if (Object.keys(inlinePlugins).length > 0) {\n fi.agent.plugins = inlinePlugins;\n }\n }\n\n saveManifest(configName, manifest);\n s.stop(\"Config saved\");\n\n if (opts.deploy) {\n p.log.success(\"Config saved! Starting deployment...\\n\");\n const { deployCommand } = await import(\"./deploy.js\");\n await deployCommand({ config: configName, yes: opts.yes });\n } else {\n p.outro(\"Setup complete! Run `clawup deploy` to deploy your agents.\");\n }\n}\n", "/**\n * Prerequisite checking for CLI\n */\n\nimport * as p from \"@clack/prompts\";\nimport type { PrereqResult } from \"@clawup/core\";\nimport { commandExists, capture } from \"./exec\";\nimport { isVendored } from \"./vendor\";\nimport { isDevMode } from \"./workspace\";\nimport { isTailscaleInstalled } from \"./tailscale\";\n\n/**\n * Run all prerequisite checks and display results.\n * Returns true if all pass, false otherwise.\n */\nexport async function checkPrerequisites(): Promise<boolean> {\n const results: PrereqResult[] = [];\n\n // Pulumi CLI\n if (commandExists(\"pulumi\")) {\n const ver = capture(\"pulumi\", [\"version\"]);\n const source = isVendored(\"pulumi\") ? \"vendored\" : \"system\";\n results.push({ name: \"Pulumi\", ok: true, message: `found (${ver.stdout}, ${source})` });\n } else {\n results.push({\n name: \"Pulumi\",\n ok: false,\n message: \"not found\",\n hint: \"Install from https://www.pulumi.com/docs/iac/download-install/ or run `npm install` to vendor automatically\",\n });\n }\n\n // Node.js 18+\n if (commandExists(\"node\")) {\n const ver = capture(\"node\", [\"-v\"]);\n const major = parseInt(ver.stdout.replace(\"v\", \"\").split(\".\")[0], 10);\n if (major >= 18) {\n results.push({ name: \"Node.js\", ok: true, message: `${ver.stdout} (>= 18 required)` });\n } else {\n results.push({\n name: \"Node.js\",\n ok: false,\n message: `${ver.stdout} is too old`,\n hint: \"Requires Node.js 18+. Install from https://nodejs.org/\",\n });\n }\n } else {\n results.push({\n name: \"Node.js\",\n ok: false,\n message: \"not found\",\n hint: \"Install from https://nodejs.org/\",\n });\n }\n\n // AWS CLI\n if (commandExists(\"aws\")) {\n const source = isVendored(\"aws\") ? \"vendored\" : \"system\";\n results.push({ name: \"AWS CLI\", ok: true, message: `found (${source})` });\n } else {\n results.push({\n name: \"AWS CLI\",\n ok: false,\n message: \"not found\",\n hint: \"Install from https://aws.amazon.com/cli/ or run `npm install` to vendor automatically\",\n });\n }\n\n // Tailscale\n if (isTailscaleInstalled()) {\n results.push({ name: \"Tailscale\", ok: true, message: \"found\" });\n } else {\n const hint =\n process.platform === \"darwin\"\n ? \"Install from the Mac App Store or https://tailscale.com/download\"\n : \"Install from https://tailscale.com/download\";\n results.push({\n name: \"Tailscale\",\n ok: false,\n message: \"not found\",\n hint,\n });\n }\n\n // pnpm (only required in dev mode \u2014 installed mode uses npm in the workspace)\n if (isDevMode()) {\n if (commandExists(\"pnpm\")) {\n results.push({ name: \"pnpm\", ok: true, message: \"found\" });\n } else {\n results.push({\n name: \"pnpm\",\n ok: false,\n message: \"not found\",\n hint: \"Install with: npm install -g pnpm\",\n });\n }\n }\n\n // Display results\n const allOk = results.every((r) => r.ok);\n\n for (const r of results) {\n if (r.ok) {\n p.log.success(`${r.name}: ${r.message}`);\n } else {\n p.log.error(`${r.name}: ${r.message}`);\n if (r.hint) {\n p.log.message(` ${r.hint}`);\n }\n }\n }\n\n return allOk;\n}\n", "/**\n * clawup status \u2014 Show agent statuses from stack outputs\n *\n * This command wraps the platform-agnostic statusTool with the CLI adapter.\n */\n\nimport { statusTool, createCLIAdapter, type StatusOptions } from \"../tools\";\n\nexport async function statusCommand(opts: StatusOptions): Promise<void> {\n await statusTool(createCLIAdapter(), opts);\n}\n", "/**\n * clawup ssh \u2014 SSH to agent by name/alias\n */\n\nimport * as p from \"@clack/prompts\";\nimport { loadManifest, resolveConfigName } from \"../lib/config\";\nimport { getConfig, selectOrCreateStack } from \"../lib/pulumi\";\nimport { AGENT_ALIASES, SSH_USER, tailscaleHostname } from \"@clawup/core\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport { showBanner, exitWithError } from \"../lib/ui\";\nimport { requireTailscale } from \"../lib/tailscale\";\nimport { spawn } from \"child_process\";\n\ninterface SshOptions {\n user?: string;\n config?: string;\n}\n\nexport async function sshCommand(agentNameOrAlias: string, commandArgs: string[], opts: SshOptions): Promise<void> {\n requireTailscale();\n\n // Ensure workspace is set up (no-op in dev mode)\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n exitWithError(wsResult.error ?? \"Failed to set up workspace.\");\n }\n const cwd = getWorkspaceDir();\n\n // Resolve config name\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n exitWithError((err as Error).message);\n }\n\n // Load manifest\n const manifest = loadManifest(configName);\n if (!manifest) {\n exitWithError(`Config '${configName}' could not be loaded.`);\n }\n\n // Select stack\n const stackResult = selectOrCreateStack(manifest.stackName, cwd);\n if (!stackResult.ok) {\n exitWithError(`Could not select Pulumi stack \"${manifest.stackName}\".`);\n }\n\n // Resolve agent name/alias\n const query = agentNameOrAlias.toLowerCase();\n const resolvedRole = AGENT_ALIASES[query] ?? query;\n\n // Find agent in manifest\n const agent = manifest.agents.find(\n (a) =>\n a.role === resolvedRole ||\n a.name === query ||\n a.name === `agent-${query}` ||\n a.displayName.toLowerCase() === query\n );\n\n if (!agent) {\n const validNames = manifest.agents\n .map((a) => `${a.role}, ${a.displayName.toLowerCase()}, ${a.name}`)\n .join(\"\\n \");\n exitWithError(\n `Unknown agent: \"${agentNameOrAlias}\"\\nValid identifiers (any of these work):\\n ${validNames}`\n );\n }\n\n // Get tailnet DNS name\n const tailnetDnsName = getConfig(\"tailnetDnsName\", cwd);\n if (!tailnetDnsName) {\n exitWithError(\"Could not determine tailnet DNS name from Pulumi config.\");\n }\n\n const tsHost = tailscaleHostname(manifest.stackName, agent.name);\n const sshHost = `${tsHost}.${tailnetDnsName}`;\n const user = opts.user ?? SSH_USER;\n\n p.log.info(`Connecting to ${agent.displayName} (${sshHost})...`);\n\n // Build SSH command\n const sshArgs = [\"-o\", \"StrictHostKeyChecking=no\", \"-o\", \"UserKnownHostsFile=/dev/null\", `${user}@${sshHost}`];\n\n if (commandArgs.length > 0) {\n sshArgs.push(commandArgs.join(\" \"));\n }\n\n // Spawn interactive SSH\n const child = spawn(\"ssh\", sshArgs, { stdio: \"inherit\" });\n child.on(\"close\", (code) => {\n process.exit(code ?? 0);\n });\n}\n", "/**\n * clawup validate \u2014 Health check agents via Tailscale SSH\n *\n * This command wraps the platform-agnostic validateTool with the CLI adapter.\n */\n\nimport { validateTool, createCLIAdapter, type ValidateOptions } from \"../tools\";\n\nexport async function validateCommand(opts: ValidateOptions): Promise<void> {\n await validateTool(createCLIAdapter(), opts);\n}\n", "/**\n * clawup push \u2014 Live-update running agents via Tailscale SSH\n *\n * This command wraps the platform-agnostic pushTool with the CLI adapter.\n */\n\nimport { pushTool, createCLIAdapter, type PushOptions } from \"../tools\";\nimport { exitWithError } from \"../lib/ui\";\n\nexport async function pushCommand(opts: PushOptions): Promise<void> {\n try {\n await pushTool(createCLIAdapter(), opts);\n } catch (err) {\n exitWithError(err instanceof Error ? err.message : String(err));\n }\n}\n", "/**\n * clawup destroy \u2014 Tear down resources with safety confirmations\n *\n * This command wraps the platform-agnostic destroyTool with the CLI adapter.\n */\n\nimport { destroyTool, createCLIAdapter, type DestroyOptions } from \"../tools\";\n\nexport async function destroyCommand(opts: DestroyOptions): Promise<void> {\n await destroyTool(createCLIAdapter(), opts);\n}\n", "/**\n * List all saved configs in a table\n */\n\nimport { listManifests, loadManifest, configPath } from \"../lib/config\";\n\ninterface ListOptions {\n json?: boolean;\n}\n\nexport async function listCommand(opts: ListOptions): Promise<void> {\n const configs = listManifests();\n\n if (configs.length === 0) {\n console.log(\"No configs found. Run 'clawup init' to create one.\");\n return;\n }\n\n const data = configs.map((name) => {\n const manifest = loadManifest(name);\n return {\n name,\n agents: manifest?.agents.length ?? 0,\n region: manifest?.region ?? \"-\",\n stack: manifest?.stackName ?? \"-\",\n path: configPath(name),\n };\n });\n\n if (opts.json) {\n console.log(JSON.stringify(data, null, 2));\n return;\n }\n\n // Calculate column widths\n const nameWidth = Math.max(6, ...data.map((d) => d.name.length));\n const agentsWidth = 6;\n const regionWidth = Math.max(6, ...data.map((d) => d.region.length));\n const stackWidth = Math.max(5, ...data.map((d) => d.stack.length));\n\n // Print header\n console.log(\n `${\"NAME\".padEnd(nameWidth)} ${\"AGENTS\".padEnd(agentsWidth)} ${\"REGION\".padEnd(regionWidth)} ${\"STACK\".padEnd(stackWidth)}`\n );\n console.log(\n `${\"-\".repeat(nameWidth)} ${\"-\".repeat(agentsWidth)} ${\"-\".repeat(regionWidth)} ${\"-\".repeat(stackWidth)}`\n );\n\n // Print rows\n for (const row of data) {\n console.log(\n `${row.name.padEnd(nameWidth)} ${String(row.agents).padEnd(agentsWidth)} ${row.region.padEnd(regionWidth)} ${row.stack.padEnd(stackWidth)}`\n );\n }\n\n console.log(`\\n${data.length} config(s) found`);\n}\n", "/**\n * Update the clawup CLI to the latest version\n */\n\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { stream } from \"../lib/exec\";\n\ninterface UpdateOptions {\n // reserved for future flags\n}\n\nexport async function updateCommand(_opts: UpdateOptions): Promise<void> {\n p.intro(pc.bgCyan(pc.black(\" Agent Army \u2014 Update \")));\n\n const s = p.spinner();\n s.start(\"Checking npm for latest version\u2026\");\n\n // Fetch latest version info\n const { default: https } = await import(\"https\");\n const latest = await new Promise<string | null>((resolve) => {\n const req = https.get(\n \"https://registry.npmjs.org/clawup/latest\",\n { timeout: 5000 },\n (res) => {\n let data = \"\";\n res.on(\"data\", (chunk: Buffer) => (data += chunk));\n res.on(\"end\", () => {\n try {\n resolve(JSON.parse(data).version ?? null);\n } catch {\n resolve(null);\n }\n });\n }\n );\n req.on(\"timeout\", () => { req.destroy(); resolve(null); });\n req.on(\"error\", () => resolve(null));\n });\n\n if (!latest) {\n s.stop(\"Failed to reach npm registry\");\n p.log.error(\"Could not check for updates. Check your internet connection.\");\n process.exit(1);\n }\n\n // Read current version (go up two levels: dist/commands/ \u2192 dist/ \u2192 cli/)\n const fs = await import(\"fs\");\n const path = await import(\"path\");\n const pkgJson = JSON.parse(\n fs.readFileSync(path.join(__dirname, \"..\", \"..\", \"package.json\"), \"utf-8\")\n );\n const current: string = pkgJson.version;\n\n s.stop(`Current: ${pc.dim(current)} Latest: ${pc.green(latest)}`);\n\n // Compare versions\n const cParts = current.split(\".\").map(Number);\n const lParts = latest.split(\".\").map(Number);\n let isOutdated = false;\n for (let i = 0; i < 3; i++) {\n if ((lParts[i] ?? 0) > (cParts[i] ?? 0)) { isOutdated = true; break; }\n if ((lParts[i] ?? 0) < (cParts[i] ?? 0)) break;\n }\n\n if (!isOutdated) {\n p.log.success(\"You're already on the latest version!\");\n p.outro(\"Done\");\n return;\n }\n\n p.log.step(`Updating ${pc.dim(current)} \u2192 ${pc.green(latest)}`);\n console.log();\n\n // Retry logic: npm registry metadata can propagate before the tarball is\n // available on the CDN, causing ETARGET errors on freshly-published versions.\n const MAX_RETRIES = 3;\n const RETRY_DELAY_MS = 10_000;\n let exitCode = 1;\n\n for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\n exitCode = await stream(\"npm\", [\"install\", \"-g\", `clawup@${latest}`]);\n if (exitCode === 0) break;\n\n if (attempt < MAX_RETRIES) {\n console.log();\n p.log.warn(\n `Install failed (attempt ${attempt}/${MAX_RETRIES}). ` +\n `Retrying in ${RETRY_DELAY_MS / 1000}s \u2014 the new version may still be propagating\u2026`\n );\n await new Promise((r) => setTimeout(r, RETRY_DELAY_MS));\n console.log();\n }\n }\n\n console.log();\n if (exitCode === 0) {\n p.log.success(`Updated to ${pc.green(latest)}`);\n } else {\n p.log.error(\"Update failed. You may need to run with sudo:\");\n p.log.message(` sudo npm install -g clawup@${latest}`);\n process.exit(1);\n }\n\n p.outro(\"Done\");\n}\n", "/**\n * clawup config \u2014 View and modify config without re-running init\n *\n * Subcommands:\n * show \u2014 Display current config\n * set \u2014 Update a config value\n */\n\nimport * as process from \"process\";\nimport YAML from \"yaml\";\nimport * as fs from \"fs\";\nimport {\n loadManifest,\n saveManifest,\n resolveConfigName,\n pluginsDir,\n loadPluginConfig,\n} from \"../lib/config\";\nimport {\n AWS_REGIONS,\n HETZNER_LOCATIONS,\n INSTANCE_TYPES,\n HETZNER_SERVER_TYPES_EU,\n HETZNER_SERVER_TYPES_US,\n hetznerServerTypes,\n} from \"@clawup/core\";\nimport type { ClawupManifest, AgentDefinition } from \"@clawup/core\";\nimport pc from \"picocolors\";\n\n// ---------------------------------------------------------------------------\n// Validation helpers\n// ---------------------------------------------------------------------------\n\n/** Top-level manifest keys that can be set */\nconst SETTABLE_TOP_KEYS = [\n \"region\",\n \"instanceType\",\n \"ownerName\",\n \"timezone\",\n \"workingHours\",\n \"userNotes\",\n] as const;\n\ntype SettableTopKey = (typeof SETTABLE_TOP_KEYS)[number];\n\n/** Per-agent keys that can be set */\nconst SETTABLE_AGENT_KEYS = [\n \"instanceType\",\n \"volumeSize\",\n \"displayName\",\n] as const;\n\ntype SettableAgentKey = (typeof SETTABLE_AGENT_KEYS)[number];\n\nfunction isSettableTopKey(key: string): key is SettableTopKey {\n return (SETTABLE_TOP_KEYS as readonly string[]).includes(key);\n}\n\nfunction isSettableAgentKey(key: string): key is SettableAgentKey {\n return (SETTABLE_AGENT_KEYS as readonly string[]).includes(key);\n}\n\nfunction allRegionValues(provider: string): string[] {\n if (provider === \"hetzner\") return HETZNER_LOCATIONS.map((r) => r.value);\n return AWS_REGIONS.map((r) => r.value);\n}\n\nfunction allInstanceTypeValues(provider: string, region?: string): string[] {\n if (provider === \"hetzner\") {\n const types = region ? hetznerServerTypes(region) : [...HETZNER_SERVER_TYPES_EU, ...HETZNER_SERVER_TYPES_US];\n return types.map((t) => t.value);\n }\n return INSTANCE_TYPES.map((t) => t.value);\n}\n\nfunction validateTopValue(\n manifest: ClawupManifest,\n key: SettableTopKey,\n value: string\n): string | null {\n const provider = manifest.provider ?? \"aws\";\n\n if (key === \"region\") {\n const valid = allRegionValues(provider);\n if (!valid.includes(value)) {\n return `Invalid region '${value}' for provider '${provider}'. Valid options:\\n ${valid.join(\"\\n \")}`;\n }\n // Cross-validate: check if current instanceType is valid for the new region\n if (provider === \"hetzner\" && manifest.instanceType) {\n const validTypes = allInstanceTypeValues(provider, value);\n if (!validTypes.includes(manifest.instanceType)) {\n return `Region '${value}' is not compatible with current instanceType '${manifest.instanceType}'.\\nUpdate instanceType first, or set both:\\n clawup config set instanceType <type>\\n clawup config set region ${value}`;\n }\n }\n }\n\n if (key === \"instanceType\") {\n const valid = allInstanceTypeValues(provider, manifest.region);\n if (!valid.includes(value)) {\n return `Invalid instanceType '${value}' for provider '${provider}'. Valid options:\\n ${valid.join(\"\\n \")}`;\n }\n }\n\n return null;\n}\n\nfunction validateAgentValue(\n manifest: ClawupManifest,\n key: SettableAgentKey,\n value: string\n): string | null {\n if (key === \"instanceType\") {\n const provider = manifest.provider ?? \"aws\";\n const valid = allInstanceTypeValues(provider, manifest.region);\n if (!valid.includes(value)) {\n return `Invalid instanceType '${value}' for provider '${provider}'. Valid options:\\n ${valid.join(\"\\n \")}`;\n }\n }\n\n if (key === \"volumeSize\") {\n const num = Number(value);\n if (isNaN(num) || num < 8 || num > 1000) {\n return `volumeSize must be a number between 8 and 1000 (GB). Got: '${value}'`;\n }\n }\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Show\n// ---------------------------------------------------------------------------\n\nexport interface ConfigShowOptions {\n json?: boolean;\n config?: string;\n}\n\nexport async function configShowCommand(opts: ConfigShowOptions): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n if (opts.json) {\n console.log(YAML.stringify(manifest).trimEnd());\n return;\n }\n\n // Human-readable output\n console.log();\n console.log(pc.bold(`Config: ${configName}`));\n console.log();\n console.log(` Stack: ${manifest.stackName}`);\n console.log(` Provider: ${manifest.provider ?? \"aws\"}`);\n console.log(` Region: ${manifest.region}`);\n console.log(` Instance Type: ${manifest.instanceType}`);\n console.log(` Owner: ${manifest.ownerName}`);\n if (manifest.timezone) console.log(` Timezone: ${manifest.timezone}`);\n if (manifest.workingHours) console.log(` Working Hours: ${manifest.workingHours}`);\n if (manifest.userNotes) console.log(` User Notes: ${manifest.userNotes}`);\n\n if (manifest.templateVars && Object.keys(manifest.templateVars).length > 0) {\n console.log();\n console.log(pc.bold(\"Template Variables:\"));\n for (const [key, value] of Object.entries(manifest.templateVars)) {\n console.log(` ${key}: ${value}`);\n }\n }\n\n console.log();\n console.log(pc.bold(`Agents (${manifest.agents.length}):`));\n for (const agent of manifest.agents) {\n const override = agent.instanceType ? ` [${agent.instanceType}]` : \"\";\n console.log(` ${pc.bold(agent.displayName)} (${agent.role}) vol:${agent.volumeSize}GB${override}`);\n console.log(` identity: ${agent.identity}`);\n }\n console.log();\n}\n\n// ---------------------------------------------------------------------------\n// Set\n// ---------------------------------------------------------------------------\n\nexport interface ConfigSetOptions {\n config?: string;\n agent?: string;\n}\n\nexport async function configSetCommand(\n key: string,\n value: string,\n opts: ConfigSetOptions\n): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n if (opts.agent) {\n // Per-agent set\n if (!isSettableAgentKey(key)) {\n console.error(pc.red(`Invalid per-agent key '${key}'. Valid keys:\\n ${SETTABLE_AGENT_KEYS.join(\"\\n \")}`));\n process.exit(1);\n }\n\n const agent = manifest.agents.find(\n (a) => a.name === opts.agent || a.displayName.toLowerCase() === opts.agent!.toLowerCase() || a.role === opts.agent\n );\n if (!agent) {\n const names = manifest.agents.map((a) => `${a.displayName} (${a.role})`).join(\", \");\n console.error(pc.red(`Agent '${opts.agent}' not found. Available: ${names}`));\n process.exit(1);\n }\n\n const err = validateAgentValue(manifest, key, value);\n if (err) {\n console.error(pc.red(err));\n process.exit(1);\n }\n\n const agentRec = agent as unknown as Record<string, unknown>;\n const oldValue = agentRec[key];\n if (key === \"volumeSize\") {\n agent.volumeSize = Number(value);\n } else {\n agentRec[key] = value;\n }\n\n saveManifest(configName, manifest);\n console.log(\n pc.green(`\u2713 ${agent.displayName}.${key}: ${String(oldValue ?? \"(unset)\")} \u2192 ${value}`)\n );\n } else if (key.startsWith(\"templateVars.\")) {\n // templateVars.KEY set\n const varName = key.slice(\"templateVars.\".length);\n if (!varName) {\n console.error(pc.red(\"Template variable name cannot be empty. Use: templateVars.KEY\"));\n process.exit(1);\n }\n\n if (!manifest.templateVars) manifest.templateVars = {};\n const oldValue = manifest.templateVars[varName];\n manifest.templateVars[varName] = value;\n\n saveManifest(configName, manifest);\n console.log(pc.green(`\u2713 templateVars.${varName}: ${String(oldValue ?? \"(unset)\")} \u2192 ${value}`));\n } else {\n // Top-level set\n if (!isSettableTopKey(key)) {\n console.error(pc.red(`Invalid key '${key}'. Valid keys:\\n ${SETTABLE_TOP_KEYS.join(\"\\n \")}\\n templateVars.<KEY>`));\n process.exit(1);\n }\n\n const err = validateTopValue(manifest, key, value);\n if (err) {\n console.error(pc.red(err));\n process.exit(1);\n }\n\n const manifestRec = manifest as unknown as Record<string, unknown>;\n const oldValue = manifestRec[key];\n manifestRec[key] = value;\n\n saveManifest(configName, manifest);\n console.log(pc.green(`\u2713 ${key}: ${String(oldValue ?? \"(unset)\")} \u2192 ${value}`));\n }\n\n console.log(pc.dim(\"\\nRun 'clawup redeploy' or 'clawup destroy && clawup deploy' to apply changes.\"));\n}\n\n// ---------------------------------------------------------------------------\n// Migrate \u2014 inline plugin config files into the manifest\n// ---------------------------------------------------------------------------\n\nexport interface ConfigMigrateOptions {\n config?: string;\n}\n\nexport async function configMigrateCommand(opts: ConfigMigrateOptions): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n const pDir = pluginsDir(configName);\n if (!fs.existsSync(pDir)) {\n console.log(pc.green(\"No plugin config files found \u2014 nothing to migrate.\"));\n return;\n }\n\n const pluginFiles = fs.readdirSync(pDir).filter((f) => f.endsWith(\".yaml\"));\n if (pluginFiles.length === 0) {\n console.log(pc.green(\"No plugin config files found \u2014 nothing to migrate.\"));\n return;\n }\n\n let migratedCount = 0;\n\n for (const file of pluginFiles) {\n const pluginName = file.replace(/\\.yaml$/, \"\");\n const pluginConfig = loadPluginConfig(configName, pluginName);\n if (!pluginConfig) continue;\n\n for (const agent of manifest.agents) {\n const roleConfig = pluginConfig.agents?.[agent.role];\n if (!roleConfig) continue;\n\n // Initialize inline plugins map if needed\n if (!agent.plugins) agent.plugins = {};\n\n // Merge: existing inline config takes precedence over file-based\n if (!agent.plugins[pluginName]) {\n agent.plugins[pluginName] = roleConfig;\n migratedCount++;\n }\n }\n\n // Delete the plugin config file\n const filePath = `${pDir}/${file}`;\n fs.unlinkSync(filePath);\n console.log(pc.dim(` Removed ${filePath}`));\n }\n\n // Clean up empty plugins directory\n try {\n const remaining = fs.readdirSync(pDir);\n if (remaining.length === 0) {\n fs.rmdirSync(pDir);\n // Also remove the stack directory if empty\n const stackDir = `${pDir}/..`;\n const stackRemaining = fs.readdirSync(stackDir);\n if (stackRemaining.length === 0) {\n fs.rmdirSync(stackDir);\n }\n }\n } catch {\n // Ignore cleanup errors\n }\n\n // Save updated manifest\n saveManifest(configName, manifest);\n\n console.log(pc.green(`\\n\u2713 Migrated ${migratedCount} plugin config(s) into ${configName}.yaml`));\n console.log(pc.dim(\"Plugin config is now inline in the manifest under each agent's 'plugins' field.\"));\n}\n", "/**\n * clawup secrets \u2014 View and update Pulumi secrets without re-running init\n *\n * Subcommands:\n * set \u2014 Set a secret value (e.g. braveApiKey, anthropicApiKey)\n * list \u2014 Show which secrets are configured (values redacted)\n */\n\nimport * as process from \"process\";\nimport { resolveConfigName, loadManifest } from \"../lib/config\";\nimport { selectOrCreateStack, setConfig, getConfig } from \"../lib/pulumi\";\nimport { ensureWorkspace, getWorkspaceDir } from \"../lib/workspace\";\nimport pc from \"picocolors\";\n\n// ---------------------------------------------------------------------------\n// Known secrets and their metadata\n// ---------------------------------------------------------------------------\n\ninterface SecretMeta {\n /** Human-readable label */\n label: string;\n /** Whether this is a per-agent secret (prefixed with role) */\n perAgent: boolean;\n /** Whether the value is stored as a Pulumi secret (encrypted) */\n isSecret: boolean;\n}\n\nconst KNOWN_SECRETS: Record<string, SecretMeta> = {\n anthropicApiKey: { label: \"Anthropic API Key\", perAgent: false, isSecret: true },\n tailscaleAuthKey: { label: \"Tailscale Auth Key\", perAgent: false, isSecret: true },\n tailscaleApiKey: { label: \"Tailscale API Key\", perAgent: false, isSecret: true },\n tailnetDnsName: { label: \"Tailnet DNS Name\", perAgent: false, isSecret: false },\n braveApiKey: { label: \"Brave Search API Key\", perAgent: false, isSecret: true },\n slackBotToken: { label: \"Slack Bot Token\", perAgent: true, isSecret: true },\n slackAppToken: { label: \"Slack App Token\", perAgent: true, isSecret: true },\n linearApiKey: { label: \"Linear API Key\", perAgent: true, isSecret: true },\n linearWebhookSecret: { label: \"Linear Webhook Secret\", perAgent: true, isSecret: true },\n linearUserUuid: { label: \"Linear User UUID\", perAgent: true, isSecret: false },\n githubToken: { label: \"GitHub Token\", perAgent: true, isSecret: true },\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction resolveStackAndCwd(configName: string): { stackName: string; cwd: string | undefined } {\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n const wsResult = ensureWorkspace();\n if (!wsResult.ok) {\n console.error(pc.red(wsResult.error ?? \"Failed to set up workspace.\"));\n process.exit(1);\n }\n const cwd = getWorkspaceDir();\n\n const stackResult = selectOrCreateStack(manifest.stackName, cwd);\n if (!stackResult.ok) {\n console.error(pc.red(`Could not select Pulumi stack \"${manifest.stackName}\": ${stackResult.error}`));\n process.exit(1);\n }\n\n return { stackName: manifest.stackName, cwd };\n}\n\n// ---------------------------------------------------------------------------\n// Set\n// ---------------------------------------------------------------------------\n\nexport interface SecretsSetOptions {\n config?: string;\n agent?: string;\n}\n\nexport async function secretsSetCommand(\n key: string,\n value: string,\n opts: SecretsSetOptions\n): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n // Resolve the actual Pulumi config key\n const meta = KNOWN_SECRETS[key];\n if (!meta) {\n const validKeys = Object.entries(KNOWN_SECRETS)\n .map(([k, m]) => ` ${k}${m.perAgent ? \" (per-agent: use --agent)\" : \"\"}`)\n .join(\"\\n\");\n console.error(pc.red(`Unknown secret '${key}'. Valid keys:\\n${validKeys}`));\n process.exit(1);\n }\n\n let pulumiKey = key;\n if (meta.perAgent) {\n if (!opts.agent) {\n console.error(pc.red(`'${key}' is a per-agent secret. Use --agent <role> to specify which agent.`));\n process.exit(1);\n }\n pulumiKey = `${opts.agent}${key.charAt(0).toUpperCase()}${key.slice(1)}`;\n }\n\n const { cwd } = resolveStackAndCwd(configName);\n\n const ok = setConfig(pulumiKey, value, meta.isSecret, cwd);\n if (!ok) {\n console.error(pc.red(`Failed to set '${pulumiKey}' in Pulumi config.`));\n process.exit(1);\n }\n\n const maskedValue = meta.isSecret\n ? value.slice(0, 4) + \"...\" + value.slice(-4)\n : value;\n\n console.log(pc.green(`\u2713 ${pulumiKey}: set to ${maskedValue}`));\n console.log(pc.dim(\"\\nRun 'clawup deploy' or 'clawup redeploy' to apply changes.\"));\n}\n\n// ---------------------------------------------------------------------------\n// List\n// ---------------------------------------------------------------------------\n\nexport interface SecretsListOptions {\n config?: string;\n}\n\nexport async function secretsListCommand(opts: SecretsListOptions): Promise<void> {\n let configName: string;\n try {\n configName = resolveConfigName(opts.config);\n } catch (err) {\n console.error(pc.red((err as Error).message));\n process.exit(1);\n }\n\n const manifest = loadManifest(configName);\n if (!manifest) {\n console.error(pc.red(`Config '${configName}' could not be loaded.`));\n process.exit(1);\n }\n\n const { cwd } = resolveStackAndCwd(configName);\n const roles = manifest.agents.map((a) => a.role);\n\n console.log();\n console.log(pc.bold(`Secrets for ${configName}:`));\n console.log();\n\n // Global secrets\n for (const [key, meta] of Object.entries(KNOWN_SECRETS)) {\n if (meta.perAgent) continue;\n\n const val = getConfig(key, cwd);\n const status = val ? pc.green(\"\u2713 set\") : pc.dim(\"\u2717 not set\");\n console.log(` ${meta.label.padEnd(24)} ${status}`);\n }\n\n // Per-agent secrets\n const perAgentKeys = Object.entries(KNOWN_SECRETS).filter(([, m]) => m.perAgent);\n if (perAgentKeys.length > 0) {\n for (const role of roles) {\n console.log();\n console.log(pc.bold(` ${role}:`));\n for (const [key, meta] of perAgentKeys) {\n const pulumiKey = `${role}${key.charAt(0).toUpperCase()}${key.slice(1)}`;\n const val = getConfig(pulumiKey, cwd);\n const status = val ? pc.green(\"\u2713 set\") : pc.dim(\"\u2717 not set\");\n console.log(` ${meta.label.padEnd(24)} ${status}`);\n }\n }\n }\n\n console.log();\n}\n", "/**\n * clawup redeploy \u2014 Update agents in-place without destroying infrastructure\n *\n * This command wraps the platform-agnostic redeployTool with the CLI adapter.\n */\n\nimport { redeployTool, createCLIAdapter, type RedeployOptions } from \"../tools\";\n\nexport async function redeployCommand(opts: RedeployOptions): Promise<void> {\n await redeployTool(createCLIAdapter(), opts);\n}\n", "/**\n * clawup webhooks setup \u2014 Configure Linear webhooks for deployed agents\n *\n * This command wraps the platform-agnostic webhooksSetupTool with the CLI adapter.\n */\n\nimport { webhooksSetupTool, createCLIAdapter, type WebhooksSetupOptions } from \"../tools\";\n\nexport async function webhooksSetupCommand(opts: WebhooksSetupOptions): Promise<void> {\n await webhooksSetupTool(createCLIAdapter(), opts);\n}\n", "/**\n * Background update notifier \u2014 checks npm for newer versions\n */\n\nimport * as https from \"https\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport pc from \"picocolors\";\n\nconst PACKAGE_NAME = \"clawup\";\nconst CACHE_FILE = \".update-check.json\";\nconst CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours\nconst FETCH_TIMEOUT_MS = 3000;\n\ninterface UpdateCache {\n lastChecked: number;\n latestVersion: string;\n}\n\nfunction getCacheDir(): string {\n // Previously ~/.agent-army \u2014 users upgrading from the old name will start a fresh cache\n return path.join(os.homedir(), \".clawup\");\n}\n\nfunction getCachePath(): string {\n return path.join(getCacheDir(), CACHE_FILE);\n}\n\nfunction loadCache(): UpdateCache | null {\n try {\n const raw = fs.readFileSync(getCachePath(), \"utf-8\");\n return JSON.parse(raw) as UpdateCache;\n } catch {\n return null;\n }\n}\n\nfunction saveCache(cache: UpdateCache): void {\n const dir = getCacheDir();\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n fs.writeFileSync(getCachePath(), JSON.stringify(cache), \"utf-8\");\n}\n\n/**\n * Compare two semver strings. Returns:\n * 1 if a > b, -1 if a < b, 0 if equal\n */\nfunction compareSemver(a: string, b: string): number {\n const pa = a.split(\".\").map(Number);\n const pb = b.split(\".\").map(Number);\n for (let i = 0; i < 3; i++) {\n const na = pa[i] ?? 0;\n const nb = pb[i] ?? 0;\n if (na > nb) return 1;\n if (na < nb) return -1;\n }\n return 0;\n}\n\nfunction fetchLatestVersion(): Promise<string | null> {\n return new Promise((resolve) => {\n const req = https.get(\n `https://registry.npmjs.org/${PACKAGE_NAME}/latest`,\n { timeout: FETCH_TIMEOUT_MS },\n (res) => {\n let data = \"\";\n res.on(\"data\", (chunk: Buffer) => (data += chunk));\n res.on(\"end\", () => {\n try {\n const json = JSON.parse(data);\n resolve(json.version ?? null);\n } catch {\n resolve(null);\n }\n });\n }\n );\n req.on(\"timeout\", () => {\n req.destroy();\n resolve(null);\n });\n req.on(\"error\", () => resolve(null));\n });\n}\n\n/**\n * Check for updates and print a notice if a newer version is available.\n * Non-blocking \u2014 errors are silently ignored.\n */\nexport async function checkForUpdates(currentVersion: string): Promise<void> {\n try {\n const cache = loadCache();\n const now = Date.now();\n\n // Use cached version if fresh enough\n if (cache && now - cache.lastChecked < CHECK_INTERVAL_MS) {\n if (compareSemver(cache.latestVersion, currentVersion) > 0) {\n printUpdateNotice(currentVersion, cache.latestVersion);\n }\n return;\n }\n\n // Fetch in background \u2014 don't block CLI exit\n const latest = await fetchLatestVersion();\n if (!latest) {\n // Cache the current version so we don't retry on every CLI run\n saveCache({ lastChecked: now, latestVersion: currentVersion });\n return;\n }\n\n saveCache({ lastChecked: now, latestVersion: latest });\n\n if (compareSemver(latest, currentVersion) > 0) {\n printUpdateNotice(currentVersion, latest);\n }\n } catch {\n // Never fail the CLI over an update check\n }\n}\n\nfunction printUpdateNotice(current: string, latest: string): void {\n console.log();\n console.log(\n ` Update available: ${pc.dim(current)} ${pc.dim(\"\u2192\")} ${pc.green(latest)}`\n );\n console.log(` Run ${pc.cyan(\"clawup update\")} to install`);\n console.log();\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["exports", "exports", "hetznerServerTypes", "tailscaleHostname", "slackAppManifest", "exports", "exports", "exports", "exports", "resolveDeps", "exports", "classifySkills", "exports", "util", "objectUtil", "exports", "exports", "exports", "exports", "path", "exports", "exports", "errorUtil", "require_types", "exports", "path", "ctx", "result", "issues", "elements", "processed", "p", "p2", "r", "ZodFirstPartyTypeKind", "exports", "p", "exports", "p", "exports", "exports", "exports", "exports", "exports", "fetchIdentitySync", "fetchIdentity", "capture", "resolve", "import_child_process", "fs", "path", "import_child_process", "fs", "pc", "path", "os", "import_child_process", "select", "YAML", "fs", "path", "os", "pc", "p", "import_picocolors", "getConfig", "import_core", "import_picocolors", "getConfig", "spinner", "pc", "import_core", "getConfig", "SSH_OPTS", "import_core", "import_picocolors", "getConfig", "pc", "getConfig", "spinner", "import_picocolors", "getConfig", "spinner", "pc", "SSH_OPTS", "fs", "path", "import_core", "os", "import_picocolors", "pc", "sshExec", "SSH_OPTS", "import_core", "import_picocolors", "pc", "getConfig", "p", "import_picocolors", "import_child_process", "resolve", "pc", "init_deploy", "fs", "path", "import_child_process", "p", "import_core", "import_identity", "os", "path", "spinner", "s", "deployCommand", "init_deploy", "p", "import_core", "import_child_process", "p", "import_picocolors", "pc", "https", "resolve", "fs", "path", "pkgJson", "MAX_RETRIES", "process", "import_yaml", "fs", "import_core", "import_picocolors", "pc", "YAML", "process", "import_picocolors", "pc", "fs", "path", "os", "import_picocolors", "resolve", "pc"]
7
7
  }