What it prints

Part of team add — every line a launch prints — ready and left out — a dialog kept for the owner, a launch line that cannot run, and a dry run.

claude-keeper: ready

A seat that reaches its idle prompt with its rules delivered prints <seat>: ready; the temporary seat prints <name>: ready under the name it was given. A seat the state records whose pane no longer holds the process team launched is not already running: its workspace is closed without input and the seat is launched fresh, with the line up prints for it. Everything else a launch can print is the same as up's, with the seat's name in front: one record per seat — <name>: ready, or <name>: left out: <what stopped it> — and the detail that explains it written to stderr under the record, exactly as up's table reads: left out: its workspace was not created; left at launched, left out: timeout, left out: its pane has been back at its shell for <n> s and shows no CLI prompt; left at launched, left out: permission, left out: vendor notice, and the rest of the table on the team up page. A dialog is never answered and never asked about: add keeps the seat's workspace, records waiting-owner with the classification and the process identity read at that moment, sends no input, and reports <name>: left out: <classification> — trust under either policy, permission, question or vendor notice. The seat is the owner's to finish then: a later team up reuses the recorded pane and enters the pause on the team up page. A seat whose idle wait runs out keeps the ordinary timeout record and the detail under it. A wait that ended without a prompt writes the pane's last lines under the record, on stderr, as up does. The log file gets each record's line alone, once per final record: its reason in words, never a folder the run resolved, a pane's text or a file's content — the detail under the record is stderr's alone. First-message rules go to the seat's file in the project state folder and arrive as the one line up types, read back and entered, exactly as that page describes. A seat add leaves out takes its rules file with it; a temporary seat removed with team remove or stopped by team down loses its file with the seat, while a declared seat's file stays for the next up.

The seat's own launch line is checked where it will start, before the file is edited and before any workspace is made. A note — a word of the line quotes or substitutes text, or a relative argument is not there yet — is said once as note <name>: <why>, as up says it. A line that can't run is refused in the same paragraph as any other MISS finding: team add: <name>: its launch line starts \`, which is not on the PATH, or team add: : its launch line runs ``, not found from its start folder ; the same file is at `` from the project root — write that path— and the file is left alone. A seat thisaddadopts into a pane that is already there — its state names the workspace, and an unnamed pane is in it — runs nothing now: its line is checked where that pane runs when the state records the folder it was started in, and otherwise is not checked at all, the note saying so, and a miss found there is never refused. A--dry-runprints a refusal in the plan instead — skip : would refuse: …abovedry run: nothing was run` — and makes nothing. A dry run that reaches a refusal the real run would give before doing anything returns that refusal's status and exit id; a dry run that reaches its plan exits 0 and promises nothing about what happens after (the run lock, a launch, the watch). It returns before these real-run failures, and never takes their status:

  • add.run-lock, another run holds the session (src/commands/add.ts:555)
  • add.lobby, the lobby could not be created (src/commands/add.ts:563)
  • add.changed, the file changed while add was checking (src/commands/add.ts:584)
  • add.locked, the locked edit does not validate (src/commands/add.ts:589)
  • add.not-ready, the launch finished without a ready seat; add.server, the server did not start (src/commands/add.ts:620-622)