feat(models): adopt the typed Pi 1.0.2 catalog
This commit is contained in:
1 parent
ad2bf28790
commit
c46344a7c0
7 files changed
+56
-7
No files matched your search
+1
-1
Submodule AgentKit updated: e21235d864...d6f4692de8.
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"models": [
|
||||
{
|
||||
"type": "chat",
|
||||
"provider": "openai",
|
||||
"id": "codex-auto-review",
|
||||
"name": "Codex Auto-review",
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"source":"https://github.com/badlogic/pi-mono/tree/d981de1229ef899957bbe968bc8dcda02a21f477/packages/ai","package":"@earendil-works/pi-ai","version":"0.85.1","commit":"d981de1229ef899957bbe968bc8dcda02a21f477","integrity":"sha512-+VgVIJDkDO2efYJKEEqvPTH4zmnIaXdAppGbO+vKFA9qy5PdhFiAenuFAkU+oiCSfOC4dMHDyrjdQeL4ZoC5CQ==","models":[{"provider":"amazon-bedrock","id":"amazon.nova-2-lite-v1:0","name":"Nova 2 Lite","reasoning":true,"input":["text","image"],"contextWindow":128000,"maxOutputTokens":4096,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","id":"amazon.nova-lite-v1:0","name":"Nova Lite","reasoning":false,"input":["text","image"],"contextWindow":300000,"maxOutputTokens":8192,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","id":"amazon.nova-micro-v1:0","name":"Nova Micro","reasoning":false,"input":["text"],"contextWindow":128000,"maxOutputTokens":8192,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","id":"amazon.nova-pro-v1:0","name":"Nova Pro","reasoning":false,"input":["text","image"],"contextWindow":300000,"maxOutputTokens":8192,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","id":"anthropic.claude-fable-5","name":"Claude Fable 5","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":["off"],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","id":"anthropic.claude-fable-5-1","name":"Claude Fable 5.1","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":["off"],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","id":"anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5","reasoning":true,"input":["text","image"],"contextWindow":200000,"maxOutputTokens":64000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","id":"anthropic.claude-opus-4-1-20250805-v1:0","name":"Claude Opus 4.1","reasoning":true,"input":["text","image"],"contextWindow":200000,"maxOutputTokens":32000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","id":"anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5","reasoning":true,"input":["text","image"],"contextWindow":200000,"maxOutputTokens":64000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","id":"anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"max":"max"}},{"provider":"amazon-bedrock","id":"anthropic.claude-opus-4-7","name":"Claude Opus 4.7","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","id":"anthropic.claude-opus-4-8","name":"Claude Opus 4.8","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","id":"anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5","reasoning":true,"input":["text","image"],"contextWindow":200000,"maxOutputTokens":64000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","id":"anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":64000,"unsupportedEfforts":[],"effortWireValues":{"max":"max"}},{"provider":"amazon-bedrock","id":"anthropic.claude-sonnet-5","name":"Claude Sonnet 5","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","id":"au.anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5 (AU)","reasoning":true,"input":["text","image"],"contextWindow":200000,"maxOutputTokens":64000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","id":"au.anthropic.claude-opus-4-6-v1","name":"AU Anthropic Claude Opus 4.6","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"max":"max"}},{"provider":"amazon-bedrock","id":"au.anthropic.claude-opus-4-8","name":"Claude Opus 4.8 (AU)","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","id":"au.anthropic.claude-opus-5","name":"Claude Opus 5 (AU)","reasoning":true,"input":["text","image"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","id":"au.anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude SonneLine truncated
|
||||
{"source":"https://github.com/badlogic/pi-mono/tree/cd32f7725fdbddbaecdff5b1e68491563394e0ca/packages/ai","package":"@earendil-works/pi-ai","version":"1.0.2","commit":"cd32f7725fdbddbaecdff5b1e68491563394e0ca","integrity":"sha512-JP59xGlSAQ/HhQ6EHN5qmneBlWfDyu6FPPryAvAaSo8A38ubAsEpS9YisCM5Jbbns0srrDffLZonE0OXorHI5A==","models":[{"provider":"amazon-bedrock","type":"chat","id":"amazon.nova-2-lite-v1:0","name":"Nova 2 Lite","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":65535,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","type":"chat","id":"amazon.nova-lite-v1:0","name":"Nova Lite","reasoning":false,"input":["text","image"],"output":["text"],"contextWindow":300000,"maxOutputTokens":10000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","type":"chat","id":"amazon.nova-micro-v1:0","name":"Nova Micro","reasoning":false,"input":["text"],"output":["text"],"contextWindow":128000,"maxOutputTokens":10000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","type":"chat","id":"amazon.nova-pro-v1:0","name":"Nova Pro","reasoning":false,"input":["text","image"],"output":["text"],"contextWindow":300000,"maxOutputTokens":10000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-fable-5","name":"Claude Fable 5","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":["off"],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-fable-5-1","name":"Claude Fable 5.1","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":["off"],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-haiku-4-5-20251001-v1:0","name":"Claude Haiku 4.5","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":200000,"maxOutputTokens":64000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-opus-4-1-20250805-v1:0","name":"Claude Opus 4.1","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":200000,"maxOutputTokens":32000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-opus-4-5-20251101-v1:0","name":"Claude Opus 4.5","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":200000,"maxOutputTokens":64000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-opus-4-6-v1","name":"Claude Opus 4.6","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"max":"max"}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-opus-4-7","name":"Claude Opus 4.7","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-opus-4-8","name":"Claude Opus 4.8","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-opus-5-5","name":"Claude Opus 5.5","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-sonnet-4-5-20250929-v1:0","name":"Claude Sonnet 4.5","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":200000,"maxOutputTokens":64000,"unsupportedEfforts":[],"effortWireValues":{}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-sonnet-4-6","name":"Claude Sonnet 4.6","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"max":"max"}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-sonnet-5","name":"Claude Sonnet 5","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","type":"chat","id":"anthropic.claude-sonnet-5-5","name":"Claude Sonnet 5.5","reasoning":true,"input":["text","image"],"output":["text"],"contextWindow":1000000,"maxOutputTokens":128000,"unsupportedEfforts":[],"effortWireValues":{"xhigh":"xhigh","max":"max"}},{"provider":"amazon-bedrock","type":"chat","id":"apac.amazon.nLine truncated
|
||||
@@ -24,6 +24,8 @@ commit=$(npm view "$package" gitHead)
|
||||
integrity=$(npm view "$package" dist.integrity)
|
||||
temporary="$temporary_dir/PiModelCatalog.json"
|
||||
|
||||
# Pi exposes some IDs through multiple APIs. Prefer their chat records because
|
||||
# the assistant selects models by provider and ID, without an API-type suffix.
|
||||
jq -cs \
|
||||
--arg commit "$commit" \
|
||||
--arg version "$version" \
|
||||
@@ -34,7 +36,7 @@ jq -cs \
|
||||
version: $version,
|
||||
commit: $commit,
|
||||
integrity: $integrity,
|
||||
models: [
|
||||
models: ([
|
||||
.[]
|
||||
| to_entries[]
|
||||
| .value
|
||||
@@ -42,10 +44,12 @@ jq -cs \
|
||||
| .value
|
||||
| {
|
||||
provider,
|
||||
type,
|
||||
id,
|
||||
name,
|
||||
reasoning,
|
||||
input,
|
||||
output: (.output // (if .type == "image" then ["image"] else ["text"] end)),
|
||||
contextWindow,
|
||||
maxOutputTokens: .maxTokens,
|
||||
unsupportedEfforts: (
|
||||
@@ -58,7 +62,8 @@ jq -cs \
|
||||
| with_entries(select(.value != null))
|
||||
)
|
||||
}
|
||||
]
|
||||
] | group_by([.provider, .id])
|
||||
| map(min_by(if .type == "chat" then 0 elif .type == "image" then 1 else 2 end)))
|
||||
}' "$data_dir"/*.json > "$temporary"
|
||||
|
||||
mv "$temporary" "$output"
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
import AgentKit
|
||||
import Foundation
|
||||
import Testing
|
||||
|
||||
@Suite
|
||||
struct PiModelCatalogTests {
|
||||
@Test
|
||||
func bundledImageAndClassifierRecordsRemainOutsideAssistantPickers() {
|
||||
var provider = ModelProvider(name: "OpenRouter")
|
||||
provider.baseURL = "https://openrouter.ai/api/v1"
|
||||
let image = ModelCapabilityResolver.resolve(
|
||||
model: AIModel(id: "black-forest-labs/flux-3-image"), provider: provider
|
||||
)
|
||||
let classifier = ModelCapabilityResolver.resolve(
|
||||
model: AIModel(id: "typesafe/jev-1.13"), provider: provider
|
||||
)
|
||||
#expect(image.catalogSource?.provider == "openrouter")
|
||||
#expect(image.model.kind == .imageGeneration)
|
||||
#expect(image.model.output == [.image])
|
||||
#expect(image.model.abilities.isEmpty)
|
||||
#expect(classifier.catalogSource?.provider == "openrouter")
|
||||
#expect(classifier.model.kind == .classifier)
|
||||
#expect(classifier.model.abilities.isEmpty)
|
||||
provider.models = [image.model, classifier.model]
|
||||
#expect(provider.assistantModels.isEmpty)
|
||||
}
|
||||
|
||||
@Test
|
||||
func sharedIDsPreferChatAndOverridesStillHideInternalModels() {
|
||||
var provider = ModelProvider(name: "OpenRouter")
|
||||
provider.baseURL = "https://openrouter.ai/api/v1"
|
||||
let router = ModelCapabilityResolver.resolve(model: AIModel(id: "openrouter/auto"), provider: provider)
|
||||
#expect(router.catalogSource?.provider == "openrouter")
|
||||
#expect(router.model.kind == .chat)
|
||||
#expect(router.model.abilities.contains(.toolCall))
|
||||
|
||||
provider.baseURL = "https://api.openai.com/v1"
|
||||
let review = ModelCapabilityResolver.resolve(model: AIModel(id: "codex-auto-review"), provider: provider)
|
||||
#expect(review.catalogSource?.provider == "openai")
|
||||
#expect(review.model.isShownInAssistant == false)
|
||||
#expect(review.model.abilities.contains(.reasoning))
|
||||
}
|
||||
}
|
||||
@@ -3003,7 +3003,7 @@
|
||||
repositoryURL = "https://github.com/AkinoKaede/AgentKit.git";
|
||||
requirement = {
|
||||
kind = upToNextMajorVersion;
|
||||
minimumVersion = 0.18.1;
|
||||
minimumVersion = 0.19.0;
|
||||
};
|
||||
};
|
||||
/* End XCRemoteSwiftPackageReference section */
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/AkinoKaede/AgentKit.git",
|
||||
"state" : {
|
||||
"revision" : "e21235d8647a780e16a1c2c3b19cc00db5c82cb7",
|
||||
"version" : "0.18.1"
|
||||
"revision" : "d6f4692de8f30d8836b2e83ffcd5ddfcd7f1fdfc",
|
||||
"version" : "0.19.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user