thinkpool-pair 0.7.230 → 0.7.231

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.
@@ -59,7 +59,14 @@ export function codexAppServerGate({ env = process.env, execFile = execFileSync
59
59
  export function buildCodexAppServerArgs({ providerConfig, mcpUrl, writableDirs = [] } = {}) {
60
60
  const args = ['app-server', '--stdio']
61
61
  if (providerConfig) args.push('-c', providerConfig)
62
- if (mcpUrl) args.push('-c', `mcp_servers.thinkpool.url=${JSON.stringify(mcpUrl)}`)
62
+ if (mcpUrl) {
63
+ args.push('-c', `mcp_servers.thinkpool.url=${JSON.stringify(mcpUrl)}`)
64
+ // The room prompt promises spawn/read/close_terminal as native room tools.
65
+ // Fail startup instead of silently running a tool-less Codex turn when the
66
+ // private loopback MCP handshake is unavailable. Existing MCP approval
67
+ // policy still owns the room permission card for each call.
68
+ args.push('-c', 'mcp_servers.thinkpool.required=true')
69
+ }
63
70
  if (writableDirs.length) args.push('-c', `sandbox_workspace_write.writable_roots=${JSON.stringify(writableDirs)}`)
64
71
  return args
65
72
  }
package/codex-session.mjs CHANGED
@@ -248,7 +248,13 @@ export function buildCodexExecArgs({ sessionId, model, effort, sandbox, approval
248
248
  // accept --add-dir itself. Supply these only when creating the thread.
249
249
  if (!sessionId) for (const dir of writableDirs) args.push('--add-dir', dir)
250
250
  // Per-lane override only: never mutate the person's global Codex config.
251
- if (mcpUrl) args.push('-c', `mcp_servers.thinkpool.url=${JSON.stringify(mcpUrl)}`)
251
+ if (mcpUrl) {
252
+ args.push('-c', `mcp_servers.thinkpool.url=${JSON.stringify(mcpUrl)}`)
253
+ // Room tools are part of the ThinkPool execution contract, not optional
254
+ // enrichment. A failed handshake must abort this invocation so Codex
255
+ // cannot continue after spawn_terminal vanished from its callable set.
256
+ args.push('-c', 'mcp_servers.thinkpool.required=true')
257
+ }
252
258
  // Both fresh `exec` and `exec resume` accept repeatable --image flags. Only
253
259
  // bridge-derived absolute paths reach this layer; relative values are ignored
254
260
  // so a future caller cannot silently change the child's path interpretation.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thinkpool-pair",
3
- "version": "0.7.230",
3
+ "version": "0.7.231",
4
4
  "description": "Share a local coding-agent CLI (Claude Code, Codex, Gemini, Aider, …) into a ThinkPool Code room, live.",
5
5
  "type": "module",
6
6
  "bin": {