recoder-shared
Version:
Shared types, utilities, and configurations for Recoder
89 lines • 2.67 kB
JavaScript
/**
* VS Code Language Model Selector Utilities
* Helper functions for working with VS Code's Language Model API
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.stringifyVsCodeLmModelSelector = stringifyVsCodeLmModelSelector;
exports.parseVsCodeLmModelSelector = parseVsCodeLmModelSelector;
exports.getAvailableVsCodeModels = getAvailableVsCodeModels;
exports.isValidVsCodeLmSelector = isValidVsCodeLmSelector;
exports.getBestVsCodeLmMatch = getBestVsCodeLmMatch;
/**
* Stringify VS Code Language Model selector for API usage
*/
function stringifyVsCodeLmModelSelector(vendor, family, version) {
if (version) {
return `${vendor}/${family}/${version}`;
}
return `${vendor}/${family}`;
}
/**
* Parse VS Code Language Model selector string
*/
function parseVsCodeLmModelSelector(selector) {
const parts = selector.split('/');
if (parts.length < 2) {
return null;
}
return {
vendor: parts[0],
family: parts[1],
version: parts[2] || undefined,
};
}
/**
* Get available VS Code Language Models
* This is a placeholder - actual implementation would use VS Code API
*/
function getAvailableVsCodeModels() {
return [
{
id: 'gpt-4',
vendor: 'openai',
family: 'gpt-4',
version: 'latest',
maxInputTokens: 128000,
maxOutputTokens: 4096,
},
{
id: 'gpt-3.5-turbo',
vendor: 'openai',
family: 'gpt-3.5-turbo',
version: 'latest',
maxInputTokens: 16384,
maxOutputTokens: 4096,
},
];
}
/**
* Validate VS Code Language Model selector
*/
function isValidVsCodeLmSelector(selector) {
const parsed = parseVsCodeLmModelSelector(selector);
return parsed !== null && parsed.vendor.length > 0 && parsed.family.length > 0;
}
/**
* Get best matching VS Code Language Model
*/
function getBestVsCodeLmMatch(preferredVendor, preferredFamily) {
const available = getAvailableVsCodeModels();
if (!available.length) {
return null;
}
// Try to find exact match
if (preferredVendor && preferredFamily) {
const exact = available.find(m => m.vendor === preferredVendor && m.family === preferredFamily);
if (exact)
return exact;
}
// Try to find vendor match
if (preferredVendor) {
const vendorMatch = available.find(m => m.vendor === preferredVendor);
if (vendorMatch)
return vendorMatch;
}
// Return first available
return available[0];
}
//# sourceMappingURL=vsCodeSelectorUtils.js.map
;