{
  "name": "wait_for_channel",
  "wireName": "wait_for_channel",
  "source": {
    "repo": "tmux-python/libtmux-mcp",
    "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
    "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
    "file": "src/libtmux_mcp/tools/wait_for_tools.py",
    "line": 322
  },
  "description": "Block until a tmux ``wait-for`` channel is signalled.\n\nThis is the AUTHORED-output synchronisation primitive: the channel\nonly fires because your own composed shell command signals it.\nReserve ``wait_for_text`` for output you did not author.\n\nAgents can compose this with ``send_keys`` to turn shell-side\nmilestones into explicit synchronisation points::\n\n    send_keys(\n        \"pytest; tmux wait-for -S tests_done\",\n        pane_id=...,\n    )\n    wait_for_channel(\"tests_done\", timeout=60)\n\nShell ``;`` semantics fire ``wait-for -S`` whether the command\nsucceeded or failed, so the edge-triggered signal never deadlocks\non a crash. Do NOT chain ``exit $status`` after the signal — in an\ninteractive shell that exits the shell itself, which destroys\nsingle-pane sessions. Exit-status preservation in interactive\nshells is out-of-scope; inspect the captured output for\ncommand-specific success markers.",
  "schemaStatus": "runtime",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "channel": {
        "description": "Channel name. Must match ``^[A-Za-z0-9_.:-]{1,128}$``.",
        "type": "string"
      },
      "socket_name": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "description": "tmux socket name."
      },
      "timeout": {
        "default": 30,
        "description": "Maximum seconds to wait. The underlying ``tmux wait-for`` has\nno built-in timeout — this wrapper enforces it by killing the\ntmux child, which also happens if the call is cancelled.\nDefaults to 30 seconds. Capped by the same server wait ceiling\nas ``wait_for_text``; an over-large value is not an error, the\nwait returns at the ceiling and the confirmation message names\nthe timeout that was actually enforced.",
        "type": "number"
      }
    },
    "required": [
      "channel"
    ],
    "type": "object"
  },
  "outputSchema": {
    "properties": {
      "result": {
        "type": "string"
      }
    },
    "required": [
      "result"
    ],
    "type": "object",
    "x-fastmcp-wrap-result": true
  },
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": false,
    "openWorldHint": true,
    "readOnlyHint": false
  },
  "meta": {
    "fastmcp": {
      "tags": [
        "manage",
        "self-bounded"
      ]
    }
  }
}
