From f18b3c7b867819644d98d32588bd03cb6f8a3092 Mon Sep 17 00:00:00 2001 From: FlowmemoryAI <283694809+FlowmemoryAI@users.noreply.github.com> Date: Wed, 13 May 2026 19:32:50 -0500 Subject: [PATCH] Fix product E2E with empty local maps --- services/control-plane/src/methods.ts | 17 +++++++++++------ .../control-plane/test/control-plane.test.ts | 7 +++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/services/control-plane/src/methods.ts b/services/control-plane/src/methods.ts index 029cc446..8efccd9b 100644 --- a/services/control-plane/src/methods.ts +++ b/services/control-plane/src/methods.ts @@ -178,12 +178,17 @@ function devnetRootfields(state: LoadedControlPlaneState): Record { const controlPlaneObjects = asJsonObject(state.devnetControlPlaneHandoff?.objects); - const value = state.devnet?.[key] - ?? controlPlaneObjects?.[key] - ?? state.devnetControlPlaneHandoff?.[key] - ?? state.devnetVerifierHandoff?.[key] - ?? state.devnetIndexerHandoff?.[key]; - return value !== null && typeof value === "object" && !Array.isArray(value) ? value as Record : {}; + const candidates = [ + state.devnet?.[key], + controlPlaneObjects?.[key], + state.devnetControlPlaneHandoff?.[key], + state.devnetVerifierHandoff?.[key], + state.devnetIndexerHandoff?.[key], + ]; + const maps = candidates + .map((value) => asJsonObject(value)) + .filter((value): value is Record => value !== null); + return maps.find((value) => Object.keys(value).length > 0) ?? maps[0] ?? {}; } function firstDevnetMap(state: LoadedControlPlaneState, keys: string[]): Record { diff --git a/services/control-plane/test/control-plane.test.ts b/services/control-plane/test/control-plane.test.ts index 050d0778..2b8c7f9e 100644 --- a/services/control-plane/test/control-plane.test.ts +++ b/services/control-plane/test/control-plane.test.ts @@ -433,6 +433,12 @@ test("smoke client ignores stale local devnet blocks without transactions", () = txIds: [], receipts: [], }], + tokenDefinitions: {}, + tokenBalances: {}, + dexPools: {}, + lpPositions: {}, + swapReceipts: {}, + bridgeCredits: {}, })); const smoke = runControlPlaneSmoke({ @@ -444,6 +450,7 @@ test("smoke client ignores stale local devnet blocks without transactions", () = assert.equal(smoke.schema, "flowmemory.control_plane.smoke.v0"); assert.equal(smoke.ok, true); assert.equal(typeof (smoke.queried as Record).txId, "string"); + assert.equal(typeof (smoke.queried as Record).tokenId, "string"); } finally { rmSync(dir, { recursive: true, force: true }); }