mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-07 16:09:43 +02:00
feat: pass --name to local claude spawns so workers carry their session names as peer names
Version-gated fail-closed at 2.1.224 (the cross-session-messaging release, flag presence verified against that binary): an unknown or older CLI yields a spawn command byte-identical to before, because claude aborts startup on an unknown option and that would kill every session spawn. The value is allowlist-sanitized ahead of the double-quoted interpolation, and only the local command carries the flag; docker/remote builders never see it since their CLI is not the probed binary. Verified E2E on an isolated instance: cmdline shows --name, ListAgents lists the session name, replies arrive tagged from-name. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -414,9 +414,11 @@ The shape, each step verified live (probes, failure modes and safety detail in
|
||||
|
||||
1. Spawn + readiness over HTTP, unchanged (§3, Flow 1).
|
||||
2. `ListAgents`: find the worker's row by its `tmux codeman-<first 8 of session id>`
|
||||
column; the row's `name [ref]` is the address. No row = messaging is off for that
|
||||
worker (it is feature-flagged even on matching CLI versions, observed live): fall
|
||||
back to the HTTP recipes without complaint.
|
||||
column; the row's `name [ref]` is the address. On Codeman 1.16+ with claude
|
||||
2.1.224+ a worker's peer name is its Codeman session name, so pass `sessionName`
|
||||
in quick-start to pick it; older setups list a name derived from the case folder.
|
||||
No row = messaging is off for that worker (it is feature-flagged even on matching
|
||||
CLI versions, observed live): fall back to the HTTP recipes without complaint.
|
||||
3. `SendMessage` the task; first contact must use the `name [ref]` form copied from
|
||||
the listing (a bare name errors asking for the ref). End the task with a reply
|
||||
instruction: "when done, reply to the sender of this message with one line:
|
||||
|
||||
@@ -61,6 +61,17 @@ your quick-start's `sessionId`. The peer NAME (`msgtest-worker-cf`) is assigned
|
||||
Claude Code, derived from the case directory's folder name plus a suffix Codeman does
|
||||
not control: never guess it from the case name, read it from the listing.
|
||||
|
||||
From Codeman 1.16 a LOCAL claude spawn passes `--name <session name>` when the local
|
||||
CLI is 2.1.224+, so a worker's peer name usually IS its Codeman session name
|
||||
(verified live: quick-start with `sessionName: "w9-msgtest"` listed as `w9-msgtest`,
|
||||
and its messages arrive tagged `from-name="w9-msgtest"`; a derived-name worker's
|
||||
messages carry no `from-name`). Name your workers: a quick-start WITHOUT
|
||||
`sessionName` leaves the Codeman name empty, so there is nothing to pass and the
|
||||
peer name stays derived. The flag is fail-closed (older/unknown CLI omits it) and
|
||||
allowlist-sanitized (a name of only unsafe characters is dropped), and docker/remote
|
||||
spawns never carry it, which is why the `tmux` column stays the canonical join key
|
||||
rather than the name.
|
||||
|
||||
Scriptable probe + name lookup, against the registry Claude Code maintains (one JSON
|
||||
object per process in `~/.claude/sessions/<pid>.json`):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user