@@ -118,13 +118,21 @@ interface ParsedResponseStep {
118118
119119export type ParsedResponse = ParsedResponseAnswer | ParsedResponseStep ;
120120
121+ export const enum AgentType {
122+ FREESTYLER = 'freestyler' ,
123+ DRJONES_FILE = 'drjones-file' ,
124+ DRJONES_NETWORK_REQUEST = 'drjones-network-request' ,
125+ DRJONES_PERFORMANCE = 'drjones-performance' ,
126+ }
127+
121128const MAX_STEP = 10 ;
122129
123130export abstract class AiAgent < T > {
124131 static validTemperature ( temperature : number | undefined ) : number | undefined {
125132 return typeof temperature === 'number' && temperature >= 0 ? temperature : undefined ;
126133 }
127134
135+ abstract type : AgentType ;
128136 readonly #sessionId: string = crypto . randomUUID ( ) ;
129137 #aidaClient: Host . AidaClient . AidaClient ;
130138 #serverSideLoggingEnabled: boolean ;
@@ -153,6 +161,20 @@ export abstract class AiAgent<T> {
153161 this . #history = history ;
154162 }
155163
164+ get isEmpty ( ) : boolean {
165+ return this . #history. size <= 0 ;
166+ }
167+
168+ get title ( ) : string | undefined {
169+ return [ ...this . #history. values ( ) ]
170+ . flat ( )
171+ . filter ( response => {
172+ return response . type === ResponseType . USER_QUERY ;
173+ } )
174+ . at ( - 1 )
175+ ?. query ;
176+ }
177+
156178 #structuredLog: Array < {
157179 request : Host . AidaClient . AidaRequest ,
158180 response : string ,
0 commit comments