Co-authored-by: Max Tuzzolino <maxtuzz@Maxs-MacBook-Pro.local> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Max Tuzzolino <max.tuzsmith@gmail.com> Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
86 lines
2.2 KiB
JavaScript
86 lines
2.2 KiB
JavaScript
/**
|
|
* @fileoverview Grok CLI provider factory and exports
|
|
*/
|
|
|
|
import { NoSuchModelError } from '@ai-sdk/provider';
|
|
import { GrokCliLanguageModel } from './language-model.js';
|
|
|
|
/**
|
|
* @typedef {import('./types.js').GrokCliSettings} GrokCliSettings
|
|
* @typedef {import('./types.js').GrokCliModelId} GrokCliModelId
|
|
* @typedef {import('./types.js').GrokCliProvider} GrokCliProvider
|
|
* @typedef {import('./types.js').GrokCliProviderSettings} GrokCliProviderSettings
|
|
*/
|
|
|
|
/**
|
|
* Create a Grok CLI provider
|
|
* @param {GrokCliProviderSettings} [options={}] - Provider configuration options
|
|
* @returns {GrokCliProvider} Grok CLI provider instance
|
|
*/
|
|
export function createGrokCli(options = {}) {
|
|
/**
|
|
* Create a language model instance
|
|
* @param {GrokCliModelId} modelId - Model ID
|
|
* @param {GrokCliSettings} [settings={}] - Model settings
|
|
* @returns {GrokCliLanguageModel}
|
|
*/
|
|
const createModel = (modelId, settings = {}) => {
|
|
return new GrokCliLanguageModel({
|
|
id: modelId,
|
|
settings: {
|
|
...options.defaultSettings,
|
|
...settings
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Provider function
|
|
* @param {GrokCliModelId} modelId - Model ID
|
|
* @param {GrokCliSettings} [settings] - Model settings
|
|
* @returns {GrokCliLanguageModel}
|
|
*/
|
|
const provider = function (modelId, settings) {
|
|
if (new.target) {
|
|
throw new Error(
|
|
'The Grok CLI model function cannot be called with the new keyword.'
|
|
);
|
|
}
|
|
|
|
return createModel(modelId, settings);
|
|
};
|
|
|
|
provider.languageModel = createModel;
|
|
provider.chat = createModel; // Alias for languageModel
|
|
|
|
// Add textEmbeddingModel method that throws NoSuchModelError
|
|
provider.textEmbeddingModel = (modelId) => {
|
|
throw new NoSuchModelError({
|
|
modelId,
|
|
modelType: 'textEmbeddingModel'
|
|
});
|
|
};
|
|
|
|
return /** @type {GrokCliProvider} */ (provider);
|
|
}
|
|
|
|
/**
|
|
* Default Grok CLI provider instance
|
|
*/
|
|
export const grokCli = createGrokCli();
|
|
|
|
// Provider exports
|
|
export { GrokCliLanguageModel } from './language-model.js';
|
|
|
|
// Error handling exports
|
|
export {
|
|
isAuthenticationError,
|
|
isTimeoutError,
|
|
isInstallationError,
|
|
getErrorMetadata,
|
|
createAPICallError,
|
|
createAuthenticationError,
|
|
createTimeoutError,
|
|
createInstallationError
|
|
} from './errors.js';
|