@@ -60,13 +60,19 @@ func makeAgent(p iteragent.Provider, repoPath string, thinking iteragent.Thinkin
6060 tools := wrapToolsWithPermissions (base )
6161 skills , _ := iteragent .LoadSkills ([]string {filepath .Join (repoPath , "skills" )})
6262 defaultTemp := float32 (0.9 )
63+ ctxCfg := iteragent .DefaultContextConfig ()
64+ if cw := iteragent .ProviderContextWindow (p ); cw > 0 {
65+ // Use 80% of the provider's actual context window as the compaction threshold.
66+ ctxCfg .MaxTokens = cw * 8 / 10
67+ }
6368 ag := iteragent .New (p , tools , logger ).
6469 WithSystemPrompt (replSystemPrompt (repoPath )).
6570 WithSkillSet (skills ).
6671 WithThinkingLevel (thinking ).
6772 WithToolExecutionStrategy (iteragent .NewParallelStrategy ()).
6873 WithHooks (replHooks ()).
69- WithTemperature (defaultTemp )
74+ WithTemperature (defaultTemp ).
75+ WithContextConfig (ctxCfg )
7076 if rtConfig .Temperature != nil {
7177 ag = ag .WithTemperature (* rtConfig .Temperature )
7278 }
@@ -140,6 +146,7 @@ func setupSigintHandler() {
140146func applyLoadedConfig (loadedCfg iterConfig , thinking iteragent.ThinkingLevel ) iteragent.ThinkingLevel {
141147 cfg .SafeMode = loadedCfg .SafeMode
142148 cfg .NotifyEnabled = loadedCfg .Notify
149+ cfg .RequestTimeout = loadedCfg .RequestTimeout
143150 if loadedCfg .Theme != "" {
144151 if t , ok := themes [loadedCfg .Theme ]; ok {
145152 applyTheme (t )
@@ -276,6 +283,7 @@ func handleModelProviderSwitch(line string, p *iteragent.Provider, thinking *ite
276283 closeProvider (* p )
277284 * p = newP
278285 os .Setenv ("ITERATE_PROVIDER" , providerName )
286+ selector .ContextWindow = iteragent .ProviderContextWindow (newP )
279287 _ = (* a ).Close () // best-effort cleanup
280288 * a = makeAgent (* p , repoPath , * thinking , logger )
281289 fmt .Printf ("%s✓ switched to %s%s\n \n " , colorLime , (* p ).Name (), colorReset )
@@ -293,13 +301,20 @@ func printSessionSummary(a *iteragent.Agent, repoPath string) {
293301 _ = saveSession ("autosave" , a .Messages ) // best-effort cleanup
294302 }
295303 fmt .Println ()
296- fmt .Printf ("%s session:%s %s%s%s %s·%s %s%d messages%s %s·%s %s%d tokens%s\n " ,
304+ costStr := ""
305+ if sess .CostUSD > 0 {
306+ costStr = fmt .Sprintf (" %s·%s %s%s%s" ,
307+ colorDim , colorReset ,
308+ colorLime , formatSessionCost (sess .CostUSD ), colorReset )
309+ }
310+ fmt .Printf ("%s session:%s %s%s%s %s·%s %s%d messages%s %s·%s %s%d tokens%s%s\n " ,
297311 colorDim , colorReset ,
298312 colorCyan , elapsed , colorReset ,
299313 colorDim , colorReset ,
300314 colorDim , sess .Messages , colorReset ,
301315 colorDim , colorReset ,
302- colorPurple , sess .InputTokens + sess .OutputTokens , colorReset )
316+ colorPurple , sess .InputTokens + sess .OutputTokens , colorReset ,
317+ costStr )
303318 if len (a .Messages ) > 0 {
304319 fmt .Printf ("%s autosaved · /load autosave to restore%s\n " , colorDim , colorReset )
305320 }
0 commit comments