runpane 2.3.13 → 2.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -186,6 +186,19 @@ exports.RUNPANE_CONTRACT = {
186
186
  "paneCreateResult"
187
187
  ]
188
188
  },
189
+ {
190
+ "name": "panels create",
191
+ "summary": "Create a terminal-backed tool panel inside an existing Pane session.",
192
+ "usage": [
193
+ "runpane panels create --pane <pane-id> --agent <codex|claude> [--no-focus] [--wait-ready] --yes [--json]",
194
+ "runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]"
195
+ ],
196
+ "mutates": true,
197
+ "jsonSchemas": [
198
+ "panelCreateRequest",
199
+ "panelCreateResult"
200
+ ]
201
+ },
189
202
  {
190
203
  "name": "panels list",
191
204
  "summary": "List tool panels inside a Pane session.",
@@ -240,6 +253,18 @@ exports.RUNPANE_CONTRACT = {
240
253
  "panelSubmitResult"
241
254
  ]
242
255
  },
256
+ {
257
+ "name": "panels submit-composer",
258
+ "summary": "Submit an agent composer using the panel-appropriate key sequence.",
259
+ "usage": [
260
+ "runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]"
261
+ ],
262
+ "mutates": true,
263
+ "jsonSchemas": [
264
+ "panelSubmitComposerRequest",
265
+ "panelSubmitComposerResult"
266
+ ]
267
+ },
243
268
  {
244
269
  "name": "panels wait",
245
270
  "summary": "Wait for a terminal panel to initialize, become ready/idle, or contain text.",
@@ -458,6 +483,16 @@ exports.RUNPANE_CONTRACT = {
458
483
  "name": "--input-file",
459
484
  "value": "<path|->",
460
485
  "description": "Read panel input from a file or stdin."
486
+ },
487
+ {
488
+ "name": "--source",
489
+ "value": "<user|agent>",
490
+ "description": "Identify whether a local-control mutation is user-initiated or agent/orchestrator-initiated."
491
+ },
492
+ {
493
+ "name": "--strategy",
494
+ "value": "<auto|codex-ctrl-enter|enter>",
495
+ "description": "Composer submit key sequence strategy for panels submit-composer."
461
496
  }
462
497
  ],
463
498
  "localBoolean": [
@@ -468,6 +503,10 @@ exports.RUNPANE_CONTRACT = {
468
503
  {
469
504
  "name": "--wait-ready",
470
505
  "description": "Wait for created terminal panels to be ready before returning."
506
+ },
507
+ {
508
+ "name": "--no-focus",
509
+ "description": "Create the panel in the background without changing the active panel."
471
510
  }
472
511
  ]
473
512
  },
@@ -487,6 +526,7 @@ exports.RUNPANE_CONTRACT = {
487
526
  " runpane repos add --path <path> [--name <name>]",
488
527
  " runpane panes list [--repo <selector>] [--json]",
489
528
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [--wait-ready]",
529
+ " runpane panels create --pane <pane-id> --agent codex --no-focus --yes",
490
530
  " runpane panels list --pane <pane-id> [--json]",
491
531
  " runpane panels output --panel <panel-id> [--limit <count>] [--json]",
492
532
  " runpane panels screen --panel <panel-id> [--limit <count>] [--json]",
@@ -765,6 +805,39 @@ exports.RUNPANE_CONTRACT = {
765
805
  " --interval-ms <milliseconds> Poll interval; defaults to 500",
766
806
  " --pane-dir <path> Connect to a specific Pane data directory",
767
807
  " --json Print machine-readable output"
808
+ ],
809
+ "panels create": [
810
+ "Create a terminal-backed tool panel inside an existing Pane session.",
811
+ "",
812
+ "Usage:",
813
+ " runpane panels create --pane <pane-id> --agent <codex|claude> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]",
814
+ " runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]",
815
+ "",
816
+ "Options:",
817
+ " --pane <pane-id> Existing Pane session to add the panel to.",
818
+ " --agent <codex|claude> Built-in agent command template to launch.",
819
+ " --tool-command <command> Custom terminal command to launch.",
820
+ " --title <title> Panel title override.",
821
+ " --initial-input, --prompt Initial input to send after the tool starts.",
822
+ " --initial-input-file <path|-> Read initial input from a file or stdin.",
823
+ " --no-focus Create the panel in the background.",
824
+ " --source <user|agent> Mark the mutation source; agent implies background creation.",
825
+ " --wait-ready Wait until the terminal tool is ready.",
826
+ " --ready-timeout-ms <ms> Readiness wait timeout.",
827
+ " --yes Skip confirmation prompts.",
828
+ " --json Print JSON output."
829
+ ],
830
+ "panels submit-composer": [
831
+ "Submit an agent composer using the panel-appropriate key sequence.",
832
+ "",
833
+ "Usage:",
834
+ " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]",
835
+ "",
836
+ "Options:",
837
+ " --panel <panel-id> Terminal panel id.",
838
+ " --strategy <strategy> Defaults to auto; Codex sends Ctrl+Enter and other panels send Enter.",
839
+ " --yes Skip confirmation prompts.",
840
+ " --json Print JSON output."
768
841
  ]
769
842
  },
770
843
  "pip": {
@@ -782,6 +855,7 @@ exports.RUNPANE_CONTRACT = {
782
855
  " runpane repos add --path <path> [--name <name>]",
783
856
  " runpane panes list [--repo <selector>] [--json]",
784
857
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [--wait-ready]",
858
+ " python -m runpane panels create --pane <pane-id> --agent codex --no-focus --yes",
785
859
  " runpane panels list --pane <pane-id> [--json]",
786
860
  " runpane panels output --panel <panel-id> [--limit <count>] [--json]",
787
861
  " runpane panels screen --panel <panel-id> [--limit <count>] [--json]",
@@ -1049,6 +1123,39 @@ exports.RUNPANE_CONTRACT = {
1049
1123
  " --interval-ms <milliseconds> Poll interval; defaults to 500",
1050
1124
  " --pane-dir <path> Connect to a specific Pane data directory",
1051
1125
  " --json Print machine-readable output"
1126
+ ],
1127
+ "panels create": [
1128
+ "Create a terminal-backed tool panel inside an existing Pane session.",
1129
+ "",
1130
+ "Usage:",
1131
+ " python -m runpane panels create --pane <pane-id> --agent <codex|claude> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]",
1132
+ " python -m runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]",
1133
+ "",
1134
+ "Options:",
1135
+ " --pane <pane-id> Existing Pane session to add the panel to.",
1136
+ " --agent <codex|claude> Built-in agent command template to launch.",
1137
+ " --tool-command <command> Custom terminal command to launch.",
1138
+ " --title <title> Panel title override.",
1139
+ " --initial-input, --prompt Initial input to send after the tool starts.",
1140
+ " --initial-input-file <path|-> Read initial input from a file or stdin.",
1141
+ " --no-focus Create the panel in the background.",
1142
+ " --source <user|agent> Mark the mutation source; agent implies background creation.",
1143
+ " --wait-ready Wait until the terminal tool is ready.",
1144
+ " --ready-timeout-ms <ms> Readiness wait timeout.",
1145
+ " --yes Skip confirmation prompts.",
1146
+ " --json Print JSON output."
1147
+ ],
1148
+ "panels submit-composer": [
1149
+ "Submit an agent composer using the panel-appropriate key sequence.",
1150
+ "",
1151
+ "Usage:",
1152
+ " python -m runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]",
1153
+ "",
1154
+ "Options:",
1155
+ " --panel <panel-id> Terminal panel id.",
1156
+ " --strategy <strategy> Defaults to auto; Codex sends Ctrl+Enter and other panels send Enter.",
1157
+ " --yes Skip confirmation prompts.",
1158
+ " --json Print JSON output."
1052
1159
  ]
1053
1160
  }
1054
1161
  },
@@ -1378,6 +1485,32 @@ exports.RUNPANE_CONTRACT = {
1378
1485
  "--interval-ms",
1379
1486
  "500",
1380
1487
  "--json"
1488
+ ],
1489
+ [
1490
+ "panels",
1491
+ "create",
1492
+ "--pane",
1493
+ "pane-1",
1494
+ "--agent",
1495
+ "codex",
1496
+ "--source",
1497
+ "agent",
1498
+ "--no-focus",
1499
+ "--wait-ready",
1500
+ "--ready-timeout-ms",
1501
+ "15000",
1502
+ "--yes",
1503
+ "--json"
1504
+ ],
1505
+ [
1506
+ "panels",
1507
+ "submit-composer",
1508
+ "--panel",
1509
+ "panel-1",
1510
+ "--strategy",
1511
+ "auto",
1512
+ "--yes",
1513
+ "--json"
1381
1514
  ]
1382
1515
  ],
1383
1516
  "topLevelHelpIncludes": [
@@ -2768,6 +2901,247 @@ exports.RUNPANE_CONTRACT = {
2768
2901
  }
2769
2902
  },
2770
2903
  "additionalProperties": false
2904
+ },
2905
+ "panelCreateRequest": {
2906
+ "type": "object",
2907
+ "required": [
2908
+ "paneId",
2909
+ "tool"
2910
+ ],
2911
+ "properties": {
2912
+ "paneId": {
2913
+ "type": "string"
2914
+ },
2915
+ "type": {
2916
+ "const": "terminal"
2917
+ },
2918
+ "tool": {
2919
+ "type": "object",
2920
+ "additionalProperties": true
2921
+ },
2922
+ "noFocus": {
2923
+ "type": "boolean"
2924
+ },
2925
+ "source": {
2926
+ "enum": [
2927
+ "user",
2928
+ "agent"
2929
+ ]
2930
+ },
2931
+ "waitReady": {
2932
+ "type": "boolean"
2933
+ },
2934
+ "readyTimeoutMs": {
2935
+ "type": "number"
2936
+ }
2937
+ },
2938
+ "additionalProperties": false
2939
+ },
2940
+ "panelCreateResult": {
2941
+ "type": "object",
2942
+ "required": [
2943
+ "ok",
2944
+ "paneId",
2945
+ "panelId",
2946
+ "title",
2947
+ "active",
2948
+ "tool"
2949
+ ],
2950
+ "properties": {
2951
+ "ok": {
2952
+ "type": "boolean"
2953
+ },
2954
+ "paneId": {
2955
+ "type": "string"
2956
+ },
2957
+ "panelId": {
2958
+ "type": "string"
2959
+ },
2960
+ "title": {
2961
+ "type": "string"
2962
+ },
2963
+ "active": {
2964
+ "type": "boolean"
2965
+ },
2966
+ "tool": {
2967
+ "type": "object",
2968
+ "required": [
2969
+ "title",
2970
+ "command"
2971
+ ],
2972
+ "properties": {
2973
+ "title": {
2974
+ "type": "string"
2975
+ },
2976
+ "command": {
2977
+ "type": "string"
2978
+ },
2979
+ "agent": {
2980
+ "enum": [
2981
+ "codex",
2982
+ "claude"
2983
+ ]
2984
+ }
2985
+ },
2986
+ "additionalProperties": false
2987
+ },
2988
+ "readiness": {
2989
+ "type": "object",
2990
+ "required": [
2991
+ "ok",
2992
+ "condition",
2993
+ "matched",
2994
+ "timedOut",
2995
+ "elapsedMs",
2996
+ "state"
2997
+ ],
2998
+ "properties": {
2999
+ "ok": {
3000
+ "type": "boolean"
3001
+ },
3002
+ "condition": {
3003
+ "enum": [
3004
+ "initialized",
3005
+ "ready",
3006
+ "idle",
3007
+ "text"
3008
+ ]
3009
+ },
3010
+ "matched": {
3011
+ "type": "boolean"
3012
+ },
3013
+ "timedOut": {
3014
+ "type": "boolean"
3015
+ },
3016
+ "elapsedMs": {
3017
+ "type": "number"
3018
+ },
3019
+ "state": {
3020
+ "type": "object",
3021
+ "required": [
3022
+ "initialized"
3023
+ ],
3024
+ "properties": {
3025
+ "initialized": {
3026
+ "type": "boolean"
3027
+ },
3028
+ "isAlternateScreen": {
3029
+ "type": "boolean"
3030
+ },
3031
+ "activityStatus": {
3032
+ "enum": [
3033
+ "active",
3034
+ "idle"
3035
+ ]
3036
+ },
3037
+ "isCliReady": {
3038
+ "type": "boolean"
3039
+ },
3040
+ "isCliPanel": {
3041
+ "type": "boolean"
3042
+ },
3043
+ "agentType": {
3044
+ "enum": [
3045
+ "codex",
3046
+ "claude"
3047
+ ]
3048
+ },
3049
+ "lastActivity": {
3050
+ "type": "string"
3051
+ }
3052
+ },
3053
+ "additionalProperties": false
3054
+ },
3055
+ "blocked": {
3056
+ "type": "object",
3057
+ "required": [
3058
+ "kind",
3059
+ "message"
3060
+ ],
3061
+ "properties": {
3062
+ "kind": {
3063
+ "enum": [
3064
+ "codex-update",
3065
+ "agent-prompt",
3066
+ "unknown"
3067
+ ]
3068
+ },
3069
+ "message": {
3070
+ "type": "string"
3071
+ },
3072
+ "suggestedCommand": {
3073
+ "type": "string"
3074
+ }
3075
+ },
3076
+ "additionalProperties": false
3077
+ },
3078
+ "nextCommand": {
3079
+ "type": "string"
3080
+ }
3081
+ },
3082
+ "additionalProperties": false
3083
+ },
3084
+ "nextCommand": {
3085
+ "type": "string"
3086
+ }
3087
+ },
3088
+ "additionalProperties": false
3089
+ },
3090
+ "panelSubmitComposerRequest": {
3091
+ "type": "object",
3092
+ "required": [
3093
+ "panelId"
3094
+ ],
3095
+ "properties": {
3096
+ "panelId": {
3097
+ "type": "string"
3098
+ },
3099
+ "strategy": {
3100
+ "enum": [
3101
+ "auto",
3102
+ "codex-ctrl-enter",
3103
+ "enter"
3104
+ ]
3105
+ }
3106
+ },
3107
+ "additionalProperties": false
3108
+ },
3109
+ "panelSubmitComposerResult": {
3110
+ "type": "object",
3111
+ "required": [
3112
+ "ok",
3113
+ "panelId",
3114
+ "inputBytes",
3115
+ "strategy",
3116
+ "sentAt"
3117
+ ],
3118
+ "properties": {
3119
+ "ok": {
3120
+ "const": true
3121
+ },
3122
+ "panelId": {
3123
+ "type": "string"
3124
+ },
3125
+ "paneId": {
3126
+ "type": "string"
3127
+ },
3128
+ "inputBytes": {
3129
+ "type": "number"
3130
+ },
3131
+ "strategy": {
3132
+ "enum": [
3133
+ "codex-ctrl-enter",
3134
+ "enter"
3135
+ ]
3136
+ },
3137
+ "sentAt": {
3138
+ "type": "string"
3139
+ },
3140
+ "nextCommand": {
3141
+ "type": "string"
3142
+ }
3143
+ },
3144
+ "additionalProperties": false
2771
3145
  }
2772
3146
  },
2773
3147
  "agentContext": {
@@ -2861,6 +3235,20 @@ exports.RUNPANE_CONTRACT = {
2861
3235
  "--json"
2862
3236
  ]
2863
3237
  },
3238
+ {
3239
+ "name": "panels create",
3240
+ "summary": "Create sibling reviewer or helper tabs inside an existing pane without stealing focus from the implementation tab.",
3241
+ "arguments": [
3242
+ "--pane <pane-id>",
3243
+ "--agent <codex|claude>",
3244
+ "--tool-command <command>",
3245
+ "--source <user|agent>",
3246
+ "--no-focus",
3247
+ "--wait-ready",
3248
+ "--yes",
3249
+ "--json"
3250
+ ]
3251
+ },
2864
3252
  {
2865
3253
  "name": "panels list",
2866
3254
  "summary": "List tool panels inside a Pane session.",
@@ -2914,6 +3302,16 @@ exports.RUNPANE_CONTRACT = {
2914
3302
  "--pane-dir <path>"
2915
3303
  ]
2916
3304
  },
3305
+ {
3306
+ "name": "panels submit-composer",
3307
+ "summary": "Submit an agent composer with the correct key sequence, including Ctrl+Enter for Codex.",
3308
+ "arguments": [
3309
+ "--panel <panel-id>",
3310
+ "--strategy <auto|codex-ctrl-enter|enter>",
3311
+ "--yes",
3312
+ "--json"
3313
+ ]
3314
+ },
2917
3315
  {
2918
3316
  "name": "panels wait",
2919
3317
  "summary": "Wait for terminal initialized, ready, idle, or text state with compact output.",
@@ -3694,6 +4092,138 @@ exports.RUNPANE_CONTRACT = {
3694
4092
  "If blocked is present, do not assume success. Use blocked.suggestedCommand or inspect `panels screen`.",
3695
4093
  "The default timeout and screen are intentionally small for agent context safety."
3696
4094
  ]
4095
+ },
4096
+ "panels create": {
4097
+ "name": "panels create",
4098
+ "summary": "Create a terminal-backed tool panel inside an existing pane.",
4099
+ "details": "Use this to add reviewer or helper tabs to the current pane without creating a new session. Agent/orchestrator-created panels should pass --source agent or --no-focus so the user stays in the implementation tab. The daemon initializes the terminal immediately and can wait for CLI readiness.",
4100
+ "requiresPaneDaemon": true,
4101
+ "mutates": true,
4102
+ "arguments": [
4103
+ {
4104
+ "name": "--pane",
4105
+ "value": "<pane-id>",
4106
+ "required": true,
4107
+ "description": "Existing Pane session id to add the panel to."
4108
+ },
4109
+ {
4110
+ "name": "--agent",
4111
+ "value": "<codex|claude>",
4112
+ "required": false,
4113
+ "description": "Built-in agent command template to launch."
4114
+ },
4115
+ {
4116
+ "name": "--tool-command",
4117
+ "value": "<command>",
4118
+ "required": false,
4119
+ "description": "Custom terminal command to launch instead of a built-in agent."
4120
+ },
4121
+ {
4122
+ "name": "--title",
4123
+ "value": "<title>",
4124
+ "required": false,
4125
+ "description": "Panel title override."
4126
+ },
4127
+ {
4128
+ "name": "--initial-input",
4129
+ "value": "<text>",
4130
+ "required": false,
4131
+ "description": "Initial input to send after the tool starts."
4132
+ },
4133
+ {
4134
+ "name": "--initial-input-file",
4135
+ "value": "<path|->",
4136
+ "required": false,
4137
+ "description": "Read initial input from a file or stdin."
4138
+ },
4139
+ {
4140
+ "name": "--source",
4141
+ "value": "<user|agent>",
4142
+ "required": false,
4143
+ "description": "Mutation source; agent implies background creation."
4144
+ },
4145
+ {
4146
+ "name": "--no-focus",
4147
+ "required": false,
4148
+ "description": "Create the panel in the background without changing active panel."
4149
+ },
4150
+ {
4151
+ "name": "--wait-ready",
4152
+ "required": false,
4153
+ "description": "Wait until the terminal tool is ready."
4154
+ },
4155
+ {
4156
+ "name": "--ready-timeout-ms",
4157
+ "value": "<ms>",
4158
+ "required": false,
4159
+ "description": "Readiness wait timeout."
4160
+ },
4161
+ {
4162
+ "name": "--yes",
4163
+ "required": false,
4164
+ "description": "Skip confirmation for this mutating command."
4165
+ },
4166
+ {
4167
+ "name": "--json",
4168
+ "required": false,
4169
+ "description": "Print machine-readable output."
4170
+ }
4171
+ ],
4172
+ "examples": [
4173
+ "runpane panels create --pane <pane-id> --agent claude --source agent --no-focus --wait-ready --yes --json",
4174
+ "runpane panels create --pane <pane-id> --agent codex --source agent --no-focus --wait-ready --yes --json"
4175
+ ],
4176
+ "jsonSchemas": [
4177
+ "panelCreateRequest",
4178
+ "panelCreateResult"
4179
+ ],
4180
+ "notes": [
4181
+ "Use this for same-pane reviewer loops after PR creation/testing.",
4182
+ "For agent-created panels, prefer --source agent or --no-focus to avoid stealing focus from the user or implementation tab."
4183
+ ]
4184
+ },
4185
+ "panels submit-composer": {
4186
+ "name": "panels submit-composer",
4187
+ "summary": "Submit an agent composer using the panel-appropriate key sequence.",
4188
+ "details": "Use this after sending text into an agent composer when plain Enter is not the right submit action. Auto mode sends Ctrl+Enter for Codex panels and Enter for other panels.",
4189
+ "requiresPaneDaemon": true,
4190
+ "mutates": true,
4191
+ "arguments": [
4192
+ {
4193
+ "name": "--panel",
4194
+ "value": "<panel-id>",
4195
+ "required": true,
4196
+ "description": "Terminal panel id."
4197
+ },
4198
+ {
4199
+ "name": "--strategy",
4200
+ "value": "<auto|codex-ctrl-enter|enter>",
4201
+ "required": false,
4202
+ "description": "Composer submit key sequence strategy."
4203
+ },
4204
+ {
4205
+ "name": "--yes",
4206
+ "required": false,
4207
+ "description": "Skip confirmation for this mutating command."
4208
+ },
4209
+ {
4210
+ "name": "--json",
4211
+ "required": false,
4212
+ "description": "Print machine-readable output."
4213
+ }
4214
+ ],
4215
+ "examples": [
4216
+ "runpane panels submit-composer --panel <codex-panel-id> --strategy auto --yes --json",
4217
+ "runpane panels submit-composer --panel <panel-id> --strategy enter --yes --json"
4218
+ ],
4219
+ "jsonSchemas": [
4220
+ "panelSubmitComposerRequest",
4221
+ "panelSubmitComposerResult"
4222
+ ],
4223
+ "notes": [
4224
+ "Use `panels input` or `panels submit` to write prompt text first; this command only submits the current composer.",
4225
+ "Codex composer submission uses ESC [13;5u, not a plain Enter."
4226
+ ]
3697
4227
  }
3698
4228
  },
3699
4229
  "managedBlock": [