kbot - esm 2/3 - schoene neue welt
This commit is contained in:
parent
3b187760e8
commit
168e4af851
3
packages/kbot/dist-in/client.d.ts
vendored
Normal file
3
packages/kbot/dist-in/client.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import { OpenAI } from 'openai';
|
||||
import { IKBotOptions } from './zod_types.js';
|
||||
export declare const createClient: (options: IKBotOptions) => OpenAI;
|
||||
95
packages/kbot/dist-in/client.js
Normal file
95
packages/kbot/dist-in/client.js
Normal file
@ -0,0 +1,95 @@
|
||||
import { OpenAI } from 'openai';
|
||||
import { logger } from './index.js';
|
||||
import { loadConfig } from './config.js';
|
||||
/**
|
||||
* Default base URLs for different routers
|
||||
*/
|
||||
const ROUTER_BASE_URLS = {
|
||||
openrouter: 'https://openrouter.ai/api/v1',
|
||||
openai: '', // OpenAI uses default URL
|
||||
deepseek: 'https://api.deepseek.com',
|
||||
huggingface: 'https://api-inference.huggingface.co',
|
||||
ollama: 'http://localhost:11434', // Ollama's default local API endpoint
|
||||
fireworks: 'https://api.fireworks.ai/v1', // Fireworks API endpoint
|
||||
gemini: 'https://generativelanguage.googleapis.com/v1beta', // Gemini API base URL
|
||||
xai: 'https://api.x.ai/v1', // XAI (Grok) API base URL
|
||||
};
|
||||
/**
|
||||
* Default models for different routers
|
||||
*/
|
||||
const DEFAULT_MODELS = {
|
||||
openrouter: 'anthropic/claude-3.5-sonnet',
|
||||
openai: 'gpt-4o',
|
||||
deepseek: 'deepseek-chat',
|
||||
huggingface: 'meta-llama/2',
|
||||
ollama: 'leonard', // Default Ollama model
|
||||
fireworks: 'llama-v2-70b-chat', // Default Fireworks model
|
||||
gemini: 'gemini-1.5-pro', // Default Gemini model
|
||||
xai: 'grok-1' // Default XAI (Grok) model
|
||||
};
|
||||
/*
|
||||
* Creates an OpenAI client instance based on the provided options.
|
||||
* @param options - Configuration options for the client
|
||||
* @returns OpenAI client instance or undefined if configuration is invalid
|
||||
*/
|
||||
export const createClient = (options) => {
|
||||
// Load configuration from file
|
||||
const config = loadConfig(options);
|
||||
if (!config) {
|
||||
logger.error("Config not found in $HOME/.osr/config.json. " +
|
||||
"Optionally, export OSR_CONFIG with the path to the configuration file.");
|
||||
return undefined;
|
||||
}
|
||||
// Determine router to use (defaults to 'openrouter')
|
||||
const router = (options.router ?? 'openrouter');
|
||||
// Initialize API key
|
||||
let apiKey = options.api_key;
|
||||
// Set API key based on router if not provided in options
|
||||
if (!apiKey) {
|
||||
switch (router) {
|
||||
case 'openrouter':
|
||||
apiKey = config?.openrouter?.key;
|
||||
break;
|
||||
case 'openai':
|
||||
apiKey = config?.openai?.key;
|
||||
break;
|
||||
case 'deepseek':
|
||||
apiKey = config?.deepseek?.key;
|
||||
break;
|
||||
case 'huggingface':
|
||||
apiKey = config?.huggingface?.key;
|
||||
break;
|
||||
case 'ollama':
|
||||
// Ollama doesn't require an API key when running locally
|
||||
apiKey = 'ollama'; // Dummy key for Ollama
|
||||
break;
|
||||
case 'fireworks':
|
||||
apiKey = config?.fireworks?.key;
|
||||
break;
|
||||
case 'gemini':
|
||||
apiKey = config?.gemini?.key;
|
||||
break;
|
||||
case 'xai':
|
||||
apiKey = config?.xai?.key;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Validate API key
|
||||
if (!apiKey) {
|
||||
logger.error(`No ${router} key found. Please provide an "api_key", set it in the config, or pass it via JSON config.`);
|
||||
return undefined;
|
||||
}
|
||||
// Set default baseURL if not provided
|
||||
const baseURL = options.baseURL ?? ROUTER_BASE_URLS[router];
|
||||
// Set default model if not provided
|
||||
if (!options.model) {
|
||||
options.model = DEFAULT_MODELS[router];
|
||||
}
|
||||
logger.info(`Creating client with ${router} router, model ${options.model}, and API key ${apiKey} at ${baseURL}`);
|
||||
// Create and return the OpenAI client instance
|
||||
return new OpenAI({
|
||||
apiKey,
|
||||
baseURL,
|
||||
});
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQVd4Qzs7R0FFRztBQUNILE1BQU0sZ0JBQWdCLEdBQStCO0lBQ2pELFVBQVUsRUFBRSw4QkFBOEI7SUFDMUMsTUFBTSxFQUFFLEVBQUUsRUFBRSwwQkFBMEI7SUFDdEMsUUFBUSxFQUFFLDBCQUEwQjtJQUNwQyxXQUFXLEVBQUUsc0NBQXNDO0lBQ25ELE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxzQ0FBc0M7SUFDeEUsU0FBUyxFQUFFLDZCQUE2QixFQUFFLHlCQUF5QjtJQUNuRSxNQUFNLEVBQUUsa0RBQWtELEVBQUUsc0JBQXNCO0lBQ2xGLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEI7Q0FDekQsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQStCO0lBQy9DLFVBQVUsRUFBRSw2QkFBNkI7SUFDekMsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLGVBQWU7SUFDekIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsTUFBTSxFQUFFLFNBQVMsRUFBRSx1QkFBdUI7SUFDMUMsU0FBUyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQjtJQUMxRCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCO0lBQ2pELEdBQUcsRUFBRSxRQUFRLENBQUMsMkJBQTJCO0NBQzVDLENBQUE7QUFDRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQ2xELCtCQUErQjtJQUMvQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1YsTUFBTSxDQUFDLEtBQUssQ0FDUiw4Q0FBOEM7WUFDOUMsd0VBQXdFLENBQzNFLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBQ0QscURBQXFEO0lBQ3JELE1BQU0sTUFBTSxHQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQWUsQ0FBQztJQUUxRSxxQkFBcUI7SUFDckIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUU3Qix5REFBeUQ7SUFDekQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1YsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNiLEtBQUssWUFBWTtnQkFDYixNQUFNLEdBQUcsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUM7Z0JBQ2pDLE1BQU07WUFDVixLQUFLLFFBQVE7Z0JBQ1QsTUFBTSxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO2dCQUM3QixNQUFNO1lBQ1YsS0FBSyxVQUFVO2dCQUNYLE1BQU0sR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQztnQkFDL0IsTUFBTTtZQUNWLEtBQUssYUFBYTtnQkFDZCxNQUFNLEdBQUcsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUM7Z0JBQ2xDLE1BQU07WUFDVixLQUFLLFFBQVE7Z0JBQ1QseURBQXlEO2dCQUN6RCxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsdUJBQXVCO2dCQUMxQyxNQUFNO1lBQ1YsS0FBSyxXQUFXO2dCQUNaLE1BQU0sR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQztnQkFDaEMsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxNQUFNLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7Z0JBQzdCLE1BQU07WUFDVixLQUFLLEtBQUs7Z0JBQ04sTUFBTSxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUMxQixNQUFNO1FBQ2QsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRyxDQUFDO1FBQ1gsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLE1BQU0sNEZBQTRGLENBQUMsQ0FBQztRQUN2SCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFM0Qsb0NBQW9DO0lBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLE1BQU0sa0JBQWtCLE9BQU8sQ0FBQyxLQUFLLGlCQUFpQixNQUFNLE9BQU8sT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUVqSCwrQ0FBK0M7SUFDL0MsT0FBTyxJQUFJLE1BQU0sQ0FBQztRQUNkLE1BQU07UUFDTixPQUFPO0tBQ1YsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBIn0=
|
||||
1
packages/kbot/dist-in/commands/build.d.ts
vendored
1
packages/kbot/dist-in/commands/build.d.ts
vendored
@ -1 +0,0 @@
|
||||
export declare const build: () => Promise<void>;
|
||||
@ -1,36 +0,0 @@
|
||||
import path from 'path';
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import { sync as write } from '@polymech/fs/write';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { logger } from '../';
|
||||
import { fetchOpenAIModels } from '../models/openai';
|
||||
import { fetchOpenRouterModels } from '../models/openrouter';
|
||||
import { CONFIG_DEFAULT } from '@polymech/osr-commons';
|
||||
export const build = async () => {
|
||||
const examplesSrc = path.resolve(__dirname, '../docs_/examples.md');
|
||||
if (exists(examplesSrc)) {
|
||||
const examples = read(examplesSrc, 'string') || '';
|
||||
const examplesPath = path.resolve(__dirname, '../src/docs-internal/examples.ts');
|
||||
write(examplesPath, `export const examples = ${JSON.stringify(examples)}`);
|
||||
logger.info(`Examples file generated " ${examplesPath}`);
|
||||
}
|
||||
else {
|
||||
logger.error(`Examples file not found ${examplesSrc}`);
|
||||
}
|
||||
const config = CONFIG_DEFAULT();
|
||||
const modelsOpenAI = await fetchOpenAIModels(config.openai.key);
|
||||
const modelsOpenRouter = (await fetchOpenRouterModels()).map((model) => {
|
||||
return {
|
||||
id: model.id,
|
||||
name: model.name,
|
||||
pricing: model.pricing,
|
||||
context: model.context,
|
||||
created: model.created
|
||||
};
|
||||
});
|
||||
const modelsOpenAIPath = path.resolve(__dirname, '../src/models/cache/openai.ts');
|
||||
write(modelsOpenAIPath, `export const models = ${JSON.stringify(modelsOpenAI)}`);
|
||||
const modelsOpenRouterPath = path.resolve(__dirname, '../src/models/cache/openrouter.ts');
|
||||
write(modelsOpenRouterPath, `export const models = ${JSON.stringify(modelsOpenRouter)}`);
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRXZCLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFtQixNQUFNLHNCQUFzQixDQUFBO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUd0RCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDOUIsTUFBTSxXQUFXLEdBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQTtJQUNwRSxJQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2pELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGtDQUFrQyxDQUFDLENBQUE7UUFDaEYsS0FBSyxDQUFDLFlBQVksRUFBQywyQkFBMkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDekUsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsWUFBWSxFQUFFLENBQUMsQ0FBQTtJQUMxRCxDQUFDO1NBQUksQ0FBQztRQUNKLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLGNBQWMsRUFBUyxDQUFBO0lBRXRDLE1BQU0sWUFBWSxHQUFJLE1BQU0saUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNoRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBTSxxQkFBcUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDckUsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNaLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztTQUN2QixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLCtCQUErQixDQUFDLENBQUE7SUFDakYsS0FBSyxDQUFDLGdCQUFnQixFQUFDLHlCQUF5QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUUvRSxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLG1DQUFtQyxDQUFDLENBQUE7SUFDekYsS0FBSyxDQUFDLG9CQUFvQixFQUFDLHlCQUF5QixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ3pGLENBQUMsQ0FBQSJ9
|
||||
1
packages/kbot/dist-in/commands/examples.d.ts
vendored
1
packages/kbot/dist-in/commands/examples.d.ts
vendored
@ -1 +0,0 @@
|
||||
export declare const examples: () => void;
|
||||
@ -1,10 +0,0 @@
|
||||
import { marked } from 'marked';
|
||||
import { markedTerminal } from 'marked-terminal';
|
||||
import { examples as content } from '../docs-internal/examples';
|
||||
export const examples = () => {
|
||||
marked.use(markedTerminal({
|
||||
emoji: false,
|
||||
}));
|
||||
process.stdout.write(marked(content));
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZXhhbXBsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDaEQsT0FBTyxFQUFFLFFBQVEsSUFBSSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUUvRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQzNCLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUN2QjtRQUNFLEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FDRixDQUFDLENBQUE7SUFDRixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFXLENBQUMsQ0FBQTtBQUNqRCxDQUFDLENBQUEifQ==
|
||||
1
packages/kbot/dist-in/commands/fetch.d.ts
vendored
1
packages/kbot/dist-in/commands/fetch.d.ts
vendored
@ -1 +0,0 @@
|
||||
export declare const fetch: () => Promise<void>;
|
||||
@ -1,33 +0,0 @@
|
||||
import path from 'path';
|
||||
import { sync as write } from '@polymech/fs/write';
|
||||
import { logger, module_root } from '..';
|
||||
import { fetchOpenAIModels } from '../models/openai';
|
||||
import { fetchOpenRouterModels } from '../models/openrouter';
|
||||
import { CONFIG_DEFAULT } from '@polymech/osr-commons';
|
||||
export const fetch = async () => {
|
||||
const config = CONFIG_DEFAULT();
|
||||
if (config.openai && config.openai.key) {
|
||||
const modelsOpenAI = await fetchOpenAIModels(config.openai.key);
|
||||
if (modelsOpenAI) {
|
||||
const modelsOpenAIPath = path.resolve(module_root(), 'openai.json');
|
||||
write(modelsOpenAIPath, modelsOpenAI);
|
||||
logger.info(`Fetched ${modelsOpenAI.length} OpenAI models, to ${modelsOpenAIPath}`);
|
||||
}
|
||||
else {
|
||||
logger.error(`Failed to fetch OpenAI models`);
|
||||
}
|
||||
}
|
||||
const modelsOpenRouter = (await fetchOpenRouterModels()).map((model) => {
|
||||
return {
|
||||
id: model.id,
|
||||
name: model.name,
|
||||
pricing: model.pricing,
|
||||
context: model.context,
|
||||
created: model.created
|
||||
};
|
||||
});
|
||||
const modelsOpenRouterPath = path.resolve(module_root(), 'openrouter.json');
|
||||
write(modelsOpenRouterPath, modelsOpenRouter);
|
||||
logger.info(`Fetched ${modelsOpenRouter.length} OpenRouter models, to ${modelsOpenRouterPath}`);
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRXRELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRTtJQUU5QixNQUFNLE1BQU0sR0FBRyxjQUFjLEVBQVMsQ0FBQTtJQUN0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxNQUFNLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUE7WUFDbkUsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFBO1lBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxZQUFZLENBQUMsTUFBTSxzQkFBc0IsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1FBQ3JGLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0scUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3JFLE9BQU87WUFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDWixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUE7SUFDM0UsS0FBSyxDQUFDLG9CQUFvQixFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLGdCQUFnQixDQUFDLE1BQU0sMEJBQTBCLG9CQUFvQixFQUFFLENBQUMsQ0FBQTtBQUNqRyxDQUFDLENBQUEifQ==
|
||||
69
packages/kbot/dist-in/commands/handlers/audio-handler.d.ts
vendored
Normal file
69
packages/kbot/dist-in/commands/handlers/audio-handler.d.ts
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
import { BaseHandler } from './base-handler.js';
|
||||
import { IKBotOptions } from '../../zod_types.js';
|
||||
/**
|
||||
* Hex bytes for the "ID3" tag (ID3v2 header).
|
||||
* Typically found at the beginning of an MP3 file that contains ID3 metadata.
|
||||
*/
|
||||
export declare const ID3_HEADER_BYTES: Uint8Array<ArrayBuffer>;
|
||||
/**
|
||||
* Possible first two bytes (frame sync) of an MP3 file without an ID3 tag.
|
||||
* Commonly:
|
||||
* - 0xFF 0xFB for MPEG-1 Layer III
|
||||
* - 0xFF 0xF3 for MPEG-2 Layer III
|
||||
* - 0xFF 0xF2 for MPEG-2.5 Layer III
|
||||
*/
|
||||
export declare const MP3_FRAME_SYNC_PATTERNS: Uint8Array[];
|
||||
/**
|
||||
* "RIFF" in ASCII
|
||||
* 0x52 = R
|
||||
* 0x49 = I
|
||||
* 0x46 = F
|
||||
* 0x46 = F
|
||||
*/
|
||||
export declare const WAV_RIFF_HEADER: Uint8Array<ArrayBuffer>;
|
||||
/**
|
||||
* "WAVE" in ASCII
|
||||
* 0x57 = W
|
||||
* 0x41 = A
|
||||
* 0x56 = V
|
||||
* 0x45 = E
|
||||
*/
|
||||
export declare const WAV_WAVE_HEADER: Uint8Array<ArrayBuffer>;
|
||||
/**
|
||||
* Checks if the provided file buffer is likely a WAV file.
|
||||
* - Must start with "RIFF" (bytes 0–3)
|
||||
* - Must have "WAVE" at bytes 8–11
|
||||
*/
|
||||
export declare function isWavFile(fileBuffer: ArrayBuffer): boolean;
|
||||
/**
|
||||
* "ftyp" in ASCII (0x66 = f, 0x74 = t, 0x79 = y, 0x70 = p).
|
||||
*/
|
||||
export declare const FTYP_BOX_HEADER: Uint8Array<ArrayBuffer>;
|
||||
/**
|
||||
* Common major/compatible brand signatures for M4A.
|
||||
* - "M4A " (0x4D 0x34 0x41 0x20)
|
||||
* - "mp42" (0x6D 0x70 0x34 0x32)
|
||||
* - "isom" (0x69 0x73 0x6F 0x6D)
|
||||
*
|
||||
* Note: Some M4A files might list different/older brand combos,
|
||||
* but these are the most common.
|
||||
*/
|
||||
export declare const M4A_BRANDS: Uint8Array[];
|
||||
/**
|
||||
* Checks if the provided file buffer likely represents an M4A.
|
||||
*
|
||||
* Basic check:
|
||||
* 1. Must have at least 12 bytes (4 bytes size + "ftyp" + brand).
|
||||
* 2. Bytes [4..7] should be "f t y p".
|
||||
* 3. Bytes [8..11] should match a known brand (e.g., "M4A ", "mp42", "isom").
|
||||
*
|
||||
* @param fileBuffer The raw file data as an ArrayBuffer
|
||||
* @returns boolean indicating if this is likely an M4A
|
||||
*/
|
||||
export declare function isM4AFile(fileBuffer: ArrayBuffer): boolean;
|
||||
export declare class AudioHandler extends BaseHandler {
|
||||
private options;
|
||||
constructor(options: IKBotOptions);
|
||||
canHandle(content: Buffer | string, isPath: boolean): Promise<boolean>;
|
||||
handle(content: Buffer | string, isPath: boolean): Promise<string>;
|
||||
}
|
||||
224
packages/kbot/dist-in/commands/handlers/audio-handler.js
Normal file
224
packages/kbot/dist-in/commands/handlers/audio-handler.js
Normal file
File diff suppressed because one or more lines are too long
8
packages/kbot/dist-in/commands/handlers/base-handler.d.ts
vendored
Normal file
8
packages/kbot/dist-in/commands/handlers/base-handler.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
export interface IHandler {
|
||||
canHandle(content: Buffer | string, isPath: boolean): Promise<boolean>;
|
||||
handle(content: Buffer | string, isPath: boolean): Promise<string>;
|
||||
}
|
||||
export declare abstract class BaseHandler implements IHandler {
|
||||
abstract canHandle(content: Buffer | string, isPath: boolean): Promise<boolean>;
|
||||
abstract handle(content: Buffer | string, isPath: boolean): Promise<string>;
|
||||
}
|
||||
3
packages/kbot/dist-in/commands/handlers/base-handler.js
Normal file
3
packages/kbot/dist-in/commands/handlers/base-handler.js
Normal file
@ -0,0 +1,3 @@
|
||||
export class BaseHandler {
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2hhbmRsZXJzL2Jhc2UtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQWdCLFdBQVc7Q0FHaEMifQ==
|
||||
12
packages/kbot/dist-in/commands/handlers/image-handler.d.ts
vendored
Normal file
12
packages/kbot/dist-in/commands/handlers/image-handler.d.ts
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
import { BaseHandler } from './base-handler.js';
|
||||
import { IKBotOptions } from '../../zod_types.js';
|
||||
export declare const getImageType: (filePath: string | Buffer) => {
|
||||
fileName: string;
|
||||
mimeType: string;
|
||||
};
|
||||
export declare class ImageHandler extends BaseHandler {
|
||||
private options;
|
||||
constructor(options: IKBotOptions);
|
||||
canHandle(content: Buffer | string, isPath: boolean): Promise<boolean>;
|
||||
handle(content: Buffer | string, isPath: boolean): Promise<string>;
|
||||
}
|
||||
126
packages/kbot/dist-in/commands/handlers/image-handler.js
Normal file
126
packages/kbot/dist-in/commands/handlers/image-handler.js
Normal file
File diff suppressed because one or more lines are too long
4
packages/kbot/dist-in/commands/handlers/index.d.ts
vendored
Normal file
4
packages/kbot/dist-in/commands/handlers/index.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
import { IHandler } from './base-handler.js';
|
||||
import { IKBotOptions } from '../../zod_types.js';
|
||||
export declare function createHandlers(options: IKBotOptions): IHandler[];
|
||||
export declare function detectAndHandle(content: Buffer | string, options: IKBotOptions): Promise<string>;
|
||||
33
packages/kbot/dist-in/commands/handlers/index.js
Normal file
33
packages/kbot/dist-in/commands/handlers/index.js
Normal file
@ -0,0 +1,33 @@
|
||||
import * as path from 'node:path';
|
||||
import { TextHandler } from './text-handler.js';
|
||||
import { AudioHandler } from './audio-handler.js';
|
||||
import { ImageHandler } from './image-handler.js';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
export function createHandlers(options) {
|
||||
return [
|
||||
new AudioHandler(options),
|
||||
new ImageHandler(options),
|
||||
new TextHandler(),
|
||||
];
|
||||
}
|
||||
export async function detectAndHandle(content, options) {
|
||||
const handlers = createHandlers(options);
|
||||
// Check if content is a file path
|
||||
const contentStr = content.toString();
|
||||
if (exists(contentStr)) {
|
||||
const filePath = path.resolve(contentStr);
|
||||
for (const handler of handlers) {
|
||||
if (await handler.canHandle(filePath, true)) {
|
||||
return handler.handle(filePath, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Handle as raw content
|
||||
for (const handler of handlers) {
|
||||
if (await handler.canHandle(content, false)) {
|
||||
return handler.handle(content, false);
|
||||
}
|
||||
}
|
||||
throw new Error('No suitable handler found for the input content');
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvaGFuZGxlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUE7QUFFakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDakQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUlwRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQXFCO0lBQ2xELE9BQU87UUFDTCxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDekIsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3pCLElBQUksV0FBVyxFQUFFO0tBQ2xCLENBQUE7QUFDSCxDQUFDO0FBQ0QsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUMsT0FBd0IsRUFBRSxPQUFxQjtJQUNuRixNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEMsa0NBQWtDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixJQUFJLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixJQUFJLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0FBQ3JFLENBQUMifQ==
|
||||
5
packages/kbot/dist-in/commands/handlers/text-handler.d.ts
vendored
Normal file
5
packages/kbot/dist-in/commands/handlers/text-handler.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
import { BaseHandler } from './base-handler.js';
|
||||
export declare class TextHandler extends BaseHandler {
|
||||
canHandle(content: Buffer | string, isPath: boolean): Promise<boolean>;
|
||||
handle(content: Buffer | string, isPath: boolean): Promise<string>;
|
||||
}
|
||||
31
packages/kbot/dist-in/commands/handlers/text-handler.js
Normal file
31
packages/kbot/dist-in/commands/handlers/text-handler.js
Normal file
@ -0,0 +1,31 @@
|
||||
import { BaseHandler } from './base-handler.js';
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import * as path from 'node:path';
|
||||
export class TextHandler extends BaseHandler {
|
||||
async canHandle(content, isPath) {
|
||||
if (isPath) {
|
||||
// For file paths, check file extension
|
||||
const ext = path.extname(content).toLowerCase();
|
||||
return ['.txt', '.md', '.json', '.js', '.ts'].includes(ext);
|
||||
}
|
||||
// For raw content, try to decode as UTF-8 text
|
||||
try {
|
||||
if (Buffer.isBuffer(content)) {
|
||||
content.toString('utf8');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
async handle(content, isPath) {
|
||||
if (isPath) {
|
||||
// Read content from file
|
||||
return read(content, 'string');
|
||||
}
|
||||
// Return raw content as string
|
||||
return Buffer.isBuffer(content) ? content.toString('utf8') : content;
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2hhbmRsZXJzL3RleHQtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUVqQyxNQUFNLE9BQU8sV0FBWSxTQUFRLFdBQVc7SUFDMUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUF3QixFQUFFLE1BQWU7UUFDdkQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLHVDQUF1QztZQUN2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQWlCLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxRCxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsK0NBQStDO1FBQy9DLElBQUksQ0FBQztZQUNILElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUF3QixFQUFFLE1BQWU7UUFDcEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLHlCQUF5QjtZQUN6QixPQUFPLElBQUksQ0FBQyxPQUFpQixFQUFFLFFBQVEsQ0FBVyxDQUFDO1FBQ3JELENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDdkUsQ0FBQztDQUNGIn0=
|
||||
3
packages/kbot/dist-in/commands/help.d.ts
vendored
3
packages/kbot/dist-in/commands/help.d.ts
vendored
@ -1,3 +0,0 @@
|
||||
export declare const help: () => string;
|
||||
declare const _default: (argv: any) => Promise<string>;
|
||||
export default _default;
|
||||
@ -1,48 +0,0 @@
|
||||
import { marked } from 'marked';
|
||||
import { markedTerminal } from 'marked-terminal';
|
||||
import { OptionsSchema } from '../zod_schema';
|
||||
import { getDefaultValue, getDescription } from '@polymech/osr-commons';
|
||||
import { z } from 'zod';
|
||||
export const help = () => {
|
||||
const schema = OptionsSchema();
|
||||
const desc = schema._def.description;
|
||||
const shape = schema.shape;
|
||||
const md = [
|
||||
'# KBot Command Line Interface',
|
||||
'',
|
||||
'```bash',
|
||||
'kplus modify [prompt] [options]',
|
||||
'```',
|
||||
'',
|
||||
'## Description',
|
||||
'',
|
||||
desc || 'KBot CLI Tool',
|
||||
'',
|
||||
'## Options',
|
||||
''
|
||||
];
|
||||
// Process each parameter
|
||||
for (const [key, def] of Object.entries(shape)) {
|
||||
const isOptional = def instanceof z.ZodOptional;
|
||||
const defaultValue = getDefaultValue(def);
|
||||
const description = getDescription(def);
|
||||
md.push(`--${key}`);
|
||||
md.push('');
|
||||
md.push(`Description: ${description}`);
|
||||
if (defaultValue !== undefined) {
|
||||
md.push(`Default: \`${JSON.stringify(defaultValue)}\``);
|
||||
}
|
||||
md.push(`Required: ${(!isOptional).toString()}`);
|
||||
md.push('');
|
||||
}
|
||||
marked.use(markedTerminal({
|
||||
emoji: false
|
||||
}));
|
||||
const content = marked(md.join('\n'));
|
||||
process.stdout.write(content);
|
||||
return content;
|
||||
};
|
||||
export default async (argv) => {
|
||||
return help();
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9oZWxwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7SUFDdkIsTUFBTSxNQUFNLEdBQUcsYUFBYSxFQUFFLENBQUE7SUFDOUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDcEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQTtJQUUxQixNQUFNLEVBQUUsR0FBRztRQUNULCtCQUErQjtRQUMvQixFQUFFO1FBQ0YsU0FBUztRQUNULGlDQUFpQztRQUNqQyxLQUFLO1FBQ0wsRUFBRTtRQUNGLGdCQUFnQjtRQUNoQixFQUFFO1FBQ0YsSUFBSSxJQUFJLGVBQWU7UUFDdkIsRUFBRTtRQUNGLFlBQVk7UUFDWixFQUFFO0tBQ0gsQ0FBQTtJQUVELHlCQUF5QjtJQUN6QixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9DLE1BQU0sVUFBVSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFBO1FBRS9DLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN6QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFdkMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDbkIsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNYLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLFdBQVcsRUFBRSxDQUFDLENBQUE7UUFDdEMsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pELENBQUM7UUFDRCxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNoRCxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQ3hCLEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQyxDQUFDLENBQUE7SUFDSCxNQUFNLE9BQU8sR0FBVyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBVyxDQUFDO0lBQ3hELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzdCLE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMsQ0FBQTtBQUVELGVBQWUsS0FBSyxFQUFFLElBQVMsRUFBRSxFQUFFO0lBQ2pDLE9BQU8sSUFBSSxFQUFFLENBQUE7QUFDZixDQUFDLENBQUEifQ==
|
||||
2
packages/kbot/dist-in/commands/init.d.ts
vendored
2
packages/kbot/dist-in/commands/init.d.ts
vendored
@ -1,2 +0,0 @@
|
||||
import { IKBotTask } from '../types';
|
||||
export declare const init: (argv: IKBotTask) => Promise<number>;
|
||||
@ -1,105 +0,0 @@
|
||||
import { sync as dir } from '@polymech/fs/dir';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { sync as write } from '@polymech/fs/write';
|
||||
import * as path from 'path';
|
||||
import { Logger } from 'tslog';
|
||||
import { MODULE_NAME } from '../constants';
|
||||
const PREFERENCES_TEMPLATE = `# Personal Preferences
|
||||
|
||||
This file stores personal information and preferences to help the AI assistant provide more personalized and contextual responses.
|
||||
|
||||
## My Preferences
|
||||
|
||||
Gender :
|
||||
Location :
|
||||
Language :
|
||||
Occupation :
|
||||
Age :
|
||||
|
||||
## Contacts
|
||||
|
||||
My email address :
|
||||
My wife's email address :
|
||||
My second wife's email address :
|
||||
|
||||
## Content
|
||||
|
||||
When creating content
|
||||
|
||||
- always Markdown
|
||||
- always add links to sources
|
||||
- when searching for news, always add links to videos
|
||||
`;
|
||||
const CONFIG_TEMPLATE = {
|
||||
"deepl": {
|
||||
"auth_key": "YOUR_DEEPL_AUTH_KEY",
|
||||
"free_api": false
|
||||
},
|
||||
"scaleserp": {
|
||||
"key": "YOUR_SCALE_SERP_KEY"
|
||||
},
|
||||
"geocoder": {
|
||||
"key": "YOUR_GEOCODER_KEY"
|
||||
},
|
||||
"serpapi": {
|
||||
"key": "YOUR_SERPAPI_KEY"
|
||||
},
|
||||
"openai": {
|
||||
"key": "YOUR_OPENAI_KEY"
|
||||
},
|
||||
"bigdata": {
|
||||
"key": "YOUR_BIGDATA_KEY"
|
||||
},
|
||||
"novita": {
|
||||
"key": "YOUR_NOVITA_KEY"
|
||||
},
|
||||
"perplexity": {
|
||||
"key": "YOUR_PERPLEXITY_KEY"
|
||||
},
|
||||
"gemini": {
|
||||
"key": "YOUR_GEMINI_KEY"
|
||||
},
|
||||
"openrouter": {
|
||||
"key": "YOUR_OPENROUTER_KEY"
|
||||
},
|
||||
"deepseek": {
|
||||
"key": "YOUR_DEEPSEEK_KEY"
|
||||
},
|
||||
"google": {
|
||||
"cse": "YOUR_GOOGLE_CSE",
|
||||
"api_key": "YOUR_GOOGLE_API_KEY"
|
||||
}
|
||||
};
|
||||
export const init = async (argv) => {
|
||||
const logger = new Logger({
|
||||
hideLogPositionForProduction: true,
|
||||
maskPlaceholder: '***',
|
||||
name: MODULE_NAME,
|
||||
prettyLogTemplate: "{{logLevelName}}\t[{{filePathWithLine}}{{name}}]\t",
|
||||
});
|
||||
const kbotDir = path.resolve(path.join(process.cwd(), `.${MODULE_NAME}`));
|
||||
if (!exists(kbotDir)) {
|
||||
dir(kbotDir);
|
||||
}
|
||||
// Create preferences file if it doesn't exist
|
||||
const preferencesPath = path.resolve(kbotDir, 'preferences.md');
|
||||
if (!exists(preferencesPath)) {
|
||||
write(preferencesPath, PREFERENCES_TEMPLATE);
|
||||
logger.info(`📋 Created preferences file: ${preferencesPath}`);
|
||||
}
|
||||
else {
|
||||
logger.info(`📋 Preferences file already exists: ${preferencesPath}`);
|
||||
}
|
||||
// Create config file if it doesn't exist
|
||||
const configPath = path.resolve(kbotDir, 'config.json');
|
||||
if (!exists(configPath)) {
|
||||
write(configPath, CONFIG_TEMPLATE);
|
||||
logger.info(`📋 Created configuration file: ${configPath}`);
|
||||
}
|
||||
else {
|
||||
logger.info(`📋 Configuration file already exists: ${configPath}`);
|
||||
}
|
||||
logger.info('📋 Initialization complete!');
|
||||
return 0;
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTyxPQUFPLENBQUE7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUUxQyxNQUFNLG9CQUFvQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBeUI1QixDQUFBO0FBRUQsTUFBTSxlQUFlLEdBQUc7SUFDdEIsT0FBTyxFQUFFO1FBQ1AsVUFBVSxFQUFFLHFCQUFxQjtRQUNqQyxVQUFVLEVBQUUsS0FBSztLQUNsQjtJQUNELFdBQVcsRUFBRTtRQUNYLEtBQUssRUFBRSxxQkFBcUI7S0FDN0I7SUFDRCxVQUFVLEVBQUU7UUFDVixLQUFLLEVBQUUsbUJBQW1CO0tBQzNCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsS0FBSyxFQUFFLGtCQUFrQjtLQUMxQjtJQUNELFFBQVEsRUFBRTtRQUNSLEtBQUssRUFBRSxpQkFBaUI7S0FDekI7SUFDRCxTQUFTLEVBQUU7UUFDVCxLQUFLLEVBQUUsa0JBQWtCO0tBQzFCO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsS0FBSyxFQUFFLGlCQUFpQjtLQUN6QjtJQUNELFlBQVksRUFBRTtRQUNaLEtBQUssRUFBRSxxQkFBcUI7S0FDN0I7SUFDRCxRQUFRLEVBQUU7UUFDUixLQUFLLEVBQUUsaUJBQWlCO0tBQ3pCO0lBQ0QsWUFBWSxFQUFFO1FBQ1osS0FBSyxFQUFFLHFCQUFxQjtLQUM3QjtJQUNELFVBQVUsRUFBRTtRQUNWLEtBQUssRUFBRSxtQkFBbUI7S0FDM0I7SUFDRCxRQUFRLEVBQUU7UUFDUixLQUFLLEVBQUUsaUJBQWlCO1FBQ3hCLFNBQVMsRUFBRSxxQkFBcUI7S0FDakM7Q0FDRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFlLEVBQUUsRUFBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBVTtRQUNqQyw0QkFBNEIsRUFBRSxJQUFJO1FBQ2xDLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLElBQUksRUFBRSxXQUFXO1FBQ2pCLGlCQUFpQixFQUFFLG9EQUFvRDtLQUN4RSxDQUFDLENBQUE7SUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNyQixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDZCxDQUFDO0lBQ0QsOENBQThDO0lBQzlDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQzdCLEtBQUssQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtRQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxlQUFlLEVBQUUsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7U0FBSSxDQUFDO1FBQ0osTUFBTSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsZUFBZSxFQUFFLENBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFBO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFDN0QsQ0FBQztTQUFJLENBQUM7UUFDSixNQUFNLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQ3BFLENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUE7SUFDMUMsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFDLENBQUEifQ==
|
||||
3
packages/kbot/dist-in/commands/run.d.ts
vendored
3
packages/kbot/dist-in/commands/run.d.ts
vendored
@ -1,3 +0,0 @@
|
||||
import { IKBotTask } from '@polymech/osr-ai-tools/types';
|
||||
export declare const processRun: (opts: IKBotTask) => Promise<any>;
|
||||
export declare const run: (opts: IKBotTask) => Promise<any[]>;
|
||||
File diff suppressed because one or more lines are too long
2
packages/kbot/dist-in/config.d.ts
vendored
Normal file
2
packages/kbot/dist-in/config.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { IKBotOptions } from './zod_types.js';
|
||||
export declare const loadConfig: (options: IKBotOptions) => any;
|
||||
28
packages/kbot/dist-in/config.js
Normal file
28
packages/kbot/dist-in/config.js
Normal file
@ -0,0 +1,28 @@
|
||||
import * as path from 'node:path';
|
||||
import { CONFIG_DEFAULT, resolve } from '@polymech/commons';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import { logger } from './index.js';
|
||||
import { env_vars } from './utils/env.js';
|
||||
export const loadConfig = (options) => {
|
||||
if (options.config) {
|
||||
try {
|
||||
const configPath = path.resolve(resolve(options.config, false, env_vars()));
|
||||
if (exists(configPath)) {
|
||||
const parsedConfig = read(configPath, 'json');
|
||||
return parsedConfig;
|
||||
}
|
||||
else {
|
||||
logger.error(`Config file not found: ${configPath}`);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
logger.error(`Failed to parse config JSON: ${error.message}`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
const config = CONFIG_DEFAULT();
|
||||
return config;
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzNELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVoRCxPQUFPLEVBQUUsTUFBTSxFQUFHLE1BQU0sWUFBWSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV6QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDaEQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ3pFLElBQUssTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFHLENBQUM7Z0JBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQzVDLE9BQU8sWUFBWSxDQUFBO1lBQ3ZCLENBQUM7aUJBQUksQ0FBQztnQkFDRixNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixVQUFVLEVBQUUsQ0FBQyxDQUFBO1lBQ3hELENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFTLEVBQUUsQ0FBQztZQUNqQixNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUNqRSxDQUFDO0lBQ0wsQ0FBQztTQUFJLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxjQUFjLEVBQVMsQ0FBQTtRQUN0QyxPQUFPLE1BQU0sQ0FBQTtJQUNqQixDQUFDO0FBQ0wsQ0FBQyxDQUFBIn0=
|
||||
6
packages/kbot/dist-in/constants.d.ts
vendored
Normal file
6
packages/kbot/dist-in/constants.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
export declare const MODULE_NAME = "kbot";
|
||||
export declare const EXCLUDE_GLOB: string[];
|
||||
export declare const MAX_FILE_SIZE: number;
|
||||
export declare const API_PREFIX = "osr";
|
||||
export declare const PREFERENCES_FILE_NAME = "preferences.md";
|
||||
export declare const LOGGING_DIRECTORY = ".kbot";
|
||||
15
packages/kbot/dist-in/constants.js
Normal file
15
packages/kbot/dist-in/constants.js
Normal file
@ -0,0 +1,15 @@
|
||||
export const MODULE_NAME = 'kbot';
|
||||
export const EXCLUDE_GLOB = [
|
||||
"**/node_modules/**",
|
||||
"**/dist/**",
|
||||
"**/build/**",
|
||||
"**/coverage/**",
|
||||
"*.log",
|
||||
`.${MODULE_NAME}`,
|
||||
".git"
|
||||
];
|
||||
export const MAX_FILE_SIZE = 1024 * 1024 * 2;
|
||||
export const API_PREFIX = 'osr';
|
||||
export const PREFERENCES_FILE_NAME = 'preferences.md';
|
||||
export const LOGGING_DIRECTORY = `.${MODULE_NAME}`;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFBO0FBQ2pDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUN4QixvQkFBb0I7SUFDcEIsWUFBWTtJQUNaLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsT0FBTztJQUNQLElBQUksV0FBVyxFQUFFO0lBQ2pCLE1BQU07Q0FDVCxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFBO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUE7QUFDL0IsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsZ0JBQWdCLENBQUE7QUFDckQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQSJ9
|
||||
16
packages/kbot/dist-in/filters.d.ts
vendored
Normal file
16
packages/kbot/dist-in/filters.d.ts
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
export type Filter = (json: string) => any;
|
||||
export declare const extractFirstCodeBlock: (markdown: string) => string | null;
|
||||
export declare const extractCodeBlocks: (markdown: string) => string;
|
||||
export declare const JSONParse: (json: string) => any;
|
||||
export declare const trim: (str: string) => string;
|
||||
export declare const extractJsonCodeBlock: (markdown: string) => string | null;
|
||||
export declare const Filters: {
|
||||
JSON: (markdown: string) => string | null;
|
||||
JSONUnescape: (json: string) => string;
|
||||
JSONPretty: (json: string) => string;
|
||||
AlphaSort: (arr: string[]) => string;
|
||||
code: (markdown: string) => string | null;
|
||||
JSONParse: (json: string) => any;
|
||||
trim: (str: string) => string;
|
||||
};
|
||||
export declare const applyFilters: (value: string, filters: Filter[]) => string;
|
||||
130
packages/kbot/dist-in/filters.js
Normal file
130
packages/kbot/dist-in/filters.js
Normal file
File diff suppressed because one or more lines are too long
4
packages/kbot/dist-in/index.d.ts
vendored
4
packages/kbot/dist-in/index.d.ts
vendored
@ -1,5 +1,3 @@
|
||||
import { Logger } from 'tslog';
|
||||
export declare const logger: Logger<unknown>;
|
||||
export { run } from './commands/run';
|
||||
export declare const logger: any;
|
||||
export declare const module_root: () => string;
|
||||
export declare const assistant_supported: Record<string, string>;
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import path from 'path';
|
||||
import { createLogger } from '@polymech/osr-log';
|
||||
import { get_var } from '@polymech/osr-commons';
|
||||
import { MODULE_NAME } from './constants';
|
||||
import { createLogger } from '@polymech/log';
|
||||
import { get_var } from '@polymech/commons';
|
||||
import { MODULE_NAME } from './constants.js';
|
||||
export const logger = createLogger('llm-tools');
|
||||
export { run } from './commands/run';
|
||||
//export { run } from './commands/run.js'
|
||||
const isWindows = process.platform === 'win32';
|
||||
export const module_root = () => path.resolve(path.join(get_var(isWindows ? 'HOMEPATH' : 'HOME'), `.${MODULE_NAME}`));
|
||||
export const assistant_supported = {
|
||||
@ -22,11 +22,11 @@ export const assistant_supported = {
|
||||
".pdf": "application/pdf",
|
||||
".php": "text/x-php",
|
||||
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
||||
".py": "text/x-python", // sometimes text/x-script.python
|
||||
".py": "text/x-python",
|
||||
".rb": "text/x-ruby",
|
||||
".sh": "application/x-sh",
|
||||
".tex": "text/x-tex",
|
||||
".ts": "application/typescript",
|
||||
".txt": "text/plain"
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBR3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQWtCLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDekMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFvQixZQUFZLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDaEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3BDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFBO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUV0SCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBMkI7SUFDdkQsSUFBSSxFQUFFLFVBQVU7SUFDaEIsTUFBTSxFQUFFLFlBQVk7SUFDcEIsS0FBSyxFQUFFLGVBQWU7SUFDdEIsTUFBTSxFQUFFLFVBQVU7SUFDbEIsTUFBTSxFQUFFLG9CQUFvQjtJQUM1QixPQUFPLEVBQUUseUVBQXlFO0lBQ2xGLEtBQUssRUFBRSxlQUFlO0lBQ3RCLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLEtBQUssRUFBRSxpQkFBaUI7SUFDeEIsT0FBTyxFQUFFLGtCQUFrQjtJQUMzQixLQUFLLEVBQUUsZUFBZTtJQUN0QixNQUFNLEVBQUUsaUJBQWlCO0lBQ3pCLE1BQU0sRUFBRSxZQUFZO0lBQ3BCLE9BQU8sRUFBRSwyRUFBMkU7SUFDcEYsS0FBSyxFQUFFLGVBQWUsRUFBVSxpQ0FBaUM7SUFDakUsS0FBSyxFQUFFLGFBQWE7SUFDcEIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixNQUFNLEVBQUUsWUFBWTtJQUNwQixLQUFLLEVBQUUsd0JBQXdCO0lBQy9CLE1BQU0sRUFBRSxZQUFZO0NBQ3JCLENBQUMifQ==
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQVEsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXBELHlDQUF5QztBQUN6QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQTtBQUU5QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFckgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQTJCO0lBQ3pELElBQUksRUFBRSxVQUFVO0lBQ2hCLE1BQU0sRUFBRSxZQUFZO0lBQ3BCLEtBQUssRUFBRSxlQUFlO0lBQ3RCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsT0FBTyxFQUFFLHlFQUF5RTtJQUNsRixLQUFLLEVBQUUsZUFBZTtJQUN0QixPQUFPLEVBQUUsV0FBVztJQUNwQixPQUFPLEVBQUUsYUFBYTtJQUN0QixLQUFLLEVBQUUsaUJBQWlCO0lBQ3hCLE9BQU8sRUFBRSxrQkFBa0I7SUFDM0IsS0FBSyxFQUFFLGVBQWU7SUFDdEIsTUFBTSxFQUFFLGlCQUFpQjtJQUN6QixNQUFNLEVBQUUsWUFBWTtJQUNwQixPQUFPLEVBQUUsMkVBQTJFO0lBQ3BGLEtBQUssRUFBRSxlQUFlO0lBQ3RCLEtBQUssRUFBRSxhQUFhO0lBQ3BCLEtBQUssRUFBRSxrQkFBa0I7SUFDekIsTUFBTSxFQUFFLFlBQVk7SUFDcEIsS0FBSyxFQUFFLHdCQUF3QjtJQUMvQixNQUFNLEVBQUUsWUFBWTtDQUNyQixDQUFDIn0=
|
||||
2
packages/kbot/dist-in/main.d.ts
vendored
2
packages/kbot/dist-in/main.d.ts
vendored
@ -1,2 +0,0 @@
|
||||
#!/usr/bin/env node
|
||||
export declare const logger: any;
|
||||
@ -1,41 +0,0 @@
|
||||
#!/usr/bin/env node
|
||||
import yargs from 'yargs';
|
||||
import { hideBin } from 'yargs/helpers';
|
||||
import { run } from './commands/run.js';
|
||||
import { createLogger } from '@polymech/log';
|
||||
import { OptionsSchema, types } from './zod_schema.js';
|
||||
import { toYargs } from '@polymech/commons';
|
||||
import helpCommand from './commands/help.js';
|
||||
import { examples } from './commands/examples.js';
|
||||
import { init } from './commands/init.js';
|
||||
import { build } from './commands/build.js';
|
||||
import { fetch } from './commands/fetch.js';
|
||||
export const logger = createLogger('llm-tools');
|
||||
const modify = async (argv) => await run(argv);
|
||||
const yargOptions = {
|
||||
onKey: ((_yargs, key, options) => {
|
||||
switch (key) {
|
||||
case 'prompt':
|
||||
{
|
||||
return _yargs.positional(key, options);
|
||||
}
|
||||
case 'include':
|
||||
{
|
||||
return _yargs.option(key, { ...options, alias: key[0].toLowerCase() });
|
||||
}
|
||||
}
|
||||
})
|
||||
};
|
||||
yargs(hideBin(process.argv))
|
||||
.command('init', 'Initialize KBot configuration', (yargs) => toYargs(yargs, OptionsSchema(), yargOptions), init)
|
||||
.command('modify [prompt]', 'Modify an existing project', (yargs) => toYargs(yargs, OptionsSchema(), yargOptions), modify)
|
||||
.command('types', 'Generate types', (yargs) => { }, (argv) => types())
|
||||
.command('build', 'Build kbot essentials', (yargs) => { }, (argv) => build())
|
||||
.command('fetch', "Fetch models, to $HOME/.kbot/", (yargs) => { }, (argv) => fetch())
|
||||
.command('help-md', 'Generate markdown help', (yargs) => { }, helpCommand)
|
||||
.command('examples', 'Show examples', (yargs) => { }, examples)
|
||||
.command(['modify [prompt]', '$0'], 'Default command modify', (yargs) => toYargs(yargs, OptionsSchema(), yargOptions), modify)
|
||||
.help()
|
||||
.wrap(yargs.terminalWidth() - 20)
|
||||
.parse();
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXRELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFM0MsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFRLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUNwRCxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsSUFBZSxFQUFFLEVBQUUsQ0FBRSxNQUFNLEdBQUcsQ0FBQyxJQUFpQixDQUFDLENBQUE7QUFFdkUsTUFBTSxXQUFXLEdBQVE7SUFDdkIsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQy9CLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDWixLQUFLLFFBQVE7Z0JBQ1gsQ0FBQztvQkFDQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUN4QyxDQUFDO1lBQ0gsS0FBSyxTQUFTO2dCQUNaLENBQUM7b0JBQ0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQyxDQUFBO2dCQUN0RSxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQztDQUNILENBQUE7QUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QixPQUFPLENBQ04sTUFBTSxFQUNOLCtCQUErQixFQUMvQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFDdkQsSUFBSSxDQUNMO0tBQ0EsT0FBTyxDQUNOLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDNUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQ3ZELE1BQU0sQ0FDUDtLQUNBLE9BQU8sQ0FDTixPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2hCLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQ2QsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUNsQjtLQUNBLE9BQU8sQ0FDTixPQUFPLEVBQ1AsdUJBQXVCLEVBQ3ZCLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQ2QsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUNsQjtLQUNBLE9BQU8sQ0FDTixPQUFPLEVBQ1AsK0JBQStCLEVBQy9CLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQ2QsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUNsQjtLQUNBLE9BQU8sQ0FDTixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQ2QsV0FBVyxDQUNaO0tBQ0EsT0FBTyxDQUNOLFVBQVUsRUFDVixlQUFlLEVBQ2YsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFDZCxRQUFRLENBQ1Q7S0FDQSxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsRUFBRSx3QkFBd0IsRUFDMUQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0tBQ2pFLElBQUksRUFBRTtLQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDO0tBQ2hDLEtBQUssRUFBRSxDQUFBIn0=
|
||||
22
packages/kbot/dist-in/mime-handlers.d.ts
vendored
Normal file
22
packages/kbot/dist-in/mime-handlers.d.ts
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
import { ChatCompletionUserMessageParam } from 'openai/resources/index.mjs';
|
||||
export type IHandlerResult = ChatCompletionUserMessageParam & {
|
||||
path?: string;
|
||||
};
|
||||
export interface IMimeHandler {
|
||||
handle(filePath: string, relativePath: string): IHandlerResult;
|
||||
}
|
||||
export declare class ImageHandler implements IMimeHandler {
|
||||
handle(filePath: string, relativePath: string): IHandlerResult;
|
||||
}
|
||||
export declare class PDFHandler implements IMimeHandler {
|
||||
handle(filePath: string, relativePath: string): IHandlerResult;
|
||||
}
|
||||
export declare class TextHandler implements IMimeHandler {
|
||||
handle(filePath: string, relativePath: string): IHandlerResult;
|
||||
}
|
||||
export declare class MimeHandlerRegistry {
|
||||
private handlers;
|
||||
registerHandler(mimeType: string, handler: IMimeHandler): void;
|
||||
getHandler(mimeType: string): IMimeHandler | null;
|
||||
}
|
||||
export declare const defaultMimeRegistry: MimeHandlerRegistry;
|
||||
55
packages/kbot/dist-in/mime-handlers.js
Normal file
55
packages/kbot/dist-in/mime-handlers.js
Normal file
@ -0,0 +1,55 @@
|
||||
import * as path from 'path';
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import { base64 } from './source.js';
|
||||
export class ImageHandler {
|
||||
handle(filePath, relativePath) {
|
||||
return {
|
||||
role: "user",
|
||||
content: [
|
||||
{
|
||||
type: "image_url",
|
||||
image_url: {
|
||||
url: base64(filePath)
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
}
|
||||
export class PDFHandler {
|
||||
handle(filePath, relativePath) {
|
||||
return {
|
||||
path: relativePath,
|
||||
content: base64(filePath),
|
||||
role: "user",
|
||||
name: path.parse(filePath).base
|
||||
};
|
||||
}
|
||||
}
|
||||
export class TextHandler {
|
||||
handle(filePath, relativePath) {
|
||||
return {
|
||||
role: "user",
|
||||
path: relativePath,
|
||||
content: read(filePath).toString()
|
||||
};
|
||||
}
|
||||
}
|
||||
export class MimeHandlerRegistry {
|
||||
handlers = new Map();
|
||||
registerHandler(mimeType, handler) {
|
||||
this.handlers.set(mimeType, handler);
|
||||
}
|
||||
getHandler(mimeType) {
|
||||
// For mime types like 'image/png', try to match 'image/*' if specific type not found
|
||||
const [type] = mimeType.split('/');
|
||||
return this.handlers.get(mimeType) || this.handlers.get(`${type}/*`) || null;
|
||||
}
|
||||
}
|
||||
// Create and export a pre-configured registry
|
||||
export const defaultMimeRegistry = new MimeHandlerRegistry();
|
||||
// Register default handlers
|
||||
defaultMimeRegistry.registerHandler('image/*', new ImageHandler());
|
||||
defaultMimeRegistry.registerHandler('application/pdf', new PDFHandler());
|
||||
defaultMimeRegistry.registerHandler('text/*', new TextHandler());
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWltZS1oYW5kbGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9taW1lLWhhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFJaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQVVwQyxNQUFNLE9BQU8sWUFBWTtJQUN2QixNQUFNLENBQUMsUUFBZ0IsRUFBRSxZQUFvQjtRQUMzQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFNBQVMsRUFBRTt3QkFDVCxHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztxQkFDdEI7aUJBQ0Y7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLENBQUMsUUFBZ0IsRUFBRSxZQUFvQjtRQUMzQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLFlBQVk7WUFDbEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDekIsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJO1NBQ2hDLENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUN0QixNQUFNLENBQUMsUUFBZ0IsRUFBRSxZQUFvQjtRQUMzQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsWUFBWTtZQUNsQixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRTtTQUNuQyxDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQUN0QixRQUFRLEdBQThCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFeEQsZUFBZSxDQUFDLFFBQWdCLEVBQUUsT0FBcUI7UUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxVQUFVLENBQUMsUUFBZ0I7UUFDekIscUZBQXFGO1FBQ3JGLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUMvRSxDQUFDO0NBQ0Y7QUFFRCw4Q0FBOEM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO0FBRTdELDRCQUE0QjtBQUM1QixtQkFBbUIsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksWUFBWSxFQUFFLENBQUMsQ0FBQztBQUNuRSxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDIn0=
|
||||
6
packages/kbot/dist-in/models/cache/openai.d.ts
vendored
Normal file
6
packages/kbot/dist-in/models/cache/openai.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
export declare const models: {
|
||||
id: string;
|
||||
object: string;
|
||||
created: number;
|
||||
owned_by: string;
|
||||
}[];
|
||||
2
packages/kbot/dist-in/models/cache/openai.js
vendored
Normal file
2
packages/kbot/dist-in/models/cache/openai.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
packages/kbot/dist-in/models/cache/openrouter.d.ts
vendored
Normal file
11
packages/kbot/dist-in/models/cache/openrouter.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
export declare const models: {
|
||||
id: string;
|
||||
name: string;
|
||||
pricing: {
|
||||
prompt: string;
|
||||
completion: string;
|
||||
image: string;
|
||||
request: string;
|
||||
};
|
||||
created: number;
|
||||
}[];
|
||||
2
packages/kbot/dist-in/models/cache/openrouter.js
vendored
Normal file
2
packages/kbot/dist-in/models/cache/openrouter.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3
packages/kbot/dist-in/models/index.d.ts
vendored
Normal file
3
packages/kbot/dist-in/models/index.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
export declare const models_dist: () => string[];
|
||||
export declare const models: () => string[];
|
||||
export declare const all: () => any[];
|
||||
92
packages/kbot/dist-in/models/index.js
Normal file
92
packages/kbot/dist-in/models/index.js
Normal file
File diff suppressed because one or more lines are too long
15
packages/kbot/dist-in/models/openai.d.ts
vendored
Normal file
15
packages/kbot/dist-in/models/openai.d.ts
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
interface OpenAIModel {
|
||||
id: string;
|
||||
created: number;
|
||||
owned_by: string;
|
||||
root?: string;
|
||||
parent?: string | null;
|
||||
}
|
||||
export interface CachedModels {
|
||||
timestamp: number;
|
||||
models: OpenAIModel[];
|
||||
}
|
||||
export declare const CACHE_PATH: string;
|
||||
export declare function fetchOpenAIModels(apiKey: string, cachePath?: string): Promise<OpenAIModel[]>;
|
||||
export declare function listModelsAsStrings(models: OpenAIModel[]): string[];
|
||||
export {};
|
||||
56
packages/kbot/dist-in/models/openai.js
Normal file
56
packages/kbot/dist-in/models/openai.js
Normal file
@ -0,0 +1,56 @@
|
||||
import { OpenAI } from 'openai';
|
||||
import * as path from 'node:path';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import { sync as write } from '@polymech/fs/write';
|
||||
import { logger } from '../index.js';
|
||||
export const CACHE_PATH = path.resolve(path.join(path.parse(__filename).dir), 'data', 'openai_models.json');
|
||||
const CACHE_DURATION = 24 * 60 * 60 * 1000;
|
||||
async function readFromCache(cachePath = CACHE_PATH) {
|
||||
try {
|
||||
if (!exists(cachePath)) {
|
||||
return null;
|
||||
}
|
||||
const cacheData = read(cachePath);
|
||||
const now = Date.now();
|
||||
if (now - cacheData.timestamp > CACHE_DURATION) {
|
||||
//return null
|
||||
}
|
||||
return cacheData.models;
|
||||
}
|
||||
catch (error) {
|
||||
logger.error('Error reading from cache:', error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
function writeToCache(models, cachePath = CACHE_PATH) {
|
||||
try {
|
||||
const cacheData = {
|
||||
timestamp: Date.now(),
|
||||
models
|
||||
};
|
||||
write(cachePath, cacheData);
|
||||
}
|
||||
catch (error) {
|
||||
logger.error('Error writing to cache:', error);
|
||||
}
|
||||
}
|
||||
export async function fetchOpenAIModels(apiKey, cachePath = CACHE_PATH) {
|
||||
try {
|
||||
const openai = new OpenAI({ apiKey });
|
||||
const response = await openai.models.list();
|
||||
const models = response.data;
|
||||
logger.info(`Fetched ${models.length} OpenAI models, to ${cachePath}`);
|
||||
writeToCache(models, cachePath);
|
||||
return models;
|
||||
}
|
||||
catch (error) {
|
||||
logger.error('Error fetching OpenAI models:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
export function listModelsAsStrings(models) {
|
||||
models = models.sort((a, b) => a.id.localeCompare(b.id));
|
||||
return models.map((model) => `${model.id}`);
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy9vcGVuYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMvQixPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBY3BDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtBQUMzRyxNQUFNLGNBQWMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUE7QUFFMUMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxZQUFvQixVQUFVO0lBQ3ZELElBQUksQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFpQixDQUFBO1FBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUN0QixJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQzdDLGFBQWE7UUFDakIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQTtJQUMzQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDaEQsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0FBQ0wsQ0FBQztBQUNELFNBQVMsWUFBWSxDQUFDLE1BQXFCLEVBQUUsWUFBb0IsVUFBVTtJQUN2RSxJQUFJLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBaUI7WUFDNUIsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDckIsTUFBTTtTQUNULENBQUE7UUFDRCxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0FBQ0wsQ0FBQztBQUNELE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsTUFBYyxFQUFFLFlBQW9CLFVBQVU7SUFDbEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFBO1FBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUN0RSxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQy9CLE9BQU8sTUFBTSxDQUFBO0lBQ2pCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNwRCxNQUFNLEtBQUssQ0FBQTtJQUNmLENBQUM7QUFDTCxDQUFDO0FBQ0QsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQXFCO0lBQ3JELE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDeEQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELENBQUMifQ==
|
||||
30
packages/kbot/dist-in/models/openrouter.d.ts
vendored
Normal file
30
packages/kbot/dist-in/models/openrouter.d.ts
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
interface ModelPricing {
|
||||
prompt: number;
|
||||
completion: number;
|
||||
image: number;
|
||||
}
|
||||
interface ModelContext {
|
||||
max_tokens: number;
|
||||
supported_parameters: string[];
|
||||
}
|
||||
export interface OpenRouterModel {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
pricing: ModelPricing;
|
||||
context: ModelContext;
|
||||
created: number;
|
||||
}
|
||||
export interface CachedModels {
|
||||
timestamp: number;
|
||||
models: OpenRouterModel[];
|
||||
}
|
||||
export declare const CACHE_PATH: string;
|
||||
export declare const readFromCache: (cachePath?: string) => Promise<OpenRouterModel[] | null>;
|
||||
export declare const fetchOpenRouterModels: (cachePath?: string) => Promise<OpenRouterModel[]>;
|
||||
export declare function findFreeModels(models: OpenRouterModel[]): OpenRouterModel[];
|
||||
export declare function findFreePromptModels(models: OpenRouterModel[]): OpenRouterModel[];
|
||||
export declare function findFreeCompletionModels(models: OpenRouterModel[]): OpenRouterModel[];
|
||||
export declare function findFreeImageModels(models: OpenRouterModel[]): OpenRouterModel[];
|
||||
export declare function listModelsAsStrings(models: OpenRouterModel[]): string[];
|
||||
export {};
|
||||
71
packages/kbot/dist-in/models/openrouter.js
Normal file
71
packages/kbot/dist-in/models/openrouter.js
Normal file
@ -0,0 +1,71 @@
|
||||
import axios from 'axios';
|
||||
import * as path from 'node:path';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import { sync as write } from '@polymech/fs/write';
|
||||
import { logger } from '../index.js';
|
||||
export const CACHE_PATH = path.resolve(path.join(path.parse(__filename).dir), 'data', 'openrouter_models.json');
|
||||
const CACHE_DURATION = 24 * 60 * 60 * 1000; // 24 hours in milliseconds
|
||||
export const readFromCache = (cachePath = CACHE_PATH) => {
|
||||
try {
|
||||
if (!exists(cachePath)) {
|
||||
return null;
|
||||
}
|
||||
const cacheData = read(cachePath, 'json');
|
||||
const now = Date.now();
|
||||
if (now - cacheData.timestamp > CACHE_DURATION) {
|
||||
//return null
|
||||
}
|
||||
return cacheData.models;
|
||||
}
|
||||
catch (error) {
|
||||
logger.error('Error reading from cache:', error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
function writeToCache(models, cachePath = CACHE_PATH) {
|
||||
const cacheData = {
|
||||
timestamp: Date.now(),
|
||||
models
|
||||
};
|
||||
write(cachePath, cacheData);
|
||||
}
|
||||
export const fetchOpenRouterModels = async (cachePath = CACHE_PATH) => {
|
||||
try {
|
||||
// If no cache or expired, fetch from API
|
||||
const response = await axios.get('https://openrouter.ai/api/v1/models', {
|
||||
params: {
|
||||
// supported_parameters: 'tools'
|
||||
}
|
||||
});
|
||||
writeToCache(response.data.data);
|
||||
logger.debug(`Fetched ${response.data.data.length} OpenRouter models to ${cachePath}`);
|
||||
return response.data.data;
|
||||
}
|
||||
catch (error) {
|
||||
logger.error('Error fetching OpenRouter models:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
export function findFreeModels(models) {
|
||||
return models.filter((model) => model.pricing.prompt === 0 &&
|
||||
model.pricing.completion === 0 &&
|
||||
model.pricing.image === 0);
|
||||
}
|
||||
export function findFreePromptModels(models) {
|
||||
return models.filter((model) => model.pricing.prompt === 0);
|
||||
}
|
||||
export function findFreeCompletionModels(models) {
|
||||
return models.filter((model) => model.pricing.completion === 0);
|
||||
}
|
||||
export function findFreeImageModels(models) {
|
||||
return models.filter((model) => model.pricing.image === 0);
|
||||
}
|
||||
export function listModelsAsStrings(models) {
|
||||
models = models.sort((a, b) => a.name.localeCompare(b.name));
|
||||
return models.map((model) => {
|
||||
const isFree = model.name.includes('free');
|
||||
return `${model.id} | ${isFree ? 'free' : 'paid'}`;
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbHMvb3BlbnJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFFbEMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQTZCcEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxDQUFBO0FBRS9HLE1BQU0sY0FBYyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLDJCQUEyQjtBQUV2RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxZQUFvQixVQUFVLEVBQXFDLEVBQUU7SUFDakcsSUFBSSxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFpQixDQUFDO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxHQUFH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
|
||||
2
packages/kbot/dist-in/profile.d.ts
vendored
Normal file
2
packages/kbot/dist-in/profile.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { IKBotTask } from "./types.js";
|
||||
export declare const load: (options: IKBotTask) => Promise<Record<string, string>>;
|
||||
23
packages/kbot/dist-in/profile.js
Normal file
23
packages/kbot/dist-in/profile.js
Normal file
@ -0,0 +1,23 @@
|
||||
import * as path from 'node:path';
|
||||
import { isFile, resolve } from '@polymech/commons';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { parse } from '@polymech/commons';
|
||||
import { env_vars } from './utils/env.js';
|
||||
const testPath = (profilePath) => {
|
||||
if (!profilePath) {
|
||||
return;
|
||||
}
|
||||
const ret = path.resolve(resolve(profilePath, false, env_vars()));
|
||||
if (exists(ret))
|
||||
return ret;
|
||||
};
|
||||
export const load = async (options) => {
|
||||
let profile = { includes: [], variables: options.variables || {}, env: {} };
|
||||
let profilePath = testPath(options.profile || path.join(options.logs, 'profile.json'));
|
||||
if (!profilePath || !exists(profilePath) || !isFile(profilePath)) {
|
||||
return profile.variables;
|
||||
}
|
||||
profile = parse(profilePath, profile, { env: options.env || 'default' }) || profile;
|
||||
return profile.variables;
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRWpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxPQUFPLEVBQVksS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXpDLE1BQU0sUUFBUSxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFO0lBQ3JDLElBQUcsQ0FBQyxXQUFXLEVBQUMsQ0FBQztRQUNiLE9BQU07SUFDVixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDaEUsSUFBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUE7QUFDOUIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxPQUFrQixFQUFtQyxFQUFFO0lBQzlFLElBQUksT0FBTyxHQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFBO0lBQ3JGLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFBO0lBQ2hHLElBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUMsQ0FBQztRQUM3RCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUNELE9BQU8sR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFBO0lBQ25GLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQTtBQUM1QixDQUFDLENBQUEifQ==
|
||||
4
packages/kbot/dist-in/prompt.d.ts
vendored
Normal file
4
packages/kbot/dist-in/prompt.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
import { IKBotTask } from '@polymech/ai-tools';
|
||||
import { ChatCompletionMessageParam } from 'openai/resources/index.mjs';
|
||||
export declare const prompt: (opts: IKBotTask) => Promise<ChatCompletionMessageParam | undefined>;
|
||||
export declare const preferences: (opts: IKBotTask) => Promise<ChatCompletionMessageParam | undefined>;
|
||||
26
packages/kbot/dist-in/prompt.js
Normal file
26
packages/kbot/dist-in/prompt.js
Normal file
@ -0,0 +1,26 @@
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { resolve } from '@polymech/commons';
|
||||
import * as path from 'node:path';
|
||||
import { resolveQuery } from './utils/input.js';
|
||||
import { env_vars } from './utils/env.js';
|
||||
import { PREFERENCES_FILE_NAME } from './constants.js';
|
||||
export const prompt = async (opts) => {
|
||||
const input = await resolveQuery(opts);
|
||||
return {
|
||||
role: "user",
|
||||
content: input || ''
|
||||
};
|
||||
};
|
||||
export const preferences = async (opts) => {
|
||||
let preferencesPath = path.resolve(resolve(opts.preferences, false, env_vars()));
|
||||
if (!exists(preferencesPath)) {
|
||||
preferencesPath = path.resolve(path.join(process.cwd(), PREFERENCES_FILE_NAME));
|
||||
}
|
||||
const preferences = read(preferencesPath, 'string');
|
||||
return {
|
||||
role: "user",
|
||||
content: `USER Preferences : ${preferences}` || ''
|
||||
};
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb21wdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRWpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxJQUFlLEVBQW1ELEVBQUU7SUFDN0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdEMsT0FBTztRQUNILElBQUksRUFBRSxNQUFNO1FBQ1osT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO0tBQ3ZCLENBQUE7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBbUQsRUFBRTtJQUNsRyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDaEYsSUFBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQzFCLGVBQWUsR0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQTtJQUNyRixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQVcsQ0FBQTtJQUM3RCxPQUFPO1FBQ0gsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsc0JBQXNCLFdBQVcsRUFBRSxJQUFJLEVBQUU7S0FDckQsQ0FBQTtBQUNMLENBQUMsQ0FBQSJ9
|
||||
13
packages/kbot/dist-in/source.d.ts
vendored
Normal file
13
packages/kbot/dist-in/source.d.ts
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { IHandlerResult } from './mime-handlers.js';
|
||||
import { ChatCompletionContentPartImage } from 'openai/resources/index.mjs';
|
||||
export declare const default_filters: {
|
||||
isFile: (src: string) => boolean;
|
||||
exists: typeof exists;
|
||||
size: (filePath: string) => boolean;
|
||||
};
|
||||
export declare const isPathOutsideSafe: (pathA: string, pathB: string) => boolean;
|
||||
export declare const base64: (filePath: string) => string | null;
|
||||
export declare const images: (files: string[]) => ChatCompletionContentPartImage[];
|
||||
export declare const glob: (projectPath: string, include?: string[]) => string[];
|
||||
export declare function get(projectPath: string, include?: string[]): Promise<Array<IHandlerResult>>;
|
||||
105
packages/kbot/dist-in/source.js
Normal file
105
packages/kbot/dist-in/source.js
Normal file
File diff suppressed because one or more lines are too long
13
packages/kbot/dist-in/tools.d.ts
vendored
Normal file
13
packages/kbot/dist-in/tools.d.ts
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
import { ChatCompletionMessageParam } from "openai/resources/chat/completions";
|
||||
import { RunnableToolFunctionWithParse } from "openai/lib/RunnableFunction";
|
||||
import { IKBotTask } from "./types.js";
|
||||
export type TMessageParam = ChatCompletionMessageParam & {
|
||||
type?: string;
|
||||
};
|
||||
export declare const defaultTemplate: {
|
||||
include: string[];
|
||||
messages: any[];
|
||||
tools: string[];
|
||||
};
|
||||
export declare const resolve_package_path: (dir: string) => string;
|
||||
export declare const load: (options: IKBotTask) => Promise<RunnableToolFunctionWithParse<any>[]>;
|
||||
76
packages/kbot/dist-in/tools.js
Normal file
76
packages/kbot/dist-in/tools.js
Normal file
@ -0,0 +1,76 @@
|
||||
import { resolve } from '@polymech/commons';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import * as path from 'node:path';
|
||||
import { tools as defaultTools } from "@polymech/ai-tools/tools";
|
||||
import { logger } from './index.js';
|
||||
import { after, before } from '@polymech/core/aspects_simple';
|
||||
export const defaultTemplate = {
|
||||
include: [
|
||||
"!node_modules/**/*",
|
||||
"!dist/**/*",
|
||||
"!build/**/*",
|
||||
"!coverage/**/*",
|
||||
"!*.log",
|
||||
"!.kbot",
|
||||
"!.git",
|
||||
"*"
|
||||
],
|
||||
messages: [],
|
||||
tools: ['fs', 'git', 'interact', 'terminal', 'search', 'web', 'email', 'user']
|
||||
};
|
||||
export const resolve_package_path = (dir) => resolve(path.join(__dirname, dir || ''));
|
||||
const loadToolFromPath = async (toolPath, target, options) => {
|
||||
try {
|
||||
const absolutePath = path.resolve(toolPath);
|
||||
if (!exists(absolutePath)) {
|
||||
logger.warn(`Tool path not found: ${absolutePath}`);
|
||||
return null;
|
||||
}
|
||||
const toolModule = await import(absolutePath);
|
||||
if (typeof toolModule.default === 'function') {
|
||||
return toolModule.default(target, options);
|
||||
}
|
||||
else {
|
||||
logger.warn(`Invalid tool module at ${toolPath}: no default export function`);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
logger.error(`Error loading tool from path ${toolPath}:`, e.message);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
export const load = async (options) => {
|
||||
const target = path.resolve(options.output || options.path);
|
||||
const toolsList = options.tools || defaultTemplate.tools;
|
||||
const enabledTools = toolsList.filter(tool => !options.disable.includes(tool));
|
||||
const loadedTools = await Promise.all(enabledTools.map(async (tool) => {
|
||||
if (defaultTools[tool]) {
|
||||
try {
|
||||
return defaultTools[tool](target, options);
|
||||
}
|
||||
catch (e) {
|
||||
logger.error(`Error loading built-in tool ${tool}`, e.message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return loadToolFromPath(tool, target, options);
|
||||
}));
|
||||
const tools = loadedTools
|
||||
.flat()
|
||||
.filter((tool) => {
|
||||
if (!tool)
|
||||
return false;
|
||||
if (options.disableTools.includes(tool.function.name))
|
||||
return false;
|
||||
if (tool.function.name === 'completion')
|
||||
return false;
|
||||
return true;
|
||||
});
|
||||
tools.forEach(tool => {
|
||||
tool.function.function = before(tool.function.function, options.collector.onToolBefore);
|
||||
tool.function.function = after(tool.function.function, options.collector.onToolAfter);
|
||||
});
|
||||
return tools;
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUE7QUFFakMsT0FBTyxFQUFFLEtBQUssSUFBSSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFHLE1BQU0sWUFBWSxDQUFBO0FBSXBDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFLN0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzNCLE9BQU8sRUFBRTtRQUNMLG9CQUFvQjtRQUNwQixZQUFZO1FBQ1osYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixRQUFRO1FBQ1IsUUFBUTtRQUNSLE9BQU87UUFDUCxHQUFHO0tBQ047SUFDRCxRQUFRLEVBQUUsRUFBRTtJQUNaLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDakYsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDckcsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQ3ZGLElBQUksQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMs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
|
||||
8
packages/kbot/dist-in/types.d.ts
vendored
8
packages/kbot/dist-in/types.d.ts
vendored
@ -1,9 +1,9 @@
|
||||
export * from './zod_types';
|
||||
import { IKBotOptions } from './zod_types.js';
|
||||
import OpenAI from 'openai';
|
||||
import { ICollector } from '@polymech/ai-tools';
|
||||
export * from './zod_types.js';
|
||||
export type onToolCall = (category: string, name: string, args: any, result?: any) => Promise<void>;
|
||||
export type onMessage = (category: string, name: string, args: any, result?: any) => Promise<void>;
|
||||
import { IKBotOptions } from './zod_types';
|
||||
import OpenAI from 'openai';
|
||||
import { ICollector } from '@polymech/osr-ai-tools/types';
|
||||
export interface IKBotTask extends IKBotOptions {
|
||||
client: OpenAI;
|
||||
collector: ICollector;
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
export * from './zod_types';
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUEifQ==
|
||||
export * from './zod_types.js';
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsY0FBYyxnQkFBZ0IsQ0FBQSJ9
|
||||
1
packages/kbot/dist-in/utils/env.d.ts
vendored
Normal file
1
packages/kbot/dist-in/utils/env.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const env_vars: () => Record<string, string>;
|
||||
4
packages/kbot/dist-in/utils/env.js
Normal file
4
packages/kbot/dist-in/utils/env.js
Normal file
@ -0,0 +1,4 @@
|
||||
export const env_vars = () => {
|
||||
return process.env;
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBMkIsRUFBRTtJQUNqRCxPQUFPLE9BQU8sQ0FBQyxHQUE2QixDQUFBO0FBQ2hELENBQUMsQ0FBQSJ9
|
||||
3
packages/kbot/dist-in/utils/input.d.ts
vendored
Normal file
3
packages/kbot/dist-in/utils/input.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import { IKBotOptions } from '../zod_types.js';
|
||||
export declare const readStdin: (timeoutMs?: number) => Promise<Buffer>;
|
||||
export declare const resolveQuery: (options: IKBotOptions) => Promise<string>;
|
||||
75
packages/kbot/dist-in/utils/input.js
Normal file
75
packages/kbot/dist-in/utils/input.js
Normal file
@ -0,0 +1,75 @@
|
||||
import * as path from 'node:path';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import { resolve, isFile } from '@polymech/commons';
|
||||
import { detectAndHandle } from '../commands/handlers/index.js';
|
||||
import { logger } from '../index.js';
|
||||
export const readStdin = async (timeoutMs = 100) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const chunks = [];
|
||||
if (process.stdin.isTTY) {
|
||||
resolve(Buffer.from(''));
|
||||
return;
|
||||
}
|
||||
const onData = (chunk) => {
|
||||
chunks.push(Buffer.from(chunk));
|
||||
};
|
||||
// Handle end of stdin
|
||||
const onEnd = () => {
|
||||
cleanup();
|
||||
resolve(Buffer.concat(chunks));
|
||||
};
|
||||
const onError = (err) => {
|
||||
cleanup();
|
||||
reject(err);
|
||||
};
|
||||
const onTimeout = () => {
|
||||
cleanup();
|
||||
resolve(Buffer.concat(chunks)); // Resolve with whatever has been read so far
|
||||
};
|
||||
// Cleanup listeners and timeout
|
||||
const cleanup = () => {
|
||||
process.stdin.removeListener('data', onData);
|
||||
process.stdin.removeListener('end', onEnd);
|
||||
process.stdin.removeListener('error', onError);
|
||||
clearTimeout(timeout);
|
||||
};
|
||||
// Attach event listeners
|
||||
process.stdin.on('data', onData);
|
||||
process.stdin.on('end', onEnd);
|
||||
process.stdin.on('error', onError);
|
||||
// Start the timeout
|
||||
const timeout = setTimeout(onTimeout, timeoutMs);
|
||||
// Ensure the stdin stream is flowing
|
||||
process.stdin.resume();
|
||||
});
|
||||
};
|
||||
export const resolveQuery = async (options) => {
|
||||
const stdinContent = await readStdin();
|
||||
if (stdinContent.length > 0) {
|
||||
try {
|
||||
return await detectAndHandle(stdinContent, options);
|
||||
}
|
||||
catch (error) {
|
||||
logger.error('Failed to process stdin content:', error.message);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
if (options.prompt) {
|
||||
const queryPath = resolve(path.resolve(options.prompt) || '');
|
||||
if (exists(queryPath) && isFile(queryPath)) {
|
||||
const fileContent = read(queryPath, 'buffer');
|
||||
try {
|
||||
return await detectAndHandle(fileContent, options);
|
||||
}
|
||||
catch (error) {
|
||||
logger.error(`Failed to process file ${queryPath}:`, error.message);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
// 3. Return direct prompt string
|
||||
return options.prompt;
|
||||
}
|
||||
throw new Error('No prompt provided. Use --prompt option or pipe content to stdin');
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUcsTUFBTSxhQUFhLENBQUE7QUFHckMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEtBQUssRUFBRSxZQUFvQixHQUFHLEVBQW1CLEVBQUU7SUFDMUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQTtRQUVELHNCQUFzQjtRQUN0QixNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDakIsT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFD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
|
||||
2
packages/kbot/dist-in/variables.d.ts
vendored
Normal file
2
packages/kbot/dist-in/variables.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import { IKBotTask } from './types';
|
||||
export declare const variables: (options: IKBotTask) => any;
|
||||
56
packages/kbot/dist-in/variables.js
Normal file
56
packages/kbot/dist-in/variables.js
Normal file
@ -0,0 +1,56 @@
|
||||
import * as path from 'node:path';
|
||||
import { pathInfoEx } from '@polymech/commons';
|
||||
import { DEFAULT_ROOTS, DEFAULT_VARS } from '@polymech/commons';
|
||||
export const variables = (options) => {
|
||||
const { model, router, baseURL } = options;
|
||||
let ret = {
|
||||
model,
|
||||
router,
|
||||
baseURL,
|
||||
...DEFAULT_ROOTS,
|
||||
...DEFAULT_VARS({})
|
||||
};
|
||||
if (options?.include?.length === 1) {
|
||||
const [include] = options.include;
|
||||
const {} = pathInfoEx(include);
|
||||
const srcParts = path.parse(include);
|
||||
const srcVariables = {};
|
||||
srcVariables.SRC_NAME = srcParts.name;
|
||||
srcVariables.SRC_DIR = srcParts.dir;
|
||||
srcVariables.SRC_EXT = srcParts.ext;
|
||||
if (srcVariables.ROOT) {
|
||||
srcVariables.SRC_REL = path.relative(srcVariables.ROOT, srcParts.dir);
|
||||
}
|
||||
const dashed = srcParts.name.split('-');
|
||||
if (dashed.length > 1) {
|
||||
for (let i = 0; i < dashed.length; i++) {
|
||||
srcVariables[`SRC_NAME-${i}`] = dashed[i];
|
||||
}
|
||||
}
|
||||
const dotted = srcParts.name.split('.');
|
||||
if (dotted.length > 1) {
|
||||
for (let i = 0; i < dotted.length; i++) {
|
||||
srcVariables[`SRC_NAME.${i}`] = dotted[i];
|
||||
}
|
||||
}
|
||||
const underscored = srcParts.name.split('_');
|
||||
if (underscored.length > 1) {
|
||||
for (let i = 0; i < underscored.length; i++) {
|
||||
srcVariables[`SRC_NAME_${i}`] = underscored[i];
|
||||
}
|
||||
}
|
||||
ret = { ...ret, ...srcVariables };
|
||||
}
|
||||
// CLI argv variables
|
||||
let variables = Object.assign({}, ...Object.keys(options).filter((k) => k.startsWith('var-')).map((k) => {
|
||||
return {
|
||||
[k.replace('var-', '')]: options[k]
|
||||
};
|
||||
}));
|
||||
ret = Object.keys(ret).reduce((acc, key) => {
|
||||
acc[key.toUpperCase()] = ret[key];
|
||||
return acc;
|
||||
}, {});
|
||||
return { ...ret, ...variables };
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ZhcmlhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUUvRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFrQixFQUFFLEVBQUU7SUFDNUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBQ3pDLElBQUksR0FBRyxHQUFHO1FBQ04sS0FBSztRQUNMLE1BQU07UUFDTixPQUFPO1FBQ1AsR0FBRyxhQUFhO1FBQ2hCLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztLQUN0QixDQUFBO0lBRUQsSUFBSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUNqQyxNQUFNLEVBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwQyxNQUFNLFlBQVksR0FBMkIsRUFBRSxDQUFBO1FBRS9DLFlBQVksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQTtRQUNyQyxZQUFZLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUE7UUFDbkMsWUFBWSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFBO1FBRW5DLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN6RSxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzdDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzdDLENBQUM7UUFDTCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDNUMsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xELENBQUM7UUFDTCxDQUFDO1FBQ0QsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQTtJQUNyQyxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNwRyxPQUFPO1lBQ0gsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDdEMsQ0FBQTtJQUNMLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDSCxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDdkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVQLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFBO0FBQ25DLENBQUMsQ0FBQSJ9
|
||||
4
packages/kbot/dist-in/zod_schema.d.ts
vendored
4
packages/kbot/dist-in/zod_schema.d.ts
vendored
@ -14,8 +14,8 @@ export declare const EMode: {
|
||||
export declare const EType: z.ZodEnum<["completion", "tools", "assistant", "custom"]>;
|
||||
export declare const SplitType: z.ZodEnum<["none", "langchain/CharacterTextSplitter", "langchain/LatexTextSplitter", "langchain/MarkdownTextSplitter", "langchain/RecursiveCharacterTextSplitter", "langchain/TokenTextSplitter"]>;
|
||||
export type OptionsSchemaMeta = Record<string, unknown>;
|
||||
export { fetchOpenRouterModels, listModelsAsStrings as listOpenRouterModelsAsStrings } from './models/openrouter.js';
|
||||
export { fetchOpenAIModels, listModelsAsStrings as listOpenAIModelsAsStrings } from './models/openai.js';
|
||||
export declare const OptionsSchema: (opts?: any) => any;
|
||||
export { fetchOpenRouterModels, listModelsAsStrings as listOpenRouterModelsAsStrings } from './models/openrouter';
|
||||
export { fetchOpenAIModels, listModelsAsStrings as listOpenAIModelsAsStrings } from './models/openai';
|
||||
export declare const types: () => void;
|
||||
export declare const schemas: () => void;
|
||||
|
||||
File diff suppressed because one or more lines are too long
353
packages/kbot/dist-in/zod_types.d.ts
vendored
Normal file
353
packages/kbot/dist-in/zod_types.d.ts
vendored
Normal file
@ -0,0 +1,353 @@
|
||||
export interface IKBotOptions {
|
||||
/** Target directory */
|
||||
path?: string;
|
||||
/** The prompt. Supports file paths and environment variables. */
|
||||
prompt?: string;
|
||||
/** Optional output path for modified files (Tool mode only) */
|
||||
output?: string | undefined;
|
||||
/** Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for "completion" mode */
|
||||
dst?: string | undefined;
|
||||
/** Iterate over items, supported: GLOB | Path to JSON File | array of strings (comma separated). To test different models, use --each="gpt-3.5-turbo,gpt-4o", the actual string will exposed as variable `ITEM`, eg: --dst="${ITEM}-output.md" */
|
||||
each?: string | undefined;
|
||||
/** Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user */
|
||||
disable?: string[];
|
||||
/** List of specific tools to disable */
|
||||
disableTools?: string[];
|
||||
/** List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user */
|
||||
tools?: (string[] | string);
|
||||
/** Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json */
|
||||
include?: string[] | undefined;
|
||||
/** Explicit API key to use */
|
||||
api_key?: string | undefined;
|
||||
/** AI model to use for processing. Available models:
|
||||
[35m[1m[22m[39m
|
||||
[35m[1m OpenRouter models:[22m[39m
|
||||
[35m[1m[22m[39m
|
||||
01-ai/yi-large | paid
|
||||
aetherwiing/mn-starcannon-12b | paid
|
||||
ai21/jamba-1-5-large | paid
|
||||
ai21/jamba-1-5-mini | paid
|
||||
ai21/jamba-instruct | paid
|
||||
aion-labs/aion-1.0 | paid
|
||||
aion-labs/aion-1.0-mini | paid
|
||||
aion-labs/aion-rp-llama-3.1-8b | paid
|
||||
amazon/nova-lite-v1 | paid
|
||||
amazon/nova-micro-v1 | paid
|
||||
amazon/nova-pro-v1 | paid
|
||||
anthropic/claude-3-haiku | paid
|
||||
anthropic/claude-3-haiku:beta | paid
|
||||
anthropic/claude-3-opus | paid
|
||||
anthropic/claude-3-opus:beta | paid
|
||||
anthropic/claude-3-sonnet | paid
|
||||
anthropic/claude-3-sonnet:beta | paid
|
||||
anthropic/claude-3.5-haiku | paid
|
||||
anthropic/claude-3.5-haiku-20241022 | paid
|
||||
anthropic/claude-3.5-haiku-20241022:beta | paid
|
||||
anthropic/claude-3.5-haiku:beta | paid
|
||||
anthropic/claude-3.5-sonnet | paid
|
||||
anthropic/claude-3.5-sonnet-20240620 | paid
|
||||
anthropic/claude-3.5-sonnet-20240620:beta | paid
|
||||
anthropic/claude-3.5-sonnet:beta | paid
|
||||
anthropic/claude-2 | paid
|
||||
anthropic/claude-2:beta | paid
|
||||
anthropic/claude-2.0 | paid
|
||||
anthropic/claude-2.0:beta | paid
|
||||
anthropic/claude-2.1 | paid
|
||||
anthropic/claude-2.1:beta | paid
|
||||
openrouter/auto | paid
|
||||
cohere/command | paid
|
||||
cohere/command-r | paid
|
||||
cohere/command-r-03-2024 | paid
|
||||
cohere/command-r-08-2024 | paid
|
||||
cohere/command-r-plus | paid
|
||||
cohere/command-r-plus-04-2024 | paid
|
||||
cohere/command-r-plus-08-2024 | paid
|
||||
cohere/command-r7b-12-2024 | paid
|
||||
databricks/dbrx-instruct | paid
|
||||
deepseek/deepseek-chat-v2.5 | paid
|
||||
deepseek/deepseek-chat | paid
|
||||
deepseek/deepseek-chat:free | free
|
||||
deepseek/deepseek-r1 | paid
|
||||
deepseek/deepseek-r1:free | free
|
||||
deepseek/deepseek-r1-distill-llama-70b | paid
|
||||
deepseek/deepseek-r1-distill-llama-70b:free | free
|
||||
deepseek/deepseek-r1-distill-qwen-1.5b | paid
|
||||
deepseek/deepseek-r1-distill-qwen-14b | paid
|
||||
deepseek/deepseek-r1-distill-qwen-32b | paid
|
||||
cognitivecomputations/dolphin-mixtral-8x7b | paid
|
||||
cognitivecomputations/dolphin3.0-mistral-24b:free | free
|
||||
cognitivecomputations/dolphin3.0-r1-mistral-24b:free | free
|
||||
eva-unit-01/eva-llama-3.33-70b | paid
|
||||
eva-unit-01/eva-qwen-2.5-32b | paid
|
||||
eva-unit-01/eva-qwen-2.5-72b | paid
|
||||
sao10k/fimbulvetr-11b-v2 | paid
|
||||
alpindale/goliath-120b | paid
|
||||
google/gemini-2.0-flash-thinking-exp-1219:free | free
|
||||
google/gemini-2.0-flash-thinking-exp:free | free
|
||||
google/gemini-exp-1206:free | free
|
||||
google/gemini-flash-1.5 | paid
|
||||
google/gemini-flash-1.5-8b | paid
|
||||
google/gemini-flash-1.5-8b-exp | paid
|
||||
google/gemini-2.0-flash-001 | paid
|
||||
google/gemini-2.0-flash-exp:free | free
|
||||
google/gemini-2.0-flash-lite-preview-02-05:free | free
|
||||
google/gemini-pro | paid
|
||||
google/gemini-pro-1.5 | paid
|
||||
google/gemini-2.0-pro-exp-02-05:free | free
|
||||
google/gemini-pro-vision | paid
|
||||
google/gemma-2-27b-it | paid
|
||||
google/gemma-2-9b-it | paid
|
||||
google/gemma-2-9b-it:free | free
|
||||
google/gemma-7b-it | paid
|
||||
google/learnlm-1.5-pro-experimental:free | free
|
||||
google/palm-2-chat-bison | paid
|
||||
google/palm-2-chat-bison-32k | paid
|
||||
google/palm-2-codechat-bison | paid
|
||||
google/palm-2-codechat-bison-32k | paid
|
||||
huggingfaceh4/zephyr-7b-beta:free | free
|
||||
infermatic/mn-inferor-12b | paid
|
||||
inflection/inflection-3-pi | paid
|
||||
inflection/inflection-3-productivity | paid
|
||||
liquid/lfm-3b | paid
|
||||
liquid/lfm-40b | paid
|
||||
liquid/lfm-7b | paid
|
||||
allenai/llama-3.1-tulu-3-405b | paid
|
||||
meta-llama/llama-guard-3-8b | paid
|
||||
alpindale/magnum-72b | paid
|
||||
anthracite-org/magnum-v2-72b | paid
|
||||
anthracite-org/magnum-v4-72b | paid
|
||||
mancer/weaver | paid
|
||||
meta-llama/llama-2-13b-chat | paid
|
||||
meta-llama/llama-2-70b-chat | paid
|
||||
meta-llama/llama-3-70b-instruct | paid
|
||||
meta-llama/llama-3-8b-instruct | paid
|
||||
meta-llama/llama-3-8b-instruct:free | free
|
||||
meta-llama/llama-3.1-405b | paid
|
||||
meta-llama/llama-3.1-405b-instruct | paid
|
||||
meta-llama/llama-3.1-70b-instruct | paid
|
||||
meta-llama/llama-3.1-8b-instruct | paid
|
||||
meta-llama/llama-3.2-11b-vision-instruct | paid
|
||||
meta-llama/llama-3.2-11b-vision-instruct:free | free
|
||||
meta-llama/llama-3.2-1b-instruct | paid
|
||||
meta-llama/llama-3.2-3b-instruct | paid
|
||||
meta-llama/llama-3.2-90b-vision-instruct | paid
|
||||
meta-llama/llama-3.3-70b-instruct | paid
|
||||
meta-llama/llama-3.3-70b-instruct:free | free
|
||||
meta-llama/llama-guard-2-8b | paid
|
||||
microsoft/phi-4 | paid
|
||||
microsoft/phi-3-medium-128k-instruct | paid
|
||||
microsoft/phi-3-medium-128k-instruct:free | free
|
||||
microsoft/phi-3-mini-128k-instruct | paid
|
||||
microsoft/phi-3-mini-128k-instruct:free | free
|
||||
microsoft/phi-3.5-mini-128k-instruct | paid
|
||||
minimax/minimax-01 | paid
|
||||
mistralai/mistral-large | paid
|
||||
mistralai/mistral-large-2407 | paid
|
||||
mistralai/mistral-large-2411 | paid
|
||||
mistralai/mistral-medium | paid
|
||||
nothingiisreal/mn-celeste-12b | paid
|
||||
mistralai/mistral-small | paid
|
||||
mistralai/mistral-tiny | paid
|
||||
mistralai/codestral-2501 | paid
|
||||
mistralai/codestral-mamba | paid
|
||||
mistralai/ministral-3b | paid
|
||||
mistralai/ministral-8b | paid
|
||||
mistralai/mistral-7b-instruct | paid
|
||||
mistralai/mistral-7b-instruct:free | free
|
||||
mistralai/mistral-7b-instruct-v0.1 | paid
|
||||
mistralai/mistral-7b-instruct-v0.3 | paid
|
||||
mistralai/mistral-nemo | paid
|
||||
mistralai/mistral-nemo:free | free
|
||||
mistralai/mistral-small-24b-instruct-2501 | paid
|
||||
mistralai/mistral-small-24b-instruct-2501:free | free
|
||||
mistralai/mixtral-8x22b-instruct | paid
|
||||
mistralai/mixtral-8x7b | paid
|
||||
mistralai/mixtral-8x7b-instruct | paid
|
||||
mistralai/pixtral-12b | paid
|
||||
mistralai/pixtral-large-2411 | paid
|
||||
mistralai/mistral-saba | paid
|
||||
gryphe/mythomax-l2-13b | paid
|
||||
gryphe/mythomax-l2-13b:free | free
|
||||
neversleep/llama-3-lumimaid-70b | paid
|
||||
neversleep/llama-3-lumimaid-8b | paid
|
||||
neversleep/llama-3-lumimaid-8b:extended | paid
|
||||
neversleep/llama-3.1-lumimaid-70b | paid
|
||||
neversleep/llama-3.1-lumimaid-8b | paid
|
||||
neversleep/noromaid-20b | paid
|
||||
nousresearch/nous-hermes-llama2-13b | paid
|
||||
nousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid
|
||||
nousresearch/hermes-3-llama-3.1-405b | paid
|
||||
nousresearch/hermes-3-llama-3.1-70b | paid
|
||||
nousresearch/hermes-2-pro-llama-3-8b | paid
|
||||
nvidia/llama-3.1-nemotron-70b-instruct | paid
|
||||
nvidia/llama-3.1-nemotron-70b-instruct:free | free
|
||||
openai/chatgpt-4o-latest | paid
|
||||
openai/gpt-3.5-turbo | paid
|
||||
openai/gpt-3.5-turbo-0613 | paid
|
||||
openai/gpt-3.5-turbo-16k | paid
|
||||
openai/gpt-3.5-turbo-0125 | paid
|
||||
openai/gpt-3.5-turbo-1106 | paid
|
||||
openai/gpt-3.5-turbo-instruct | paid
|
||||
openai/gpt-4 | paid
|
||||
openai/gpt-4-0314 | paid
|
||||
openai/gpt-4-32k | paid
|
||||
openai/gpt-4-32k-0314 | paid
|
||||
openai/gpt-4-turbo | paid
|
||||
openai/gpt-4-1106-preview | paid
|
||||
openai/gpt-4-turbo-preview | paid
|
||||
openai/gpt-4o | paid
|
||||
openai/gpt-4o-2024-05-13 | paid
|
||||
openai/gpt-4o-2024-08-06 | paid
|
||||
openai/gpt-4o-2024-11-20 | paid
|
||||
openai/gpt-4o:extended | paid
|
||||
openai/gpt-4o-mini | paid
|
||||
openai/gpt-4o-mini-2024-07-18 | paid
|
||||
openai/o1 | paid
|
||||
openai/o1-mini | paid
|
||||
openai/o1-mini-2024-09-12 | paid
|
||||
openai/o1-preview | paid
|
||||
openai/o1-preview-2024-09-12 | paid
|
||||
openai/o3-mini | paid
|
||||
openai/o3-mini-high | paid
|
||||
openchat/openchat-7b | paid
|
||||
openchat/openchat-7b:free | free
|
||||
perplexity/llama-3.1-sonar-huge-128k-online | paid
|
||||
perplexity/llama-3.1-sonar-large-128k-chat | paid
|
||||
perplexity/llama-3.1-sonar-large-128k-online | paid
|
||||
perplexity/llama-3.1-sonar-small-128k-chat | paid
|
||||
perplexity/llama-3.1-sonar-small-128k-online | paid
|
||||
perplexity/sonar | paid
|
||||
perplexity/sonar-reasoning | paid
|
||||
pygmalionai/mythalion-13b | paid
|
||||
qwen/qwen-2-72b-instruct | paid
|
||||
qwen/qvq-72b-preview | paid
|
||||
qwen/qwen-vl-plus:free | free
|
||||
qwen/qwen-max | paid
|
||||
qwen/qwen-plus | paid
|
||||
qwen/qwen-turbo | paid
|
||||
qwen/qwen2.5-vl-72b-instruct:free | free
|
||||
qwen/qwq-32b-preview | paid
|
||||
qwen/qwen-2-vl-72b-instruct | paid
|
||||
qwen/qwen-2-vl-7b-instruct | paid
|
||||
qwen/qwen-2.5-72b-instruct | paid
|
||||
qwen/qwen-2.5-7b-instruct | paid
|
||||
qwen/qwen-2.5-coder-32b-instruct | paid
|
||||
undi95/remm-slerp-l2-13b | paid
|
||||
thedrummer/rocinante-12b | paid
|
||||
sophosympatheia/rogue-rose-103b-v0.2:free | free
|
||||
sao10k/l3-lunaris-8b | paid
|
||||
sao10k/l3-euryale-70b | paid
|
||||
sao10k/l3.1-70b-hanami-x1 | paid
|
||||
sao10k/l3.1-euryale-70b | paid
|
||||
sao10k/l3.3-euryale-70b | paid
|
||||
raifle/sorcererlm-8x22b | paid
|
||||
undi95/toppy-m-7b | paid
|
||||
undi95/toppy-m-7b:free | free
|
||||
thedrummer/unslopnemo-12b | paid
|
||||
microsoft/wizardlm-2-7b | paid
|
||||
microsoft/wizardlm-2-8x22b | paid
|
||||
x-ai/grok-2-1212 | paid
|
||||
x-ai/grok-2-vision-1212 | paid
|
||||
x-ai/grok-beta | paid
|
||||
x-ai/grok-vision-beta | paid
|
||||
xwin-lm/xwin-lm-70b | paid
|
||||
[35m[1m[22m[39m
|
||||
[35m[1m OpenAI models:[22m[39m
|
||||
[35m[1m[22m[39m
|
||||
babbage-002
|
||||
chatgpt-4o-latest
|
||||
dall-e-2
|
||||
dall-e-3
|
||||
davinci-002
|
||||
gpt-3.5-turbo
|
||||
gpt-3.5-turbo-0125
|
||||
gpt-3.5-turbo-1106
|
||||
gpt-3.5-turbo-16k
|
||||
gpt-3.5-turbo-instruct
|
||||
gpt-3.5-turbo-instruct-0914
|
||||
gpt-4
|
||||
gpt-4-0125-preview
|
||||
gpt-4-0613
|
||||
gpt-4-1106-preview
|
||||
gpt-4-turbo
|
||||
gpt-4-turbo-2024-04-09
|
||||
gpt-4-turbo-preview
|
||||
gpt-4o
|
||||
gpt-4o-2024-05-13
|
||||
gpt-4o-2024-08-06
|
||||
gpt-4o-2024-11-20
|
||||
gpt-4o-audio-preview
|
||||
gpt-4o-audio-preview-2024-10-01
|
||||
gpt-4o-audio-preview-2024-12-17
|
||||
gpt-4o-mini
|
||||
gpt-4o-mini-2024-07-18
|
||||
gpt-4o-mini-audio-preview
|
||||
gpt-4o-mini-audio-preview-2024-12-17
|
||||
gpt-4o-mini-realtime-preview
|
||||
gpt-4o-mini-realtime-preview-2024-12-17
|
||||
gpt-4o-realtime-preview
|
||||
gpt-4o-realtime-preview-2024-10-01
|
||||
gpt-4o-realtime-preview-2024-12-17
|
||||
o1-mini
|
||||
o1-mini-2024-09-12
|
||||
o1-preview
|
||||
o1-preview-2024-09-12
|
||||
omni-moderation-2024-09-26
|
||||
omni-moderation-latest
|
||||
text-embedding-3-large
|
||||
text-embedding-3-small
|
||||
text-embedding-ada-002
|
||||
tts-1
|
||||
tts-1-1106
|
||||
tts-1-hd
|
||||
tts-1-hd-1106
|
||||
whisper-1
|
||||
-----
|
||||
|
||||
[35m[1m[22m[39m
|
||||
[35m[1m Deepseek models:[22m[39m
|
||||
[35m[1m[22m[39m
|
||||
deepseek-chat
|
||||
deepseek-reasoner
|
||||
-----
|
||||
*/
|
||||
model?: string | undefined;
|
||||
/** Router to use: openai, openrouter or deepseek */
|
||||
router?: string;
|
||||
/** Chat completion mode:
|
||||
completion, tools, assistant.
|
||||
[32m[1mcompletion[22m[39m: no support for tools, please use --dst parameter to save the output.
|
||||
[32m[1mtools[22m[39m: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode.
|
||||
[32m[1massistant[22m[39m: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files :
|
||||
[32m[1mcustom[22m[39m: custom mode
|
||||
*/
|
||||
mode?: "completion" | "tools" | "assistant" | "custom";
|
||||
/** Logging level for the application */
|
||||
logLevel?: number;
|
||||
/** Path to profile for variables. Supports environment variables. */
|
||||
profile?: string | undefined;
|
||||
/** Base URL for the API, set via --router or directly */
|
||||
baseURL?: string | undefined;
|
||||
/** Path to JSON configuration file (API keys). Supports environment variables. */
|
||||
config?: string | undefined;
|
||||
/** Create a script */
|
||||
dump?: string | undefined;
|
||||
/** Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables. */
|
||||
preferences?: string;
|
||||
/** Logging directory */
|
||||
logs?: string;
|
||||
/** Environment (in profile) */
|
||||
env?: string;
|
||||
variables?: {
|
||||
[x: string]: string;
|
||||
};
|
||||
/** List of filters to apply to the output.
|
||||
Used only in completion mode and a given output file specified with --dst.
|
||||
It unwraps by default any code or data in Markdown.
|
||||
Choices:
|
||||
JSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim
|
||||
*/
|
||||
filters?: (string | ("JSON" | "JSONUnescape" | "JSONPretty" | "AlphaSort" | "code" | "JSONParse" | "trim")[] | string[] | ((...args_0: unknown[]) => unknown)[]);
|
||||
/** Dry run - only write out parameters without making API calls */
|
||||
dry?: (boolean | string);
|
||||
}
|
||||
2
packages/kbot/dist-in/zod_types.js
Normal file
2
packages/kbot/dist-in/zod_types.js
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3pvZF90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
||||
5
packages/kbot/models/cache/openai.js
vendored
5
packages/kbot/models/cache/openai.js
vendored
File diff suppressed because one or more lines are too long
5
packages/kbot/models/cache/openrouter.js
vendored
5
packages/kbot/models/cache/openrouter.js
vendored
File diff suppressed because one or more lines are too long
@ -1,293 +0,0 @@
|
||||
{
|
||||
"timestamp": 1739948673840,
|
||||
"models": [
|
||||
{
|
||||
"id": "gpt-4o-mini-audio-preview-2024-12-17",
|
||||
"object": "model",
|
||||
"created": 1734115920,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "dall-e-3",
|
||||
"object": "model",
|
||||
"created": 1698785189,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-turbo-2024-04-09",
|
||||
"object": "model",
|
||||
"created": 1712601677,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "dall-e-2",
|
||||
"object": "model",
|
||||
"created": 1698798177,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-audio-preview-2024-10-01",
|
||||
"object": "model",
|
||||
"created": 1727389042,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-audio-preview",
|
||||
"object": "model",
|
||||
"created": 1727460443,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "o1-mini-2024-09-12",
|
||||
"object": "model",
|
||||
"created": 1725648979,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini-realtime-preview-2024-12-17",
|
||||
"object": "model",
|
||||
"created": 1734112601,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "o1-preview-2024-09-12",
|
||||
"object": "model",
|
||||
"created": 1725648865,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "o1-mini",
|
||||
"object": "model",
|
||||
"created": 1725649008,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "o1-preview",
|
||||
"object": "model",
|
||||
"created": 1725648897,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini-realtime-preview",
|
||||
"object": "model",
|
||||
"created": 1734387380,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "whisper-1",
|
||||
"object": "model",
|
||||
"created": 1677532384,
|
||||
"owned_by": "openai-internal"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-turbo",
|
||||
"object": "model",
|
||||
"created": 1712361441,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini-audio-preview",
|
||||
"object": "model",
|
||||
"created": 1734387424,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-2024-11-20",
|
||||
"object": "model",
|
||||
"created": 1739331543,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-realtime-preview-2024-10-01",
|
||||
"object": "model",
|
||||
"created": 1727131766,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "babbage-002",
|
||||
"object": "model",
|
||||
"created": 1692634615,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "tts-1-hd-1106",
|
||||
"object": "model",
|
||||
"created": 1699053533,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-audio-preview-2024-12-17",
|
||||
"object": "model",
|
||||
"created": 1734034239,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "tts-1-hd",
|
||||
"object": "model",
|
||||
"created": 1699046015,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "text-embedding-3-large",
|
||||
"object": "model",
|
||||
"created": 1705953180,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini-2024-07-18",
|
||||
"object": "model",
|
||||
"created": 1721172717,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-mini",
|
||||
"object": "model",
|
||||
"created": 1721172741,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "tts-1",
|
||||
"object": "model",
|
||||
"created": 1681940951,
|
||||
"owned_by": "openai-internal"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o",
|
||||
"object": "model",
|
||||
"created": 1715367049,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "tts-1-1106",
|
||||
"object": "model",
|
||||
"created": 1699053241,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-2024-08-06",
|
||||
"object": "model",
|
||||
"created": 1722814719,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "davinci-002",
|
||||
"object": "model",
|
||||
"created": 1692634301,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-3.5-turbo-1106",
|
||||
"object": "model",
|
||||
"created": 1698959748,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "omni-moderation-2024-09-26",
|
||||
"object": "model",
|
||||
"created": 1732734466,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-3.5-turbo-instruct",
|
||||
"object": "model",
|
||||
"created": 1692901427,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-3.5-turbo-instruct-0914",
|
||||
"object": "model",
|
||||
"created": 1694122472,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-3.5-turbo-0125",
|
||||
"object": "model",
|
||||
"created": 1706048358,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-realtime-preview-2024-12-17",
|
||||
"object": "model",
|
||||
"created": 1733945430,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-3.5-turbo",
|
||||
"object": "model",
|
||||
"created": 1677610602,
|
||||
"owned_by": "openai"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-realtime-preview",
|
||||
"object": "model",
|
||||
"created": 1727659998,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-3.5-turbo-16k",
|
||||
"object": "model",
|
||||
"created": 1683758102,
|
||||
"owned_by": "openai-internal"
|
||||
},
|
||||
{
|
||||
"id": "text-embedding-3-small",
|
||||
"object": "model",
|
||||
"created": 1705948997,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4",
|
||||
"object": "model",
|
||||
"created": 1687882411,
|
||||
"owned_by": "openai"
|
||||
},
|
||||
{
|
||||
"id": "text-embedding-ada-002",
|
||||
"object": "model",
|
||||
"created": 1671217299,
|
||||
"owned_by": "openai-internal"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-1106-preview",
|
||||
"object": "model",
|
||||
"created": 1698957206,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "omni-moderation-latest",
|
||||
"object": "model",
|
||||
"created": 1731689265,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-0613",
|
||||
"object": "model",
|
||||
"created": 1686588896,
|
||||
"owned_by": "openai"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-0125-preview",
|
||||
"object": "model",
|
||||
"created": 1706037612,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4-turbo-preview",
|
||||
"object": "model",
|
||||
"created": 1706037777,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "gpt-4o-2024-05-13",
|
||||
"object": "model",
|
||||
"created": 1715368132,
|
||||
"owned_by": "system"
|
||||
},
|
||||
{
|
||||
"id": "chatgpt-4o-latest",
|
||||
"object": "model",
|
||||
"created": 1723515131,
|
||||
"owned_by": "system"
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,134 +0,0 @@
|
||||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||
}
|
||||
Object.defineProperty(o, k2, desc);
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || (function () {
|
||||
var ownKeys = function(o) {
|
||||
ownKeys = Object.getOwnPropertyNames || function (o) {
|
||||
var ar = [];
|
||||
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
||||
return ar;
|
||||
};
|
||||
return ownKeys(o);
|
||||
};
|
||||
return function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
})();
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.all = exports.models = exports.models_dist = void 0;
|
||||
const chalk_1 = __importDefault(require("chalk"));
|
||||
const path = __importStar(require("path"));
|
||||
const read_1 = require("@plastichub/fs/read");
|
||||
const exists_1 = require("@plastichub/fs/exists");
|
||||
const index_1 = require("../index");
|
||||
const openrouter_1 = require("./openrouter");
|
||||
const openai_1 = require("./openai");
|
||||
const openai_2 = require("../models/openai");
|
||||
const osr_commons_1 = require("@plastichub/osr-commons");
|
||||
const openai_3 = require("./cache/openai");
|
||||
const openrouter_2 = require("./cache/openrouter");
|
||||
const models_dist = () => {
|
||||
let or_models = openrouter_2.models;
|
||||
let oai_models = openai_3.models;
|
||||
let deepseek_models = [
|
||||
{
|
||||
"id": "deepseek-chat",
|
||||
"name": "deepseek-chat"
|
||||
},
|
||||
{
|
||||
"id": "deepseek-reasoner",
|
||||
"name": "deepseek-reasoner"
|
||||
},
|
||||
];
|
||||
const modelsOpenAIPath = path.resolve((0, index_1.module_root)(), 'openai.json');
|
||||
if ((0, exists_1.sync)(modelsOpenAIPath)) {
|
||||
oai_models = (0, read_1.sync)(modelsOpenAIPath, 'json');
|
||||
}
|
||||
const modelsRouterPath = path.resolve((0, index_1.module_root)(), 'openrouter.json');
|
||||
if ((0, exists_1.sync)(modelsRouterPath)) {
|
||||
or_models = (0, read_1.sync)(modelsRouterPath, 'json');
|
||||
}
|
||||
const models = [];
|
||||
models.push(chalk_1.default.magenta.bold('\n OpenRouter models:\n'));
|
||||
models.push(...(0, openrouter_1.listModelsAsStrings)(or_models));
|
||||
models.push(chalk_1.default.magenta.bold('\n OpenAI models:\n'));
|
||||
models.push(...(0, openai_1.listModelsAsStrings)(oai_models));
|
||||
models.push('-----\n');
|
||||
models.push(chalk_1.default.magenta.bold('\n Deepseek models:\n'));
|
||||
models.push(...(0, openai_1.listModelsAsStrings)(deepseek_models));
|
||||
models.push('-----\n');
|
||||
return models;
|
||||
};
|
||||
exports.models_dist = models_dist;
|
||||
const models = () => {
|
||||
const models = [];
|
||||
const openRouterPath = path.resolve(openrouter_1.CACHE_PATH);
|
||||
if (!(0, exists_1.sync)(openRouterPath)) {
|
||||
(0, openrouter_1.fetchOpenRouterModels)();
|
||||
}
|
||||
if ((0, exists_1.sync)(openRouterPath)) {
|
||||
const modelData = (0, read_1.sync)(openRouterPath, 'json');
|
||||
models.push(chalk_1.default.magenta.bold('\n OpenRouter models:\n'));
|
||||
models.push(...(0, openrouter_1.listModelsAsStrings)(modelData.models));
|
||||
}
|
||||
index_1.logger.debug('Openrouter models cache: ', openai_1.CACHE_PATH);
|
||||
const openAIPath = path.resolve(openai_1.CACHE_PATH);
|
||||
const config = (0, osr_commons_1.CONFIG_DEFAULT)();
|
||||
if (!(0, exists_1.sync)(openAIPath) && config?.openai?.key) {
|
||||
(0, openai_2.fetchOpenAIModels)(config.openai.key);
|
||||
}
|
||||
if ((0, exists_1.sync)(openAIPath)) {
|
||||
const modelData = (0, read_1.sync)(openAIPath, 'json');
|
||||
models.push(chalk_1.default.magenta.bold('\n OpenAI models:\n'));
|
||||
models.push(...(0, openai_1.listModelsAsStrings)(modelData.models));
|
||||
}
|
||||
index_1.logger.debug('OpenAI models cache: ', openai_1.CACHE_PATH);
|
||||
models.push('-----\n');
|
||||
return models;
|
||||
};
|
||||
exports.models = models;
|
||||
const all = () => {
|
||||
let models = [];
|
||||
const openRouterPath = path.resolve(openrouter_1.CACHE_PATH);
|
||||
if (!(0, exists_1.sync)(openRouterPath)) {
|
||||
(0, openrouter_1.fetchOpenRouterModels)();
|
||||
}
|
||||
if ((0, exists_1.sync)(openRouterPath)) {
|
||||
const modelData = (0, read_1.sync)(openRouterPath, 'json');
|
||||
models = models.concat(modelData.models);
|
||||
}
|
||||
const openAIPath = path.resolve(openai_1.CACHE_PATH);
|
||||
const config = (0, osr_commons_1.CONFIG_DEFAULT)();
|
||||
if (!(0, exists_1.sync)(openAIPath) && config?.openai?.key) {
|
||||
(0, openai_2.fetchOpenAIModels)(config.openai.key);
|
||||
}
|
||||
if ((0, exists_1.sync)(openAIPath)) {
|
||||
const modelData = (0, read_1.sync)(openAIPath, 'json');
|
||||
models.push(chalk_1.default.magenta.bold('\n OpenAI models:\n'));
|
||||
models = models.concat(modelData.models);
|
||||
}
|
||||
return models;
|
||||
};
|
||||
exports.all = all;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGtEQUF5QjtBQUN6QiwyQ0FBNEI7QUFFNUIsOENBQWtEO0FBQ2xELGtEQUFzRDtBQUV0RCxvQ0FBOEM7QUFDOUMsNkNBQXVMO0FBQ3ZMLHFDQUFnSjtBQUNoSiw2Q0FBb0Q7QUFDcEQseURBQXdEO0FBRXhELDJDQUF1RDtBQUN2RCxtREFBK0Q7QUFFeEQsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFO0lBRTlCLElBQUksU0FBUyxHQUFHLG1CQUFnQixDQUFBO0lBQ2hDLElBQUksVUFBVSxHQUFHLGVBQVksQ0FBQTtJQUM3QixJQUFJLGVBQWUsR0FBRztRQUNwQjtZQUNFLElBQUksRUFBRSxlQUFlO1lBQ3JCLE1BQU0sRUFBRSxlQUFlO1NBQ3hCO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLE1BQU0sRUFBRSxtQkFBbUI7U0FDNUI7S0FDRixDQUFBO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUEsbUJBQVcsR0FBRSxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQ25FLElBQUksSUFBQSxhQUFNLEVBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQzdCLFVBQVUsR0FBRyxJQUFBLFdBQUksRUFBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQVEsQ0FBQTtJQUNwRCxDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUEsbUJBQVcsR0FBRSxFQUFFLGlCQUFpQixDQUFDLENBQUE7SUFDdkUsSUFBSSxJQUFBLGFBQU0sRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDN0IsU0FBUyxHQUFHLElBQUEsV0FBSSxFQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBUSxD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
|
||||
@ -1,94 +0,0 @@
|
||||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||
}
|
||||
Object.defineProperty(o, k2, desc);
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || (function () {
|
||||
var ownKeys = function(o) {
|
||||
ownKeys = Object.getOwnPropertyNames || function (o) {
|
||||
var ar = [];
|
||||
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
||||
return ar;
|
||||
};
|
||||
return ownKeys(o);
|
||||
};
|
||||
return function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
})();
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.CACHE_PATH = void 0;
|
||||
exports.fetchOpenAIModels = fetchOpenAIModels;
|
||||
exports.listModelsAsStrings = listModelsAsStrings;
|
||||
const openai_1 = require("openai");
|
||||
const path = __importStar(require("path"));
|
||||
const index_1 = require("../index");
|
||||
const exists_1 = require("@plastichub/fs/exists");
|
||||
const read_1 = require("@plastichub/fs/read");
|
||||
const write_1 = require("@plastichub/fs/write");
|
||||
exports.CACHE_PATH = path.resolve(path.join(path.parse(__filename).dir), 'data', 'openai_models.json');
|
||||
const CACHE_DURATION = 24 * 60 * 60 * 1000;
|
||||
async function readFromCache(cachePath = exports.CACHE_PATH) {
|
||||
try {
|
||||
if (!(0, exists_1.sync)(cachePath)) {
|
||||
return null;
|
||||
}
|
||||
const cacheData = (0, read_1.sync)(cachePath);
|
||||
const now = Date.now();
|
||||
if (now - cacheData.timestamp > CACHE_DURATION) {
|
||||
//return null
|
||||
}
|
||||
return cacheData.models;
|
||||
}
|
||||
catch (error) {
|
||||
index_1.logger.error('Error reading from cache:', error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
function writeToCache(models, cachePath = exports.CACHE_PATH) {
|
||||
try {
|
||||
const cacheData = {
|
||||
timestamp: Date.now(),
|
||||
models
|
||||
};
|
||||
(0, write_1.sync)(cachePath, cacheData);
|
||||
}
|
||||
catch (error) {
|
||||
index_1.logger.error('Error writing to cache:', error);
|
||||
}
|
||||
}
|
||||
async function fetchOpenAIModels(apiKey, cachePath = exports.CACHE_PATH) {
|
||||
try {
|
||||
const openai = new openai_1.OpenAI({ apiKey });
|
||||
const response = await openai.models.list();
|
||||
const models = response.data;
|
||||
index_1.logger.info(`Fetched ${models.length} OpenAI models, to ${cachePath}`);
|
||||
writeToCache(models, cachePath);
|
||||
return models;
|
||||
}
|
||||
catch (error) {
|
||||
index_1.logger.error('Error fetching OpenAI models:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
function listModelsAsStrings(models) {
|
||||
models = models.sort((a, b) => a.id.localeCompare(b.id));
|
||||
return models.map((model) => `${model.id}`);
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZGVscy9vcGVuYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbURBLDhDQVlDO0FBQ0Qsa0RBR0M7QUFuRUQsbUNBQStCO0FBRS9CLDJDQUE0QjtBQUM1QixvQ0FBaUM7QUFFakMsa0RBQXNEO0FBQ3RELDhDQUFrRDtBQUNsRCxnREFBb0Q7QUFjdkMsUUFBQSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUE7QUFDM0csTUFBTSxjQUFjLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFBO0FBRTFDLEtBQUssVUFBVSxhQUFhLENBQUMsWUFBb0Isa0JBQVU7SUFDdkQsSUFBSSxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUEsYUFBTSxFQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBQSxXQUFJLEVBQUMsU0FBUyxDQUFpQixDQUFBO1FBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUN0QixJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQzdDLGFBQWE7UUFDakIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQTtJQUMzQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLGNBQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDaEQsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0FBQ0wsQ0FBQztBQUNELFNBQVMsWUFBWSxDQUFDLE1BQXFCLEVBQUUsWUFBb0Isa0JBQVU7SUFDdkUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQWlCO1lBQzVCLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3JCLE1BQU07U0FDVCxDQUFBO1FBQ0QsSUFBQSxZQUFLLEVBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsY0FBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0FBQ0wsQ0FBQztBQUNNLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxNQUFjLEVBQUUsWUFBb0Isa0JBQVU7SUFDbEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFBO1FBQzVCLGNBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUN0RSxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQy9CLE9BQU8sTUFBTSxDQUFBO0lBQ2pCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsY0FBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNwRCxNQUFNLEtBQUssQ0FBQTtJQUNmLENBQUM7QUFDTCxDQUFDO0FBQ0QsU0FBZ0IsbUJBQW1CLENBQUMsTUFBcUI7SUFDckQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN4RCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEQsQ0FBQyJ9
|
||||
@ -1,117 +0,0 @@
|
||||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||
}
|
||||
Object.defineProperty(o, k2, desc);
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || (function () {
|
||||
var ownKeys = function(o) {
|
||||
ownKeys = Object.getOwnPropertyNames || function (o) {
|
||||
var ar = [];
|
||||
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
||||
return ar;
|
||||
};
|
||||
return ownKeys(o);
|
||||
};
|
||||
return function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
})();
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.fetchOpenRouterModels = exports.readFromCache = exports.CACHE_PATH = void 0;
|
||||
exports.findFreeModels = findFreeModels;
|
||||
exports.findFreePromptModels = findFreePromptModels;
|
||||
exports.findFreeCompletionModels = findFreeCompletionModels;
|
||||
exports.findFreeImageModels = findFreeImageModels;
|
||||
exports.listModelsAsStrings = listModelsAsStrings;
|
||||
const axios_1 = __importDefault(require("axios"));
|
||||
const path = __importStar(require("path"));
|
||||
const index_1 = require("../index");
|
||||
const exists_1 = require("@plastichub/fs/exists");
|
||||
const read_1 = require("@plastichub/fs/read");
|
||||
const write_1 = require("@plastichub/fs/write");
|
||||
exports.CACHE_PATH = path.resolve(path.join(path.parse(__filename).dir), 'data', 'openrouter_models.json');
|
||||
const CACHE_DURATION = 24 * 60 * 60 * 1000; // 24 hours in milliseconds
|
||||
const readFromCache = (cachePath = exports.CACHE_PATH) => {
|
||||
try {
|
||||
if (!(0, exists_1.sync)(cachePath)) {
|
||||
return null;
|
||||
}
|
||||
const cacheData = (0, read_1.sync)(cachePath, 'json');
|
||||
const now = Date.now();
|
||||
if (now - cacheData.timestamp > CACHE_DURATION) {
|
||||
//return null
|
||||
}
|
||||
return cacheData.models;
|
||||
}
|
||||
catch (error) {
|
||||
index_1.logger.error('Error reading from cache:', error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
exports.readFromCache = readFromCache;
|
||||
function writeToCache(models, cachePath = exports.CACHE_PATH) {
|
||||
const cacheData = {
|
||||
timestamp: Date.now(),
|
||||
models
|
||||
};
|
||||
(0, write_1.sync)(cachePath, cacheData);
|
||||
}
|
||||
const fetchOpenRouterModels = async (cachePath = exports.CACHE_PATH) => {
|
||||
try {
|
||||
// If no cache or expired, fetch from API
|
||||
const response = await axios_1.default.get('https://openrouter.ai/api/v1/models', {
|
||||
params: {
|
||||
// supported_parameters: 'tools'
|
||||
}
|
||||
});
|
||||
writeToCache(response.data.data);
|
||||
index_1.logger.debug(`Fetched ${response.data.data.length} OpenRouter models to ${cachePath}`);
|
||||
return response.data.data;
|
||||
}
|
||||
catch (error) {
|
||||
index_1.logger.error('Error fetching OpenRouter models:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
exports.fetchOpenRouterModels = fetchOpenRouterModels;
|
||||
function findFreeModels(models) {
|
||||
return models.filter((model) => model.pricing.prompt === 0 &&
|
||||
model.pricing.completion === 0 &&
|
||||
model.pricing.image === 0);
|
||||
}
|
||||
function findFreePromptModels(models) {
|
||||
return models.filter((model) => model.pricing.prompt === 0);
|
||||
}
|
||||
function findFreeCompletionModels(models) {
|
||||
return models.filter((model) => model.pricing.completion === 0);
|
||||
}
|
||||
function findFreeImageModels(models) {
|
||||
return models.filter((model) => model.pricing.image === 0);
|
||||
}
|
||||
function listModelsAsStrings(models) {
|
||||
models = models.sort((a, b) => a.name.localeCompare(b.name));
|
||||
return models.map((model) => {
|
||||
const isFree = model.name.includes('free');
|
||||
return `${model.id} | ${isFree ? 'free' : 'paid'}`;
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlbHMvb3BlbnJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtRkEsd0NBT0M7QUFDRCxvREFFQztBQUVELDREQUVDO0FBRUQsa0RBRUM7QUFDRCxrREFNQztBQTVHRCxrREFBeUI7QUFDekIsMkNBQTZCO0FBQzdCLG9DQUFpQztBQUVqQyxrREFBc0Q7QUFDdEQsOENBQWtEO0FBQ2xELGdEQUFvRDtBQTZCdkMsUUFBQSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixDQUFDLENBQUE7QUFFL0csTUFBTSxjQUFjLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsMkJBQTJCO0FBRWhFLE1BQU0sYUFBYSxHQUFHLENBQUMsWUFBb0Isa0JBQVUsRUFBcUMsRUFBRTtJQUNqRyxJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBQSxhQUFNLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsTUFBTSxDQUFpQixDQUFDO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQy9DLGFBQWE7UUFDZixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsTUFBYSxDQUFDO0lBQ2pDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FB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
|
||||
@ -1,78 +0,0 @@
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
|
||||
import { loadConfig } from '../config'
|
||||
import { createClient } from '../client'
|
||||
|
||||
import * as fs from 'fs'
|
||||
|
||||
vi.mock('fs')
|
||||
vi.mock('@polymech/commons', () => ({
|
||||
CONFIG_DEFAULT: () => ({
|
||||
openrouter: { key: 'default-openrouter-key' },
|
||||
openai: { key: 'default-openai-key' }
|
||||
})
|
||||
}))
|
||||
vi.mock('.', () => ({
|
||||
logger: {
|
||||
error: vi.fn(),
|
||||
debug: vi.fn()
|
||||
}
|
||||
}))
|
||||
|
||||
describe('loadConfig', () => {
|
||||
beforeEach(() => {
|
||||
vi.resetAllMocks()
|
||||
})
|
||||
|
||||
it('should load config with API key from options', () => {
|
||||
const options = { api_key: 'test-key' }
|
||||
const result = loadConfig(options)
|
||||
expect(result.apiKey).toBe('test-key')
|
||||
})
|
||||
|
||||
it('should load config from JSON string', () => {
|
||||
const options = {
|
||||
config: '{"openrouter":{"key":"json-key"}}'
|
||||
}
|
||||
const result = loadConfig(options)
|
||||
expect(result.jsonConfig?.openrouter?.key).toBe('json-key')
|
||||
})
|
||||
|
||||
it('should load config from JSON file', () => {
|
||||
vi.mocked(fs.readFileSync).mockReturnValue('{"openrouter":{"key":"file-key"}}')
|
||||
const options = { config: 'config.json' }
|
||||
const result = loadConfig(options)
|
||||
expect(result.jsonConfig?.openrouter?.key).toBe('file-key')
|
||||
})
|
||||
|
||||
it('should handle invalid JSON config', () => {
|
||||
const options = { config: 'invalid-json' }
|
||||
const result = loadConfig(options)
|
||||
expect(result.jsonConfig).toBeUndefined()
|
||||
})
|
||||
})
|
||||
|
||||
describe('createClient', () => {
|
||||
beforeEach(() => {
|
||||
vi.resetAllMocks()
|
||||
process.env.API_KEY = undefined
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
vi.resetAllMocks()
|
||||
})
|
||||
|
||||
it('should create OpenRouter client with API key from options', () => {
|
||||
const client = createClient({ api_key: 'test-key', router: 'openrouter' })
|
||||
expect(client).toBeDefined()
|
||||
})
|
||||
|
||||
it('should create OpenAI client with API key from options', () => {
|
||||
const client = createClient({ api_key: 'test-key', router: 'openai' })
|
||||
expect(client).toBeDefined()
|
||||
})
|
||||
|
||||
it('should return undefined for unknown router', () => {
|
||||
const client = createClient({ api_key: 'test-key', router: 'unknown' as any })
|
||||
expect(client).toBeUndefined()
|
||||
})
|
||||
})
|
||||
@ -1,98 +0,0 @@
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
||||
import {resolve_package_path, template_path, load } from '../templates'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { filesEx as include } from '@polymech/commons/_glob'
|
||||
import * as path from 'path'
|
||||
import { logger } from '../'
|
||||
|
||||
vi.mock('@polymech/fs/exists')
|
||||
vi.mock('@polymech/fs/read')
|
||||
vi.mock('@polymech/commons/_glob')
|
||||
vi.mock('@polymech/commons', () => ({
|
||||
resolve: vi.fn((path) => path),
|
||||
substitute: vi.fn((x, y) => y)
|
||||
}))
|
||||
vi.mock('path', async () => {
|
||||
const actual = await vi.importActual('path')
|
||||
return {
|
||||
...(actual as any),
|
||||
resolve: vi.fn((p) => p),
|
||||
join: vi.fn((...paths) => paths.join('/')),
|
||||
parse: vi.fn((p) => ({ name: p.split('/').pop()?.split('.')[0] }))
|
||||
}
|
||||
})
|
||||
vi.mock('../', () => ({
|
||||
logger: {
|
||||
warn: vi.fn(),
|
||||
error: vi.fn(),
|
||||
debug: vi.fn()
|
||||
}
|
||||
}))
|
||||
|
||||
describe('templates', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
})
|
||||
|
||||
describe('template_path', () => {
|
||||
it('should return resolved path if template exists', () => {
|
||||
vi.mocked(exists).mockReturnValue(true)
|
||||
const options = { template: 'test-template', path: './' }
|
||||
const result = template_path(options)
|
||||
expect(result).toBe('test-template')
|
||||
expect(exists).toHaveBeenCalledWith('test-template')
|
||||
})
|
||||
|
||||
it('should check project path if direct path does not exist', () => {
|
||||
vi.mocked(exists).mockReturnValueOnce(false).mockReturnValueOnce(true)
|
||||
const options = { template: 'test-template', path: './project' }
|
||||
const result = template_path(options)
|
||||
expect(result).toBe('./project/test-template')
|
||||
})
|
||||
|
||||
it('should use template root if template not found in direct or project paths', () => {
|
||||
vi.mocked(exists).mockReturnValue(false)
|
||||
const options = {
|
||||
template: 'test-template',
|
||||
path: './project',
|
||||
templateRoot: '/templates'
|
||||
}
|
||||
const result = template_path(options)
|
||||
expect(result).toBe('/templates/ai-template-test-template')
|
||||
expect(logger.warn).toHaveBeenCalledWith('Template root /templates does not exist.')
|
||||
})
|
||||
|
||||
it('should use default template root if not provided', () => {
|
||||
vi.mocked(exists).mockReturnValue(false)
|
||||
const options = { template: 'test-template', path: './project' }
|
||||
const result = template_path(options)
|
||||
expect(result).toBe('${POLYMECH-ROOT}/ai-template-test-template')
|
||||
})
|
||||
})
|
||||
|
||||
describe('load', () => {
|
||||
it('should handle non-existent target directory', () => {
|
||||
vi.mocked(exists).mockReturnValue(false)
|
||||
const options = { path: './nonexistent' }
|
||||
const result = load(options)
|
||||
expect(result).toEqual({
|
||||
include: [
|
||||
"!node_modules/**/*",
|
||||
"!dist/**/*",
|
||||
"!build/**/*",
|
||||
"!coverage/**/*",
|
||||
"!*.log",
|
||||
"!.kbot",
|
||||
"!.git",
|
||||
"*"
|
||||
],
|
||||
messages: [],
|
||||
tools: ['fs', 'git', 'interact', 'terminal', 'search']
|
||||
})
|
||||
expect(logger.error).toHaveBeenCalledWith(
|
||||
'Target directory ./nonexistent does not exist.'
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
@ -1,8 +1,7 @@
|
||||
import { OpenAI } from 'openai';
|
||||
import { logger } from './index';
|
||||
import { loadConfig } from './config';
|
||||
import { IKBotOptions } from './zod_types';
|
||||
|
||||
import { OpenAI } from 'openai'
|
||||
import { logger } from './index.js'
|
||||
import { loadConfig } from './config.js'
|
||||
import { IKBotOptions } from './zod_types.js'
|
||||
/**
|
||||
* gemini : https://ai.google.dev/gemini-api/docs/openai
|
||||
*/
|
||||
@ -24,7 +23,7 @@ const ROUTER_BASE_URLS: Record<RouterType, string> = {
|
||||
fireworks: 'https://api.fireworks.ai/v1', // Fireworks API endpoint
|
||||
gemini: 'https://generativelanguage.googleapis.com/v1beta', // Gemini API base URL
|
||||
xai: 'https://api.x.ai/v1', // XAI (Grok) API base URL
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Default models for different routers
|
||||
@ -38,7 +37,7 @@ const DEFAULT_MODELS: Record<RouterType, string> = {
|
||||
fireworks: 'llama-v2-70b-chat', // Default Fireworks model
|
||||
gemini: 'gemini-1.5-pro', // Default Gemini model
|
||||
xai: 'grok-1' // Default XAI (Grok) model
|
||||
};
|
||||
}
|
||||
/*
|
||||
* Creates an OpenAI client instance based on the provided options.
|
||||
* @param options - Configuration options for the client
|
||||
@ -54,7 +53,6 @@ export const createClient = (options: IKBotOptions) => {
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// Determine router to use (defaults to 'openrouter')
|
||||
const router: RouterType = (options.router ?? 'openrouter') as RouterType;
|
||||
|
||||
@ -112,5 +110,5 @@ export const createClient = (options: IKBotOptions) => {
|
||||
return new OpenAI({
|
||||
apiKey,
|
||||
baseURL,
|
||||
});
|
||||
};
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import * as path from 'path'
|
||||
import * as fs from 'fs'
|
||||
import { BaseHandler } from './base-handler';
|
||||
import { logger } from '../../index'
|
||||
import { createClient } from '../../client';
|
||||
import * as path from 'node:path'
|
||||
import * as fs from 'node:fs'
|
||||
import { BaseHandler } from './base-handler.js';
|
||||
import { logger } from '../../index.js'
|
||||
import { createClient } from '../../client.js';
|
||||
import { toFile } from "openai"
|
||||
import { IKBotOptions } from '../../zod_types';
|
||||
import { IKBotOptions } from '../../zod_types.js';
|
||||
/**
|
||||
* Hex bytes for the "ID3" tag (ID3v2 header).
|
||||
* Typically found at the beginning of an MP3 file that contains ID3 metadata.
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import { BaseHandler } from './base-handler'
|
||||
import * as path from 'path'
|
||||
import { BaseHandler } from './base-handler.js'
|
||||
import * as path from 'node:path'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { createClient } from '../../client'
|
||||
import { logger } from '../../index'
|
||||
import { createClient } from '../../client.js'
|
||||
import { logger } from '../../index.js'
|
||||
import { toFile } from 'openai'
|
||||
import { IKBotOptions } from '../../zod_types'
|
||||
import { IKBotOptions } from '../../zod_types.js'
|
||||
|
||||
// Common image file signatures/magic numbers
|
||||
const IMAGE_SIGNATURES = {
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
import { IHandler } from './base-handler'
|
||||
import { TextHandler } from './text-handler'
|
||||
import { AudioHandler } from './audio-handler'
|
||||
import { ImageHandler } from './image-handler'
|
||||
import * as path from 'node:path'
|
||||
import { IHandler } from './base-handler.js'
|
||||
import { TextHandler } from './text-handler.js'
|
||||
import { AudioHandler } from './audio-handler.js'
|
||||
import { ImageHandler } from './image-handler.js'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import * as path from 'path'
|
||||
import { IKBotOptions } from '../../zod_types'
|
||||
|
||||
import { IKBotOptions } from '../../zod_types.js'
|
||||
|
||||
export function createHandlers(options: IKBotOptions): IHandler[] {
|
||||
return [
|
||||
@ -13,7 +14,6 @@ export function createHandlers(options: IKBotOptions): IHandler[] {
|
||||
new TextHandler(),
|
||||
]
|
||||
}
|
||||
|
||||
export async function detectAndHandle(content: Buffer | string, options: IKBotOptions): Promise<string> {
|
||||
const handlers = createHandlers(options)
|
||||
// Check if content is a file path
|
||||
@ -33,6 +33,5 @@ export async function detectAndHandle(content: Buffer | string, options: IKBotOp
|
||||
return handler.handle(content, false);
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error('No suitable handler found for the input content');
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
import { BaseHandler } from './base-handler';
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import * as path from 'path';
|
||||
import { BaseHandler } from './base-handler.js'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import * as path from 'node:path'
|
||||
|
||||
export class TextHandler extends BaseHandler {
|
||||
async canHandle(content: Buffer | string, isPath: boolean): Promise<boolean> {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { Logger } from 'tslog'
|
||||
import { sync as dir } from '@polymech/fs/dir'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { Logger } from 'tslog'
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import * as path from 'path'
|
||||
import * as fs from 'fs'
|
||||
import * as path from 'node:path'
|
||||
import * as fs from 'node:fs'
|
||||
|
||||
import OpenAI from 'openai'
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@ import { IKBotTask } from '../types'
|
||||
import OpenAI from 'openai'
|
||||
import { marked } from 'marked'
|
||||
import { markedTerminal } from 'marked-terminal'
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { sync as write } from '@polymech/fs/write'
|
||||
import { resolve } from '@polymech/commons'
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { globSync } from 'glob'
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { forward_slash } from '@polymech/commons'
|
||||
import { logger } from '../'
|
||||
import { IKBotTask } from '@polymech/ai-tools'
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { hasMagic } from 'glob'
|
||||
import { sync as dir } from '@polymech/fs/dir'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
|
||||
@ -1,11 +1,9 @@
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { CONFIG_DEFAULT, resolve } from '@polymech/commons'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
|
||||
import { IKBotOptions } from './zod_types.js'
|
||||
|
||||
import { logger } from './index'
|
||||
import { logger } from './index.js'
|
||||
import { env_vars } from './utils/env.js'
|
||||
|
||||
export const loadConfig = (options: IKBotOptions) => {
|
||||
|
||||
@ -1,36 +1,35 @@
|
||||
import path from 'path'
|
||||
|
||||
import { Logger } from 'tslog'
|
||||
import { createLogger } from '@polymech/log'
|
||||
import { get_var } from '@polymech/commons'
|
||||
import { MODULE_NAME } from './constants.js'
|
||||
|
||||
export const logger: any = createLogger('llm-tools')
|
||||
|
||||
export { run } from './commands/run.js'
|
||||
//export { run } from './commands/run.js'
|
||||
const isWindows = process.platform === 'win32'
|
||||
export const module_root = () => path.resolve(path.join(get_var( isWindows ? 'HOMEPATH' : 'HOME'), `.${MODULE_NAME}`))
|
||||
|
||||
export const module_root = () => path.resolve(path.join(get_var(isWindows ? 'HOMEPATH' : 'HOME'), `.${MODULE_NAME}`))
|
||||
|
||||
export const assistant_supported: Record<string, string> = {
|
||||
".c": "text/x-c",
|
||||
".cpp": "text/x-c++",
|
||||
".cs": "text/x-csharp",
|
||||
".css": "text/css",
|
||||
".doc": "application/msword",
|
||||
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||||
".go": "text/x-golang",
|
||||
".html": "text/html",
|
||||
".java": "text/x-java",
|
||||
".js": "text/javascript",
|
||||
".json": "application/json",
|
||||
".md": "text/markdown",
|
||||
".pdf": "application/pdf",
|
||||
".php": "text/x-php",
|
||||
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
||||
".py": "text/x-python", // sometimes text/x-script.python
|
||||
".rb": "text/x-ruby",
|
||||
".sh": "application/x-sh",
|
||||
".tex": "text/x-tex",
|
||||
".ts": "application/typescript",
|
||||
".txt": "text/plain"
|
||||
};
|
||||
".c": "text/x-c",
|
||||
".cpp": "text/x-c++",
|
||||
".cs": "text/x-csharp",
|
||||
".css": "text/css",
|
||||
".doc": "application/msword",
|
||||
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||||
".go": "text/x-golang",
|
||||
".html": "text/html",
|
||||
".java": "text/x-java",
|
||||
".js": "text/javascript",
|
||||
".json": "application/json",
|
||||
".md": "text/markdown",
|
||||
".pdf": "application/pdf",
|
||||
".php": "text/x-php",
|
||||
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
||||
".py": "text/x-python",
|
||||
".rb": "text/x-ruby",
|
||||
".sh": "application/x-sh",
|
||||
".tex": "text/x-tex",
|
||||
".ts": "application/typescript",
|
||||
".txt": "text/plain"
|
||||
};
|
||||
@ -1,4 +1,4 @@
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
|
||||
import { ChatCompletionUserMessageParam } from 'openai/resources/index.mjs'
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import chalk from 'chalk'
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
|
||||
@ -10,8 +10,8 @@ import { CACHE_PATH as OPENAI_CACHE_PATH, CachedModels as OpenAICachedModels, li
|
||||
import { fetchOpenAIModels } from '../models/openai.js'
|
||||
import { CONFIG_DEFAULT } from '@polymech/commons'
|
||||
|
||||
import { models as OpenAIModels } from './cache/openai'
|
||||
import { models as OpenRouterModels } from './cache/openrouter'
|
||||
import { models as OpenAIModels } from './cache/openai.js'
|
||||
import { models as OpenRouterModels } from './cache/openrouter.js'
|
||||
|
||||
export const models_dist = () => {
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { OpenAI } from 'openai'
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { sync as write } from '@polymech/fs/write'
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import axios from 'axios'
|
||||
import * as path from 'path';
|
||||
import * as path from 'node:path';
|
||||
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import { IKBotTask } from "./types"
|
||||
import * as path from 'node:path'
|
||||
import { IKBotTask } from "./types.js"
|
||||
import { isFile, resolve } from '@polymech/commons'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import * as path from 'node:path'
|
||||
|
||||
import { IProfile, parseProfile } from '@polymech/commons/profile'
|
||||
import { IProfile, parse } from '@polymech/commons'
|
||||
|
||||
import { env_vars } from './utils/env.js'
|
||||
|
||||
@ -21,6 +21,6 @@ export const load = async (options: IKBotTask): Promise<Record<string, string>>
|
||||
if(!profilePath || !exists(profilePath) || !isFile(profilePath)){
|
||||
return profile.variables
|
||||
}
|
||||
profile = parseProfile(profilePath, profile, { env: options.env || 'default' }) || profile
|
||||
profile = parse(profilePath, profile, { env: options.env || 'default' }) || profile
|
||||
return profile.variables
|
||||
}
|
||||
@ -4,7 +4,7 @@ import { ChatCompletionMessageParam } from 'openai/resources/index.mjs'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { resolve } from '@polymech/commons'
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
|
||||
import { resolveQuery } from './utils/input.js'
|
||||
import { env_vars } from './utils/env.js'
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
import * as path from 'path'
|
||||
import * as fs from 'fs'
|
||||
import * as path from 'node:path'
|
||||
import * as fs from 'node:fs'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { sync as dir } from '@polymech/fs/dir'
|
||||
|
||||
import { createItem as toNode } from '@polymech/fs/inspect'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { isFile, forward_slash } from '@polymech/commons'
|
||||
import { logger } from './index'
|
||||
import { logger } from './index.js'
|
||||
import { lookup } from 'mime-types'
|
||||
import { globSync } from 'glob'
|
||||
import { EXCLUDE_GLOB, MAX_FILE_SIZE } from './constants'
|
||||
import { defaultMimeRegistry, IHandlerResult } from './mime-handlers'
|
||||
import { EXCLUDE_GLOB, MAX_FILE_SIZE } from './constants.js'
|
||||
import { defaultMimeRegistry, IHandlerResult } from './mime-handlers.js'
|
||||
import { ChatCompletionContentPartImage } from 'openai/resources/index.mjs'
|
||||
export const default_filters = {
|
||||
isFile,
|
||||
|
||||
@ -9,7 +9,7 @@ import { logger } from './index.js'
|
||||
import { IKBotOptions } from './zod_types.js'
|
||||
import { RunnableToolFunctionWithParse } from "openai/lib/RunnableFunction"
|
||||
|
||||
import { after, before } from './utils/aspects_simple.js'
|
||||
import { after, before } from '@polymech/core/aspects_simple'
|
||||
import { IKBotTask } from "./types.js"
|
||||
|
||||
export type TMessageParam = ChatCompletionMessageParam & { type?: string }
|
||||
|
||||
@ -3,7 +3,7 @@ import { resolveQuery, readStdin } from '../input'
|
||||
import { detectAndHandle } from '../../commands/handlers'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
|
||||
vi.mock('@polymech/fs/exists')
|
||||
vi.mock('@polymech/fs/read')
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest'
|
||||
import { dumpAsScript } from '../script'
|
||||
import { sync as write } from '@polymech/fs/write'
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
|
||||
vi.mock('@polymech/fs/write')
|
||||
vi.mock('path', async () => {
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { resolve, isFile } from '@polymech/commons'
|
||||
|
||||
import { detectAndHandle } from '../commands/handlers'
|
||||
import { detectAndHandle } from '../commands/handlers/index.js'
|
||||
import { logger } from '../index.js'
|
||||
import { IKBotOptions } from '../zod_types.js'
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import * as path from 'path'
|
||||
import * as path from 'node:path'
|
||||
import { sync as write } from '@polymech/fs/write'
|
||||
import { resolve } from '@polymech/commons'
|
||||
import { IKBotOptions } from '../zod_types.js'
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user