{
lib,
catwalk-provider,
name ? catwalk-provider.id,
api,
}:
assert lib.assertOneOf "api" api ["anthropic-messages" "openai-completions" "openai-responses"];
''
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
export default function (pi: ExtensionAPI) {
pi.registerProvider("${name}", {
baseUrl: "${catwalk-provider.api_endpoint}",
apiKey: "${catwalk-provider.api_key}",
api: "${api}",
models: ${builtins.toJSON (
lib.mapAttrsToList (
_: model: {
inherit (model) id name;
reasoning = model.can_reason;
input = ["text"];
cost = {
input = model.cost_per_1m_in;
output = model.cost_per_1m_out;
cacheRead = model.cost_per_1m_in_cached;
cacheWrite = model.cost_per_1m_out_cached;
};
contextWindow = model.context_window;
maxTokens = model.default_max_tokens;
}
) catwalk-provider.models
)}
});
}
''