1- import { IpcMessageV2 , IpcMessageV2Schema , MessageCmd , SudoRequestData , SudoRequestDataSchema } from 'codify-schemas' ;
1+ import {
2+ IpcMessageV2 ,
3+ IpcMessageV2Schema ,
4+ MessageCmd ,
5+ PressKeyToContinueRequestData ,
6+ PressKeyToContinueRequestDataSchema ,
7+ SudoRequestData ,
8+ SudoRequestDataSchema
9+ } from 'codify-schemas' ;
210import { ChildProcess , fork } from 'node:child_process' ;
311import { createRequire } from 'node:module' ;
412
@@ -9,6 +17,7 @@ import { PluginMessage } from './plugin-message.js';
917
1018export const ipcMessageValidator = ajv . compile ( IpcMessageV2Schema ) ;
1119export const sudoRequestValidator = ajv . compile ( SudoRequestDataSchema ) ;
20+ export const pressKeyToContinueRequestValidator = ajv . compile ( PressKeyToContinueRequestDataSchema ) ;
1221
1322const DEFAULT_NODE_MODULES_DIR = '/usr/local/lib/codify/node_modules/'
1423
@@ -88,7 +97,27 @@ export class PluginProcess {
8897 }
8998 } )
9099
91- ctx . sudoRequested ( pluginName , data as unknown as SudoRequestData ) ;
100+ return ctx . sudoRequested ( pluginName , data as unknown as SudoRequestData ) ;
101+ }
102+
103+ if ( message . cmd === MessageCmd . PRESS_KEY_TO_CONTINUE_REQUEST ) {
104+ const { data, requestId } = message ;
105+ if ( ! pressKeyToContinueRequestValidator ( data ) ) {
106+ throw new Error ( `Invalid press key to continue request from plugin ${ pluginName } . ${ JSON . stringify ( pressKeyToContinueRequestValidator . errors , null , 2 ) } ` ) ;
107+ }
108+
109+ // Send out sudo granted events
110+ ctx . once ( Event . PRESS_KEY_TO_CONTINUE_COMPLETED , ( _pluginName ) => {
111+ if ( _pluginName === pluginName ) {
112+ process . send ( {
113+ cmd : returnMessageCmd ( MessageCmd . PRESS_KEY_TO_CONTINUE_REQUEST ) ,
114+ requestId,
115+ data : { } ,
116+ } )
117+ }
118+ } )
119+
120+ return ctx . pressToContinueRequested ( pluginName , data as unknown as PressKeyToContinueRequestData ) ;
92121 }
93122 } )
94123 }
0 commit comments