{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-RTOSUPNZ.cjs","../src/cli/commands/configure.command.ts"],"names":["createConfigureCommand","command","Command","chalk","options","configManager","ConfigManager","profiles","profile"],"mappings":"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","file":"/home/mkabumattar/work/withrawi/rawi/dist/chunk-RTOSUPNZ.cjs","sourcesContent":[null,"import chalk from 'chalk';\nimport {Command} from 'commander';\nimport {ConfigManager} from '../../core/configs/managers/config.manager.js';\nimport type {\n  AnthropicSettings,\n  AzureSettings,\n  BedrockSettings,\n  CerebrasSettings,\n  ConfigureOptions,\n  DeepSeekSettings,\n  GoogleSettings,\n  LMStudioSettings,\n  MistralSettings,\n  OllamaSettings,\n  OpenAISettings,\n  RawiCredentials,\n  SupportedLanguage,\n  XAISettings,\n} from '../../core/shared/types.js';\n\nexport const createConfigureCommand = (): Command => {\n  const command = new Command('configure');\n\n  command\n    .description(\n      [\n        chalk.bold('Configure AI provider settings and manage profiles.'),\n        '',\n        chalk.gray(\n          'Set up providers, models, credentials, and advanced options.',\n        ),\n        chalk.gray('Supports interactive and manual configuration.'),\n        chalk.gray('Use --list to see all profiles, --show for details.'),\n        '─'.repeat(80),\n      ].join('\\n'),\n    )\n    .option(\n      '-p, --profile <profile>',\n      chalk.white('Profile name to configure'),\n      'default',\n    )\n    .option(\n      '--provider <provider>',\n      chalk.white(\n        'AI provider (openai, anthropic, google, ollama, xai, azure, bedrock, deepseek, mistral, cerebras, lmstudio)',\n      ),\n    )\n    .option('--model <model>', chalk.white('AI model name'))\n    .option(\n      '--api-key <apiKey>',\n      chalk.white('API key for the provider (not needed for Ollama)'),\n    )\n    .option(\n      '--base-url <baseURL>',\n      chalk.white('Base URL for provider API (see docs for defaults)'),\n    )\n    .option(\n      '--resource-name <resourceName>',\n      chalk.white('Resource name for Azure OpenAI (required for Azure)'),\n    )\n    .option(\n      '--api-version <apiVersion>',\n      chalk.white('API version for Azure OpenAI (default: 2024-10-01-preview)'),\n    )\n    .option(\n      '--region <region>',\n      chalk.white('AWS region for Amazon Bedrock (default: us-east-1)'),\n    )\n    .option(\n      '--access-key-id <accessKeyId>',\n      chalk.white('AWS access key ID for Amazon Bedrock'),\n    )\n    .option(\n      '--secret-access-key <secretAccessKey>',\n      chalk.white('AWS secret access key for Amazon Bedrock'),\n    )\n    .option(\n      '--session-token <sessionToken>',\n      chalk.white('AWS session token for Amazon Bedrock (optional)'),\n    )\n    .option(\n      '--use-provider-chain',\n      chalk.white(\n        'Use AWS credential provider chain instead of explicit credentials',\n      ),\n    )\n    .option(\n      '--temperature <temperature>',\n      chalk.white('Sampling temperature (0-2, higher = more creative)'),\n      Number.parseFloat,\n    )\n    .option(\n      '--max-tokens <maxTokens>',\n      chalk.white('Maximum tokens for response'),\n      Number.parseInt,\n    )\n    .option(\n      '--language <language>',\n      chalk.white('Language (english, arabic)'),\n      'english',\n    )\n    .option(\n      '-s, --show',\n      chalk.white('Show current configuration for the selected profile'),\n    )\n    .option('-l, --list', chalk.white('List all configuration profiles'))\n    .option(\n      '-d, --delete <profile>',\n      chalk.white('Delete a configuration profile'),\n    )\n    .addHelpText(\n      'after',\n      [\n        chalk.bold.cyan('\\nSee also:'),\n        chalk.gray('  rawi provider --list'),\n        chalk.gray('  rawi act --list'),\n        chalk.gray('  rawi ask --profile <profile>'),\n        chalk.gray('  rawi configure --show --profile <profile>'),\n        '',\n        chalk.dim('For more examples, see: docs/configuration.md'),\n      ].join('\\n'),\n    )\n    .action(async (options) => {\n      const configManager = new ConfigManager();\n\n      try {\n        if (options.show) {\n          configManager.showConfig(\n            options.profile === 'default' ? undefined : options.profile,\n          );\n          return;\n        }\n\n        if (options.list) {\n          const profiles = configManager.listProfiles();\n          if (profiles.length === 0) {\n            console.log(chalk.yellow('No configuration profiles found.'));\n            return;\n          }\n          console.log(chalk.bold('Available profiles:'));\n          profiles.forEach((profile) => {\n            console.log(`  - ${profile}`);\n            return;\n          });\n          return;\n        }\n\n        if (options.delete) {\n          const success = configManager.deleteProfile(options.delete);\n          if (success) {\n            console.log(\n              chalk.green(`Profile '${options.delete}' deleted successfully.`),\n            );\n          } else {\n            console.log(\n              chalk.red(`Failed to delete profile '${options.delete}'.`),\n            );\n          }\n          return;\n        }\n\n        if (options.language) {\n          const validLanguages: SupportedLanguage[] = ['english', 'arabic'];\n          if (!validLanguages.includes(options.language as SupportedLanguage)) {\n            console.error(chalk.red(`Invalid language: ${options.language}`));\n            console.log(\n              chalk.yellow('Available languages:'),\n              validLanguages.join(', '),\n            );\n            return;\n          }\n        }\n\n        const configureOptions: ConfigureOptions = {\n          profile: options.profile,\n          provider: options.provider,\n          model: options.model,\n          apiKey: options.apiKey,\n          baseURL: options.baseUrl,\n          resourceName: options.resourceName,\n          apiVersion: options.apiVersion,\n          region: options.region,\n          accessKeyId: options.accessKeyId,\n          secretAccessKey: options.secretAccessKey,\n          sessionToken: options.sessionToken,\n          useProviderChain: options.useProviderChain,\n          temperature: options.temperature,\n          maxTokens: options.maxTokens,\n          language: options.language as SupportedLanguage,\n        };\n\n        if (options.provider) {\n          let requiredOptions: boolean;\n          let credentials: RawiCredentials;\n\n          if (options.provider === 'ollama') {\n            requiredOptions = Boolean(options.model);\n\n            const providerSettings: OllamaSettings = {};\n            if (options.baseUrl) {\n              providerSettings.baseURL = options.baseUrl;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings:\n                Object.keys(providerSettings).length > 0\n                  ? providerSettings\n                  : undefined,\n            };\n          } else if (options.provider === 'azure') {\n            requiredOptions = Boolean(\n              options.provider &&\n                options.model &&\n                options.apiKey &&\n                options.resourceName,\n            );\n\n            if (!requiredOptions) {\n              if (!options.model) {\n                console.error(\n                  'For Azure, you must specify your deployment name using --model',\n                );\n              }\n              if (!options.resourceName) {\n                console.error(\n                  'For Azure, you must specify your resource name using --resource-name',\n                );\n              }\n              if (!options.apiKey) {\n                console.error(\n                  'For Azure, you must specify your API key using --api-key',\n                );\n              }\n            }\n\n            const providerSettings: AzureSettings = {\n              resourceName: options.resourceName,\n            };\n\n            if (options.apiVersion) {\n              providerSettings.apiVersion = options.apiVersion;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              apiKey: options.apiKey,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings: providerSettings,\n            };\n          } else if (options.provider === 'bedrock') {\n            const hasExplicitCredentials = Boolean(\n              options.accessKeyId && options.secretAccessKey,\n            );\n            const hasProviderChain = Boolean(options.useProviderChain);\n\n            requiredOptions = Boolean(\n              options.provider &&\n                options.model &&\n                (hasExplicitCredentials || hasProviderChain),\n            );\n\n            if (!requiredOptions) {\n              if (!options.model) {\n                console.error(\n                  'For Bedrock, you must specify a model using --model',\n                );\n              }\n              if (!hasExplicitCredentials && !hasProviderChain) {\n                console.error(\n                  'For Bedrock, you must either:\\n' +\n                    '  - Provide explicit credentials: --access-key-id and --secret-access-key\\n' +\n                    '  - Use provider chain: --use-provider-chain',\n                );\n              }\n            }\n\n            const providerSettings: BedrockSettings = {};\n\n            if (options.region) {\n              providerSettings.region = options.region;\n            }\n\n            if (hasProviderChain) {\n              providerSettings.useProviderChain = true;\n            } else if (hasExplicitCredentials) {\n              providerSettings.accessKeyId = options.accessKeyId;\n              providerSettings.secretAccessKey = options.secretAccessKey;\n              if (options.sessionToken) {\n                providerSettings.sessionToken = options.sessionToken;\n              }\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings:\n                Object.keys(providerSettings).length > 0\n                  ? providerSettings\n                  : undefined,\n            };\n          } else if (options.provider === 'xai') {\n            requiredOptions = Boolean(options.model && options.apiKey);\n\n            const providerSettings: XAISettings = {\n              apiKey: options.apiKey,\n            };\n            if (options.baseUrl) {\n              providerSettings.baseURL = options.baseUrl;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings: providerSettings,\n            };\n          } else if (options.provider === 'openai') {\n            requiredOptions = Boolean(options.model && options.apiKey);\n\n            const providerSettings: OpenAISettings = {\n              apiKey: options.apiKey,\n            };\n            if (options.baseUrl) {\n              providerSettings.baseURL = options.baseUrl;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings: providerSettings,\n            };\n          } else if (options.provider === 'anthropic') {\n            requiredOptions = Boolean(options.model && options.apiKey);\n\n            const providerSettings: AnthropicSettings = {\n              apiKey: options.apiKey,\n            };\n            if (options.baseUrl) {\n              providerSettings.baseURL = options.baseUrl;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings: providerSettings,\n            };\n          } else if (options.provider === 'google') {\n            requiredOptions = Boolean(options.model && options.apiKey);\n\n            const providerSettings: GoogleSettings = {\n              apiKey: options.apiKey,\n            };\n            if (options.baseUrl) {\n              providerSettings.baseURL = options.baseUrl;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings: providerSettings,\n            };\n          } else if (options.provider === 'deepseek') {\n            requiredOptions = Boolean(options.model && options.apiKey);\n\n            const providerSettings: DeepSeekSettings = {\n              apiKey: options.apiKey,\n            };\n            if (options.baseUrl) {\n              providerSettings.baseURL = options.baseUrl;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings: providerSettings,\n            };\n          } else if (options.provider === 'mistral') {\n            requiredOptions = Boolean(options.model && options.apiKey);\n\n            const providerSettings: MistralSettings = {\n              apiKey: options.apiKey,\n            };\n            if (options.baseUrl) {\n              providerSettings.baseURL = options.baseUrl;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings: providerSettings,\n            };\n          } else if (options.provider === 'cerebras') {\n            requiredOptions = Boolean(options.model && options.apiKey);\n\n            const providerSettings: CerebrasSettings = {\n              apiKey: options.apiKey,\n            };\n            if (options.baseUrl) {\n              providerSettings.baseURL = options.baseUrl;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n              providerSettings: providerSettings,\n            };\n          } else if (options.provider === 'lmstudio') {\n            requiredOptions = Boolean(options.model);\n\n            const providerSettings: LMStudioSettings = {};\n            if (options.baseUrl) {\n              providerSettings.baseURL = options.baseUrl;\n            }\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n            };\n\n            if (Object.keys(providerSettings).length > 0) {\n              credentials.providerSettings = providerSettings;\n            } else {\n              credentials.providerSettings = undefined;\n            }\n          } else {\n            requiredOptions = Boolean(\n              options.provider && options.model && options.apiKey,\n            );\n\n            credentials = {\n              provider: options.provider,\n              model: options.model,\n              apiKey: options.apiKey,\n              temperature: options.temperature || 0.7,\n              maxTokens: options.maxTokens || 2048,\n              language: (options.language as SupportedLanguage) || 'english',\n            };\n          }\n\n          if (requiredOptions) {\n            configManager.manualConfigure(credentials, options.profile);\n          } else {\n            await configManager.interactiveConfigure(configureOptions);\n          }\n        } else {\n          await configManager.interactiveConfigure(configureOptions);\n        }\n      } catch (error) {\n        console.error('Configuration failed:', error);\n        process.exit(1);\n      }\n    });\n\n  return command;\n};\n"]}