validate.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { ApiConfiguration, openRouterDefaultModelId } from "../../../src/shared/api"
  2. import { ModelInfo } from "../../../src/shared/api"
  3. export function validateApiConfiguration(apiConfiguration?: ApiConfiguration): string | undefined {
  4. if (apiConfiguration) {
  5. switch (apiConfiguration.apiProvider) {
  6. case "anthropic":
  7. if (!apiConfiguration.apiKey) {
  8. return "You must provide a valid API key or choose a different provider."
  9. }
  10. break
  11. case "bedrock":
  12. if (!apiConfiguration.awsRegion) {
  13. return "You must choose a region to use with AWS Bedrock."
  14. }
  15. break
  16. case "openrouter":
  17. if (!apiConfiguration.openRouterApiKey) {
  18. return "You must provide a valid API key or choose a different provider."
  19. }
  20. break
  21. case "vertex":
  22. if (!apiConfiguration.vertexProjectId || !apiConfiguration.vertexRegion) {
  23. return "You must provide a valid Google Cloud Project ID and Region."
  24. }
  25. break
  26. case "gemini":
  27. if (!apiConfiguration.geminiApiKey) {
  28. return "You must provide a valid API key or choose a different provider."
  29. }
  30. break
  31. case "openai-native":
  32. if (!apiConfiguration.openAiNativeApiKey) {
  33. return "You must provide a valid API key or choose a different provider."
  34. }
  35. break
  36. case "openai":
  37. if (
  38. !apiConfiguration.openAiBaseUrl ||
  39. !apiConfiguration.openAiApiKey ||
  40. !apiConfiguration.openAiModelId
  41. ) {
  42. return "You must provide a valid base URL, API key, and model ID."
  43. }
  44. break
  45. case "ollama":
  46. if (!apiConfiguration.ollamaModelId) {
  47. return "You must provide a valid model ID."
  48. }
  49. break
  50. }
  51. }
  52. return undefined
  53. }
  54. export function validateModelId(
  55. apiConfiguration?: ApiConfiguration,
  56. openRouterModels?: Record<string, ModelInfo>
  57. ): string | undefined {
  58. if (apiConfiguration) {
  59. switch (apiConfiguration.apiProvider) {
  60. case "openrouter":
  61. const modelId = apiConfiguration.openRouterModelId || openRouterDefaultModelId // in case the user hasn't changed the model id, it will be undefined by default
  62. if (!modelId) {
  63. return "You must provide a model ID."
  64. }
  65. if (openRouterModels && !Object.keys(openRouterModels).includes(modelId)) {
  66. // even if the model list endpoint failed, extensionstatecontext will always have the default model info
  67. return "The model ID you provided is not available. Please choose a different model."
  68. }
  69. break
  70. }
  71. }
  72. return undefined
  73. }