@@ -31,29 +31,51 @@ export function mapModelToId(options) {
3131 * @param {Object } options - Options
3232 * @param {string } [options.prompt] - User prompt
3333 * @param {string } [options.systemPrompt] - System prompt
34+ * @param {string } [options.appendSystemPrompt] - System prompt to append to default
3435 * @param {string } [options.model] - Model to use
36+ * @param {string } [options.fallbackModel] - Fallback model when default is overloaded
3537 * @param {boolean } [options.print] - Print mode (non-interactive)
36- * @param {boolean } [options.json] - JSON output mode
38+ * @param {boolean } [options.verbose] - Verbose mode
39+ * @param {boolean } [options.json] - JSON output mode (stream-json format)
40+ * @param {boolean } [options.jsonInput] - JSON input mode (stream-json format)
41+ * @param {boolean } [options.replayUserMessages] - Re-emit user messages on stdout
3742 * @param {string } [options.resume] - Resume session ID
43+ * @param {string } [options.sessionId] - Use specific session ID (must be valid UUID)
44+ * @param {boolean } [options.forkSession] - Create new session ID when resuming
3845 * @returns {string[] } Array of CLI arguments
3946 */
4047export function buildArgs ( options ) {
4148 const {
4249 prompt,
4350 systemPrompt,
51+ appendSystemPrompt,
4452 model,
53+ fallbackModel,
4554 print = false ,
55+ verbose = false ,
4656 json = false ,
57+ jsonInput = false ,
58+ replayUserMessages = false ,
4759 resume,
60+ sessionId,
61+ forkSession = false ,
4862 } = options ;
4963
5064 const args = [ ] ;
5165
66+ // Permission bypass - always enabled, not configurable (per issue #3)
67+ args . push ( '--dangerously-skip-permissions' ) ;
68+
5269 if ( model ) {
5370 const mappedModel = mapModelToId ( { model } ) ;
5471 args . push ( '--model' , mappedModel ) ;
5572 }
5673
74+ if ( fallbackModel ) {
75+ const mappedFallback = mapModelToId ( { model : fallbackModel } ) ;
76+ args . push ( '--fallback-model' , mappedFallback ) ;
77+ }
78+
5779 if ( prompt ) {
5880 args . push ( '--prompt' , prompt ) ;
5981 }
@@ -62,18 +84,46 @@ export function buildArgs(options) {
6284 args . push ( '--system-prompt' , systemPrompt ) ;
6385 }
6486
87+ if ( appendSystemPrompt ) {
88+ args . push ( '--append-system-prompt' , appendSystemPrompt ) ;
89+ }
90+
91+ if ( verbose ) {
92+ args . push ( '--verbose' ) ;
93+ }
94+
6595 if ( print ) {
6696 args . push ( '-p' ) ; // Print mode
6797 }
6898
99+ // JSON output mode - use stream-json format per issue #3
69100 if ( json ) {
70- args . push ( '--output-format' , 'json' ) ;
101+ args . push ( '--output-format' , 'stream-json' ) ;
102+ }
103+
104+ // JSON input mode - use stream-json format per issue #3
105+ if ( jsonInput ) {
106+ args . push ( '--input-format' , 'stream-json' ) ;
107+ }
108+
109+ // Replay user messages (only with stream-json input/output)
110+ if ( replayUserMessages ) {
111+ args . push ( '--replay-user-messages' ) ;
112+ }
113+
114+ // Session management
115+ if ( sessionId ) {
116+ args . push ( '--session-id' , sessionId ) ;
71117 }
72118
73119 if ( resume ) {
74120 args . push ( '--resume' , resume ) ;
75121 }
76122
123+ if ( forkSession ) {
124+ args . push ( '--fork-session' ) ;
125+ }
126+
77127 return args ;
78128}
79129
@@ -83,10 +133,17 @@ export function buildArgs(options) {
83133 * @param {string } options.workingDirectory - Working directory
84134 * @param {string } [options.prompt] - User prompt
85135 * @param {string } [options.systemPrompt] - System prompt
136+ * @param {string } [options.appendSystemPrompt] - System prompt to append to default
86137 * @param {string } [options.model] - Model to use
138+ * @param {string } [options.fallbackModel] - Fallback model when default is overloaded
87139 * @param {boolean } [options.print] - Print mode (non-interactive)
88- * @param {boolean } [options.json] - JSON output mode
140+ * @param {boolean } [options.verbose] - Verbose mode
141+ * @param {boolean } [options.json] - JSON output mode (stream-json format)
142+ * @param {boolean } [options.jsonInput] - JSON input mode (stream-json format)
143+ * @param {boolean } [options.replayUserMessages] - Re-emit user messages on stdout
89144 * @param {string } [options.resume] - Resume session ID
145+ * @param {string } [options.sessionId] - Use specific session ID (must be valid UUID)
146+ * @param {boolean } [options.forkSession] - Create new session ID when resuming
90147 * @returns {string } Complete command string
91148 */
92149export function buildCommand ( options ) {
@@ -203,9 +260,15 @@ export const claudeTool = {
203260 displayName : 'Claude Code CLI' ,
204261 executable : 'claude' ,
205262 supportsJsonOutput : true ,
206- supportsJsonInput : false , // Claude doesn't support JSON streaming input yet
263+ supportsJsonInput : true , // Claude supports stream-json input format
207264 supportsSystemPrompt : true ,
265+ supportsAppendSystemPrompt : true , // Supports --append-system-prompt
208266 supportsResume : true ,
267+ supportsForkSession : true , // Supports --fork-session
268+ supportsSessionId : true , // Supports --session-id
269+ supportsFallbackModel : true , // Supports --fallback-model
270+ supportsVerbose : true , // Supports --verbose
271+ supportsReplayUserMessages : true , // Supports --replay-user-messages
209272 defaultModel : 'sonnet' ,
210273 modelMap,
211274 mapModelToId,
0 commit comments