@@ -18,6 +18,7 @@ import type {
1818 TrySetConfigParameterMessage ,
1919 ShouldDisregardRecommendationMessage ,
2020 TriggerReInterviewMessage ,
21+ QueryUserCodesMessage ,
2122 VerifyIndicatorIdentifyMessage ,
2223 OrchestratorState ,
2324 DUTCapabilityId ,
@@ -925,6 +926,25 @@ export function parsePrompt(
925926 return { action : "send_to_dut" , message, answer : "Ok" } ;
926927 }
927928
929+ // QUERY_USER_CODES - Request specific user codes without full re-interview
930+ // Matches: "trigger an interview...without deleting user codes...User IDs = '1', '50' and '11111'"
931+ if ( / t r i g g e r a n i n t e r v i e w .+ w i t h o u t d e l e t i n g u s e r c o d e s .+ f r o m U s e r I D s / i. test ( promptText ) ) {
932+ // Extract all user IDs from the prompt (e.g., '1', '50', '11111')
933+ const userIdPattern = / ' ( \d + ) ' / g;
934+ const userIds : number [ ] = [ ] ;
935+ let match ;
936+ while ( ( match = userIdPattern . exec ( promptText ) ) !== null ) {
937+ userIds . push ( parseInt ( match [ 1 ] ! ) ) ;
938+ }
939+ if ( userIds . length > 0 ) {
940+ const message : QueryUserCodesMessage = {
941+ type : "QUERY_USER_CODES" ,
942+ userIds,
943+ } ;
944+ return { action : "send_to_dut" , message, answer : "Ok" } ;
945+ }
946+ }
947+
928948 // VERIFY_INDICATOR_IDENTIFY
929949 if ( / d i d .+ i n d i c a t o r .+ b l i n k \w + t i m e s / i. test ( promptText ) ) {
930950 const message : VerifyIndicatorIdentifyMessage = {
0 commit comments