mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 21:03:19 +00:00
- Add setEditorText() and getEditorText() to HookUIContext for prompt generator pattern - custom() now accepts async factories for fire-and-forget work - Add CancellableLoader component to tui package - Add BorderedLoader component for hooks with cancel UI - Export HookAPI, HookContext, HookFactory from main package - Update all examples to import from packages instead of relative paths - Update hooks.md and custom-tools.md documentation fixes #350
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
/**
|
|
* Custom Model Selection
|
|
*
|
|
* Shows how to select a specific model and thinking level.
|
|
*/
|
|
|
|
import { getModel } from "@mariozechner/pi-ai";
|
|
import { createAgentSession, discoverAuthStorage, discoverModels } from "@mariozechner/pi-coding-agent";
|
|
|
|
// Set up auth storage and model registry
|
|
const authStorage = discoverAuthStorage();
|
|
const modelRegistry = discoverModels(authStorage);
|
|
|
|
// Option 1: Find a specific built-in model by provider/id
|
|
const opus = getModel("anthropic", "claude-opus-4-5");
|
|
if (opus) {
|
|
console.log(`Found model: ${opus.provider}/${opus.id}`);
|
|
}
|
|
|
|
// Option 2: Find model via registry (includes custom models from models.json)
|
|
const customModel = modelRegistry.find("my-provider", "my-model");
|
|
if (customModel) {
|
|
console.log(`Found custom model: ${customModel.provider}/${customModel.id}`);
|
|
}
|
|
|
|
// Option 3: Pick from available models (have valid API keys)
|
|
const available = await modelRegistry.getAvailable();
|
|
console.log(
|
|
"Available models:",
|
|
available.map((m) => `${m.provider}/${m.id}`),
|
|
);
|
|
|
|
if (available.length > 0) {
|
|
const { session } = await createAgentSession({
|
|
model: available[0],
|
|
thinkingLevel: "medium", // off, low, medium, high
|
|
authStorage,
|
|
modelRegistry,
|
|
});
|
|
|
|
session.subscribe((event) => {
|
|
if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") {
|
|
process.stdout.write(event.assistantMessageEvent.delta);
|
|
}
|
|
});
|
|
|
|
await session.prompt("Say hello in one sentence.");
|
|
console.log();
|
|
}
|