Conversation
eddiearc
requested changes
Sep 14, 2026
eddiearc
left a comment
Owner
There was a problem hiding this comment.
Fable 5.1 review(head 50950e2)
Verdict: REQUEST_CHANGES — 唯一阻塞项是机械性的。
阻塞
- AGENTS.md Owner 政策:每次交付必须 bump
package.jsonpatch。本 PR 仍为0.5.9,请改为0.5.9 → 0.5.10(若与 #226 同批合入,由 maintainer 排版本序号)。
代码本身 ✅
- 未设
LARKIN_TMUX_SOCKET时 argv/输出与现状一致(零行为变化) ^[A-Za-z0-9._-]{1,64}$+spawnSync数组 argv:无路径逃逸 / 参数注入;多 Agent 隔离不依赖 tmux server- 实机隔离测试:会话只在
-L <name>,默认 server 看不到;生命周期不变 test/unit/runtime/240 pass;新测 3/3;CI 已绿
Nits(非阻塞,可同 PR 或 follow-up)
- 显式拒绝
./..(正则放过,第一次new-session才炸) attach:建议仅status === "running"时附加(完成后会话已不存在)- attach 目标建议
-t =<session>与其余调用一致 - README 的
tmux list-sessions恢复指引补一句-L <name>(开启时) - 扩展层
attach:/list无 hint 可加一条单元断言
合入仍等 idan 明确 yes。
Larkin's pi tmux tool ran every task session on the user's default tmux
server, so each task advanced the user's never-reused session-id counter
and shared `kill-server`'s blast radius with unrelated work. Honor
LARKIN_TMUX_SOCKET (a tmux socket name, [A-Za-z0-9._-]{1,64}, neither
"." nor ".."; invalid values fail loudly): every tmux client call then
carries `-L <name>`, and tool results / completion notifications add an
`attach: tmux -L <name> attach -t =<session>` hint while the task runs,
so the tasks stay observable. Unset keeps today's behavior exactly.
Bumps the package patch version (0.5.9 -> 0.5.10) per the Owner policy.
Co-Authored-By: Claude Code <noreply@anthropic.com>
itswl
force-pushed
the
feat/pi-tmux-socket
branch
from
September 14, 2026 10:57
50950e2 to
6bd2785
Compare
Contributor
Author
|
阻塞项与五个 nit 都已处理(head 更新为
验证:tmux 相关五个测试文件 30 pass / 0 fail;build / typecheck 通过。( |
eddiearc
approved these changes
Sep 14, 2026
eddiearc
left a comment
Owner
There was a problem hiding this comment.
Fable 5.1 re-review(head 6bd2785)
Verdict: APPROVE_WITH_NITS
上轮 REQUEST_CHANGES 五项全部落实:
- ✅
package.json0.5.9 → 0.5.10 - ✅
tmuxSocketName配置期拒./.. - ✅
attach:仅status === "running",且-t =<session> - ✅ README 补
tmux -L <name> - ✅ 扩展层测试:running 有 hint / list 无 / kill 后无
未设 env 零变化;-L 名称安全;本地 runtime 单元 241 绿;CI 绿。
Nits(非阻塞):notifyOnce/kill 上 attachHintFor 恒 null 可简化;PR 描述仍写 completion 带 attach,建议改一句。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Larkin's pi tmux tool created every task session on the user's default tmux server (
tmuxClientEnvonly stripsTMUX/TMUX_PANE/BASH_ENV;new-sessionpassed no-L/-S). Two consequences observed on a real machine:108next to their0/35(measured; cosmetic but confusing), andtmux kill-server's blast radius with unrelated work — the server going away also silences the completion watch.Filed as #229.
Change
src/runtime/pi-tmux.ts:LARKIN_TMUX_SOCKET(a tmux socket name, validated^[A-Za-z0-9._-]{1,64}$; an invalid value fails loudly instead of silently falling back) makes every tmux client call carry-L <name>— the availability probe,has-session,kill-session,list-panesandnew-session. Unset keeps the default server, i.e. today's behavior byte for byte.src/runtime/pi-tmux-extension.ts: when a socket is configured, tool results for a still-running task appendattach: tmux -L <name> attach -t =<session>, so the tasks stay observable; completion notifications andtmux liststay hint-free (a finished session no longer exists to attach to).tmuxSessionNameis exported (the extension needs the same session name for the hint) andformatTmuxTaskTexttakes an optional{ attachHint }— both additive.Validation
bun test test/unit/runtime/pi-tmux-socket.test.mjs→ 3 pass / 0 fail: socket-name validation (blank = unset, invalid values throw), attach-hint rendering, and a real-tmux isolation proof — with the socket set, a running task's session exists ontmux -L <name>and not on the default server; the same task's completion status and output are unchanged; cleanup viakill-server(verified: the machine's default server still lists exactly the same two sessions after the run).bun test test/unit/runtime/→ 240 pass / 0 fail (existing pi-tmux suites unchanged).bun run build✅ ·bun run typecheck✅ ·bun run licenses:check✅ ·bun run publication:check:tree✅Lands ahead of maintainer alignment on #229 — happy to change the shape (e.g.
-S <path>instead of-L <name>, or always-on isolation) or split the hint.Fixes #229
🤖 Generated with Claude Code