39 lines
1.7 KiB
Go
39 lines
1.7 KiB
Go
// This file defines LiveConfig, the mutable run configuration a control command
|
|
// may change mid-session. It was moved verbatim from cmd/pigo (the former
|
|
// liveRunConfig) and exported so the run, repl, btw, status and goal
|
|
// subpackages can read and mutate it through the Host contract. The run closure
|
|
// reads it on every prompt, so a /model switch takes effect on the next turn.
|
|
// It carries no lock: it is read and written only on the REPL's single main
|
|
// goroutine (slash actions and the run are both invoked synchronously from the
|
|
// REPL loop, never concurrently).
|
|
package cli
|
|
|
|
import (
|
|
"github.com/smallnest/pigo/internal/agentcore"
|
|
"github.com/smallnest/pigo/internal/provider"
|
|
)
|
|
|
|
// LiveConfig is the mutable run configuration a control command may change
|
|
// mid-session.
|
|
type LiveConfig struct {
|
|
Model string
|
|
ProviderName string
|
|
Provider provider.Provider
|
|
BaseURL string
|
|
Protocol string
|
|
// ThinkingLevel is the reasoning-effort level applied to each turn. It is
|
|
// seeded from the resolved config chain and read on every prompt.
|
|
ThinkingLevel agentcore.ThinkingLevel
|
|
// ContextWindow is the model's total context-token budget, used to gate
|
|
// automatic compaction. When 0 the window is unknown and auto-compaction is
|
|
// disabled; the REPL seeds it with a conservative default so long sessions
|
|
// still compact rather than overflow.
|
|
ContextWindow int
|
|
}
|
|
|
|
// DefaultContextWindow is the fallback context-token budget used when a model's
|
|
// true window is unknown. It is deliberately large so auto-compaction only fires
|
|
// on genuinely long sessions (threshold = window - ReserveTokens), never on
|
|
// ordinary short exchanges.
|
|
const DefaultContextWindow = 128000
|