runpane 2.4.123 → 2.4.125

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.
@@ -306,6 +306,18 @@ exports.RUNPANE_CONTRACT = {
306
306
  "paneRenameResult"
307
307
  ]
308
308
  },
309
+ {
310
+ "name": "panes focus",
311
+ "summary": "Raise the Pane window and select a Pane (and optionally one of its panels) on explicit user request.",
312
+ "usage": [
313
+ "runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]"
314
+ ],
315
+ "mutates": true,
316
+ "jsonSchemas": [
317
+ "paneFocusRequest",
318
+ "paneFocusResult"
319
+ ]
320
+ },
309
321
  {
310
322
  "name": "panels create",
311
323
  "summary": "Create a terminal-backed tool panel inside an existing Pane session.",
@@ -1226,6 +1238,20 @@ exports.RUNPANE_CONTRACT = {
1226
1238
  " --dry-run Validate and preview without renaming the pane",
1227
1239
  " --yes Skip confirmation for mutating commands"
1228
1240
  ],
1241
+ "panes focus": [
1242
+ "Usage:",
1243
+ " runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]",
1244
+ "",
1245
+ "Raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Steals window focus, so run it only on an explicit user request to open, focus, or show a Pane, never proactively.",
1246
+ "",
1247
+ "Options:",
1248
+ " --pane <pane-id> Pane/session id to focus",
1249
+ " --panel <panel-id> Optional panel/tab id inside the Pane to select",
1250
+ " --source <user|agent> Mutation source; does not change focus behavior",
1251
+ " --pane-dir <path> Connect to a specific Pane data directory",
1252
+ " --json Print machine-readable output",
1253
+ " --yes Skip confirmation for mutating commands"
1254
+ ],
1229
1255
  "panels": [
1230
1256
  "Terminal-backed panel commands.",
1231
1257
  "",
@@ -1831,6 +1857,20 @@ exports.RUNPANE_CONTRACT = {
1831
1857
  " --dry-run",
1832
1858
  " --yes"
1833
1859
  ],
1860
+ "panes focus": [
1861
+ "Usage:",
1862
+ " runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]",
1863
+ "",
1864
+ "Raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Steals window focus, so run it only on an explicit user request to open, focus, or show a Pane, never proactively.",
1865
+ "",
1866
+ "Options:",
1867
+ " --pane <pane-id>",
1868
+ " --panel <panel-id>",
1869
+ " --source <user|agent>",
1870
+ " --pane-dir <path>",
1871
+ " --json",
1872
+ " --yes"
1873
+ ],
1834
1874
  "panels": [
1835
1875
  "Terminal-backed panel commands.",
1836
1876
  "",
@@ -2197,6 +2237,7 @@ exports.RUNPANE_CONTRACT = {
2197
2237
  "For `panes create --wait-ready`, `initialInput.verifiedSubmitted: true` is reported only after argument attachment or composer-clear plus activity evidence. Routing input does not by itself verify submission.",
2198
2238
  "`runpane panes archive` refreshes the configured upstream, reports exact unpushed commit evidence, and refuses unsafe archive operations unless `--force` is used. Add `--dry-run` to inspect the same evidence without archiving. Successful archives wait for worktree removal and report `worktreeCleanup`.",
2199
2239
  "`runpane panes rename` trims and updates a Pane's display name without changing its worktree, branch, panels, or focus, and returns the updated pane summary.",
2240
+ "`runpane panes focus` raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Because it steals the user's window focus, run it only on an explicit user request to open, focus, show, or switch to a Pane; never focus a Pane proactively, the same doctrine that keeps `panes create` background/no-focus for `--source agent`.",
2200
2241
  "`runpane panels list` lists tool panels inside one Pane session.",
2201
2242
  "`runpane panels output` reads bounded recent terminal output from one panel and strips common terminal control noise for agent use.",
2202
2243
  "`runpane panels input` sends exact input bytes to one terminal panel. Prefer `--input-file` for newlines, Ctrl-C, quotes, or shell-sensitive text.",
@@ -2469,6 +2510,18 @@ exports.RUNPANE_CONTRACT = {
2469
2510
  "--yes",
2470
2511
  "--json"
2471
2512
  ],
2513
+ [
2514
+ "panes",
2515
+ "focus",
2516
+ "--pane",
2517
+ "session-1",
2518
+ "--panel",
2519
+ "panel-1",
2520
+ "--source",
2521
+ "user",
2522
+ "--yes",
2523
+ "--json"
2524
+ ],
2472
2525
  [
2473
2526
  "panels",
2474
2527
  "list",
@@ -4477,6 +4530,50 @@ exports.RUNPANE_CONTRACT = {
4477
4530
  },
4478
4531
  "additionalProperties": false
4479
4532
  },
4533
+ "paneFocusRequest": {
4534
+ "type": "object",
4535
+ "required": [
4536
+ "paneId"
4537
+ ],
4538
+ "properties": {
4539
+ "paneId": {
4540
+ "type": "string"
4541
+ },
4542
+ "panelId": {
4543
+ "type": "string"
4544
+ },
4545
+ "source": {
4546
+ "enum": [
4547
+ "user",
4548
+ "agent"
4549
+ ]
4550
+ }
4551
+ },
4552
+ "additionalProperties": false
4553
+ },
4554
+ "paneFocusResult": {
4555
+ "type": "object",
4556
+ "required": [
4557
+ "ok",
4558
+ "paneId",
4559
+ "focused"
4560
+ ],
4561
+ "properties": {
4562
+ "ok": {
4563
+ "const": true
4564
+ },
4565
+ "paneId": {
4566
+ "type": "string"
4567
+ },
4568
+ "panelId": {
4569
+ "type": "string"
4570
+ },
4571
+ "focused": {
4572
+ "const": true
4573
+ }
4574
+ },
4575
+ "additionalProperties": false
4576
+ },
4480
4577
  "paneArchiveResult": {
4481
4578
  "oneOf": [
4482
4579
  {
@@ -5781,7 +5878,7 @@ exports.RUNPANE_CONTRACT = {
5781
5878
  "Use `panes create` for separate visible Panes (Pane sessions) for feature/PR work. Pane creates and owns the worktree/branch for each new Pane.",
5782
5879
  "Use `panels create` for reviewer/helper/clean-context tabs that should stay inside an existing Pane and share that Pane's worktree.",
5783
5880
  "For private background decomposition, use your normal subagent/worktree mechanism instead of Pane.",
5784
- "Skill routing: when the user says `discussion`, `plan`, `simple-plan`, `create-plan`, or `implement`, or asks for those behaviors, treat three references as peer context: Pane's local skill cache under `<PANE_DIR>/skills/`, the Pane Chat orchestrator handoff at `<PANE_DIR>/skills/pane-chat/runpane-orchestrator.md` when present, and the workflow map at https://github.com/dcouple/skills/raw/main/docs/readme-workflow-map.png. For where the local cache and Pane Chat bootstrap live in Pane, reference https://github.com/dcouple/Pane/pull/291. Use GitHub reads against https://github.com/dcouple/skills/tree/main/parsa only to inspect or refresh referenced skill files; do not clone or install it unless the user asks.",
5881
+ "Skill routing: Pane's skills live in `<PANE_DIR>/skills/pane-chat/skills/`, and the Pane Chat entry point is `<PANE_DIR>/skills/pane-chat/pane-orchestrator/SKILL.md`; read the skill that matches the request, such as `discussion`, `create-ticket`, `tdd`, `prepare-pr`, or `review`.",
5785
5882
  "When an agent creates Panes or panels, pass `--source agent --no-focus --wait-ready --yes --json` unless the user explicitly wants focus moved; `panes create` pins the new Pane into the UI's favorite/pin set by default, so no follow-up `panes pin` call is needed and `--no-pinned` is the opt-out for throwaway Panes.",
5786
5883
  "Use `runpane agent-context --json` for the full agent-facing CLI context, or `runpane agent-context --command <command> --json` for one detailed command definition.",
5787
5884
  "For `agent-context --command`, use canonical spaced names like `panes create`; copied forms like `panes.create` or `runpane panes create` are accepted too.",
@@ -5928,6 +6025,17 @@ exports.RUNPANE_CONTRACT = {
5928
6025
  "--json"
5929
6026
  ]
5930
6027
  },
6028
+ {
6029
+ "name": "panes focus",
6030
+ "summary": "Raise the Pane window and select a Pane (and optionally a panel) on explicit user request.",
6031
+ "arguments": [
6032
+ "--pane <pane-id>",
6033
+ "--panel <panel-id>",
6034
+ "--source <user|agent>",
6035
+ "--yes",
6036
+ "--json"
6037
+ ]
6038
+ },
5931
6039
  {
5932
6040
  "name": "panels create",
5933
6041
  "summary": "Create reviewer/helper terminal tabs inside an existing Pane; they share that Pane's worktree.",
@@ -6876,6 +6984,56 @@ exports.RUNPANE_CONTRACT = {
6876
6984
  "The JSON result includes the updated pane summary so callers do not need a second panes list request."
6877
6985
  ]
6878
6986
  },
6987
+ "panes focus": {
6988
+ "name": "panes focus",
6989
+ "summary": "Raise the Pane window and select a Pane (and optionally one of its panels).",
6990
+ "details": "Brings the Pane desktop window to the foreground and selects the requested Pane exactly like clicking it in the sidebar; when --panel is given it also selects that panel/tab inside the Pane. This steals window focus, so it must only be run on an explicit user request to open, focus, or show a Pane, never proactively. Focusing does not change the Pane's worktree, branch, panels, or pinned state.",
6991
+ "requiresPaneDaemon": true,
6992
+ "mutates": true,
6993
+ "arguments": [
6994
+ {
6995
+ "name": "--pane",
6996
+ "value": "<pane-id>",
6997
+ "required": true,
6998
+ "description": "Pane/session id to focus. Must be an active (non-archived) Pane."
6999
+ },
7000
+ {
7001
+ "name": "--panel",
7002
+ "value": "<panel-id>",
7003
+ "required": false,
7004
+ "description": "Optional panel/tab id inside the Pane to select; must belong to the focused Pane."
7005
+ },
7006
+ {
7007
+ "name": "--source",
7008
+ "value": "<user|agent>",
7009
+ "required": false,
7010
+ "description": "Mutation source; does not change focus behavior."
7011
+ },
7012
+ {
7013
+ "name": "--yes",
7014
+ "required": false,
7015
+ "description": "Skip confirmation for mutating commands; required in non-interactive contexts because focusing steals window focus."
7016
+ },
7017
+ {
7018
+ "name": "--json",
7019
+ "required": false,
7020
+ "description": "Print machine-readable output."
7021
+ }
7022
+ ],
7023
+ "examples": [
7024
+ "runpane panes focus --pane <pane-id> --source user --yes --json",
7025
+ "runpane panes focus --pane <pane-id> --panel <panel-id> --source user --yes --json"
7026
+ ],
7027
+ "jsonSchemas": [
7028
+ "paneFocusRequest",
7029
+ "paneFocusResult"
7030
+ ],
7031
+ "notes": [
7032
+ "Run this only when the user explicitly asks to open, focus, show, or switch to a Pane; never focus a Pane proactively because it steals the user's window focus.",
7033
+ "Archived Panes cannot be focused; the command fails clearly instead of falling back to focusing another Pane.",
7034
+ "If --panel does not belong to the focused Pane, the command fails clearly rather than selecting a different panel."
7035
+ ]
7036
+ },
6879
7037
  "panels list": {
6880
7038
  "name": "panels list",
6881
7039
  "summary": "List tool panels inside a Pane session.",
@@ -7694,10 +7852,9 @@ exports.RUNPANE_CONTRACT = {
7694
7852
  "",
7695
7853
  "Typical workflow: register the saved base repository once; create one Pane (Pane session) per feature/PR; use panels/tabs inside that Pane for helper or reviewer agents that should share the worktree; archive the Pane after the PR is done to remove it from active Panes and clean up its managed worktree when applicable.",
7696
7854
  "",
7697
- "Skill routing reference: when the user says `discussion`, `plan`, `simple-plan`, `create-plan`, or `implement`, or asks for the behavior those words imply, treat three references as peer context: Pane's local skill cache under `<PANE_DIR>/skills/`, the Pane Chat orchestrator handoff at `<PANE_DIR>/skills/pane-chat/runpane-orchestrator.md` when present, and the [workflow map](https://github.com/dcouple/skills/raw/main/docs/readme-workflow-map.png).",
7698
- "Use those peer references together to choose the phase: discuss/investigate until the work is clear enough to delegate, then ticket/plan/implement/review/PR-test/teach-back as appropriate. The orchestrator and workflow map may point to different skills; reconcile them with the user's request instead of hardcoding a skill list or treating one reference as subordinate.",
7699
- "For the Pane implementation source of truth for where the skill cache, cached workflow assets, and Pane Chat bootstrap live, reference [PR #291](https://github.com/dcouple/Pane/pull/291): `main/src/services/skillCacheManager.ts` owns `<PANE_DIR>/skills/`, `.sources/dcouple-skills`, and `pane-chat/runpane-orchestrator.md`; `main/src/services/paneChatManager.ts` owns the tiny bootstrap prompt that tells the selected Pane Chat agent to read that guide.",
7700
- "Use GitHub reads against the [Parsa skills folder](https://github.com/dcouple/skills/tree/main/parsa) only to inspect or refresh referenced skill files; do not clone/install the repo unless the user asks.",
7855
+ "Skill routing reference: Pane installs its skills in `<PANE_DIR>/skills/pane-chat/skills/` (also in `<PANE_DIR>/.claude/skills/` and `<PANE_DIR>/.codex/skills/`), and the Pane Chat entry point is `<PANE_DIR>/skills/pane-chat/pane-orchestrator/SKILL.md`. When the user asks to discuss, plan, implement, review, or test, read the matching skill there, for example `discussion`, `options`, `brief`, `create-ticket`, `tdd`, `quick-verify`, `prepare-pr`, `review`, or `verify-app`.",
7856
+ "Choose the phase from the request: discuss or investigate until the work is clear enough to delegate, then ticket, implement, review, verify, and open the PR as appropriate. Reconcile the skills with the user's request instead of treating any one list as fixed.",
7857
+ "For the Pane implementation source of truth: `main/src/services/skillCacheManager.ts` installs the bundle from `main/src/services/paneChatBundle/` into `<PANE_DIR>/skills/pane-chat/` and generates `pane-orchestrator`; `main/src/services/paneChatManager.ts` owns the tiny bootstrap prompt that tells the selected Pane Chat agent to read it.",
7701
7858
  "Do not hardcode a specific assistant brand in workflow guidance. Use the Pane agent or custom tool command the user selected, and use `runpane agents doctor --agent <agent> --repo <selector> --json` only when checking a built-in agent template.",
7702
7859
  "",
7703
7860
  "Start with `runpane doctor --json` before taking Pane actions. Use it to understand wrapper/runtime details, daemon reachability, and the next safe commands.",