Tm start (#1200)
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>
This commit is contained in:
85
src/ai-providers/custom-sdk/grok-cli/index.js
Normal file
85
src/ai-providers/custom-sdk/grok-cli/index.js
Normal file
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* @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';
|
||||
Reference in New Issue
Block a user