Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
71 lines
2.5 KiB
Go
71 lines
2.5 KiB
Go
package storesqlite
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
)
|
|
|
|
func TestUpdateSessionSettingsInvalidatesContextWindowWhenModelChanges(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
store := openTestStore(t, testOptions(&staticProjectPaths{}))
|
|
ctx := context.Background()
|
|
resetAt := int64(1_750_003_600_000)
|
|
if _, err := store.ReportSessionState(ctx, SessionStateReport{
|
|
WorkspaceID: "ws-1", AgentSessionID: "session-1", Provider: "codex",
|
|
Model: "gpt-5.5", Settings: map[string]any{"model": "gpt-5.5"}, OccurredAtUnixMS: 100,
|
|
RuntimeContext: map[string]any{
|
|
"usage": map[string]any{
|
|
"contextWindow": map[string]any{"usedTokens": 33_168, "totalTokens": 200_000},
|
|
"quotas": []any{map[string]any{
|
|
"quotaType": "weekly", "percentRemaining": 75.5, "resetsAtUnixMs": resetAt,
|
|
}},
|
|
},
|
|
},
|
|
}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
updated, ok, err := store.UpdateSessionSettings(ctx, "ws-1", "session-1", "gpt-5.6-sol", map[string]any{"model": "gpt-5.6-sol"})
|
|
if err != nil || !ok {
|
|
t.Fatalf("UpdateSessionSettings() ok=%v error=%v", ok, err)
|
|
}
|
|
if updated.Metadata.Usage == nil {
|
|
t.Fatal("usage=nil, want preserved quota usage")
|
|
}
|
|
if updated.Metadata.Usage.ContextWindow != nil {
|
|
t.Fatalf("contextWindow=%#v, want invalidated after model change", updated.Metadata.Usage.ContextWindow)
|
|
}
|
|
if len(updated.Metadata.Usage.Quotas) != 1 || updated.Metadata.Usage.Quotas[0].QuotaType != "weekly" {
|
|
t.Fatalf("quotas=%#v, want preserved quotas", updated.Metadata.Usage.Quotas)
|
|
}
|
|
}
|
|
|
|
func TestUpdateSessionSettingsPreservesContextWindowWhenModelDoesNotChange(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
store := openTestStore(t, testOptions(&staticProjectPaths{}))
|
|
ctx := context.Background()
|
|
if _, err := store.ReportSessionState(ctx, SessionStateReport{
|
|
WorkspaceID: "ws-1", AgentSessionID: "session-1", Provider: "claude-code",
|
|
Model: "opus", Settings: map[string]any{"model": "opus"}, OccurredAtUnixMS: 100,
|
|
RuntimeContext: map[string]any{
|
|
"usage": map[string]any{
|
|
"contextWindow": map[string]any{"usedTokens": 33_168, "totalTokens": 1_000_000},
|
|
},
|
|
},
|
|
}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
updated, ok, err := store.UpdateSessionSettings(ctx, "ws-1", "session-1", "opus", map[string]any{
|
|
"model": "opus", "permissionModeId": "full-access",
|
|
})
|
|
if err != nil || !ok {
|
|
t.Fatalf("UpdateSessionSettings() ok=%v error=%v", ok, err)
|
|
}
|
|
if updated.Metadata.Usage == nil || updated.Metadata.Usage.ContextWindow == nil || updated.Metadata.Usage.ContextWindow.TotalTokens != 1_000_000 {
|
|
t.Fatalf("usage=%#v, want unchanged context window", updated.Metadata.Usage)
|
|
}
|
|
}
|