@@ -65,7 +65,7 @@ import { ensureAuthProfileStore } from "./auth-profiles.js";
6565import { clearSessionAuthProfileOverride } from "./auth-profiles/session-override.js" ;
6666import { resolveBootstrapWarningSignaturesSeen } from "./bootstrap-budget.js" ;
6767import { runCliAgent } from "./cli-runner.js" ;
68- import { getCliSessionId , setCliSessionId } from "./cli-session.js" ;
68+ import { clearCliSession , getCliSessionBinding , setCliSessionBinding } from "./cli-session.js" ;
6969import { deliverAgentCommandResult } from "./command/delivery.js" ;
7070import { resolveAgentRunContext } from "./command/run-context.js" ;
7171import { updateSessionStoreAfterAgentRun } from "./command/session-store.js" ;
@@ -82,7 +82,6 @@ import {
8282 isCliProvider ,
8383 modelKey ,
8484 normalizeModelRef ,
85- normalizeProviderId ,
8685 parseModelRef ,
8786 resolveConfiguredModelRef ,
8887 resolveDefaultModelForAgent ,
@@ -386,8 +385,12 @@ function runAgentAttempt(params: {
386385 ) ;
387386 const bootstrapPromptWarningSignature =
388387 bootstrapPromptWarningSignaturesSeen [ bootstrapPromptWarningSignaturesSeen . length - 1 ] ;
388+ const authProfileId =
389+ params . providerOverride === params . authProfileProvider
390+ ? params . sessionEntry ?. authProfileOverride
391+ : undefined ;
389392 if ( isCliProvider ( params . providerOverride , params . cfg ) ) {
390- const cliSessionId = getCliSessionId ( params . sessionEntry , params . providerOverride ) ;
393+ const cliSessionBinding = getCliSessionBinding ( params . sessionEntry , params . providerOverride ) ;
391394 const runCliWithSession = ( nextCliSessionId : string | undefined ) =>
392395 runCliAgent ( {
393396 sessionId : params . sessionId ,
@@ -404,17 +407,20 @@ function runAgentAttempt(params: {
404407 runId : params . runId ,
405408 extraSystemPrompt : params . opts . extraSystemPrompt ,
406409 cliSessionId : nextCliSessionId ,
410+ cliSessionBinding :
411+ nextCliSessionId === cliSessionBinding ?. sessionId ? cliSessionBinding : undefined ,
412+ authProfileId,
407413 bootstrapPromptWarningSignaturesSeen,
408414 bootstrapPromptWarningSignature,
409415 images : params . isFallbackRetry ? undefined : params . opts . images ,
410416 streamParams : params . opts . streamParams ,
411417 } ) ;
412- return runCliWithSession ( cliSessionId ) . catch ( async ( err ) => {
418+ return runCliWithSession ( cliSessionBinding ?. sessionId ) . catch ( async ( err ) => {
413419 // Handle CLI session expired error
414420 if (
415421 err instanceof FailoverError &&
416422 err . reason === "session_expired" &&
417- cliSessionId &&
423+ cliSessionBinding ?. sessionId &&
418424 params . sessionKey &&
419425 params . sessionStore &&
420426 params . storePath
@@ -427,15 +433,7 @@ function runAgentAttempt(params: {
427433 const entry = params . sessionStore [ params . sessionKey ] ;
428434 if ( entry ) {
429435 const updatedEntry = { ...entry } ;
430- if ( params . providerOverride === "claude-cli" ) {
431- delete updatedEntry . claudeCliSessionId ;
432- }
433- if ( updatedEntry . cliSessionIds ) {
434- const normalizedProvider = normalizeProviderId ( params . providerOverride ) ;
435- const newCliSessionIds = { ...updatedEntry . cliSessionIds } ;
436- delete newCliSessionIds [ normalizedProvider ] ;
437- updatedEntry . cliSessionIds = newCliSessionIds ;
438- }
436+ clearCliSession ( updatedEntry , params . providerOverride ) ;
439437 updatedEntry . updatedAt = Date . now ( ) ;
440438
441439 await persistSessionEntry ( {
@@ -453,18 +451,18 @@ function runAgentAttempt(params: {
453451 return runCliWithSession ( undefined ) . then ( async ( result ) => {
454452 // Update session store with new CLI session ID if available
455453 if (
456- result . meta . agentMeta ?. sessionId &&
454+ result . meta . agentMeta ?. cliSessionBinding ?. sessionId &&
457455 params . sessionKey &&
458456 params . sessionStore &&
459457 params . storePath
460458 ) {
461459 const entry = params . sessionStore [ params . sessionKey ] ;
462460 if ( entry ) {
463461 const updatedEntry = { ...entry } ;
464- setCliSessionId (
462+ setCliSessionBinding (
465463 updatedEntry ,
466464 params . providerOverride ,
467- result . meta . agentMeta . sessionId ,
465+ result . meta . agentMeta . cliSessionBinding ,
468466 ) ;
469467 updatedEntry . updatedAt = Date . now ( ) ;
470468
@@ -483,10 +481,6 @@ function runAgentAttempt(params: {
483481 } ) ;
484482 }
485483
486- const authProfileId =
487- params . providerOverride === params . authProfileProvider
488- ? params . sessionEntry ?. authProfileOverride
489- : undefined ;
490484 return runEmbeddedPiAgent ( {
491485 sessionId : params . sessionId ,
492486 sessionKey : params . sessionKey ,
@@ -1008,11 +1002,7 @@ async function agentCommandInternal(
10081002 if ( overrideModel ) {
10091003 const normalizedOverride = normalizeModelRef ( overrideProvider , overrideModel ) ;
10101004 const key = modelKey ( normalizedOverride . provider , normalizedOverride . model ) ;
1011- if (
1012- ! isCliProvider ( normalizedOverride . provider , cfg ) &&
1013- ! allowAnyModel &&
1014- ! allowedModelKeys . has ( key )
1015- ) {
1005+ if ( ! allowAnyModel && ! allowedModelKeys . has ( key ) ) {
10161006 const { updated } = applyModelOverrideToSessionEntry ( {
10171007 entry,
10181008 selection : { provider : defaultProvider , model : defaultModel , isDefault : true } ,
@@ -1035,11 +1025,7 @@ async function agentCommandInternal(
10351025 const candidateProvider = storedProviderOverride || defaultProvider ;
10361026 const normalizedStored = normalizeModelRef ( candidateProvider , storedModelOverride ) ;
10371027 const key = modelKey ( normalizedStored . provider , normalizedStored . model ) ;
1038- if (
1039- isCliProvider ( normalizedStored . provider , cfg ) ||
1040- allowAnyModel ||
1041- allowedModelKeys . has ( key )
1042- ) {
1028+ if ( allowAnyModel || allowedModelKeys . has ( key ) ) {
10431029 provider = normalizedStored . provider ;
10441030 model = normalizedStored . model ;
10451031 }
@@ -1057,11 +1043,7 @@ async function agentCommandInternal(
10571043 throw new Error ( "Invalid model override." ) ;
10581044 }
10591045 const explicitKey = modelKey ( explicitRef . provider , explicitRef . model ) ;
1060- if (
1061- ! isCliProvider ( explicitRef . provider , cfg ) &&
1062- ! allowAnyModel &&
1063- ! allowedModelKeys . has ( explicitKey )
1064- ) {
1046+ if ( ! allowAnyModel && ! allowedModelKeys . has ( explicitKey ) ) {
10651047 throw new Error (
10661048 `Model override "${ sanitizeForLog ( explicitRef . provider ) } /${ sanitizeForLog ( explicitRef . model ) } " is not allowed for agent "${ sessionAgentId } ".` ,
10671049 ) ;
0 commit comments