peertable 0.4.2 → 0.4.3
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.ja.md
CHANGED
|
@@ -107,7 +107,7 @@ Codex では、スキルが所有する room MCP block をプロジェクトの
|
|
|
107
107
|
|
|
108
108
|
動いており、**自分自身の開発に使っている**。2026-08-08 に end-to-end 検証済み——オーケストレーターなしの完全な一周(2 メンバーが相談し、claim し、インターフェースを交渉し、見つけた罠を共有して小さなプロジェクトを出荷)を**外部介入ゼロ**で完走。2026-08-13の実席ライフサイクルでは、作業席が親を通じてsession contextを保ったままmodel / effortを変更し、再起動後はroomと工程正本から再着任した。2026-08-14にはGrok 4.6席の着席、room参加、同一sessionの4.6↔4.5変更、DM起床を実機で確認した。2026-08-17にGrok席はidle待ち、broadcastは本文を残し、tmuxの無い親でbridge cursorが止まらないよう直した。
|
|
109
109
|
|
|
110
|
-
現在のnpm releaseは **peertable 0.4.
|
|
110
|
+
現在のnpm releaseは **peertable 0.4.3**。
|
|
111
111
|
|
|
112
112
|
設計文書と決定履歴(**87 決定**)は [docs/plan.md](docs/plan.md)。
|
|
113
113
|
|
package/README.md
CHANGED
|
@@ -143,7 +143,7 @@ It interviews you, names the members, scaffolds `.team/` (charter + roles, isola
|
|
|
143
143
|
|
|
144
144
|
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.
|
|
145
145
|
|
|
146
|
-
The current npm release is **peertable 0.4.
|
|
146
|
+
The current npm release is **peertable 0.4.3**.
|
|
147
147
|
|
|
148
148
|
The design document and decision log (**87 decisions**, in Japanese) live in [docs/plan.md](docs/plan.md).
|
|
149
149
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "peertable",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
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
|
@@ -11,7 +11,7 @@ import { fileURLToPath } from 'node:url'
|
|
|
11
11
|
|
|
12
12
|
// client.mjs 側のハードコード版数。package.json の version と一致していることを
|
|
13
13
|
// diagnostics の version_consistency が見る(2 つの版数源の drift 検出。決定45)
|
|
14
|
-
const MCP_VERSION = '0.4.
|
|
14
|
+
const MCP_VERSION = '0.4.3'
|
|
15
15
|
const PKG_ROOT = join(dirname(fileURLToPath(import.meta.url)), '..')
|
|
16
16
|
|
|
17
17
|
const USAGE = `usage:
|
|
@@ -16,7 +16,7 @@ if (!session_id || (!model && !reasoning_effort)) {
|
|
|
16
16
|
// Aiterm のmanaged session metadataは実行時state root(macOSではTMPDIR)にある。
|
|
17
17
|
// stdio transportの既定環境は親のTMPDIRを落とすため、同じ公開serverへ明示継承する。
|
|
18
18
|
const transport = new StdioClientTransport({ command: 'aiterm-mcp', env: process.env })
|
|
19
|
-
const client = new Client({ name: 'peertable-seat-configure', version: '0.4.
|
|
19
|
+
const client = new Client({ name: 'peertable-seat-configure', version: '0.4.3' })
|
|
20
20
|
await client.connect(transport)
|
|
21
21
|
const result = await client.callTool({
|
|
22
22
|
name: 'agent_configure',
|
|
@@ -8,7 +8,7 @@ if (!session_name || !['claude', 'codex', 'grok'].includes(vendor) || !model ||
|
|
|
8
8
|
throw new Error('SEAT_AITERM_LAUNCH_ARGS_INVALID')
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
const client = new Client({ name: 'peertable-seat-launch', version: '0.4.
|
|
11
|
+
const client = new Client({ name: 'peertable-seat-launch', version: '0.4.3' })
|
|
12
12
|
await client.connect(new StdioClientTransport({ command: 'aiterm-mcp', env: process.env }))
|
|
13
13
|
const env_vars = [
|
|
14
14
|
'PEERTABLE_URL', 'PEERTABLE_ROOM', 'PEERTABLE_MEMBER', 'PEERTABLE_CREDENTIAL_FILE',
|
|
@@ -45,11 +45,10 @@ function readLatticeState(previous = null) {
|
|
|
45
45
|
if (previous?.source === source && previous.error === undefined) return previous
|
|
46
46
|
try {
|
|
47
47
|
const lattice = resolveLatticeExecutable(latticeCli)
|
|
48
|
-
const status = JSON.parse(execFileSync(lattice.command,
|
|
48
|
+
const status = JSON.parse(execFileSync(lattice.command, lattice.argv, {
|
|
49
49
|
cwd: project,
|
|
50
50
|
encoding: 'utf8',
|
|
51
51
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
52
|
-
shell: lattice.shell,
|
|
53
52
|
}))
|
|
54
53
|
if (!Array.isArray(status.next_ready) || !Array.isArray(status.active_set)) {
|
|
55
54
|
throw new Error('invalid schema')
|
|
@@ -100,17 +100,18 @@ export function tmuxArgv(extraArgs = [], { socket, env = process.env, platform =
|
|
|
100
100
|
|
|
101
101
|
/**
|
|
102
102
|
* npm の extensionless shim は Windows の execFile で ENOENT。
|
|
103
|
-
* 隣の .cmd
|
|
103
|
+
* 隣の .cmd を cmd.exe /c で起動する(shell:true は DEP0190 かつ引数連結)。
|
|
104
104
|
*/
|
|
105
105
|
export function resolveLatticeExecutable(cli, { platform = process.platform, exists = existsSync } = {}) {
|
|
106
|
-
if (typeof cli !== 'string' || !cli) return { command: cli,
|
|
107
|
-
if (platform !== 'win32') return { command: cli,
|
|
106
|
+
if (typeof cli !== 'string' || !cli) return { command: cli, argv: ['todo', 'status', '--json'] }
|
|
107
|
+
if (platform !== 'win32') return { command: cli, argv: ['todo', 'status', '--json'] }
|
|
108
108
|
const lower = cli.toLowerCase()
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
109
|
+
const cmd = lower.endsWith('.cmd') || lower.endsWith('.bat') || lower.endsWith('.exe')
|
|
110
|
+
? cli
|
|
111
|
+
: exists(`${cli}.cmd`)
|
|
112
|
+
? `${cli}.cmd`
|
|
113
|
+
: cli
|
|
114
|
+
return { command: process.env.ComSpec || 'cmd.exe', argv: ['/d', '/c', cmd, 'todo', 'status', '--json'] }
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
/** member の自己申告を優先し、無い既存 member だけ旧 session 名へ互換フォールバックする。 */
|