{"version":3,"file":"setup-command.mjs","names":[],"sources":["../../../src/commands/setup-command.ts"],"sourcesContent":["/**\n * /setup — Show tool configuration status and setup instructions.\n *\n * Groups tools into:\n *   - Ready (configured and working)\n *   - Needs wallet (requires /connect first)\n *   - Needs API keys (with setup instructions)\n *\n * All output uses tappable slash commands where possible.\n */\n\nimport { getAllToolStatus, type ToolStatus } from '../services/tool-config-service.js';\nimport { getWalletState } from '../services/walletconnect-service.js';\n\nexport const setupCommand = {\n  name: 'setup',\n  description: 'Show which tools are configured and what keys are missing',\n  acceptsArgs: false,\n  requireAuth: true,\n  handler: async (_ctx: any) => {\n    const statuses = getAllToolStatus();\n    const wallet = getWalletState();\n\n    // Partition tools\n    const ready: ToolStatus[] = [];\n    const needsWallet: ToolStatus[] = [];\n    const needsKeys: ToolStatus[] = [];\n\n    for (const s of statuses) {\n      if (s.configured && !s.walletRequired) {\n        ready.push(s);\n      } else if (s.configured && s.walletRequired && !wallet.connected) {\n        needsWallet.push(s);\n      } else if (s.configured && s.walletRequired && wallet.connected) {\n        ready.push(s);\n      } else if (s.missingKeys.length > 0) {\n        needsKeys.push(s);\n      } else if (s.walletRequired && !wallet.connected) {\n        needsWallet.push(s);\n      } else {\n        ready.push(s);\n      }\n    }\n\n    const lines: string[] = [\n      '**OpenClawnch Tool Setup**',\n      '',\n    ];\n\n    // ── Ready tools ──────────────────────────────────────────────\n    if (ready.length > 0) {\n      lines.push(`**Ready (${ready.length} tools):**`);\n      for (const s of ready) {\n        lines.push(`  ${s.label} — ${s.description}`);\n      }\n      lines.push('');\n    }\n\n    // ── Needs wallet ─────────────────────────────────────────────\n    if (needsWallet.length > 0) {\n      lines.push(`**Needs wallet (${needsWallet.length} tools):**`);\n      for (const s of needsWallet) {\n        lines.push(`  ${s.label} — ${s.description}`);\n      }\n      lines.push('');\n      lines.push('  Connect: /connect');\n      lines.push('');\n    }\n\n    // ── Needs API keys ───────────────────────────────────────────\n    if (needsKeys.length > 0) {\n      lines.push(`**Needs API keys (${needsKeys.length} tools):**`);\n      for (const s of needsKeys) {\n        const missingStr = s.missingKeys.map(k => `\\`${k}\\``).join(', ');\n        lines.push(`  **${s.label}** — ${s.description}`);\n        lines.push(`    Missing: ${missingStr}`);\n        if (s.keySource) {\n          lines.push(`    Get keys: ${s.keySource}`);\n        }\n        if (s.setupHint) {\n          lines.push(`    Setup: ${s.setupHint}`);\n        }\n        lines.push('');\n      }\n    }\n\n    // ── Summary ──────────────────────────────────────────────────\n    const total = statuses.length;\n    const readyCount = ready.length;\n    lines.push(`**${readyCount}/${total} tools ready.**`);\n\n    if (needsKeys.length > 0) {\n      lines.push('');\n      if (process.env.FLY_APP_NAME) {\n        lines.push('Use /flykeys to set API keys, then /flyrestart to apply.');\n      } else {\n        lines.push('Add the missing API keys to your .env file or run `openclawnch init` to reconfigure.');\n      }\n    }\n\n    return { text: lines.join('\\n') };\n  },\n};\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,eAAe;CAC1B,MAAM;CACN,aAAa;CACb,aAAa;CACb,aAAa;CACb,SAAS,OAAO,SAAc;EAC5B,MAAM,WAAW,kBAAkB;EACnC,MAAM,SAAS,gBAAgB;EAG/B,MAAM,QAAsB,EAAE;EAC9B,MAAM,cAA4B,EAAE;EACpC,MAAM,YAA0B,EAAE;AAElC,OAAK,MAAM,KAAK,SACd,KAAI,EAAE,cAAc,CAAC,EAAE,eACrB,OAAM,KAAK,EAAE;WACJ,EAAE,cAAc,EAAE,kBAAkB,CAAC,OAAO,UACrD,aAAY,KAAK,EAAE;WACV,EAAE,cAAc,EAAE,kBAAkB,OAAO,UACpD,OAAM,KAAK,EAAE;WACJ,EAAE,YAAY,SAAS,EAChC,WAAU,KAAK,EAAE;WACR,EAAE,kBAAkB,CAAC,OAAO,UACrC,aAAY,KAAK,EAAE;MAEnB,OAAM,KAAK,EAAE;EAIjB,MAAM,QAAkB,CACtB,8BACA,GACD;AAGD,MAAI,MAAM,SAAS,GAAG;AACpB,SAAM,KAAK,YAAY,MAAM,OAAO,YAAY;AAChD,QAAK,MAAM,KAAK,MACd,OAAM,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,cAAc;AAE/C,SAAM,KAAK,GAAG;;AAIhB,MAAI,YAAY,SAAS,GAAG;AAC1B,SAAM,KAAK,mBAAmB,YAAY,OAAO,YAAY;AAC7D,QAAK,MAAM,KAAK,YACd,OAAM,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,cAAc;AAE/C,SAAM,KAAK,GAAG;AACd,SAAM,KAAK,sBAAsB;AACjC,SAAM,KAAK,GAAG;;AAIhB,MAAI,UAAU,SAAS,GAAG;AACxB,SAAM,KAAK,qBAAqB,UAAU,OAAO,YAAY;AAC7D,QAAK,MAAM,KAAK,WAAW;IACzB,MAAM,aAAa,EAAE,YAAY,KAAI,MAAK,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK;AAChE,UAAM,KAAK,OAAO,EAAE,MAAM,OAAO,EAAE,cAAc;AACjD,UAAM,KAAK,gBAAgB,aAAa;AACxC,QAAI,EAAE,UACJ,OAAM,KAAK,iBAAiB,EAAE,YAAY;AAE5C,QAAI,EAAE,UACJ,OAAM,KAAK,cAAc,EAAE,YAAY;AAEzC,UAAM,KAAK,GAAG;;;EAKlB,MAAM,QAAQ,SAAS;EACvB,MAAM,aAAa,MAAM;AACzB,QAAM,KAAK,KAAK,WAAW,GAAG,MAAM,iBAAiB;AAErD,MAAI,UAAU,SAAS,GAAG;AACxB,SAAM,KAAK,GAAG;AACd,OAAI,QAAQ,IAAI,aACd,OAAM,KAAK,2DAA2D;OAEtE,OAAM,KAAK,uFAAuF;;AAItG,SAAO,EAAE,MAAM,MAAM,KAAK,KAAK,EAAE;;CAEpC"}