feat(coding): keep one ongoing conversation per delivered agent

This commit is contained in:
2026-09-28 14:19:02 +08:00
parent e54f3d234d
commit 7aa81da616
23 changed files with 1205 additions and 160 deletions

View File

@@ -74,12 +74,19 @@ export interface TeacherDiscussionContext {
transition?: 'structure';
}
export interface TeacherDiscussionAction {
projectId?: string;
toolId: string;
revision: number;
action: 'enter' | 'pause' | 'finish' | 'resume' | 'keep-idea' | 'aside-idea' | 'first-idea' | 'back-ideas';
itemId?: string;
}
export interface TeacherRequest {
/** Frozen when this turn is accepted; history can span projects and releases. */
projectId?: string;
projectName?: string;
teacherVersion?: number;
runtimeThreadId?: string;
origin?: { projectId: string; topicId: string; requestId: string };
presentation?: 'discussion-v1';
discussionContext?: TeacherDiscussionContext;
discussionSnapshot?: TeacherDiscussionContent;
@@ -115,6 +122,14 @@ export interface TeacherToolActivity {
status: 'running' | 'completed' | 'failed';
}
export interface TeacherTopic {
/** Present only for the account-owned continuous conversation. */
conversation?: {
agentId: string;
runtimeThreadId?: string;
segmentTurns: number;
discussions: Record<string, TeacherDiscussion>;
seenThrough?: string;
};
discussion?: TeacherDiscussion;
role?: LegacyConsultationRole;
revision: number;
@@ -132,10 +147,11 @@ export interface TeacherTopic {
unsaved?: boolean;
}
export interface TeacherTopicList {
items: Array<{ id: string; title: string; updatedAt: string; version: number; teacherId?: string; legacyRole?: 'friend' }>;
items: Array<{ id: string; title: string; updatedAt: string; version: number; teacherId?: string; legacyRole?: 'friend'; legacySourceId?: string }>;
lastSelectedTopicId: string | null;
}
export interface TeacherSend {
projectId?: string;
presentation?: 'discussion-v1';
discussion?: TeacherDiscussionContext;
intent?: TeacherRequestIntent;
@@ -144,6 +160,14 @@ export interface TeacherSend {
text: string;
references?: TeacherReference[];
}
export interface TeacherHistoryPage {
requests: TeacherRequest[];
before: string | null;
}
export interface TeacherConversationView {
topic: TeacherTopic | null;
before: string | null;
}
export interface TeacherCheckInInput {
requestId: string;
sourceConversationId: string;