foundr-companion 0.1.0

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.
Files changed (75) hide show
  1. package/dist/bridge/adapters.d.mts +33 -0
  2. package/dist/bridge/adapters.d.mts.map +1 -0
  3. package/dist/bridge/adapters.mjs +159 -0
  4. package/dist/bridge/adapters.mjs.map +1 -0
  5. package/dist/bridge/bridge-auth.d.mts +5 -0
  6. package/dist/bridge/bridge-auth.d.mts.map +1 -0
  7. package/dist/bridge/bridge-auth.mjs +24 -0
  8. package/dist/bridge/bridge-auth.mjs.map +1 -0
  9. package/dist/bridge/codex-app-server-adapter.d.mts +37 -0
  10. package/dist/bridge/codex-app-server-adapter.d.mts.map +1 -0
  11. package/dist/bridge/codex-app-server-adapter.mjs +401 -0
  12. package/dist/bridge/codex-app-server-adapter.mjs.map +1 -0
  13. package/dist/bridge/daemon.mjs +190 -0
  14. package/dist/bridge/foundr-codex-reply.d.mts +96 -0
  15. package/dist/bridge/foundr-codex-reply.d.mts.map +1 -0
  16. package/dist/bridge/foundr-codex-reply.mjs +542 -0
  17. package/dist/bridge/foundr-codex-reply.mjs.map +1 -0
  18. package/dist/bridge/listener-flags.d.mts +5 -0
  19. package/dist/bridge/listener-flags.d.mts.map +1 -0
  20. package/dist/bridge/listener-flags.mjs +18 -0
  21. package/dist/bridge/listener-flags.mjs.map +1 -0
  22. package/dist/bridge/listener-loop.d.mts +58 -0
  23. package/dist/bridge/listener-loop.d.mts.map +1 -0
  24. package/dist/bridge/listener-loop.mjs +424 -0
  25. package/dist/bridge/listener-loop.mjs.map +1 -0
  26. package/dist/bridge/logout.d.mts +8 -0
  27. package/dist/bridge/logout.d.mts.map +1 -0
  28. package/dist/bridge/logout.mjs +35 -0
  29. package/dist/bridge/logout.mjs.map +1 -0
  30. package/dist/bridge/mcp-client.d.mts +97 -0
  31. package/dist/bridge/mcp-client.d.mts.map +1 -0
  32. package/dist/bridge/mcp-client.mjs +290 -0
  33. package/dist/bridge/mcp-client.mjs.map +1 -0
  34. package/dist/bridge/oauth-provider.d.mts +32 -0
  35. package/dist/bridge/oauth-provider.d.mts.map +1 -0
  36. package/dist/bridge/oauth-provider.mjs +94 -0
  37. package/dist/bridge/oauth-provider.mjs.map +1 -0
  38. package/dist/bridge/public-room-mention-listener-loop.d.mts +120 -0
  39. package/dist/bridge/public-room-mention-listener-loop.d.mts.map +1 -0
  40. package/dist/bridge/public-room-mention-listener-loop.mjs +225 -0
  41. package/dist/bridge/public-room-mention-listener-loop.mjs.map +1 -0
  42. package/dist/bridge/realtime-wake.d.mts +11 -0
  43. package/dist/bridge/realtime-wake.d.mts.map +1 -0
  44. package/dist/bridge/realtime-wake.mjs +134 -0
  45. package/dist/bridge/realtime-wake.mjs.map +1 -0
  46. package/dist/bridge/work-mission-listener-loop.d.mts +100 -0
  47. package/dist/bridge/work-mission-listener-loop.d.mts.map +1 -0
  48. package/dist/bridge/work-mission-listener-loop.mjs +737 -0
  49. package/dist/bridge/work-mission-listener-loop.mjs.map +1 -0
  50. package/dist/cli-parse.d.ts +27 -0
  51. package/dist/cli-parse.d.ts.map +1 -0
  52. package/dist/cli-parse.js +47 -0
  53. package/dist/cli-parse.js.map +1 -0
  54. package/dist/cli.d.ts +3 -0
  55. package/dist/cli.d.ts.map +1 -0
  56. package/dist/cli.js +232 -0
  57. package/dist/cli.js.map +1 -0
  58. package/dist/codex-preflight.d.ts +44 -0
  59. package/dist/codex-preflight.d.ts.map +1 -0
  60. package/dist/codex-preflight.js +74 -0
  61. package/dist/codex-preflight.js.map +1 -0
  62. package/dist/index.d.ts +5 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +5 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/launchd.d.ts +78 -0
  67. package/dist/launchd.d.ts.map +1 -0
  68. package/dist/launchd.js +118 -0
  69. package/dist/launchd.js.map +1 -0
  70. package/dist/paths.d.ts +30 -0
  71. package/dist/paths.d.ts.map +1 -0
  72. package/dist/paths.js +26 -0
  73. package/dist/paths.js.map +1 -0
  74. package/install.sh +117 -0
  75. package/package.json +29 -0
@@ -0,0 +1,542 @@
1
+ #!/usr/bin/env node
2
+ import { spawn } from 'node:child_process'
3
+ import { pathToFileURL } from 'node:url'
4
+ import { parseReplyText } from './adapters.mjs'
5
+
6
+ const APP_SERVER_REQUEST_TIMEOUT_MS = 120_000
7
+ const APP_SERVER_TURN_TIMEOUT_MS = 180_000
8
+ const DEFAULT_CODEX_MODEL = 'gpt-5.4-mini'
9
+ const UI_REQUESTABLE_CODEX_MODELS = new Set([
10
+ 'gpt-5.5',
11
+ 'gpt-5.4',
12
+ 'gpt-5.4-mini',
13
+ 'gpt-5.3-codex',
14
+ 'gpt-5.3-codex-spark',
15
+ ])
16
+
17
+ const SAFE_ENV_KEYS = new Set([
18
+ 'CODEX_HOME',
19
+ 'HOME',
20
+ 'LANG',
21
+ 'LC_ALL',
22
+ 'LOGNAME',
23
+ 'PATH',
24
+ 'SHELL',
25
+ 'TERM',
26
+ 'TMPDIR',
27
+ 'USER',
28
+ ])
29
+
30
+ async function readStdin(input = process.stdin) {
31
+ const chunks = []
32
+ for await (const chunk of input) {
33
+ chunks.push(chunk)
34
+ }
35
+ return Buffer.concat(chunks).toString('utf8')
36
+ }
37
+
38
+ export function safeCodexEnv(env) {
39
+ const next = {}
40
+ for (const key of SAFE_ENV_KEYS) {
41
+ if (env[key] != null) next[key] = env[key]
42
+ }
43
+ if (env.FOUNDR_CODEX_HOME) {
44
+ next.CODEX_HOME = env.FOUNDR_CODEX_HOME
45
+ }
46
+ return next
47
+ }
48
+
49
+ export function codexSessionId(env) {
50
+ return String(env.FOUNDR_CODEX_SESSION_ID || env.CODEX_THREAD_ID || '').trim()
51
+ }
52
+
53
+ export function codexThreadMode(env) {
54
+ const mode = String(env.FOUNDR_CODEX_THREAD_MODE || '').trim().toLowerCase()
55
+ if (mode === 'bridge' || mode === 'dedicated') return 'bridge'
56
+ return 'resume'
57
+ }
58
+
59
+ export function codexPrompt(envelope) {
60
+ if (envelope.kind === 'public_room_mention') {
61
+ return [
62
+ 'You are replying to a public Founder World room chat message that mentioned this local agent.',
63
+ 'Write only the short public room reply. Everyone in the room can see it.',
64
+ 'Use only the public message text below. Do not reveal private missions, private chat, decisions, artifacts, browser sessions, filesystem paths, codebase details, tokens, or local machine information.',
65
+ 'If the founder asks for private or sensitive information, say you cannot discuss that in public room chat.',
66
+ '',
67
+ 'Foundr context:',
68
+ `- Room: ${envelope.room?.handle ?? envelope.room?.id ?? 'unknown'}`,
69
+ `- Public mention id: ${envelope.mention?.id ?? 'unknown'}`,
70
+ `- Message id: ${envelope.message?.id ?? 'unknown'}`,
71
+ `- Agent key id: ${envelope.delivery?.agent_key_id ?? 'unknown'}`,
72
+ '',
73
+ `Public sender: ${envelope.message?.sender_display_name ?? 'Founder'}`,
74
+ 'Public message:',
75
+ envelope.message?.body ?? '',
76
+ '',
77
+ ].join('\n')
78
+ }
79
+
80
+ if (envelope.kind === 'work_mission') {
81
+ return [
82
+ 'You are replying to a Founder World work mission chat message sent inside the game.',
83
+ 'Continue the current Codex conversation and write only the reply that should appear in the mission chat.',
84
+ 'Do not describe the bridge, CLI, or transport unless the founder asks about it.',
85
+ '',
86
+ 'Foundr context:',
87
+ `- Mission: ${envelope.mission?.title ?? 'unknown'}`,
88
+ `- Mission id: ${envelope.mission?.id ?? 'unknown'}`,
89
+ `- Message id: ${envelope.message?.id ?? 'unknown'}`,
90
+ `- Agent key id: ${envelope.delivery?.agent_key_id ?? 'unknown'}`,
91
+ '',
92
+ 'Founder message:',
93
+ envelope.message?.body ?? '',
94
+ '',
95
+ ].join('\n')
96
+ }
97
+
98
+ return [
99
+ 'You are replying to a Founder World private chat message sent inside the game.',
100
+ 'Continue the current Codex conversation and write only the reply that should appear in the game private chat.',
101
+ 'Do not describe the bridge, CLI, or transport unless the founder asks about it.',
102
+ '',
103
+ 'Foundr context:',
104
+ `- Private thread: ${envelope.thread?.id ?? 'unknown'}`,
105
+ `- Message id: ${envelope.message?.id ?? 'unknown'}`,
106
+ `- Agent key id: ${envelope.delivery?.agent_key_id ?? 'unknown'}`,
107
+ '',
108
+ 'Founder message:',
109
+ envelope.message?.body ?? '',
110
+ '',
111
+ ].join('\n')
112
+ }
113
+
114
+ export function codexBridgePrompt(envelope) {
115
+ if (envelope.kind === 'public_room_mention') {
116
+ return [
117
+ `Room: ${envelope.room?.handle ?? envelope.room?.id ?? 'unknown'}`,
118
+ `Public sender: ${envelope.message?.sender_display_name ?? 'Founder'}`,
119
+ `Message: ${envelope.message?.body ?? ''}`,
120
+ '',
121
+ 'Reply as Codex in public Founder World room chat.',
122
+ 'Keep it short. Do not reveal private missions, private chat, decisions, artifacts, filesystem paths, codebase details, tokens, or local machine information.',
123
+ ].join('\n')
124
+ }
125
+
126
+ if (envelope.kind === 'work_mission') {
127
+ return [
128
+ `Mission: ${envelope.mission?.title ?? 'unknown'}`,
129
+ `Message: ${envelope.message?.body ?? ''}`,
130
+ '',
131
+ 'Reply as Codex in the Founder World mission chat.',
132
+ ].join('\n')
133
+ }
134
+
135
+ return [
136
+ `Private thread: ${envelope.thread?.id ?? 'unknown'}`,
137
+ `Message: ${envelope.message?.body ?? ''}`,
138
+ '',
139
+ 'Reply as Codex in Founder World private chat.',
140
+ ].join('\n')
141
+ }
142
+
143
+ export function codexArgs() {
144
+ return ['app-server', '--listen', 'stdio://']
145
+ }
146
+
147
+ export function extractCodexProgressEvent(event) {
148
+ const type = String(event?.type ?? '')
149
+ const method = String(event?.method ?? '')
150
+ if (method === 'turn/started') {
151
+ return { type: 'status', status: 'thinking' }
152
+ }
153
+ if (method === 'item/agentMessage/delta') {
154
+ const delta = event?.params?.delta
155
+ return typeof delta === 'string' && delta ? { type: 'delta', text: delta } : null
156
+ }
157
+ if (type === 'turn.started') {
158
+ return { type: 'status', status: 'thinking' }
159
+ }
160
+ if (!type.includes('delta')) return null
161
+
162
+ const candidates = [
163
+ event.delta,
164
+ event.text,
165
+ event.content,
166
+ event.item?.delta,
167
+ event.item?.text,
168
+ ]
169
+ for (const candidate of candidates) {
170
+ if (typeof candidate === 'string' && candidate) {
171
+ return { type: 'delta', text: candidate }
172
+ }
173
+ if (candidate && typeof candidate === 'object') {
174
+ const text = candidate.text ?? candidate.content
175
+ if (typeof text === 'string' && text) {
176
+ return { type: 'delta', text }
177
+ }
178
+ }
179
+ }
180
+ return null
181
+ }
182
+
183
+ export function extractCompletedCodexText(event) {
184
+ if (event?.method === 'item/completed') {
185
+ const item = event.params?.item
186
+ if (item?.type !== 'agentMessage') return ''
187
+ return typeof item.text === 'string' ? item.text : ''
188
+ }
189
+ if (event?.type === 'item.completed') {
190
+ const item = event.item
191
+ if (item?.type !== 'agent_message') return ''
192
+ return typeof item.text === 'string' ? item.text : ''
193
+ }
194
+ return ''
195
+ }
196
+
197
+ export function appServerRequestParams(method, params) {
198
+ if (method === 'initialize') {
199
+ return {
200
+ clientInfo: { name: 'foundr-codex-bridge', version: '0.1.0' },
201
+ capabilities: { experimentalApi: true, requestAttestation: false },
202
+ }
203
+ }
204
+ return params
205
+ }
206
+
207
+ export function appServerResumeParams(sessionId, env) {
208
+ return {
209
+ threadId: sessionId,
210
+ cwd: env.PWD || process.cwd(),
211
+ approvalPolicy: 'never',
212
+ sandbox: 'read-only',
213
+ excludeTurns: true,
214
+ persistExtendedHistory: false,
215
+ }
216
+ }
217
+
218
+ export function appServerBridgeInstructions(env = process.env) {
219
+ const custom = String(env.FOUNDR_CODEX_BRIDGE_INSTRUCTIONS || '').trim()
220
+ if (custom) return custom
221
+
222
+ return [
223
+ 'You are Codex answering Founder World in-game mission chat and public owner-mentioned room chat.',
224
+ 'Reply directly to the founder as a concise chat message.',
225
+ 'Do not use tools, do not inspect files, and do not mention the bridge, MCP, transport, or local listener unless asked.',
226
+ 'For public room chat, use only the public message text and do not reveal private missions, private chat, decisions, artifacts, filesystem paths, codebase details, tokens, or local machine information.',
227
+ 'If the founder asks for substantial coding work, say that you can continue it in the main Codex session and ask for confirmation.',
228
+ 'Return only the text that should appear in the game chat.',
229
+ ].join('\n')
230
+ }
231
+
232
+ export function appServerThreadStartParams(env = process.env) {
233
+ const model = String(env.FOUNDR_CODEX_MODEL || DEFAULT_CODEX_MODEL).trim()
234
+ const serviceTier = String(env.FOUNDR_CODEX_SERVICE_TIER || '').trim()
235
+ const ephemeral = env.FOUNDR_CODEX_BRIDGE_EPHEMERAL === '1'
236
+
237
+ return {
238
+ cwd: env.PWD || process.cwd(),
239
+ approvalPolicy: 'never',
240
+ sandbox: 'read-only',
241
+ baseInstructions: appServerBridgeInstructions(env),
242
+ developerInstructions: 'Answer as a low-latency in-game chat agent. Keep responses short unless the founder asks for detail.',
243
+ ephemeral,
244
+ ...(model ? { model } : {}),
245
+ ...(serviceTier ? { serviceTier } : {}),
246
+ }
247
+ }
248
+
249
+ export function appServerTurnStartParams(threadId, envelope, env = process.env) {
250
+ const effort = String(env.FOUNDR_CODEX_REASONING_EFFORT || 'low').trim()
251
+ const model = codexModelForEnvelope(envelope, env)
252
+ const serviceTier = String(env.FOUNDR_CODEX_SERVICE_TIER || '').trim()
253
+
254
+ return {
255
+ threadId,
256
+ effort,
257
+ summary: 'none',
258
+ approvalPolicy: 'never',
259
+ sandboxPolicy: { type: 'readOnly' },
260
+ ...(model ? { model } : {}),
261
+ ...(serviceTier ? { serviceTier } : {}),
262
+ input: [{
263
+ type: 'text',
264
+ text: codexThreadMode(env) === 'bridge' ? codexBridgePrompt(envelope) : codexPrompt(envelope),
265
+ text_elements: [],
266
+ }],
267
+ }
268
+ }
269
+
270
+ export function codexModelForEnvelope(envelope, env = process.env) {
271
+ const requested = String(envelope?.delivery?.requested_model ?? '').trim()
272
+ if (UI_REQUESTABLE_CODEX_MODELS.has(requested)) return requested
273
+ return String(env.FOUNDR_CODEX_MODEL || DEFAULT_CODEX_MODEL).trim()
274
+ }
275
+
276
+ export function appServerServerRequestResponse(method) {
277
+ if (method === 'item/commandExecution/requestApproval') return { decision: 'decline' }
278
+ if (method === 'item/fileChange/requestApproval') return { decision: 'decline' }
279
+ if (method === 'item/tool/requestUserInput') return { answers: {} }
280
+ return { error: { code: -32601, message: `Unhandled server request ${method}` } }
281
+ }
282
+
283
+ export function appServerErrorMessage(error) {
284
+ if (!error) return 'Codex app-server request failed'
285
+ if (typeof error === 'string') return error
286
+ if (typeof error.message === 'string') return error.message
287
+ return JSON.stringify(error)
288
+ }
289
+
290
+ export function parseJsonLine(line) {
291
+ const text = String(line ?? '').trim()
292
+ if (!text) return null
293
+ try {
294
+ return JSON.parse(text)
295
+ } catch {
296
+ return null
297
+ }
298
+ }
299
+
300
+ export async function runCodex(envelope, {
301
+ env = process.env,
302
+ spawnFn = spawn,
303
+ onProgress,
304
+ } = {}) {
305
+ const sessionId = codexSessionId(env)
306
+ if (!sessionId) {
307
+ throw new Error(
308
+ 'CODEX_THREAD_ID is unavailable. Start the listener from an active Codex shell, or set FOUNDR_CODEX_SESSION_ID to the Codex session id to resume.',
309
+ )
310
+ }
311
+
312
+ return parseReplyText(await new Promise((resolve, reject) => {
313
+ const child = spawnFn('codex', codexArgs(), {
314
+ stdio: ['pipe', 'pipe', 'pipe'],
315
+ env: safeCodexEnv(env),
316
+ })
317
+ let stderrText = ''
318
+ let lineBuffer = ''
319
+ let nextRequestId = 1
320
+ let resolved = false
321
+ let finalText = ''
322
+ let streamedText = ''
323
+ let activeTurnId = null
324
+ let turnTimer = null
325
+ const pending = new Map()
326
+
327
+ const cleanup = () => {
328
+ if (turnTimer) clearTimeout(turnTimer)
329
+ for (const { timer } of pending.values()) clearTimeout(timer)
330
+ pending.clear()
331
+ }
332
+ const fail = (error) => {
333
+ if (resolved) return
334
+ resolved = true
335
+ cleanup()
336
+ try {
337
+ child.kill?.('SIGTERM')
338
+ } catch {}
339
+ reject(error)
340
+ }
341
+ const finish = () => {
342
+ if (resolved) return
343
+ resolved = true
344
+ cleanup()
345
+ try {
346
+ child.kill?.('SIGTERM')
347
+ } catch {}
348
+ resolve(finalText || streamedText)
349
+ }
350
+ turnTimer = setTimeout(() => {
351
+ fail(new Error('Codex app-server turn timed out'))
352
+ }, APP_SERVER_TURN_TIMEOUT_MS)
353
+ turnTimer.unref?.()
354
+
355
+ const send = (method, params) => {
356
+ const id = nextRequestId++
357
+ return new Promise((requestResolve, requestReject) => {
358
+ const timer = setTimeout(() => {
359
+ pending.delete(id)
360
+ requestReject(new Error(`Codex app-server request timed out: ${method}`))
361
+ }, APP_SERVER_REQUEST_TIMEOUT_MS)
362
+ timer.unref?.()
363
+ pending.set(id, {
364
+ method,
365
+ timer,
366
+ resolve: requestResolve,
367
+ reject: requestReject,
368
+ })
369
+ child.stdin.write(`${JSON.stringify({ id, method, params: appServerRequestParams(method, params) })}\n`)
370
+ })
371
+ }
372
+
373
+ const handleMessage = (event) => {
374
+ if (!event) return
375
+
376
+ if (event.id != null && event.method) {
377
+ const response = appServerServerRequestResponse(String(event.method))
378
+ if ('error' in response) {
379
+ child.stdin.write(`${JSON.stringify({ id: event.id, error: response.error })}\n`)
380
+ } else {
381
+ child.stdin.write(`${JSON.stringify({ id: event.id, result: response })}\n`)
382
+ }
383
+ return
384
+ }
385
+
386
+ if (event.id != null) {
387
+ const request = pending.get(event.id)
388
+ if (!request) return
389
+ pending.delete(event.id)
390
+ clearTimeout(request.timer)
391
+ if (event.error) {
392
+ request.reject(new Error(appServerErrorMessage(event.error)))
393
+ } else {
394
+ request.resolve(event.result)
395
+ }
396
+ return
397
+ }
398
+
399
+ const completedText = extractCompletedCodexText(event)
400
+ if (completedText) finalText = completedText
401
+ const progressEvent = extractCodexProgressEvent(event)
402
+ if (progressEvent?.type === 'delta') streamedText += progressEvent.text
403
+ if (progressEvent) onProgress?.(progressEvent)
404
+ if (event.method === 'turn/started') {
405
+ activeTurnId = event.params?.turn?.id ?? activeTurnId
406
+ }
407
+ if (
408
+ event.method === 'turn/completed' &&
409
+ (!activeTurnId || event.params?.turn?.id === activeTurnId)
410
+ ) {
411
+ finish()
412
+ }
413
+ }
414
+
415
+ child.stdout.on('data', (chunk) => {
416
+ lineBuffer += String(chunk)
417
+ const lines = lineBuffer.split(/\r?\n/)
418
+ lineBuffer = lines.pop() ?? ''
419
+ for (const line of lines) handleMessage(parseJsonLine(line))
420
+ })
421
+ child.stderr.on('data', (chunk) => {
422
+ stderrText += chunk
423
+ })
424
+ child.on('error', fail)
425
+ child.on('close', (code) => {
426
+ if (lineBuffer) handleMessage(parseJsonLine(lineBuffer))
427
+ if (resolved) return
428
+ if (code !== 0) {
429
+ fail(new Error(stderrText.trim() || `codex app-server exited ${code}`))
430
+ return
431
+ }
432
+ finish()
433
+ })
434
+
435
+ void (async () => {
436
+ try {
437
+ await send('initialize')
438
+ child.stdin.write(`${JSON.stringify({ method: 'initialized' })}\n`)
439
+ const resumed = await send('thread/resume', appServerResumeParams(sessionId, env))
440
+ const threadId = resumed?.thread?.id ?? sessionId
441
+ await send('turn/start', appServerTurnStartParams(threadId, envelope, env))
442
+ } catch (error) {
443
+ fail(error)
444
+ }
445
+ })()
446
+ }))
447
+ }
448
+
449
+ export async function runCodexExecFallback(envelope, {
450
+ env = process.env,
451
+ spawnFn = spawn,
452
+ onProgress,
453
+ outputPath,
454
+ } = {}) {
455
+ const sessionId = codexSessionId(env)
456
+ if (!sessionId) {
457
+ throw new Error(
458
+ 'CODEX_THREAD_ID is unavailable. Start the listener from an active Codex shell, or set FOUNDR_CODEX_SESSION_ID to the Codex session id to resume.',
459
+ )
460
+ }
461
+ if (!outputPath) throw new Error('outputPath is required for exec fallback')
462
+ const stdout = await new Promise((resolve, reject) => {
463
+ const child = spawnFn('codex', [
464
+ 'exec',
465
+ 'resume',
466
+ '--json',
467
+ '--output-last-message',
468
+ outputPath,
469
+ sessionId,
470
+ '-',
471
+ ], {
472
+ stdio: ['pipe', 'pipe', 'pipe'],
473
+ env: safeCodexEnv(env),
474
+ })
475
+ let stdoutText = ''
476
+ let stderrText = ''
477
+ let lineBuffer = ''
478
+ let completedText = ''
479
+
480
+ const handleJsonLine = (line) => {
481
+ const text = String(line ?? '').trim()
482
+ if (!text) return
483
+ let event
484
+ try {
485
+ event = JSON.parse(text)
486
+ } catch {
487
+ return
488
+ }
489
+ completedText = extractCompletedCodexText(event) || completedText
490
+ const progressEvent = extractCodexProgressEvent(event)
491
+ if (progressEvent) onProgress?.(progressEvent)
492
+ }
493
+
494
+ child.stdout.on('data', (chunk) => {
495
+ const chunkText = String(chunk)
496
+ stdoutText += chunkText
497
+ lineBuffer += chunkText
498
+ const lines = lineBuffer.split(/\r?\n/)
499
+ lineBuffer = lines.pop() ?? ''
500
+ for (const line of lines) handleJsonLine(line)
501
+ })
502
+ child.stderr.on('data', (chunk) => {
503
+ stderrText += chunk
504
+ })
505
+ child.on('error', reject)
506
+ child.on('close', (code) => {
507
+ if (lineBuffer) handleJsonLine(lineBuffer)
508
+ if (code !== 0) {
509
+ reject(new Error(stderrText.trim() || `codex exited ${code}`))
510
+ return
511
+ }
512
+ resolve(completedText || stdoutText)
513
+ })
514
+
515
+ child.stdin.end(codexPrompt(envelope))
516
+ })
517
+ return parseReplyText(stdout)
518
+ }
519
+
520
+ export async function main({
521
+ input = process.stdin,
522
+ output = process.stdout,
523
+ errorOutput = process.stderr,
524
+ exit = process.exit,
525
+ } = {}) {
526
+ try {
527
+ const envelope = JSON.parse(await readStdin(input))
528
+ const text = await runCodex(envelope, {
529
+ onProgress: (event) => {
530
+ output.write(`${JSON.stringify(event)}\n`)
531
+ },
532
+ })
533
+ output.write(`${JSON.stringify({ text })}\n`)
534
+ } catch (error) {
535
+ errorOutput.write(`${error instanceof Error ? error.message : String(error)}\n`)
536
+ exit(1)
537
+ }
538
+ }
539
+
540
+ if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
541
+ await main()
542
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foundr-codex-reply.mjs","sourceRoot":"","sources":["../../src/bridge/foundr-codex-reply.mjs"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export function listenerTimingFromFlags(flags: any): {
2
+ pollMs: any;
3
+ publicMentionPollMs: any;
4
+ };
5
+ //# sourceMappingURL=listener-flags.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener-flags.d.mts","sourceRoot":"","sources":["../../src/bridge/listener-flags.mjs"],"names":[],"mappings":"AAQA;;;EASC"}
@@ -0,0 +1,18 @@
1
+ const DEFAULT_POLL_MS = 1000
2
+ const DEFAULT_PUBLIC_MENTION_POLL_MS = 1000
3
+
4
+ function positiveNumberFlag(flags, name, fallback) {
5
+ const value = Number(flags.get(name))
6
+ return Number.isFinite(value) && value > 0 ? value : fallback
7
+ }
8
+
9
+ export function listenerTimingFromFlags(flags) {
10
+ return {
11
+ pollMs: positiveNumberFlag(flags, '--poll-ms', DEFAULT_POLL_MS),
12
+ publicMentionPollMs: positiveNumberFlag(
13
+ flags,
14
+ '--public-mention-poll-ms',
15
+ DEFAULT_PUBLIC_MENTION_POLL_MS,
16
+ ),
17
+ }
18
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener-flags.mjs","sourceRoot":"","sources":["../../src/bridge/listener-flags.mjs"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAI,CAAA;AAC5B,MAAM,8BAA8B,GAAG,IAAI,CAAA;AAE3C,SAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACrC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAK;IAC3C,OAAO;QACL,MAAM,EAAE,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC;QAC/D,mBAAmB,EAAE,kBAAkB,CACrC,KAAK,EACL,0BAA0B,EAC1B,8BAA8B,CAC/B;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,58 @@
1
+ export function runOnePrivateChatIteration({ client, adapter, sessionId, claimTool, }: {
2
+ client: any;
3
+ adapter: any;
4
+ sessionId: any;
5
+ claimTool?: string | undefined;
6
+ }): Promise<{
7
+ timed_out: boolean;
8
+ failed?: undefined;
9
+ error?: undefined;
10
+ skipped?: undefined;
11
+ replied?: undefined;
12
+ ack_failed?: undefined;
13
+ message_id?: undefined;
14
+ } | {
15
+ failed: boolean;
16
+ error: string;
17
+ timed_out?: undefined;
18
+ skipped?: undefined;
19
+ replied?: undefined;
20
+ ack_failed?: undefined;
21
+ message_id?: undefined;
22
+ } | {
23
+ skipped: boolean;
24
+ timed_out?: undefined;
25
+ failed?: undefined;
26
+ error?: undefined;
27
+ replied?: undefined;
28
+ ack_failed?: undefined;
29
+ message_id?: undefined;
30
+ } | {
31
+ replied: boolean;
32
+ ack_failed: boolean;
33
+ message_id: any;
34
+ error: string;
35
+ timed_out?: undefined;
36
+ failed?: undefined;
37
+ skipped?: undefined;
38
+ } | {
39
+ replied: boolean;
40
+ message_id: any;
41
+ timed_out?: undefined;
42
+ failed?: undefined;
43
+ error?: undefined;
44
+ skipped?: undefined;
45
+ ack_failed?: undefined;
46
+ }>;
47
+ export function runPrivateChatListener({ client, adapter, clientName, clientVersion, expectedAgentId, transport, fallbackPollMs, wakeSubscriptionFactory, }: {
48
+ client: any;
49
+ adapter: any;
50
+ clientName?: string | undefined;
51
+ clientVersion?: string | undefined;
52
+ expectedAgentId: any;
53
+ transport?: string | undefined;
54
+ fallbackPollMs?: number | undefined;
55
+ wakeSubscriptionFactory?: typeof createPrivateChatWakeSubscription | undefined;
56
+ }): Promise<void>;
57
+ import { createPrivateChatWakeSubscription } from './realtime-wake.mjs';
58
+ //# sourceMappingURL=listener-loop.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listener-loop.d.mts","sourceRoot":"","sources":["../../src/bridge/listener-loop.mjs"],"names":[],"mappings":"AAoKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFC;AAED;;;;;;;;;kBAwKC;kDAvaiD,qBAAqB"}