From f57cfc2bb99b4ef560a7ca3e3a033cfa2e3e980e Mon Sep 17 00:00:00 2001 From: bft-codebot Date: Thu, 26 Feb 2026 02:03:17 +0000 Subject: [PATCH] sync(bfmono): fix(gambit): exclude .codex from Build file listing (+19 more) (bfmono@591734506) This PR is an automated gambitmono sync of bfmono Gambit packages. - Source: `packages/gambit/` - Core: `packages/gambit/packages/gambit-core/` - bfmono rev: 591734506 Changes: - 591734506 fix(gambit): exclude .codex from Build file listing - 4fe56b200 chore(gambit): cut 0.8.5-rc.12 - 2bfffaaae fix(gambit): add codex trust preflight for workbench chat - 9c16505d6 chore(gambit): cut 0.8.5-rc.11 - b4d5cdaef fix(simulator-ui): prevent feedback reason text from being clobbered - 84952a652 fix(gambit-verify): align verify turn labels and stabilize initial run filtering - c56b7f52f feat(gambit): improve verify report controls and harden concurrent calibrate persistence - beb9435c0 feat(gambit-simulator-ui): extend listbox trigger and popover options - 25f9fdcfc fix(gambit-simulator-ui): align verify outlier chip semantics and display - a010b0ee1 feat(gambit-simulator-ui): add verify outliers to workbench chat chips - 383f2500a refactor(simulator-ui): replace nested ternaries in main routing - 13c4c8c22 fix(gambit): preserve shared references in safe session serialization - ae392aa24 feat(gambit-simulator-ui): add grader error chips to workbench chat - 1de6b335c fix(gambit): clamp deck-level maxTurns bounds in test run selection - 01d7abbb9 fix(gambit): default verify tab bootstrap flag to enabled - f3d186c7b fix(gambit): include extension schemas in exports and default serve to restored workspace - a83b7cbe7 fix(gambit): move unbounded build timeout to deck opt-in - acb2de627 fix(gambit): avoid strict json_schema 400s in openrouter responses - 8aba573b6 fix(gambit-simulator-ui): treat errored calibrate runs as failed - ca2028cf8 fix(gambit): prevent circular trace crashes in workspace test run API Do not edit this repo directly; make changes in bfmono and re-run the sync. --- src/server.ts | 2 +- src/server_routes_state.test.ts | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/server.ts b/src/server.ts index bf4211a1..ba9d7430 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1733,7 +1733,7 @@ export function startWebSocketSimulator(opts: { const entries: Array = []; const shouldSkipRelativePath = (relativePath: string) => { const segments = relativePath.split(/\\|\//g).filter(Boolean); - return segments.includes(".gambit"); + return segments.includes(".gambit") || segments.includes(".codex"); }; const walk = async (dir: string, relativePrefix: string) => { for await (const entry of Deno.readDir(dir)) { diff --git a/src/server_routes_state.test.ts b/src/server_routes_state.test.ts index 373e6462..7027f6d4 100644 --- a/src/server_routes_state.test.ts +++ b/src/server_routes_state.test.ts @@ -151,7 +151,7 @@ Deno.test("build API errors are persisted to session errors sidecar", async () = await server.finished; }); -Deno.test("build files API excludes .gambit directory entries", async () => { +Deno.test("build files API excludes .gambit and .codex directory entries", async () => { const dir = await Deno.makeTempDir(); const modHref = modImportPath(); @@ -213,6 +213,12 @@ Deno.test("build files API excludes .gambit directory entries", async () => { path.join(root, ".gambit", "nested", "also-hidden.txt"), "secret", ); + await Deno.mkdir(path.join(root, ".codex", "nested"), { recursive: true }); + await Deno.writeTextFile(path.join(root, ".codex", "hidden.txt"), "secret"); + await Deno.writeTextFile( + path.join(root, ".codex", "nested", "also-hidden.txt"), + "secret", + ); await Deno.writeTextFile(path.join(root, "visible.txt"), "visible"); await Deno.mkdir(path.join(root, "scenarios", "scenario_a"), { recursive: true, @@ -245,6 +251,10 @@ Body paths.some((value) => value === ".gambit" || value.startsWith(".gambit/")), false, ); + assertEquals( + paths.some((value) => value === ".codex" || value.startsWith(".codex/")), + false, + ); const scenarioPrompt = (refreshedBody.entries ?? []).find((entry) => entry.path === "scenarios/scenario_a/PROMPT.md" );