mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-22 01:02:16 +00:00
WIP: Rename model-config.ts to models-json.ts
- loadCustomModels now takes file path instead of agentDir
This commit is contained in:
parent
0ae23f19fe
commit
1c31d91c83
10 changed files with 18 additions and 19 deletions
|
|
@ -3,7 +3,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Api, Model } from "@mariozechner/pi-ai";
|
import type { Api, Model } from "@mariozechner/pi-ai";
|
||||||
import { getAvailableModels } from "../core/model-config.js";
|
import { getAvailableModels } from "../core/models-json.js";
|
||||||
import type { SettingsManager } from "../core/settings-manager.js";
|
import type { SettingsManager } from "../core/settings-manager.js";
|
||||||
import { fuzzyFilter } from "../utils/fuzzy.js";
|
import { fuzzyFilter } from "../utils/fuzzy.js";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ import type { LoadedCustomTool, SessionEvent as ToolSessionEvent } from "./custo
|
||||||
import { exportSessionToHtml } from "./export-html.js";
|
import { exportSessionToHtml } from "./export-html.js";
|
||||||
import type { HookRunner, SessionEventResult, TurnEndEvent, TurnStartEvent } from "./hooks/index.js";
|
import type { HookRunner, SessionEventResult, TurnEndEvent, TurnStartEvent } from "./hooks/index.js";
|
||||||
import type { BashExecutionMessage } from "./messages.js";
|
import type { BashExecutionMessage } from "./messages.js";
|
||||||
import { getApiKeyForModel, getAvailableModels } from "./model-config.js";
|
import { getApiKeyForModel, getAvailableModels } from "./models-json.js";
|
||||||
import type { CompactionEntry, SessionManager } from "./session-manager.js";
|
import type { CompactionEntry, SessionManager } from "./session-manager.js";
|
||||||
import type { SettingsManager, SkillsSettings } from "./settings-manager.js";
|
import type { SettingsManager, SkillsSettings } from "./settings-manager.js";
|
||||||
import { expandSlashCommand, type FileSlashCommand } from "./slash-commands.js";
|
import { expandSlashCommand, type FileSlashCommand } from "./slash-commands.js";
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import type { ThinkingLevel } from "@mariozechner/pi-agent-core";
|
||||||
import type { Api, KnownProvider, Model } from "@mariozechner/pi-ai";
|
import type { Api, KnownProvider, Model } from "@mariozechner/pi-ai";
|
||||||
import chalk from "chalk";
|
import chalk from "chalk";
|
||||||
import { isValidThinkingLevel } from "../cli/args.js";
|
import { isValidThinkingLevel } from "../cli/args.js";
|
||||||
import { findModel, getApiKeyForModel, getAvailableModels } from "./model-config.js";
|
import { findModel, getApiKeyForModel, getAvailableModels } from "./models-json.js";
|
||||||
import type { SettingsManager } from "./settings-manager.js";
|
import type { SettingsManager } from "./settings-manager.js";
|
||||||
|
|
||||||
/** Default model IDs for each known provider */
|
/** Default model IDs for each known provider */
|
||||||
|
|
|
||||||
|
|
@ -95,17 +95,16 @@ export function resolveApiKey(keyConfig: string): string | undefined {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load custom models from models.json in agent config dir
|
* Load custom models from a models.json file
|
||||||
* Returns { models, error } - either models array or error message
|
* Returns { models, error } - either models array or error message
|
||||||
*/
|
*/
|
||||||
function loadCustomModels(agentDir: string = getAgentDir()): { models: Model<Api>[]; error: string | null } {
|
function loadCustomModels(modelsJsonPath: string): { models: Model<Api>[]; error: string | null } {
|
||||||
const configPath = join(agentDir, "models.json");
|
if (!existsSync(modelsJsonPath)) {
|
||||||
if (!existsSync(configPath)) {
|
|
||||||
return { models: [], error: null };
|
return { models: [], error: null };
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const content = readFileSync(configPath, "utf-8");
|
const content = readFileSync(modelsJsonPath, "utf-8");
|
||||||
const config: ModelsConfig = JSON.parse(content);
|
const config: ModelsConfig = JSON.parse(content);
|
||||||
|
|
||||||
// Validate schema
|
// Validate schema
|
||||||
|
|
@ -117,7 +116,7 @@ function loadCustomModels(agentDir: string = getAgentDir()): { models: Model<Api
|
||||||
"Unknown schema error";
|
"Unknown schema error";
|
||||||
return {
|
return {
|
||||||
models: [],
|
models: [],
|
||||||
error: `Invalid models.json schema:\n${errors}\n\nFile: ${configPath}`,
|
error: `Invalid models.json schema:\n${errors}\n\nFile: ${modelsJsonPath}`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -127,7 +126,7 @@ function loadCustomModels(agentDir: string = getAgentDir()): { models: Model<Api
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return {
|
return {
|
||||||
models: [],
|
models: [],
|
||||||
error: `Invalid models.json: ${error instanceof Error ? error.message : error}\n\nFile: ${configPath}`,
|
error: `Invalid models.json: ${error instanceof Error ? error.message : error}\n\nFile: ${modelsJsonPath}`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -137,12 +136,12 @@ function loadCustomModels(agentDir: string = getAgentDir()): { models: Model<Api
|
||||||
if (error instanceof SyntaxError) {
|
if (error instanceof SyntaxError) {
|
||||||
return {
|
return {
|
||||||
models: [],
|
models: [],
|
||||||
error: `Failed to parse models.json: ${error.message}\n\nFile: ${configPath}`,
|
error: `Failed to parse models.json: ${error.message}\n\nFile: ${modelsJsonPath}`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
models: [],
|
models: [],
|
||||||
error: `Failed to load models.json: ${error instanceof Error ? error.message : error}\n\nFile: ${configPath}`,
|
error: `Failed to load models.json: ${error instanceof Error ? error.message : error}\n\nFile: ${modelsJsonPath}`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -244,7 +243,7 @@ export function loadAndMergeModels(agentDir: string = getAgentDir()): { models:
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load custom models
|
// Load custom models
|
||||||
const { models: customModels, error } = loadCustomModels(agentDir);
|
const { models: customModels, error } = loadCustomModels(join(agentDir, "models.json"));
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
return { models: [], error };
|
return { models: [], error };
|
||||||
|
|
@ -45,7 +45,7 @@ import {
|
||||||
getApiKeyForModel,
|
getApiKeyForModel,
|
||||||
getAvailableModels,
|
getAvailableModels,
|
||||||
loadAndMergeModels,
|
loadAndMergeModels,
|
||||||
} from "./model-config.js";
|
} from "./models-json.js";
|
||||||
import { SessionManager } from "./session-manager.js";
|
import { SessionManager } from "./session-manager.js";
|
||||||
import { type Settings, SettingsManager, type SkillsSettings } from "./settings-manager.js";
|
import { type Settings, SettingsManager, type SkillsSettings } from "./settings-manager.js";
|
||||||
import { loadSkills as loadSkillsInternal, type Skill } from "./skills.js";
|
import { loadSkills as loadSkillsInternal, type Skill } from "./skills.js";
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ export {
|
||||||
} from "./core/hooks/index.js";
|
} from "./core/hooks/index.js";
|
||||||
export { messageTransformer } from "./core/messages.js";
|
export { messageTransformer } from "./core/messages.js";
|
||||||
// Model configuration and OAuth
|
// Model configuration and OAuth
|
||||||
export { findModel, getApiKeyForModel, getAvailableModels } from "./core/model-config.js";
|
export { findModel, getApiKeyForModel, getAvailableModels } from "./core/models-json.js";
|
||||||
export {
|
export {
|
||||||
getOAuthProviders,
|
getOAuthProviders,
|
||||||
login,
|
login,
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,8 @@ import type { AgentSession } from "./core/agent-session.js";
|
||||||
import type { LoadedCustomTool } from "./core/custom-tools/index.js";
|
import type { LoadedCustomTool } from "./core/custom-tools/index.js";
|
||||||
import { exportFromFile } from "./core/export-html.js";
|
import { exportFromFile } from "./core/export-html.js";
|
||||||
import type { HookUIContext } from "./core/index.js";
|
import type { HookUIContext } from "./core/index.js";
|
||||||
import { findModel } from "./core/model-config.js";
|
|
||||||
import { resolveModelScope, type ScopedModel } from "./core/model-resolver.js";
|
import { resolveModelScope, type ScopedModel } from "./core/model-resolver.js";
|
||||||
|
import { findModel } from "./core/models-json.js";
|
||||||
import { type CreateAgentSessionOptions, configureOAuthStorage, createAgentSession } from "./core/sdk.js";
|
import { type CreateAgentSessionOptions, configureOAuthStorage, createAgentSession } from "./core/sdk.js";
|
||||||
import { SessionManager } from "./core/session-manager.js";
|
import { SessionManager } from "./core/session-manager.js";
|
||||||
import { SettingsManager } from "./core/settings-manager.js";
|
import { SettingsManager } from "./core/settings-manager.js";
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import type { AssistantMessage } from "@mariozechner/pi-ai";
|
||||||
import { type Component, visibleWidth } from "@mariozechner/pi-tui";
|
import { type Component, visibleWidth } from "@mariozechner/pi-tui";
|
||||||
import { existsSync, type FSWatcher, readFileSync, watch } from "fs";
|
import { existsSync, type FSWatcher, readFileSync, watch } from "fs";
|
||||||
import { dirname, join } from "path";
|
import { dirname, join } from "path";
|
||||||
import { isModelUsingOAuth } from "../../../core/model-config.js";
|
import { isModelUsingOAuth } from "../../../core/models-json.js";
|
||||||
import { theme } from "../theme/theme.js";
|
import { theme } from "../theme/theme.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import {
|
||||||
Text,
|
Text,
|
||||||
type TUI,
|
type TUI,
|
||||||
} from "@mariozechner/pi-tui";
|
} from "@mariozechner/pi-tui";
|
||||||
import { getAvailableModels } from "../../../core/model-config.js";
|
import { getAvailableModels } from "../../../core/models-json.js";
|
||||||
import type { SettingsManager } from "../../../core/settings-manager.js";
|
import type { SettingsManager } from "../../../core/settings-manager.js";
|
||||||
import { fuzzyFilter } from "../../../utils/fuzzy.js";
|
import { fuzzyFilter } from "../../../utils/fuzzy.js";
|
||||||
import { theme } from "../theme/theme.js";
|
import { theme } from "../theme/theme.js";
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ import type { AgentSession, AgentSessionEvent } from "../../core/agent-session.j
|
||||||
import type { LoadedCustomTool, SessionEvent as ToolSessionEvent } from "../../core/custom-tools/index.js";
|
import type { LoadedCustomTool, SessionEvent as ToolSessionEvent } from "../../core/custom-tools/index.js";
|
||||||
import type { HookUIContext } from "../../core/hooks/index.js";
|
import type { HookUIContext } from "../../core/hooks/index.js";
|
||||||
import { isBashExecutionMessage } from "../../core/messages.js";
|
import { isBashExecutionMessage } from "../../core/messages.js";
|
||||||
import { invalidateOAuthCache } from "../../core/model-config.js";
|
import { invalidateOAuthCache } from "../../core/models-json.js";
|
||||||
import { listOAuthProviders, login, logout, type OAuthProvider } from "../../core/oauth/index.js";
|
import { listOAuthProviders, login, logout, type OAuthProvider } from "../../core/oauth/index.js";
|
||||||
import {
|
import {
|
||||||
getLatestCompactionEntry,
|
getLatestCompactionEntry,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue