{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-UKZRPWDE.cjs","../src/cli/commands/provider.command.ts"],"names":["createProviderCommand","command","Command","chalk","options","providers","getAllProviders","providerIcons","table","Table","pageSize","page","totalPages","renderPage","pageIdx","provider","icon","modelCount","display","err"],"mappings":"AAAA;AACA,wDAA0C,4CCDrB,4EACH,6FACA,sCACI,IAGTA,CAAAA,CAAwB,CAAA,CAAA,EAAe,CAClD,IAAMC,CAAAA,CAAU,IAAIC,uBAAAA,CAAQ,UAAU,CAAA,CAEtC,OAAAD,CAAAA,CACG,WAAA,CACC,CACEE,eAAAA,CAAM,IAAA,CACJ,iEACF,CAAA,CACA,EAAA,CACAA,eAAAA,CAAM,IAAA,CACJ,kEACF,CAAA,CACA,QAAA,CAAI,MAAA,CAAO,EAAE,CACf,CAAA,CAAE,IAAA,CAAK,CAAA;AAAA,CAAI,CACb,CAAA,CACC,MAAA,CAAO,YAAA,CAAcA,eAAAA,CAAM,KAAA,CAAM,iCAAiC,CAAC,CAAA,CACnE,MAAA,CACC,8BAAA,CACAA,eAAAA,CAAM,KAAA,CAAM,yCAAyC,CACvD,CAAA,CACC,WAAA,CACC,OAAA,CACA,CACEA,eAAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAA;AAAA,SAAA,CAAa,CAAA,CAC7BA,eAAAA,CAAM,IAAA,CAAK,yBAAyB,CAAA,CACpCA,eAAAA,CAAM,IAAA,CAAK,mBAAmB,CAAA,CAC9BA,eAAAA,CAAM,IAAA,CAAK,gCAAgC,CAC7C,CAAA,CAAE,IAAA,CAAK,CAAA;AAAA,CAAI,CACb,CAAA,CACC,MAAA,CAAO,MAAOC,CAAAA,EAAY,CACzB,EAAA,CAAIA,CAAAA,CAAQ,IAAA,CAAM,CAChB,IAAMC,CAAAA,CAAYC,iCAAAA,CAAgB,CAClC,OAAA,CAAQ,GAAA,CAAIH,eAAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAA;AAAA,uBAAA,CAA2B,CAAC,CAAA,CACxD,IAAMI,CAAAA,CAAwC,CAC5C,SAAA,CAAW,WAAA,CACX,KAAA,CAAO,WAAA,CACP,OAAA,CAAS,WAAA,CACT,QAAA,CAAU,WAAA,CACV,MAAA,CAAQ,WAAA,CACR,QAAA,CAAU,WAAA,CACV,OAAA,CAAS,WAAA,CACT,MAAA,CAAQ,WAAA,CACR,MAAA,CAAQ,WAAA,CACR,GAAA,CAAK,WACP,CAAA,CACMC,CAAAA,CAAQ,IAAIC,wBAAAA,CAAM,CACtB,IAAA,CAAM,CACJN,eAAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CACrBA,eAAAA,CAAM,IAAA,CAAK,MAAM,CAAA,CACjBA,eAAAA,CAAM,IAAA,CAAK,cAAc,CAAA,CACzBA,eAAAA,CAAM,IAAA,CAAK,QAAQ,CACrB,CAAA,CACA,KAAA,CAAO,CAAC,IAAA,CAAM,CAAC,MAAM,CAAC,CAAA,CACtB,SAAA,CAAW,CAAC,EAAA,CAAI,CAAA,CAAG,EAAA,CAAI,EAAE,CAAA,CACzB,QAAA,CAAU,CAAA,CACZ,CAAC,CAAA,CACKO,CAAAA,CAAW,EAAA,CACbC,CAAAA,CAAO,CAAA,CACLC,CAAAA,CAAa,IAAA,CAAK,IAAA,CAAKP,CAAAA,CAAU,MAAA,CAASK,CAAQ,CAAA,CAElDG,CAAAA,CAAcC,CAAAA,EAAoB,CACtCN,CAAAA,CAAM,MAAA,CAAS,CAAA,CACfH,CAAAA,CACG,KAAA,CAAMS,CAAAA,CAAUJ,CAAAA,CAAAA,CAAWI,CAAAA,CAAU,CAAA,CAAA,CAAKJ,CAAQ,CAAA,CAClD,OAAA,CAASK,CAAAA,EAAa,CACrB,IAAMC,CAAAA,CACJT,CAAAA,CAAcQ,CAAAA,CAAS,IAAkC,CAAA,EACzD,EAAA,CACIE,CAAAA,CAAaF,CAAAA,CAAS,MAAA,CAASA,CAAAA,CAAS,MAAA,CAAO,MAAA,CAAS,CAAA,CAC1DG,CAAAA,CAAUH,CAAAA,CAAS,WAAA,EAAeA,CAAAA,CAAS,IAAA,CAC3CG,CAAAA,CAAQ,UAAA,CAAWF,CAAI,CAAA,EAAA,CACzBE,CAAAA,CAAUA,CAAAA,CAAQ,KAAA,CAAMF,CAAAA,CAAK,MAAM,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,CAE5CR,CAAAA,CAAM,IAAA,CAAK,CACTL,eAAAA,CAAM,IAAA,CAAKY,CAAAA,CAAS,IAAI,CAAA,CACxBC,CAAAA,CACAE,CAAAA,CACAf,eAAAA,CAAM,IAAA,CAAK,CAAA,CAAA,EAAIc,CAAU,CAAA,CAAA,CAAG,CAC9B,CAAC,CACH,CAAC,CAAA,CACH,OAAA,CAAQ,GAAA,CAAIT,CAAAA,CAAM,QAAA,CAAS,CAAC,CAAA,CAC5B,OAAA,CAAQ,GAAA,CAAIL,eAAAA,CAAM,IAAA,CAAK,CAAA,KAAA,EAAQW,CAAAA,CAAU,CAAC,CAAA,IAAA,EAAOF,CAAU,CAAA,CAAA;AAqFpDO,qBAAAA;ADtKqqB","file":"/home/mkabumattar/work/withrawi/rawi/dist/chunk-UKZRPWDE.cjs","sourcesContent":[null,"import {select} from '@inquirer/prompts';\nimport chalk from 'chalk';\nimport Table from 'cli-table3';\nimport {Command} from 'commander';\nimport {getAllProviders, getProvider} from '../../core/providers/index.js';\n\nexport const createProviderCommand = (): Command => {\n  const command = new Command('provider');\n\n  command\n    .description(\n      [\n        chalk.bold(\n          'Show information about supported AI providers and their models.',\n        ),\n        '',\n        chalk.gray(\n          'Use this to discover available providers and their capabilities.',\n        ),\n        '─'.repeat(80),\n      ].join('\\n'),\n    )\n    .option('-l, --list', chalk.white('List all supported AI providers'))\n    .option(\n      '-m, --list-models <provider>',\n      chalk.white('List all models for a specific provider'),\n    )\n    .addHelpText(\n      'after',\n      [\n        chalk.bold.cyan('\\nSee also:'),\n        chalk.gray('  rawi configure --show'),\n        chalk.gray('  rawi act --list'),\n        chalk.gray('  rawi ask --profile <profile>'),\n      ].join('\\n'),\n    )\n    .action(async (options) => {\n      if (options.list) {\n        const providers = getAllProviders();\n        console.log(chalk.bold.blue('\\nSupported AI Providers:'));\n        const providerIcons: Record<string, string> = {\n          anthropic: '🟣',\n          azure: '🔷',\n          bedrock: '🟠',\n          deepseek: '🔵',\n          google: '🔴',\n          lmstudio: '🔗',\n          mistral: '🟠',\n          ollama: '🟢',\n          openai: '🔵',\n          xai: '🤖',\n        };\n        const table = new Table({\n          head: [\n            chalk.cyan('Provider'),\n            chalk.cyan('Icon'),\n            chalk.cyan('Display Name'),\n            chalk.cyan('Models'),\n          ],\n          style: {head: ['cyan']},\n          colWidths: [16, 8, 24, 10],\n          wordWrap: true,\n        });\n        const pageSize = 10;\n        let page = 0;\n        const totalPages = Math.ceil(providers.length / pageSize);\n\n        const renderPage = (pageIdx: number) => {\n          table.length = 0;\n          providers\n            .slice(pageIdx * pageSize, (pageIdx + 1) * pageSize)\n            .forEach((provider) => {\n              const icon =\n                providerIcons[provider.name as keyof typeof providerIcons] ||\n                '';\n              const modelCount = provider.models ? provider.models.length : 0;\n              let display = provider.displayName || provider.name;\n              if (display.startsWith(icon)) {\n                display = display.slice(icon.length).trim();\n              }\n              table.push([\n                chalk.cyan(provider.name),\n                icon,\n                display,\n                chalk.gray(`[${modelCount}]`),\n              ]);\n            });\n          console.log(table.toString());\n          console.log(chalk.gray(`Page ${pageIdx + 1} of ${totalPages}`));\n        };\n\n        if (providers.length > pageSize) {\n          let exit = false;\n          while (!exit) {\n            renderPage(page);\n            const choices = [];\n            if (page > 0) choices.push({name: 'Previous', value: 'prev'});\n            if (page < totalPages - 1)\n              choices.push({name: 'Next', value: 'next'});\n            choices.push({name: 'Exit', value: 'exit'});\n            const nav = await select({\n              message: 'Navigate pages:',\n              choices,\n              default: page < totalPages - 1 ? 'next' : 'exit',\n            });\n            if (nav === 'prev') page--;\n            else if (nav === 'next') page++;\n            else exit = true;\n            if (!exit) console.clear();\n          }\n        } else {\n          renderPage(0);\n        }\n        return;\n      }\n      if (options.listModels) {\n        try {\n          const provider = getProvider(options.listModels);\n          if (!provider) {\n            console.error(\n              chalk.red(`Provider '${options.listModels}' not found.`),\n            );\n            return;\n          }\n          const modelCount = provider.models ? provider.models.length : 0;\n          console.log(\n            chalk.bold.blue(\n              `\\nModels for provider '${provider.name}' [${modelCount} models]:`,\n            ),\n          );\n          const pageSize = 20;\n          let page = 0;\n          const totalPages = Math.ceil(modelCount / pageSize);\n          const renderPage = (pageIdx: number) => {\n            const table = new Table({\n              head: [chalk.cyan('Model Name'), chalk.cyan('Description')],\n              style: {head: ['cyan']},\n              colWidths: [28, 48],\n              wordWrap: true,\n            });\n            provider.models\n              .slice(pageIdx * pageSize, (pageIdx + 1) * pageSize)\n              .forEach((model) => {\n                table.push([\n                  chalk.cyan(model.name),\n                  model.description ? chalk.gray(model.description) : '',\n                ]);\n              });\n            console.log(table.toString());\n            console.log(chalk.gray(`Page ${pageIdx + 1} of ${totalPages}`));\n          };\n          if (modelCount > pageSize) {\n            let exit = false;\n            while (!exit) {\n              renderPage(page);\n              const choices = [];\n              if (page > 0) choices.push({name: 'Previous', value: 'prev'});\n              if (page < totalPages - 1)\n                choices.push({name: 'Next', value: 'next'});\n              choices.push({name: 'Exit', value: 'exit'});\n              const nav = await select({\n                message: 'Navigate pages:',\n                choices,\n                default: page < totalPages - 1 ? 'next' : 'exit',\n              });\n              if (nav === 'prev') page--;\n              else if (nav === 'next') page++;\n              else exit = true;\n              if (!exit) console.clear();\n            }\n          } else {\n            renderPage(0);\n          }\n        } catch (err) {\n          console.error(\n            chalk.red(\n              `Error: ${err instanceof Error ? err.message : String(err)}`,\n            ),\n          );\n        }\n        return;\n      }\n      command.help();\n    });\n\n  return command;\n};\n"]}