thinkpool-pair 0.7.227 → 0.7.228

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.
@@ -37,6 +37,14 @@ const resultText = (value) => {
37
37
  if (value == null) return ''
38
38
  try { return JSON.stringify(value) } catch { return String(value) }
39
39
  }
40
+ // Codex uses both `message: string` and `message: { message: string }` across
41
+ // its exec/app-server error paths. Room events must keep `message` scalar: an
42
+ // object persists successfully but crashes React when that transcript replays.
43
+ const errorText = (value, fallback) => {
44
+ if (typeof value === 'string' && value.trim()) return value
45
+ if (value && typeof value === 'object' && typeof value.message === 'string' && value.message.trim()) return value.message
46
+ return resultText(value) || fallback
47
+ }
40
48
 
41
49
  export class CodexEventMapper {
42
50
  /**
@@ -187,13 +195,13 @@ export class CodexEventMapper {
187
195
  }
188
196
 
189
197
  case 'turn.failed': {
190
- this._emit({ kind: 'error', message: ev.message || ev.error || 'codex turn failed', recoverable: true })
198
+ this._emit({ kind: 'error', message: errorText(ev.message ?? ev.error, 'codex turn failed'), recoverable: true })
191
199
  this._emit({ kind: 'result', subtype: 'error_during_execution', sessionId: this._sessionId, model: this._model, costUsd: null, usage: null, numTurns: 1, durationMs: undefined, denials: 0, resultText: null })
192
200
  return
193
201
  }
194
202
 
195
203
  case 'error':
196
- this._emit({ kind: 'error', message: ev.message || ev.error || 'codex error', recoverable: true })
204
+ this._emit({ kind: 'error', message: errorText(ev.message ?? ev.error, 'codex error'), recoverable: true })
197
205
  return
198
206
 
199
207
  default:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thinkpool-pair",
3
- "version": "0.7.227",
3
+ "version": "0.7.228",
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": {