@@ -137,7 +137,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
137137 this . checkAuthStatus ( ) ;
138138
139139 const meta = params . _meta as NewSessionMeta | undefined ;
140- const internalSessionId = uuidv7 ( ) ;
140+ const sessionId = uuidv7 ( ) ;
141141 const permissionMode : TwigExecutionMode =
142142 meta ?. permissionMode &&
143143 TWIG_EXECUTION_MODES . includes ( meta . permissionMode as TwigExecutionMode )
@@ -151,11 +151,13 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
151151 cwd : params . cwd ,
152152 mcpServers,
153153 permissionMode,
154- canUseTool : this . createCanUseTool ( internalSessionId ) ,
154+ canUseTool : this . createCanUseTool ( sessionId ) ,
155155 logger : this . logger ,
156156 systemPrompt : buildSystemPrompt ( meta ?. systemPrompt ) ,
157157 userProvidedOptions : meta ?. claudeCode ?. options ,
158- onModeChange : this . createOnModeChange ( internalSessionId ) ,
158+ sessionId,
159+ isResume : false ,
160+ onModeChange : this . createOnModeChange ( sessionId ) ,
159161 onProcessSpawned : this . processCallbacks ?. onProcessSpawned ,
160162 onProcessExited : this . processCallbacks ?. onProcessExited ,
161163 } ) ;
@@ -164,29 +166,35 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
164166 const q = query ( { prompt : input , options } ) ;
165167
166168 const session = this . createSession (
167- internalSessionId ,
169+ sessionId ,
168170 q ,
169171 input ,
170172 permissionMode ,
171173 params . cwd ,
172174 options . abortController as AbortController ,
173175 ) ;
174176 session . taskRunId = meta ?. taskRunId ;
175- this . registerPersistence (
176- internalSessionId ,
177- meta as Record < string , unknown > ,
178- ) ;
177+ this . registerPersistence ( sessionId , meta as Record < string , unknown > ) ;
178+
179+ if ( meta ?. taskRunId ) {
180+ await this . client . extNotification ( "_posthog/sdk_session" , {
181+ taskRunId : meta . taskRunId ,
182+ sessionId,
183+ adapter : "claude" ,
184+ } ) ;
185+ }
186+
179187 const modelOptions = await this . getModelConfigOptions ( ) ;
180188 session . modelId = modelOptions . currentModelId ;
181189 await this . trySetModel ( q , modelOptions . currentModelId ) ;
182190
183191 this . sendAvailableCommandsUpdate (
184- internalSessionId ,
192+ sessionId ,
185193 await getAvailableSlashCommands ( q ) ,
186194 ) ;
187195
188196 return {
189- sessionId : internalSessionId ,
197+ sessionId,
190198 configOptions : await this . buildConfigOptions ( modelOptions ) ,
191199 } ;
192200 }
@@ -198,12 +206,15 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
198206 async resumeSession (
199207 params : LoadSessionRequest ,
200208 ) : Promise < LoadSessionResponse > {
201- const { sessionId : internalSessionId } = params ;
202- if ( this . sessionId === internalSessionId ) {
209+ const meta = params . _meta as NewSessionMeta | undefined ;
210+ const sessionId = meta ?. sessionId ;
211+ if ( ! sessionId ) {
212+ throw new Error ( "Cannot resume session without sessionId" ) ;
213+ }
214+ if ( this . sessionId === sessionId ) {
203215 return { } ;
204216 }
205217
206- const meta = params . _meta as NewSessionMeta | undefined ;
207218 const mcpServers = parseMcpServers ( params ) ;
208219 await fetchMcpToolMetadata ( mcpServers , this . logger ) ;
209220
@@ -214,27 +225,21 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
214225 : "default" ;
215226
216227 const { query : q , session } = await this . initializeQuery ( {
217- internalSessionId,
218228 cwd : params . cwd ,
219229 permissionMode,
220230 mcpServers,
221231 systemPrompt : buildSystemPrompt ( meta ?. systemPrompt ) ,
222232 userProvidedOptions : meta ?. claudeCode ?. options ,
223- sessionId : meta ?. sessionId ,
233+ sessionId,
234+ isResume : true ,
224235 additionalDirectories : meta ?. claudeCode ?. options ?. additionalDirectories ,
225236 } ) ;
226237
227238 session . taskRunId = meta ?. taskRunId ;
228- if ( meta ?. sessionId ) {
229- session . sessionId = meta . sessionId ;
230- }
231239
232- this . registerPersistence (
233- internalSessionId ,
234- meta as Record < string , unknown > ,
235- ) ;
240+ this . registerPersistence ( sessionId , meta as Record < string , unknown > ) ;
236241 this . sendAvailableCommandsUpdate (
237- internalSessionId ,
242+ sessionId ,
238243 await getAvailableSlashCommands ( q ) ,
239244 ) ;
240245
@@ -322,13 +327,13 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
322327 }
323328
324329 private async initializeQuery ( config : {
325- internalSessionId : string ;
326330 cwd : string ;
327331 permissionMode : TwigExecutionMode ;
328332 mcpServers : ReturnType < typeof parseMcpServers > ;
329333 userProvidedOptions ?: Options ;
330334 systemPrompt ?: Options [ "systemPrompt" ] ;
331- sessionId ?: string ;
335+ sessionId : string ;
336+ isResume : boolean ;
332337 additionalDirectories ?: string [ ] ;
333338 } ) : Promise < {
334339 query : Query ;
@@ -341,13 +346,14 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
341346 cwd : config . cwd ,
342347 mcpServers : config . mcpServers ,
343348 permissionMode : config . permissionMode ,
344- canUseTool : this . createCanUseTool ( config . internalSessionId ) ,
349+ canUseTool : this . createCanUseTool ( config . sessionId ) ,
345350 logger : this . logger ,
346351 systemPrompt : config . systemPrompt ,
347352 userProvidedOptions : config . userProvidedOptions ,
348353 sessionId : config . sessionId ,
354+ isResume : config . isResume ,
349355 additionalDirectories : config . additionalDirectories ,
350- onModeChange : this . createOnModeChange ( config . internalSessionId ) ,
356+ onModeChange : this . createOnModeChange ( config . sessionId ) ,
351357 onProcessSpawned : this . processCallbacks ?. onProcessSpawned ,
352358 onProcessExited : this . processCallbacks ?. onProcessExited ,
353359 } ) ;
@@ -356,7 +362,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
356362 const abortController = options . abortController as AbortController ;
357363
358364 const session = this . createSession (
359- config . internalSessionId ,
365+ config . sessionId ,
360366 q ,
361367 input ,
362368 config . permissionMode ,
@@ -596,6 +602,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
596602
597603 case "tool_progress" :
598604 case "auth_status" :
605+ case "tool_use_summary" :
599606 return null ;
600607
601608 default :
0 commit comments