@@ -63,6 +63,8 @@ type Config struct {
63
63
Instructions []string `json:"instructions"`
64
64
// Custom keybind configurations
65
65
Keybinds Keybinds `json:"keybinds"`
66
+ // Layout to use for the TUI
67
+ Layout ConfigLayout `json:"layout"`
66
68
// Minimum log level to write to log files
67
69
LogLevel LogLevel `json:"log_level"`
68
70
// MCP (Model Context Protocol) server configurations
@@ -91,6 +93,7 @@ type configJSON struct {
91
93
Experimental apijson.Field
92
94
Instructions apijson.Field
93
95
Keybinds apijson.Field
96
+ Layout apijson.Field
94
97
LogLevel apijson.Field
95
98
Mcp apijson.Field
96
99
Mode apijson.Field
@@ -201,6 +204,22 @@ func (r configExperimentalHookSessionCompletedJSON) RawJSON() string {
201
204
return r .raw
202
205
}
203
206
207
+ // Layout to use for the TUI
208
+ type ConfigLayout string
209
+
210
+ const (
211
+ ConfigLayoutAuto ConfigLayout = "auto"
212
+ ConfigLayoutStretch ConfigLayout = "stretch"
213
+ )
214
+
215
+ func (r ConfigLayout ) IsKnown () bool {
216
+ switch r {
217
+ case ConfigLayoutAuto , ConfigLayoutStretch :
218
+ return true
219
+ }
220
+ return false
221
+ }
222
+
204
223
type ConfigMcp struct {
205
224
// Type of MCP server connection
206
225
Type ConfigMcpType `json:"type,required"`
@@ -287,10 +306,10 @@ func (r ConfigMcpType) IsKnown() bool {
287
306
}
288
307
289
308
type ConfigMode struct {
290
- Build ConfigModeBuild `json:"build"`
291
- Plan ConfigModePlan `json:"plan"`
292
- ExtraFields map [string ]ConfigMode `json:"-,extras"`
293
- JSON configModeJSON `json:"-"`
309
+ Build Mode `json:"build"`
310
+ Plan Mode `json:"plan"`
311
+ ExtraFields map [string ]Mode `json:"-,extras"`
312
+ JSON configModeJSON `json:"-"`
294
313
}
295
314
296
315
// configModeJSON contains the JSON metadata for the struct [ConfigMode]
@@ -309,54 +328,6 @@ func (r configModeJSON) RawJSON() string {
309
328
return r .raw
310
329
}
311
330
312
- type ConfigModeBuild struct {
313
- Model string `json:"model"`
314
- Prompt string `json:"prompt"`
315
- Tools map [string ]bool `json:"tools"`
316
- JSON configModeBuildJSON `json:"-"`
317
- }
318
-
319
- // configModeBuildJSON contains the JSON metadata for the struct [ConfigModeBuild]
320
- type configModeBuildJSON struct {
321
- Model apijson.Field
322
- Prompt apijson.Field
323
- Tools apijson.Field
324
- raw string
325
- ExtraFields map [string ]apijson.Field
326
- }
327
-
328
- func (r * ConfigModeBuild ) UnmarshalJSON (data []byte ) (err error ) {
329
- return apijson .UnmarshalRoot (data , r )
330
- }
331
-
332
- func (r configModeBuildJSON ) RawJSON () string {
333
- return r .raw
334
- }
335
-
336
- type ConfigModePlan struct {
337
- Model string `json:"model"`
338
- Prompt string `json:"prompt"`
339
- Tools map [string ]bool `json:"tools"`
340
- JSON configModePlanJSON `json:"-"`
341
- }
342
-
343
- // configModePlanJSON contains the JSON metadata for the struct [ConfigModePlan]
344
- type configModePlanJSON struct {
345
- Model apijson.Field
346
- Prompt apijson.Field
347
- Tools apijson.Field
348
- raw string
349
- ExtraFields map [string ]apijson.Field
350
- }
351
-
352
- func (r * ConfigModePlan ) UnmarshalJSON (data []byte ) (err error ) {
353
- return apijson .UnmarshalRoot (data , r )
354
- }
355
-
356
- func (r configModePlanJSON ) RawJSON () string {
357
- return r .raw
358
- }
359
-
360
331
type ConfigProvider struct {
361
332
Models map [string ]ConfigProviderModel `json:"models,required"`
362
333
ID string `json:"id"`
@@ -548,6 +519,8 @@ type Keybinds struct {
548
519
ProjectInit string `json:"project_init,required"`
549
520
// Compact the session
550
521
SessionCompact string `json:"session_compact,required"`
522
+ // Export session to editor
523
+ SessionExport string `json:"session_export,required"`
551
524
// Interrupt current session
552
525
SessionInterrupt string `json:"session_interrupt,required"`
553
526
// List all sessions
@@ -595,6 +568,7 @@ type keybindsJSON struct {
595
568
ModelList apijson.Field
596
569
ProjectInit apijson.Field
597
570
SessionCompact apijson.Field
571
+ SessionExport apijson.Field
598
572
SessionInterrupt apijson.Field
599
573
SessionList apijson.Field
600
574
SessionNew apijson.Field
@@ -706,6 +680,30 @@ func (r McpRemoteType) IsKnown() bool {
706
680
return false
707
681
}
708
682
683
+ type Mode struct {
684
+ Model string `json:"model"`
685
+ Prompt string `json:"prompt"`
686
+ Tools map [string ]bool `json:"tools"`
687
+ JSON modeJSON `json:"-"`
688
+ }
689
+
690
+ // modeJSON contains the JSON metadata for the struct [Mode]
691
+ type modeJSON struct {
692
+ Model apijson.Field
693
+ Prompt apijson.Field
694
+ Tools apijson.Field
695
+ raw string
696
+ ExtraFields map [string ]apijson.Field
697
+ }
698
+
699
+ func (r * Mode ) UnmarshalJSON (data []byte ) (err error ) {
700
+ return apijson .UnmarshalRoot (data , r )
701
+ }
702
+
703
+ func (r modeJSON ) RawJSON () string {
704
+ return r .raw
705
+ }
706
+
709
707
type Model struct {
710
708
ID string `json:"id,required"`
711
709
Attachment bool `json:"attachment,required"`
0 commit comments