@@ -21,6 +21,7 @@ const CODEX_EVENT_MAP = Object.freeze({
2121} )
2222
2323const COPILOT_EVENT_MAP = Object . freeze ( {
24+ userPromptTransformed : 'UserPromptSubmit' ,
2425 userPromptSubmitted : 'UserPromptSubmit' ,
2526 UserPromptSubmit : 'UserPromptSubmit' ,
2627 preToolUse : 'PreToolUse' ,
@@ -232,6 +233,10 @@ function normalizeHostPayload(host, payload) {
232233 if ( normalized . transcriptPath && ! normalized . transcript_path ) normalized . transcript_path = normalized . transcriptPath
233234 if ( normalized . stopReason && ! normalized . stop_reason ) normalized . stop_reason = normalized . stopReason
234235 if ( normalized . toolResult && ! normalized . tool_result ) normalized . tool_result = normalized . toolResult
236+ if ( originalEvent === 'userPromptTransformed' &&
237+ / ^ P r o g r e s s i v e S k i l l r o u t e i s i n c o m p l e t e : / i. test ( String ( normalized . prompt || '' ) . trim ( ) ) ) {
238+ normalized . devcodex_host_continuation = true
239+ }
235240 }
236241 if ( host === 'gemini' && typeof payload ?. prompt_response === 'string' ) normalized . response = payload . prompt_response
237242 return { originalEvent, mappedEvent, payload : normalized }
@@ -331,7 +336,7 @@ function adaptGrokOutput(originalEvent, output) {
331336 return next
332337}
333338
334- function adaptCopilotOutput ( originalEvent , output ) {
339+ function adaptCopilotOutput ( originalEvent , output , input = { } ) {
335340 const value = output && typeof output === 'object' && ! Array . isArray ( output ) ? { ...output } : { }
336341 const event = normalizeEventToken ( originalEvent )
337342 const specific = value . hookSpecificOutput && typeof value . hookSpecificOutput === 'object'
@@ -371,6 +376,24 @@ function adaptCopilotOutput(originalEvent, output) {
371376 }
372377 }
373378
379+ if ( event === 'userprompttransformed' ) {
380+ const additionalContext = [
381+ value . systemMessage ,
382+ specific . additionalContext ,
383+ value . additionalContext
384+ ] . filter ( item => typeof item === 'string' && item . trim ( ) ) . join ( '\n\n' )
385+ const transformedPrompt = String (
386+ input . transformedPrompt || input . transformed_prompt || input . prompt || ''
387+ )
388+ return additionalContext
389+ ? {
390+ modifiedTransformedPrompt : [ transformedPrompt , additionalContext ]
391+ . filter ( Boolean )
392+ . join ( '\n\n' )
393+ }
394+ : { }
395+ }
396+
374397 if ( event === 'agentstop' || event === 'stop' ) {
375398 if ( value . decision === 'block' ) {
376399 return {
@@ -385,7 +408,7 @@ function adaptCopilotOutput(originalEvent, output) {
385408 return { }
386409}
387410
388- function adaptHostOutput ( host , originalEvent , output ) {
411+ function adaptHostOutput ( host , originalEvent , output , input = { } ) {
389412 const value = output && typeof output === 'object' && ! Array . isArray ( output ) ? { ...output } : { continue : true }
390413 if ( value . hookSpecificOutput && typeof value . hookSpecificOutput === 'object' ) {
391414 value . hookSpecificOutput = { ...value . hookSpecificOutput , hookEventName : originalEvent }
@@ -394,7 +417,7 @@ function adaptHostOutput(host, originalEvent, output) {
394417 return adaptGrokOutput ( originalEvent , value )
395418 }
396419 if ( host === 'copilot' ) {
397- return adaptCopilotOutput ( originalEvent , value )
420+ return adaptCopilotOutput ( originalEvent , value , input )
398421 }
399422 if ( host !== 'gemini' ) return value
400423
@@ -469,7 +492,11 @@ function runHostAdapter(host, input, options = {}) {
469492 try { output = child . stdout . trim ( ) ? JSON . parse ( child . stdout ) : { continue : true } } catch ( error ) {
470493 return { status : 1 , error : `invalid lifecycle output: ${ error . message } ` , output : null }
471494 }
472- const result = { status : 0 , error : '' , output : adaptHostOutput ( host , normalized . originalEvent , output ) }
495+ const result = {
496+ status : 0 ,
497+ error : '' ,
498+ output : adaptHostOutput ( host , normalized . originalEvent , output , input )
499+ }
473500 appendAdapterTrace ( host , 'output' , input , normalized , result , options . env || process . env )
474501 return result
475502}
@@ -503,6 +530,30 @@ function probeHostAdapterContract(host) {
503530 }
504531}
505532
533+ function applyCliEnvironmentOverrides ( argv , env = process . env ) {
534+ const authorityIndex = argv . indexOf ( '--skill-route-probe-authority' )
535+ if ( authorityIndex >= 0 && argv [ authorityIndex + 1 ] ) {
536+ env . DEVCODEX_SKILL_ROUTE_PROBE_AUTHORITY = path . resolve ( argv [ authorityIndex + 1 ] )
537+ }
538+ const routeTraceIndex = argv . indexOf ( '--skill-route-trace' )
539+ if ( routeTraceIndex >= 0 && argv [ routeTraceIndex + 1 ] ) {
540+ env . DEVCODEX_SKILL_ROUTE_TRACE = path . resolve ( argv [ routeTraceIndex + 1 ] )
541+ }
542+ const lifecycleTraceIndex = argv . indexOf ( '--lifecycle-trace' )
543+ if ( lifecycleTraceIndex >= 0 && argv [ lifecycleTraceIndex + 1 ] ) {
544+ env . DEVCODEX_LIFECYCLE_TRACE = path . resolve ( argv [ lifecycleTraceIndex + 1 ] )
545+ }
546+ const workspaceRootIndex = argv . indexOf ( '--workspace-root' )
547+ if ( workspaceRootIndex >= 0 && argv [ workspaceRootIndex + 1 ] ) {
548+ env . DEVCODEX_WORKSPACE_ROOT = path . resolve ( argv [ workspaceRootIndex + 1 ] )
549+ }
550+ const eventIndex = argv . indexOf ( '--event' )
551+ if ( eventIndex >= 0 && argv [ eventIndex + 1 ] ) {
552+ env . DEVCODEX_HOST_EVENT = String ( argv [ eventIndex + 1 ] ) . trim ( )
553+ }
554+ return env
555+ }
556+
506557if ( require . main === module ) {
507558 const host = String ( process . argv [ 2 ] || '' ) . trim ( ) . toLowerCase ( )
508559 if ( ! Object . prototype . hasOwnProperty . call ( EVENT_MAP , host ) ) {
@@ -514,6 +565,7 @@ if (require.main === module) {
514565 process . stdout . write ( JSON . stringify ( probe ) )
515566 process . exit ( probe . status === 'passed' ? 0 : 1 )
516567 }
568+ applyCliEnvironmentOverrides ( process . argv . slice ( 3 ) )
517569 let input = ''
518570 process . stdin . setEncoding ( 'utf8' )
519571 process . stdin . on ( 'data' , chunk => { input += chunk } )
@@ -524,6 +576,10 @@ if (require.main === module) {
524576 process . exit ( 2 )
525577 return
526578 }
579+ if ( ! payload . hookEventName && ! payload . hook_event_name &&
580+ process . env . DEVCODEX_HOST_EVENT ) {
581+ payload . hookEventName = process . env . DEVCODEX_HOST_EVENT
582+ }
527583 const result = runHostAdapter ( host , payload )
528584 if ( result . status !== 0 ) {
529585 process . stderr . write ( `${ result . error } \n` )
@@ -536,6 +592,7 @@ if (require.main === module) {
536592
537593module . exports = {
538594 EVENT_MAP ,
595+ applyCliEnvironmentOverrides,
539596 adaptCopilotOutput,
540597 adaptHostOutput,
541598 adaptGrokOutput,
0 commit comments