peertable 0.8.49 → 0.8.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -149,7 +149,7 @@ It interviews you, names the members, scaffolds `.team/` (charter + roles, isola
|
|
|
149
149
|
|
|
150
150
|
Working, and used to build itself. First verified end-to-end on 2026-08-08 with a full no-orchestrator loop: two members consulted, claimed, negotiated an interface, shared a discovered pitfall, and shipped a small project with **zero external intervention**. A 2026-08-13 real-seat lifecycle verified in-place model/effort changes and restart recovery. On 2026-08-14, a Grok 4.6 seat joined the room, changed 4.6↔4.5 in the same session, and woke on a direct message in a live acceptance run. On 2026-08-17 the wake-up path was corrected so Grok seats wait for idle, broadcasts keep their body, and a parent without a tmux seat cannot stall the bridge cursor.
|
|
151
151
|
|
|
152
|
-
The current npm release is **peertable 0.8.
|
|
152
|
+
The current npm release is **peertable 0.8.51**.
|
|
153
153
|
|
|
154
154
|
The current product contract is [docs/current-design.md](https://github.com/kitepon/peertable/blob/main/docs/current-design.md). Completed plans and the cumulative decision log are kept under `docs/archive/`; the current document map is [docs/00_overview.md](https://github.com/kitepon/peertable/blob/main/docs/00_overview.md).
|
|
155
155
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "peertable",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.51",
|
|
4
4
|
"description": "A round table of peer agents. No orchestrator at the head. Turn Claude Code, Codex, and Grok sessions into a team of equal, long-lived peers.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/room/client.mjs
CHANGED
|
@@ -14,7 +14,7 @@ import { boundedRecent, boundedUnread } from './message-bounds.mjs'
|
|
|
14
14
|
|
|
15
15
|
// client.mjs 側のハードコード版数。package.json の version と一致していることを
|
|
16
16
|
// diagnostics の version_consistency が見る(2 つの版数源の drift 検出。決定45)
|
|
17
|
-
const MCP_VERSION = '0.8.
|
|
17
|
+
const MCP_VERSION = '0.8.51'
|
|
18
18
|
const PKG_ROOT = join(dirname(fileURLToPath(import.meta.url)), '..')
|
|
19
19
|
|
|
20
20
|
const USAGE = `usage:
|
|
@@ -8,7 +8,9 @@ if [ "$#" -ne 1 ]; then
|
|
|
8
8
|
exit 2
|
|
9
9
|
fi
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
# skill dir は ~/.claude/skills/peertable のような symlink 経由で呼ばれるので、$0 を実体へ解決してから repo を求める
|
|
12
|
+
# (解決しないと ../.. が ~/.claude/skills になり room-mcp-config.mjs を見失う。2026-09-04 実測)
|
|
13
|
+
script_dir=$(CDPATH= cd -- "$(dirname -- "$(readlink -f -- "$0")")" && pwd)
|
|
12
14
|
repo_dir=$(CDPATH= cd -- "$script_dir/../.." && pwd)
|
|
13
15
|
|
|
14
16
|
node --input-type=module - "$1" "$repo_dir" <<'NODE'
|
|
@@ -436,6 +436,7 @@ async function wake(seat, msgs) {
|
|
|
436
436
|
const ttyState = async () => {
|
|
437
437
|
let foreground = false
|
|
438
438
|
let stopped = false
|
|
439
|
+
let agentPresent = false
|
|
439
440
|
let label = '(不明)'
|
|
440
441
|
if (paneTty) {
|
|
441
442
|
const psOut = await run('/bin/ps', ['-t', paneTty, '-o', 'stat=,command='], { env: { ...process.env, LC_ALL: 'C' } })
|
|
@@ -447,18 +448,23 @@ async function wake(seat, msgs) {
|
|
|
447
448
|
if (m[1].includes('+')) label = base
|
|
448
449
|
continue
|
|
449
450
|
}
|
|
451
|
+
agentPresent = true
|
|
450
452
|
if (m[1].includes('+')) foreground = true
|
|
451
453
|
if (m[1].startsWith('T')) stopped = true
|
|
452
454
|
}
|
|
453
455
|
}
|
|
454
|
-
return { foreground, stopped, label }
|
|
456
|
+
return { foreground, stopped, agentPresent, label }
|
|
455
457
|
}
|
|
456
458
|
let tty = await ttyState()
|
|
457
|
-
if (!tty.foreground && tty.
|
|
459
|
+
if (!tty.foreground && tty.agentPresent) {
|
|
458
460
|
// Codex CLI の job control 欠陥(openai/codex#37088 系)で TUI が SIGTSTP/SIGTTIN 停止し、
|
|
459
461
|
// 打鍵が shell へ落ちる形が反復した(実被弾 2026-08-29 に2席×複数回)。配達の前提を
|
|
460
462
|
// 自動で回復する: pane の前面 shell へ `fg` を送って停止 job を前面へ戻し、成立を再観測する。
|
|
461
|
-
|
|
463
|
+
// Codex 0.153 はツール実行後に tty の前面を bash へ返したまま **動き続ける**(STAT は T でなく S)
|
|
464
|
+
// 形も出す(実測 2026-09-04: 3席が順に「codex 生存・bash 前面」になり、貼り付けが bash に落ちて
|
|
465
|
+
// `^[[200~` が生で残り、SEAT_TUI_GONE 誤判定→自動蘇生が生きた席を立て直す連鎖になった)。
|
|
466
|
+
// `fg` は停止 job にも背面で動く job にも効くので、agent が tty 上に実在する限り同じ復旧を使う。
|
|
467
|
+
log(`SEAT_TUI_${tty.stopped ? 'STOPPED' : 'BACKGROUNDED'}: ${seat} の agent が${tty.stopped ? '停止(T)' : '背面(S)'}状態。fg で前面へ蘇生を試みる`)
|
|
462
468
|
await run('tmux', tmuxArgv(['send-keys', '-t', observation.target, 'C-u'], { socket: observation.socket }))
|
|
463
469
|
await run('tmux', tmuxArgv(['send-keys', '-l', '-t', observation.target, 'fg'], { socket: observation.socket }))
|
|
464
470
|
await run('tmux', tmuxArgv(['send-keys', '-t', observation.target, 'Enter'], { socket: observation.socket }))
|