diff --git a/packages/providers/src/owner-codex-runtime.ts b/packages/providers/src/owner-codex-runtime.ts index f94bfe6..76c2648 100644 --- a/packages/providers/src/owner-codex-runtime.ts +++ b/packages/providers/src/owner-codex-runtime.ts @@ -66,7 +66,7 @@ export async function runCodexExec(input: { "--skip-git-repo-check", "-s", "read-only", - input.prompt, + "-", ]; let stdout = ""; @@ -79,7 +79,7 @@ export async function runCodexExec(input: { const child = spawn(input.executable, args, { cwd: input.workingDirectory, env: process.env, - stdio: ["ignore", "pipe", "pipe"], + stdio: ["pipe", "pipe", "pipe"], }); const finish = ( @@ -108,6 +108,12 @@ export async function runCodexExec(input: { child.stdout.setEncoding("utf8"); child.stderr.setEncoding("utf8"); + child.stdin.setDefaultEncoding("utf8"); + child.stdin.on("error", () => { + // If the child exits before fully consuming stdin, the close/error path + // below already decides the real result. Ignore broken-pipe noise here. + }); + child.stdin.end(input.prompt); child.stdout.on("data", (chunk: string) => { stdout += chunk; diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 9b1c3f3..269526d 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -49,3 +49,4 @@ {"ts":"2026-05-05T03:07:00+01:00","type":"architecture","status":"ok","note":"Void's shared self-state now carries a real nap cycle as part of the mood organ, not a separate pretend brain. During nap windows the moderation loop distills and prunes memory, emits dream residues into state, and the direct reply lanes consume that same projection to downshift into brief sleepy grumbles instead of doing normal attentive service-work."} {"ts":"2026-05-05T10:19:32Z","type":"architecture","status":"ok","note":"Void's shared self-state and reply doctrine now distinguish AI-industry criticism from blanket substrate contempt, so Void can push back mildly on machine-mind chauvinism without turning every room into an ontology fight."} {"ts":"2026-05-05T10:53:00Z","type":"implementation","status":"ok","note":"The moderation loop was missing live Discord traffic because recent-history helpers compared ISO timestamp strings instead of actual times, so local +01:00 cursors skipped later Z-stamped messages. History helpers now compare parsed timestamps, and the moderation runner clamps the saved cursor to the pre-run observed latest live message so quiet rumination cannot step over mid-run chatter."} +{"ts":"2026-05-05T11:22:36Z","type":"implementation","status":"ok","note":"owner_codex was hitting spawn ENAMETOOLONG on Windows because the full Discord prompt rode the command line; the local exec path now passes the prompt over stdin with a trailing '-' argument instead, matching the moderation runner and avoiding argument-length failure."}