30 lines
998 B
JavaScript
30 lines
998 B
JavaScript
'use strict';
|
|
|
|
function resolveDefaultModel(config) {
|
|
const key = config.default_model_key || '';
|
|
const model = config.model_map && typeof config.model_map.get === 'function'
|
|
? config.model_map.get(key)
|
|
: null;
|
|
const modelKey = model && model.key ? model.key : key;
|
|
const modelId = model && (model.model_id || model.name) ? (model.model_id || model.name) : modelKey;
|
|
const supportsThinking = model ? (model.modes === 'thinking' || model.modes === 'fast+thinking') : false;
|
|
const thinkingMode = supportsThinking && model.modes !== 'fast';
|
|
return { modelKey, modelId, thinkingMode };
|
|
}
|
|
|
|
function createState(config, workspace) {
|
|
const resolved = resolveDefaultModel(config);
|
|
return {
|
|
workspace,
|
|
allowMode: 'full_access',
|
|
modelKey: resolved.modelKey,
|
|
modelId: resolved.modelId,
|
|
thinkingMode: resolved.thinkingMode,
|
|
tokenUsage: { prompt: 0, completion: 0, total: 0 },
|
|
conversation: null,
|
|
messages: [],
|
|
};
|
|
}
|
|
|
|
module.exports = { createState };
|