@@ -685,6 +685,33 @@ describe("codexProvider.execute — thread selection", () => {
685685 expect ( resumeThreadSpy ) . toHaveBeenCalledWith ( "codex-thread-1" , expect . any ( Object ) ) ;
686686 } ) ;
687687
688+ it ( "passes system prompt content and task context to Codex" , async ( ) => {
689+ const { Codex } = await import ( "@openai/codex-sdk" ) ;
690+ const fsModule = await import ( "node:fs" ) ;
691+ vi . mocked ( fsModule . readFileSync ) . mockImplementation ( ( path ) => {
692+ if ( path === "/tmp/system.txt" ) return "You are Codex with board rules." as any ;
693+ throw new Error ( "ENOENT" ) ;
694+ } ) ;
695+ const runStreamedSpy = vi . fn ( ) . mockResolvedValue ( { events : ( async function * ( ) { } ) ( ) } ) ;
696+ vi . mocked ( Codex ) . mockImplementationOnce (
697+ ( ) =>
698+ ( {
699+ startThread : vi . fn ( ) . mockReturnValue ( { runStreamed : runStreamedSpy } ) ,
700+ resumeThread : vi . fn ( ) ,
701+ } ) as any ,
702+ ) ;
703+
704+ await codexProvider . execute ( {
705+ sessionId : "s1" ,
706+ cwd : "/tmp" ,
707+ env : { OPENAI_API_KEY : "test-key" } ,
708+ systemPromptFile : "/tmp/system.txt" ,
709+ taskContext : "Implement the task." ,
710+ } ) ;
711+
712+ expect ( runStreamedSpy ) . toHaveBeenCalledWith ( "You are Codex with board rules.\n\nImplement the task." , expect . any ( Object ) ) ;
713+ } ) ;
714+
688715 it ( "omits explicit model for ChatGPT-backed Codex sessions" , async ( ) => {
689716 const { Codex } = await import ( "@openai/codex-sdk" ) ;
690717 const fsModule = await import ( "node:fs" ) ;
@@ -1369,6 +1396,23 @@ describe("geminiProvider.execute — arg selection", () => {
13691396 expect ( call . args ) . toContain ( "--resume" ) ;
13701397 } ) ;
13711398
1399+ it ( "uses task context only when resuming" , async ( ) => {
1400+ const { spawnAgent } = await import ( "../src/providers/spawnHelper.js" ) ;
1401+ vi . mocked ( spawnAgent ) . mockClear ( ) ;
1402+ await geminiProvider . execute ( {
1403+ sessionId : "s1" ,
1404+ cwd : "/tmp" ,
1405+ env : { } ,
1406+ systemPromptFile : "/tmp/system.txt" ,
1407+ taskContext : "Task rejected. Reason: fix it" ,
1408+ resume : true ,
1409+ } ) ;
1410+ const call = vi . mocked ( spawnAgent ) . mock . calls [ 0 ] [ 0 ] ;
1411+ const promptIdx = call . args . indexOf ( "--prompt" ) ;
1412+
1413+ expect ( call . args [ promptIdx + 1 ] ) . toBe ( "Task rejected. Reason: fix it" ) ;
1414+ } ) ;
1415+
13721416 it ( "uses buildArgs when resume is false or absent" , async ( ) => {
13731417 const { spawnAgent } = await import ( "../src/providers/spawnHelper.js" ) ;
13741418 vi . mocked ( spawnAgent ) . mockClear ( ) ;
0 commit comments