@@ -66,4 +66,61 @@ describe("legacy CLI agent output", () => {
6666 expect ( stdout ) . toContain ( "DESCRIPTION" ) ;
6767 expect ( stderr ) . toContain ( 'Unknown subcommand "definitely-not-a-command"' ) ;
6868 } ) ;
69+
70+ test ( "keeps parse errors in text mode when --agent=no is explicit" , async ( ) => {
71+ const { exitCode, stdout, stderr } = await runSupabase (
72+ [ "--agent" , "no" , "definitely-not-a-command" ] ,
73+ {
74+ entrypoint : "legacy" ,
75+ env : { CODEX_SANDBOX : "1" } ,
76+ } ,
77+ ) ;
78+
79+ expect ( exitCode ) . toBe ( 1 ) ;
80+ expect ( stdout ) . toContain ( "DESCRIPTION" ) ;
81+ expect ( stderr ) . toContain ( 'Unknown subcommand "definitely-not-a-command"' ) ;
82+ } ) ;
83+
84+ test ( "formats parse errors as JSON when --agent=yes is explicit" , async ( ) => {
85+ const { exitCode, stdout, stderr } = await runSupabase (
86+ [ "--agent" , "yes" , "definitely-not-a-command" ] ,
87+ {
88+ entrypoint : "legacy" ,
89+ env : { } ,
90+ } ,
91+ ) ;
92+
93+ expect ( exitCode ) . toBe ( 1 ) ;
94+ expect ( parseJsonLines ( stdout ) ) . toEqual ( [
95+ expect . objectContaining ( { _tag : "Help" } ) ,
96+ expect . objectContaining ( {
97+ _tag : "Error" ,
98+ error : expect . objectContaining ( { code : "ShowHelp" } ) ,
99+ } ) ,
100+ ] ) ;
101+ expect ( parseJsonLines ( stderr ) ) . toEqual ( [
102+ expect . objectContaining ( {
103+ _tag : "Errors" ,
104+ errors : [ expect . objectContaining ( { code : "UnknownSubcommand" } ) ] ,
105+ } ) ,
106+ ] ) ;
107+ } ) ;
108+
109+ test ( "keeps built-in version and help in text mode for detected coding agents" , async ( ) => {
110+ const version = await runSupabase ( [ "--version" ] , {
111+ entrypoint : "legacy" ,
112+ env : { CODEX_SANDBOX : "1" } ,
113+ } ) ;
114+ const help = await runSupabase ( [ "--help" ] , {
115+ entrypoint : "legacy" ,
116+ env : { CODEX_SANDBOX : "1" } ,
117+ } ) ;
118+
119+ expect ( version . exitCode ) . toBe ( 0 ) ;
120+ expect ( version . stdout . trim ( ) ) . toMatch ( / ^ \d + \. \d + \. \d + / ) ;
121+ expect ( ( ) => JSON . parse ( version . stdout ) ) . toThrow ( ) ;
122+ expect ( help . exitCode ) . toBe ( 0 ) ;
123+ expect ( help . stdout ) . toContain ( "DESCRIPTION" ) ;
124+ expect ( ( ) => JSON . parse ( help . stdout ) ) . toThrow ( ) ;
125+ } ) ;
69126} ) ;
0 commit comments