feat(discord): writes on write-marked roots, web fetch and search, held prompts (#1509)

Row 23. write_file and edit_file for roots marked write: true under the
same fence as reads; web_fetch (https only, public addresses, pinned
connection, capped body) and web_search through SearXNG; extension
renamed to tools.mjs. Engine holds a prompt while pi is busy and sends
it as its own run, so a second message mid-turn no longer folds into
the first (live defect). fake-pi models the real follow-up folding.

Suite 52/52, node tests 129. rev-code-02 APPROVED round 3, comment
26362, tree dbd2ce9a. Records: QUEUE rows 23-24, CURRENT, BUILD-LOG
phase, SESSIONS, row 24 brief (git verbs, D5-D7 ruled).

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
2026-09-18 07:27:50 -05:00
co-authored by Claude Fable 5.1
parent 1ac812d3d5
commit 1685deb423
24 changed files with 1519 additions and 113 deletions
+1 -1
View File
@@ -143,7 +143,7 @@ test("turn: a failed engine turn posts the fixed line, never model output, and w
await connector.stop();
});
test("turn: a second message during a turn goes to the engine as a follow-up, both get their own reply and record", async () => {
test("turn: a second message during a turn is held by the engine, both get their own reply and record", async () => {
const { journalDir, rest, engine, connector } = setup({ replies: [{ text: "first", delayMs: 30 }, { text: "second" }] });
await connector.start();
const a = await connector.handleMessage(message({ id: "300000000000000007", content: "one" }));