(opts = {})
| 580 | |
| 581 | /** List all models in OpenAI /v1/models format. Hides deprecated models. */ |
| 582 | export function listModels(opts = {}) { |
| 583 | const ts = Math.floor(Date.now() / 1000); |
| 584 | const specialAgentEnabled = opts.specialAgentEnabled ?? isSpecialAgentCatalogEnabled(); |
| 585 | const includeDisabledSpecialAgent = opts.includeDisabledSpecialAgent |
| 586 | ?? process.env.WINDSURFAPI_SHOW_DISABLED_SPECIAL_AGENT_MODELS === '1'; |
| 587 | return Object.entries(MODELS) |
| 588 | .filter(([, info]) => !info.deprecated) |
| 589 | .filter(([, info]) => info.backend !== 'special_agent' || specialAgentEnabled || includeDisabledSpecialAgent) |
| 590 | .map(([id, info]) => ({ |
| 591 | id: info.name, |
| 592 | object: 'model', |
| 593 | created: ts, |
| 594 | owned_by: info.provider, |
| 595 | _windsurf_id: id, |
| 596 | ...(info.backend === 'special_agent' ? { |
| 597 | _backend: 'special_agent', |
| 598 | _available: !!specialAgentEnabled, |
| 599 | ...(!specialAgentEnabled ? { _unavailable_reason: 'special-agent backend disabled' } : {}), |
| 600 | } : {}), |
| 601 | })); |
| 602 | } |
| 603 | |
| 604 | /** |
| 605 | * Merge live model configs from GetCascadeModelConfigs into the catalog. |
no test coverage detected