refactor: Unify streamId and conversationId handling for improved job management

- Updated ResumableAgentController and AgentController to generate conversationId upfront, ensuring it matches streamId for consistency.
- Simplified job creation and metadata management by removing redundant conversationId updates from callbacks.
- Refactored abortMiddleware and related methods to utilize the unified streamId/conversationId approach, enhancing clarity in job handling.
- Removed deprecated methods from GenerationJobManager and InMemoryJobStore, streamlining the codebase and improving maintainability.
This commit is contained in:
Danny Avila 2025-12-13 17:36:33 -05:00
parent 3a23badf5f
commit 8d34291f6a
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
6 changed files with 33 additions and 104 deletions

View file

@ -260,21 +260,6 @@ class GenerationJobManagerClass {
return this.buildJobFacade(streamId, jobData, runtime);
}
/**
* Find an active job by conversationId.
*/
async getJobByConversation(conversationId: string): Promise<t.GenerationJob | undefined> {
const jobData = await this.jobStore.getJobByConversation(conversationId);
if (!jobData) {
return undefined;
}
const runtime = this.runtimeState.get(jobData.streamId);
if (!runtime) {
return undefined;
}
return this.buildJobFacade(jobData.streamId, jobData, runtime);
}
/**
* Check if a job exists.
*/
@ -395,21 +380,6 @@ class GenerationJobManagerClass {
.trim();
}
/**
* Abort a job by conversationId (for abort middleware).
* Returns abort result with all data needed for token spending and message saving.
*/
async abortByConversation(conversationId: string): Promise<AbortResult> {
const jobData = await this.jobStore.getJobByConversation(conversationId);
if (!jobData) {
logger.debug(
`[GenerationJobManager] No active job found for conversation: ${conversationId}`,
);
return { success: false, jobData: null, content: [], text: '', finalEvent: null };
}
return this.abortJob(jobData.streamId);
}
/**
* Subscribe to a job's event stream.
*