runpane 2.4.28 → 2.4.30

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,18 @@ exports.RUNPANE_CONTRACT = {
186
186
  "paneCreateResult"
187
187
  ]
188
188
  },
189
+ {
190
+ "name": "panes archive",
191
+ "summary": "Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.",
192
+ "usage": [
193
+ "runpane panes archive --pane <pane-id> [--source user|agent] [--force] --yes [--json]"
194
+ ],
195
+ "mutates": true,
196
+ "jsonSchemas": [
197
+ "paneArchiveRequest",
198
+ "paneArchiveResult"
199
+ ]
200
+ },
189
201
  {
190
202
  "name": "panels create",
191
203
  "summary": "Create a terminal-backed tool panel inside an existing Pane session.",
@@ -511,6 +523,10 @@ exports.RUNPANE_CONTRACT = {
511
523
  {
512
524
  "name": "--focus",
513
525
  "description": "Explicitly focus the created pane or panel."
526
+ },
527
+ {
528
+ "name": "--force",
529
+ "description": "Archive even if the pane's branch has uncommitted, untracked, or unpushed changes."
514
530
  }
515
531
  ]
516
532
  },
@@ -530,6 +546,7 @@ exports.RUNPANE_CONTRACT = {
530
546
  " runpane repos add --path <path> [--name <name>]",
531
547
  " runpane panes list [--repo <selector>] [--json]",
532
548
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [--source user|agent] [--focus|--no-focus] [--wait-ready]",
549
+ " runpane panes archive --pane <pane-id> [--source user|agent] [--force] --yes",
533
550
  " runpane panels create --pane <pane-id> --agent <codex|claude> [--source user|agent] [--focus|--no-focus] --yes",
534
551
  " runpane panels list --pane <pane-id> [--json]",
535
552
  " runpane panels output --panel <panel-id> [--limit <count>] [--json]",
@@ -674,8 +691,9 @@ exports.RUNPANE_CONTRACT = {
674
691
  "Commands:",
675
692
  " runpane panes list [--repo <selector>] [--json]",
676
693
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]",
694
+ " runpane panes archive --pane <pane-id> [--force] [--source user|agent] --yes [--json]",
677
695
  "",
678
- "Run \"runpane help panes list\" or \"runpane help panes create\" for command-specific options."
696
+ "Run \"runpane help panes list\", \"runpane help panes create\", or \"runpane help panes archive\" for command-specific options."
679
697
  ],
680
698
  "panes list": [
681
699
  "Usage:",
@@ -719,6 +737,20 @@ exports.RUNPANE_CONTRACT = {
719
737
  " --dry-run Validate and preview without creating panes",
720
738
  " --yes Skip confirmation for mutating commands"
721
739
  ],
740
+ "panes archive": [
741
+ "Usage:",
742
+ " runpane panes archive --pane <pane-id> [--source user|agent] [--force] --yes [--json]",
743
+ "",
744
+ "Archives a Pane (session) exactly like the UI Archive action, including removal of its Pane-managed git worktree. Refuses to archive a pane with uncommitted, untracked, or unpushed-to-remote changes unless --force is passed. Waits for worktree removal to finish before returning.",
745
+ "",
746
+ "Options:",
747
+ " --pane <pane-id> Pane/session id to archive",
748
+ " --source <user|agent> Mark mutation source",
749
+ " --force Archive even if the pane has uncommitted, untracked, or unpushed changes",
750
+ " --pane-dir <path> Connect to a specific Pane data directory",
751
+ " --json Print machine-readable output",
752
+ " --yes Skip confirmation for mutating commands"
753
+ ],
722
754
  "panels": [
723
755
  "Terminal-backed panel commands.",
724
756
  "",
@@ -894,6 +926,7 @@ exports.RUNPANE_CONTRACT = {
894
926
  " runpane repos add --path <path> [--name <name>]",
895
927
  " runpane panes list [--repo <selector>] [--json]",
896
928
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [--source user|agent] [--focus|--no-focus] [--wait-ready]",
929
+ " runpane panes archive --pane <pane-id> [--source user|agent] [--force] --yes",
897
930
  " python -m runpane panels create --pane <pane-id> --agent <codex|claude> [--source user|agent] [--focus|--no-focus] --yes",
898
931
  " runpane panels list --pane <pane-id> [--json]",
899
932
  " runpane panels output --panel <panel-id> [--limit <count>] [--json]",
@@ -1027,8 +1060,9 @@ exports.RUNPANE_CONTRACT = {
1027
1060
  "Commands:",
1028
1061
  " runpane panes list [--repo <selector>] [--json]",
1029
1062
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]",
1063
+ " runpane panes archive --pane <pane-id> [--force] [--source user|agent] --yes [--json]",
1030
1064
  "",
1031
- "Run \"runpane help panes list\" or \"runpane help panes create\" for command-specific options."
1065
+ "Run \"runpane help panes list\", \"runpane help panes create\", or \"runpane help panes archive\" for command-specific options."
1032
1066
  ],
1033
1067
  "panes list": [
1034
1068
  "Usage:",
@@ -1072,6 +1106,20 @@ exports.RUNPANE_CONTRACT = {
1072
1106
  " --dry-run Validate and preview without creating panes",
1073
1107
  " --yes Skip confirmation for mutating commands"
1074
1108
  ],
1109
+ "panes archive": [
1110
+ "Usage:",
1111
+ " runpane panes archive --pane <pane-id> [--source user|agent] [--force] --yes [--json]",
1112
+ "",
1113
+ "Archives a Pane (session) exactly like the UI Archive action, including removal of its Pane-managed git worktree. Refuses to archive a pane with uncommitted, untracked, or unpushed-to-remote changes unless --force is passed. Waits for worktree removal to finish before returning.",
1114
+ "",
1115
+ "Options:",
1116
+ " --pane <pane-id>",
1117
+ " --source <user|agent>",
1118
+ " --force",
1119
+ " --pane-dir <path>",
1120
+ " --json",
1121
+ " --yes"
1122
+ ],
1075
1123
  "panels": [
1076
1124
  "Terminal-backed panel commands.",
1077
1125
  "",
@@ -1303,6 +1351,7 @@ exports.RUNPANE_CONTRACT = {
1303
1351
  "runpane panes list --repo active --json",
1304
1352
  "runpane panes create --repo active --name issue-252 --agent <agent> --prompt \"Kick off the discussion skill for issue 252\" --source agent --no-focus --wait-ready --yes --json",
1305
1353
  "runpane panes create --from-json panes.json --yes --json",
1354
+ "runpane panes archive --pane <pane-id> --source agent --yes --json",
1306
1355
  "runpane panels list --pane <pane-id> --json",
1307
1356
  "runpane panels output --panel <panel-id> --limit 200 --json",
1308
1357
  "printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes --json",
@@ -1324,6 +1373,7 @@ exports.RUNPANE_CONTRACT = {
1324
1373
  "`runpane repos add` registers an existing git repository with the running local Pane daemon. It does not create directories or initialize git repositories by default.",
1325
1374
  "`runpane panes list` lists Pane sessions, optionally scoped to one saved repository.",
1326
1375
  "`runpane panes create` connects to the running local Pane daemon, resolves the requested saved base repository, creates user-visible Pane sessions backed by Pane-managed worktrees/branches, opens terminal-backed tool tabs, and optionally sends initial input to the started tool. Built-in agent panes and `--source agent` default to background/no-focus unless `--focus` is passed.",
1376
+ "`runpane panes archive` archives a Pane exactly like the UI Archive action, including removal of its Pane-managed git worktree, and refuses (unless `--force`) when the pane's branch has uncommitted, untracked, or unpushed-to-remote changes. It waits for worktree removal to finish before returning and reports the outcome in `worktreeCleanup`.",
1327
1377
  "`runpane panels list` lists tool panels inside one Pane session.",
1328
1378
  "`runpane panels output` reads bounded recent terminal output from one panel and strips common terminal control noise for agent use.",
1329
1379
  "`runpane panels input` sends exact input bytes to one terminal panel. Prefer `--input-file` for newlines, Ctrl-C, quotes, or shell-sensitive text.",
@@ -1477,6 +1527,17 @@ exports.RUNPANE_CONTRACT = {
1477
1527
  "--yes",
1478
1528
  "--json"
1479
1529
  ],
1530
+ [
1531
+ "panes",
1532
+ "archive",
1533
+ "--pane",
1534
+ "session-1",
1535
+ "--force",
1536
+ "--source",
1537
+ "agent",
1538
+ "--yes",
1539
+ "--json"
1540
+ ],
1480
1541
  [
1481
1542
  "panels",
1482
1543
  "list",
@@ -1614,6 +1675,7 @@ exports.RUNPANE_CONTRACT = {
1614
1675
  "runpane repos add",
1615
1676
  "runpane panes list",
1616
1677
  "runpane panes create",
1678
+ "runpane panes archive",
1617
1679
  "runpane panels create",
1618
1680
  "runpane panels list",
1619
1681
  "runpane panels output",
@@ -2504,6 +2566,159 @@ exports.RUNPANE_CONTRACT = {
2504
2566
  },
2505
2567
  "additionalProperties": false
2506
2568
  },
2569
+ "paneArchiveRequest": {
2570
+ "type": "object",
2571
+ "required": [
2572
+ "paneId"
2573
+ ],
2574
+ "properties": {
2575
+ "paneId": {
2576
+ "type": "string"
2577
+ },
2578
+ "force": {
2579
+ "type": "boolean"
2580
+ },
2581
+ "source": {
2582
+ "enum": [
2583
+ "user",
2584
+ "agent"
2585
+ ]
2586
+ }
2587
+ },
2588
+ "additionalProperties": false
2589
+ },
2590
+ "paneArchiveResult": {
2591
+ "oneOf": [
2592
+ {
2593
+ "type": "object",
2594
+ "required": [
2595
+ "ok",
2596
+ "paneId",
2597
+ "archived",
2598
+ "forced",
2599
+ "worktreeCleanup",
2600
+ "safetyCheck"
2601
+ ],
2602
+ "properties": {
2603
+ "ok": {
2604
+ "type": "boolean"
2605
+ },
2606
+ "paneId": {
2607
+ "type": "string"
2608
+ },
2609
+ "archived": {
2610
+ "const": true
2611
+ },
2612
+ "forced": {
2613
+ "type": "boolean"
2614
+ },
2615
+ "worktreeCleanup": {
2616
+ "enum": [
2617
+ "completed",
2618
+ "failed",
2619
+ "timeout",
2620
+ "not-applicable"
2621
+ ]
2622
+ },
2623
+ "worktreePath": {
2624
+ "type": "string"
2625
+ },
2626
+ "safetyCheck": {
2627
+ "type": "object",
2628
+ "required": [
2629
+ "performed"
2630
+ ],
2631
+ "properties": {
2632
+ "performed": {
2633
+ "type": "boolean"
2634
+ },
2635
+ "hasUncommittedChanges": {
2636
+ "type": "boolean"
2637
+ },
2638
+ "hasUntrackedFiles": {
2639
+ "type": "boolean"
2640
+ },
2641
+ "hasUpstream": {
2642
+ "type": "boolean"
2643
+ },
2644
+ "unpushedCommits": {
2645
+ "type": "number"
2646
+ }
2647
+ },
2648
+ "additionalProperties": false
2649
+ }
2650
+ },
2651
+ "additionalProperties": false
2652
+ },
2653
+ {
2654
+ "type": "object",
2655
+ "required": [
2656
+ "ok",
2657
+ "paneId",
2658
+ "blocked",
2659
+ "nextCommand"
2660
+ ],
2661
+ "properties": {
2662
+ "ok": {
2663
+ "const": false
2664
+ },
2665
+ "paneId": {
2666
+ "type": "string"
2667
+ },
2668
+ "blocked": {
2669
+ "type": "object",
2670
+ "required": [
2671
+ "code",
2672
+ "message",
2673
+ "safetyCheck"
2674
+ ],
2675
+ "properties": {
2676
+ "code": {
2677
+ "enum": [
2678
+ "uncommitted-changes",
2679
+ "unpushed-commits",
2680
+ "uncommitted-and-unpushed",
2681
+ "status-unknown"
2682
+ ]
2683
+ },
2684
+ "message": {
2685
+ "type": "string"
2686
+ },
2687
+ "safetyCheck": {
2688
+ "type": "object",
2689
+ "required": [
2690
+ "performed"
2691
+ ],
2692
+ "properties": {
2693
+ "performed": {
2694
+ "type": "boolean"
2695
+ },
2696
+ "hasUncommittedChanges": {
2697
+ "type": "boolean"
2698
+ },
2699
+ "hasUntrackedFiles": {
2700
+ "type": "boolean"
2701
+ },
2702
+ "hasUpstream": {
2703
+ "type": "boolean"
2704
+ },
2705
+ "unpushedCommits": {
2706
+ "type": "number"
2707
+ }
2708
+ },
2709
+ "additionalProperties": false
2710
+ }
2711
+ },
2712
+ "additionalProperties": false
2713
+ },
2714
+ "nextCommand": {
2715
+ "type": "string"
2716
+ }
2717
+ },
2718
+ "additionalProperties": false
2719
+ }
2720
+ ]
2721
+ },
2507
2722
  "panelListResult": {
2508
2723
  "type": "object",
2509
2724
  "required": [
@@ -3539,6 +3754,17 @@ exports.RUNPANE_CONTRACT = {
3539
3754
  "--json"
3540
3755
  ]
3541
3756
  },
3757
+ {
3758
+ "name": "panes archive",
3759
+ "summary": "Archive a Pane exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.",
3760
+ "arguments": [
3761
+ "--pane <pane-id>",
3762
+ "--source <user|agent>",
3763
+ "--force",
3764
+ "--yes",
3765
+ "--json"
3766
+ ]
3767
+ },
3542
3768
  {
3543
3769
  "name": "panels create",
3544
3770
  "summary": "Create reviewer/helper terminal tabs inside an existing Pane; they share that Pane's worktree.",
@@ -4080,6 +4306,55 @@ exports.RUNPANE_CONTRACT = {
4080
4306
  "If readiness returns blocked, inspect blocked.suggestedCommand rather than guessing which prompt to answer."
4081
4307
  ]
4082
4308
  },
4309
+ "panes archive": {
4310
+ "name": "panes archive",
4311
+ "summary": "Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.",
4312
+ "details": "Use this to close out a Pane once its PR has merged. Refuses to archive (unless --force) when the pane's branch has uncommitted, untracked, or unpushed-to-remote changes, so an agent cannot silently discard work. A merged and pushed branch has no unpushed commits, so it archives cleanly. Waits for worktree removal to finish before returning.",
4313
+ "requiresPaneDaemon": true,
4314
+ "mutates": true,
4315
+ "arguments": [
4316
+ {
4317
+ "name": "--pane",
4318
+ "value": "<pane-id>",
4319
+ "required": true,
4320
+ "description": "Pane/session id to archive."
4321
+ },
4322
+ {
4323
+ "name": "--source",
4324
+ "value": "<user|agent>",
4325
+ "required": false,
4326
+ "description": "Mutation source; does not change archive safety behavior."
4327
+ },
4328
+ {
4329
+ "name": "--force",
4330
+ "required": false,
4331
+ "description": "Archive even if the pane's branch has uncommitted, untracked, or unpushed changes."
4332
+ },
4333
+ {
4334
+ "name": "--yes",
4335
+ "required": false,
4336
+ "description": "Skip confirmation for mutating commands."
4337
+ },
4338
+ {
4339
+ "name": "--json",
4340
+ "required": false,
4341
+ "description": "Print machine-readable output."
4342
+ }
4343
+ ],
4344
+ "examples": [
4345
+ "runpane panes archive --pane <pane-id> --source agent --yes --json",
4346
+ "runpane panes archive --pane <pane-id> --force --yes --json"
4347
+ ],
4348
+ "jsonSchemas": [
4349
+ "paneArchiveRequest",
4350
+ "paneArchiveResult"
4351
+ ],
4352
+ "notes": [
4353
+ "If the result has ok:false with a blocked field, the pane was NOT archived; inspect blocked.code and rerun with --force if discarding the flagged work is intentional.",
4354
+ "A successful archive waits for the Pane-managed worktree to be removed before returning; check worktreeCleanup in the result for the final outcome.",
4355
+ "Archiving a main-repo Pane (no Pane-managed worktree) always succeeds immediately since nothing is deleted from disk."
4356
+ ]
4357
+ },
4083
4358
  "panels list": {
4084
4359
  "name": "panels list",
4085
4360
  "summary": "List tool panels inside a Pane session.",