@@ -146,7 +146,7 @@ async function getAvailableSlashCommands(
146146
147147export class ClaudeAcpAgent extends BaseAcpAgent {
148148 readonly adapterName = "claude" ;
149- declare session : Session | null ;
149+ declare session : Session ;
150150 toolUseCache : ToolUseCache ;
151151 backgroundTerminals : { [ key : string ] : BackgroundTerminal } = { } ;
152152 clientCapabilities ?: ClientCapabilities ;
@@ -239,13 +239,6 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
239239 } , 0 ) ;
240240 }
241241
242- private getSession ( ) : Session {
243- if ( ! this . session ) {
244- throw new Error ( "Session not found" ) ;
245- }
246- return this . session ;
247- }
248-
249242 private registerPersistence (
250243 sessionId : string ,
251244 meta : Record < string , unknown > | undefined ,
@@ -412,11 +405,10 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
412405 }
413406
414407 async prompt ( params : PromptRequest ) : Promise < PromptResponse > {
415- const session = this . getSession ( ) ;
416- session . cancelled = false ;
417- session . interruptReason = undefined ;
408+ this . session . cancelled = false ;
409+ this . session . interruptReason = undefined ;
418410
419- const { query : q , input } = session ;
411+ const { query : q , input } = this . session ;
420412
421413 for ( const chunk of params . prompt ) {
422414 const userNotification = {
@@ -433,7 +425,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
433425 input . push ( promptToClaude ( { ...params , prompt : params . prompt } ) ) ;
434426
435427 const context = {
436- session,
428+ session : this . session ,
437429 sessionId : params . sessionId ,
438430 client : this . client ,
439431 toolUseCache : this . toolUseCache ,
@@ -444,11 +436,11 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
444436 while ( true ) {
445437 const { value : message , done } = await q . next ( ) ;
446438 if ( done || ! message ) {
447- if ( session . cancelled ) {
439+ if ( this . session . cancelled ) {
448440 return {
449441 stopReason : "cancelled" ,
450- _meta : session . interruptReason
451- ? { interruptReason : session . interruptReason }
442+ _meta : this . session . interruptReason
443+ ? { interruptReason : this . session . interruptReason }
452444 : undefined ,
453445 } ;
454446 }
@@ -498,30 +490,24 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
498490 }
499491
500492 protected async interruptSession ( ) : Promise < void > {
501- if ( ! this . session ) {
502- return ;
503- }
504493 await this . session . query . interrupt ( ) ;
505494 }
506495
507496 async setSessionModel ( params : SetSessionModelRequest ) {
508- const session = this . getSession ( ) ;
509- await session . query . setModel ( params . modelId ) ;
497+ await this . session . query . setModel ( params . modelId ) ;
510498 }
511499
512500 async setSessionMode (
513501 params : SetSessionModeRequest ,
514502 ) : Promise < SetSessionModeResponse > {
515- const session = this . getSession ( ) ;
516-
517503 switch ( params . modeId ) {
518504 case "default" :
519505 case "acceptEdits" :
520506 case "bypassPermissions" :
521507 case "plan" :
522- session . permissionMode = params . modeId ;
508+ this . session . permissionMode = params . modeId ;
523509 try {
524- await session . query . setPermissionMode ( params . modeId ) ;
510+ await this . session . query . setPermissionMode ( params . modeId ) ;
525511 } catch ( error ) {
526512 const errorMessage =
527513 error instanceof Error && error . message
@@ -541,17 +527,16 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
541527
542528 canUseTool ( sessionId : string ) : CanUseTool {
543529 return async ( toolName , toolInput , { suggestions, toolUseID } ) => {
544- if ( this . sessionId !== sessionId || ! this . session ) {
530+ if ( this . sessionId !== sessionId ) {
545531 return {
546532 behavior : "deny" ,
547533 message : "Session not found" ,
548534 interrupt : true ,
549535 } ;
550536 }
551- const session = this . session ;
552537
553538 const context = {
554- session,
539+ session : this . session ,
555540 toolName,
556541 toolInput : toolInput as Record < string , unknown > ,
557542 toolUseID,
@@ -584,15 +569,6 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
584569 return { } ;
585570 }
586571
587- if ( method === "session/setMode" ) {
588- const { sessionId, modeId } = params as {
589- sessionId : string ;
590- modeId : string ;
591- } ;
592- await this . setSessionMode ( { sessionId, modeId } ) ;
593- return { } ;
594- }
595-
596572 throw RequestError . methodNotFound ( method ) ;
597573 }
598574
@@ -602,7 +578,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
602578 this . logger . info ( "[RESUME] Resuming session" , { params } ) ;
603579 const { sessionId } = params ;
604580
605- if ( this . sessionId === sessionId && this . session ) {
581+ if ( this . sessionId === sessionId ) {
606582 return { } ;
607583 }
608584
0 commit comments