From fdd08800e564f9a0e260d810de52b2e0a3afb44c Mon Sep 17 00:00:00 2001 From: alowpoly Date: Thu, 30 Jul 2026 21:07:59 -0300 Subject: [PATCH 1/3] feat: add multi-monitor oven --- README.md | 1 + audits/oven/console-oven-behavior-policy.json | 562 ++++++++- audits/oven/console-oven-behavior.json | 971 ++++++++++++++-- audits/oven/terminal-oven-parity.json | 1007 +++++++++++++++-- bin/burnlist-codex-bridge.mjs | 230 ++++ bin/burnlist-codex-bridge.test.mjs | 70 ++ bin/burnlist.mjs | 2 + dashboard/src/App.tsx | 10 +- .../src/components/AppHeader/AppHeader.tsx | 3 +- .../MultiMonitor/MultiMonitor.test.ts | 50 + .../components/MultiMonitor/MultiMonitor.tsx | 335 ++++++ .../MultiMonitor/MultiMonitorComposer.tsx | 261 +++++ .../MultiMonitor/MultiMonitorRequestCard.tsx | 100 ++ .../MultiMonitor/codex-composer.css | 223 ++++ .../components/MultiMonitor/codex-thread.css | 260 +++++ .../src/components/MultiMonitor/index.ts | 1 + .../components/MultiMonitor/multi-monitor.css | 313 +++++ dashboard/src/components/index.ts | 1 + dashboard/src/hooks/useAgentMonitor.ts | 130 ++- dashboard/src/lib/agent-monitor.mjs | 18 + dashboard/src/lib/agent-monitor.test.mjs | 18 +- .../lib/canonical-oven-architecture.test.mjs | 10 + dashboard/src/lib/hrefs.ts | 2 +- dashboard/src/lib/index.ts | 1 + dashboard/src/lib/multi-monitor.mjs | 265 +++++ dashboard/src/lib/multi-monitor.test.mjs | 220 ++++ dashboard/src/lib/route-model.mjs | 1 + dashboard/src/lib/route-model.test.mjs | 1 + dashboard/src/lib/types.ts | 5 + .../AgentMonitorEventCard.test.ts | 42 + .../AgentMonitorEventCard.tsx | 15 + .../CodexThreadEvent.tsx | 174 +++ .../engine/agent-monitor-data-contract.mjs | 58 +- .../engine/agent-monitor-event.mjs | 35 +- .../engine/agent-monitor-event.test.mjs | 22 +- .../engine/agent-monitor-feed.mjs | 1 + .../engine/agent-monitor-handler.mjs | 25 + .../engine/agent-monitor-producer.mjs | 43 +- .../engine/agent-monitor-producer.test.mjs | 66 ++ .../engine/agent-monitor-projection.mjs | 8 +- .../engine/agent-monitor-sources.mjs | 7 + .../engine/agent-monitor-sources.test.mjs | 53 +- .../engine/agent-monitor-thread-state.mjs | 91 ++ ovens/catalog.json | 13 +- ovens/multi-monitor/instructions.md | 72 ++ ovens/multi-monitor/multi-monitor.oven | 13 + package.json | 3 +- scripts/package-paths.json | 13 +- scripts/verify-package.mjs | 13 +- scripts/verify-test-files.mjs | 7 + scripts/verify.mjs | 1 + skills/burnlist/references/agent-monitor.md | 25 + src/cli/oven-cli.test.mjs | 2 + src/ovens/official-oven-catalog.test.mjs | 1 + src/ovens/oven-registry.test.mjs | 4 + src/server/burnlist-dashboard-server.mjs | 156 ++- src/server/codex-app-server-client.mjs | 269 +++++ src/server/codex-app-server-client.test.mjs | 166 +++ src/server/dashboard-routes.test.mjs | 4 +- src/server/loopback-peer.mjs | 15 + src/server/loopback-peer.test.mjs | 23 + src/server/model-lab-terminal-protocol.mjs | 4 +- src/server/multi-monitor-messages.mjs | 267 +++++ src/server/multi-monitor-messages.test.mjs | 243 ++++ src/server/multi-monitor-receipts.mjs | 161 +++ src/server/multi-monitor-receipts.test.mjs | 82 ++ src/server/multi-monitor-server-requests.mjs | 242 ++++ .../multi-monitor-server-requests.test.mjs | 95 ++ src/server/oven-routes.test.mjs | 79 ++ src/service/agent-monitor-leases.mjs | 59 +- src/service/agent-monitor-leases.test.mjs | 30 + tui/src/oven-terminal-contract.test.ts | 2 +- 72 files changed, 7432 insertions(+), 343 deletions(-) create mode 100755 bin/burnlist-codex-bridge.mjs create mode 100644 bin/burnlist-codex-bridge.test.mjs create mode 100644 dashboard/src/components/MultiMonitor/MultiMonitor.test.ts create mode 100644 dashboard/src/components/MultiMonitor/MultiMonitor.tsx create mode 100644 dashboard/src/components/MultiMonitor/MultiMonitorComposer.tsx create mode 100644 dashboard/src/components/MultiMonitor/MultiMonitorRequestCard.tsx create mode 100644 dashboard/src/components/MultiMonitor/codex-composer.css create mode 100644 dashboard/src/components/MultiMonitor/codex-thread.css create mode 100644 dashboard/src/components/MultiMonitor/index.ts create mode 100644 dashboard/src/components/MultiMonitor/multi-monitor.css create mode 100644 dashboard/src/lib/multi-monitor.mjs create mode 100644 dashboard/src/lib/multi-monitor.test.mjs create mode 100644 dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx create mode 100644 ovens/agent-monitor/engine/agent-monitor-thread-state.mjs create mode 100644 ovens/multi-monitor/instructions.md create mode 100644 ovens/multi-monitor/multi-monitor.oven create mode 100644 src/server/codex-app-server-client.mjs create mode 100644 src/server/codex-app-server-client.test.mjs create mode 100644 src/server/loopback-peer.mjs create mode 100644 src/server/loopback-peer.test.mjs create mode 100644 src/server/multi-monitor-messages.mjs create mode 100644 src/server/multi-monitor-messages.test.mjs create mode 100644 src/server/multi-monitor-receipts.mjs create mode 100644 src/server/multi-monitor-receipts.test.mjs create mode 100644 src/server/multi-monitor-server-requests.mjs create mode 100644 src/server/multi-monitor-server-requests.test.mjs diff --git a/README.md b/README.md index d7547bae..09d8dfd4 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,7 @@ Untracked hook configs are added to `.git/info/exclude` by default; tracked conf - `burnlist --stamp` prints a local ISO timestamp for completion records. - `burnlist install` / `burnlist uninstall` manage the independent agent-skill registrations. - `burnlist hooks install|uninstall|status` manages the independent per-repository native observability hooks. +- `burnlist-codex-bridge` is the optional `CODEX_CLI_PATH` bridge that lets Codex Desktop and Multi Monitor share one App Server for acknowledged live-task messaging. Use `burnlist --help` for dashboard ports, scan roots, local state paths, and Oven data bindings. diff --git a/audits/oven/console-oven-behavior-policy.json b/audits/oven/console-oven-behavior-policy.json index b2bc14b2..f24d1d56 100644 --- a/audits/oven/console-oven-behavior-policy.json +++ b/audits/oven/console-oven-behavior-policy.json @@ -1,6 +1,22 @@ { "schema": "burnlist-console-oven-behavior-policy@2", "capabilities": [ + { + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:0c030c0dfa138bb9", + "fingerprint": "0c030c0dfa138bb971baad58e100a7e2b3e33df0933cc179fe95fa14dd89030c", + "classification": "blocker-to-migrate", + "semanticOwner": { + "ownerType": "migration-target", + "ownerTarget": "B17", + "path": "dashboard/src/App.tsx", + "export": "App", + "version": "burnlist-console-oven-behavior@1" + }, + "blocker": { + "burnlistItem": "B17", + "condition": "terminal runtime must implement dashboard/src/App.tsx:App" + } + }, { "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:0e91c0434dab74c6", "fingerprint": "0e91c0434dab74c6d8099893af17ae51154dda739455b280188621ce4a0fb170", @@ -34,8 +50,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:3f9dd4948879086e", - "fingerprint": "3f9dd4948879086e4c6599576c739a8e8f4e7ffb67849810e4dcf23a2532c8ed", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:2d7653d3c5be1780", + "fingerprint": "2d7653d3c5be1780de41d1fddf49ca0057cd6eae231c316285a0185a8ff2dea6", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -50,8 +66,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4333dcaf71667d08", - "fingerprint": "4333dcaf71667d08108529b9420ebf1363f9630ceb483537013710d8ebab9bb1", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:348023dcedfc8bf9", + "fingerprint": "348023dcedfc8bf92174e824d346f2569ac05891a69ec78b3b92b8de7db726a9", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -66,8 +82,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4486269fa1d1c1fa", - "fingerprint": "4486269fa1d1c1fa65bacfe24576e3b3ce0c53c6a0ec2f0784b0eeeab32b6926", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:3f9dd4948879086e", + "fingerprint": "3f9dd4948879086e4c6599576c739a8e8f4e7ffb67849810e4dcf23a2532c8ed", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -82,8 +98,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4eaa97a83219daf1", - "fingerprint": "4eaa97a83219daf148230d8b848589756d3e567492f7e0f34105771c3369510e", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:40dd702cfe5c952b", + "fingerprint": "40dd702cfe5c952bd16e0dc222cec01de3d65aad36c598ad70682aec306e3a82", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -98,8 +114,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:5ba000b86bebf3c8", - "fingerprint": "5ba000b86bebf3c8f16ecce4acbb7a7c1f512a31acb08ca6d3263e7f88c7cd6c", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4333dcaf71667d08", + "fingerprint": "4333dcaf71667d08108529b9420ebf1363f9630ceb483537013710d8ebab9bb1", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -114,8 +130,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:7d3765175c92ae64", - "fingerprint": "7d3765175c92ae644ab7e8855b741b70a96ba3cf523c86f7040498ad373dd15e", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4486269fa1d1c1fa", + "fingerprint": "4486269fa1d1c1fa65bacfe24576e3b3ce0c53c6a0ec2f0784b0eeeab32b6926", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -130,8 +146,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:869312be2760fd24", - "fingerprint": "869312be2760fd2482c9aae8ff851f2eb0fbf7dbef8a917d795e204fda903e75", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4eaa97a83219daf1", + "fingerprint": "4eaa97a83219daf148230d8b848589756d3e567492f7e0f34105771c3369510e", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -146,8 +162,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:879c4c24e5fd2fba", - "fingerprint": "879c4c24e5fd2fbaa2ec3d0ef72164470cecdcf5a2dc03d1f9a1419d764bc0bd", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:7d3765175c92ae64", + "fingerprint": "7d3765175c92ae644ab7e8855b741b70a96ba3cf523c86f7040498ad373dd15e", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -162,8 +178,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:92efbbb36b7932f9", - "fingerprint": "92efbbb36b7932f9fbe99cfde78b210e3c2bb7477e0d0926b34abee167c80be1", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:879c4c24e5fd2fba", + "fingerprint": "879c4c24e5fd2fbaa2ec3d0ef72164470cecdcf5a2dc03d1f9a1419d764bc0bd", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -178,8 +194,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:9719effcb0f55d0f", - "fingerprint": "9719effcb0f55d0ffaee19bfd07a27f4b745d21081986c9c7e53309c57862b9e", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:92efbbb36b7932f9", + "fingerprint": "92efbbb36b7932f9fbe99cfde78b210e3c2bb7477e0d0926b34abee167c80be1", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -242,8 +258,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:b75437f13ae72c3e", - "fingerprint": "b75437f13ae72c3ece5807ee0f60b4cbbb6c01c7a96828e4424639c2a3277c61", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:c0432f0723f8faf4", + "fingerprint": "c0432f0723f8faf4ced05a5833aa36d99e75a2cacbeec421fe80d8178e14a41c", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -290,8 +306,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:db078c47db3e50c3", - "fingerprint": "db078c47db3e50c3be160d3fc7c88302b949cd37a92c87b57ad15d850a2e4144", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:d8527748576a174f", + "fingerprint": "d8527748576a174f4d9aa25552207e5865c86d416665403ffa5ef00b5f4d4e7f", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -322,8 +338,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", - "fingerprint": "ec0dec63345d49febfe15e61ed75a2e4d1300fe40bee3efff9df07e27fd28c15", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:e778a1cabcd841f7", + "fingerprint": "e778a1cabcd841f722e748714b059589f00ce9e5c1eb6c40b7ff380c326cb612", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -338,8 +354,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:f4aaac745193880e", - "fingerprint": "f4aaac745193880e0d70587453da4e3423a346212bc48e1862d66c5cea346a22", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", + "fingerprint": "ec0dec63345d49febfe15e61ed75a2e4d1300fe40bee3efff9df07e27fd28c15", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -369,6 +385,22 @@ "condition": "terminal runtime must implement dashboard/src/App.tsx:App" } }, + { + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:05fd5ac5daa1e607", + "fingerprint": "05fd5ac5daa1e607a3a486cf8f998433941d4b414ef4dd3b5f6ad0d8941118fe", + "classification": "blocker-to-migrate", + "semanticOwner": { + "ownerType": "migration-target", + "ownerTarget": "B17", + "path": "dashboard/src/App.tsx", + "export": "App", + "version": "burnlist-console-oven-behavior@1" + }, + "blocker": { + "burnlistItem": "B17", + "condition": "terminal runtime must implement dashboard/src/App.tsx:App" + } + }, { "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:3651b5c07432da72", "fingerprint": "3651b5c07432da726f6ba9febb4e7c215abb7b76e61165bab14fbc99c6f83770", @@ -386,8 +418,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e", - "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:43b8fef001929055", + "fingerprint": "43b8fef001929055ce5ca711809cf5a54fe90a1a74b0734eb268445c22ac73cd", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -402,7 +434,7 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e:1", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e", "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932", "classification": "blocker-to-migrate", "semanticOwner": { @@ -418,8 +450,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:662fae22a9c098ce", - "fingerprint": "662fae22a9c098ce7dfd39d7a5733a921a871489de4300f1b21ee6a59216f31f", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e:1", + "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -434,8 +466,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:6ea5a02132549b79", - "fingerprint": "6ea5a02132549b79b75583eeb9bce2e8c31ec98790221e606b37f92cf5da0862", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:662fae22a9c098ce", + "fingerprint": "662fae22a9c098ce7dfd39d7a5733a921a871489de4300f1b21ee6a59216f31f", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -450,8 +482,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:ac413be8f7156f5a", - "fingerprint": "ac413be8f7156f5a6171e93d1fd20a65fb0f115d9d0a79ce027e55a064da1e21", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", + "fingerprint": "b67210fdce841e44b3cd523e0c3ecc3dbe2e908d9fa2b9c9dad297789908d9c0", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -466,8 +498,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", - "fingerprint": "b67210fdce841e44b3cd523e0c3ecc3dbe2e908d9fa2b9c9dad297789908d9c0", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:c55af9294825118a", + "fingerprint": "c55af9294825118a683d98226b527f244d854e0734939eb0e2af0e605824452b", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1666,8 +1698,8 @@ } }, { - "id": "branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:26cbb2fb634679a0", - "fingerprint": "26cbb2fb634679a0c1865a08c928a0d5dd7cbcdfbd9248acc919346a9a5bfe8c", + "id": "branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:63e46ac71b349afc", + "fingerprint": "63e46ac71b349afc881d5b78f386193995c864fd17343669dfc3c36e11c5158d", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -2789,6 +2821,18 @@ "version": "burnlist-console-oven-behavior@1" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:bb8ee3b550371d4e", + "fingerprint": "bb8ee3b550371d4e1a877cf83972218f58aa8811b8633eed4df9a857451b5c1f", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "AgentMonitorEventCard", + "version": "burnlist-console-oven-behavior@1" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:f5d5a951381e35d2", "fingerprint": "f5d5a951381e35d2561d57e9147a17b50201b48962f51bbc9cb47223ddb1bf2d", @@ -2801,6 +2845,18 @@ "version": "burnlist-console-oven-behavior@1" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:IfStatement:e9cbcf4188a02297", + "fingerprint": "e9cbcf4188a022974de7f73744081082e3b68f395670fd30f93f73eb197e4a73", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "AgentMonitorEventCard", + "version": "burnlist-console-oven-behavior@1" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:LogicalExpression:5d0f63658a8a3daa", "fingerprint": "5d0f63658a8a3daaa627977c1402573dc59c6492e4d010256de509958e9a15b2", @@ -2897,6 +2953,18 @@ "version": "burnlist-console-oven-behavior@1" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:90573345f9ff3769", + "fingerprint": "90573345f9ff3769fa8f98152b561c3d24ebd0b0b37c5a3ffa1ab64c691028ae", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:945aaf2d9c633122", "fingerprint": "945aaf2d9c63312207e2f69a4ca446027616e72b1315e483ed518e8ccf754b9a", @@ -2957,6 +3025,18 @@ "version": "burnlist-console-oven-behavior@1" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:f035db98ee9c3a99", + "fingerprint": "f035db98ee9c3a9966ad6e73975bcdd73b4ebe351c126083be9a1fd826d76edd", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:007847839945ed50", "fingerprint": "007847839945ed502cac03cc978011f440d4c2374d3368e3789b07f627cc8baf", @@ -3053,6 +3133,18 @@ "version": "burnlist-console-oven-behavior@1" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:7316e2c1304eda91", + "fingerprint": "7316e2c1304eda91008625b7b9d6f8fd0aafe91c68ea96188c2369663e488f86", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:9287495dc2447ef3", "fingerprint": "9287495dc2447ef32961113cb30226e8010bcf8e812f828d7cae6af6b8be63d8", @@ -3365,6 +3457,390 @@ "version": "burnlist-console-oven-behavior@1" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:2a54795e34f2ed5e", + "fingerprint": "2a54795e34f2ed5e59ffe232591780405bac616e6fd139d41d6b304826a13359", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:6c98bb7d56e077f7", + "fingerprint": "6c98bb7d56e077f7fbb359b227dcc230e6a13cc8be8a4e63452a30859e91e6af", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:8c7bfe4a5843738f", + "fingerprint": "8c7bfe4a5843738ff670d23b4304d25f2952be4f276215675a634261288bc6eb", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:ef1577ef68846185", + "fingerprint": "ef1577ef68846185f9710b31c71407bf392c8eafdef9b3a33d46071fde5fadfd", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:58152696fac25c31", + "fingerprint": "58152696fac25c3179f4ae2e6050e6c9a55a28b84f9386c4979145337955032d", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:a475fb192d334949", + "fingerprint": "a475fb192d334949b31e25064111c57653e422bd3512454d70c0abad66801caa", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:1ad2ca1d1d8c087e", + "fingerprint": "1ad2ca1d1d8c087e05fe84aea8d32906ecbd84e5a3eca435b7e5be2db551c28d", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:355054ea717d610f", + "fingerprint": "355054ea717d610f619849eae109298062a7e63ba15f0e3efbf3e639695fd289", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:82f10f23e8410309", + "fingerprint": "82f10f23e8410309269c4384ae76a09798b5e9014715bd357d41aef7d4bdb22d", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:835ee5c079a9427f", + "fingerprint": "835ee5c079a9427f771af37049e58dcdd3d3af51cc5001436194aed64fd7a76a", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:dda8c601551c15bb", + "fingerprint": "dda8c601551c15bb8dd88072ccad0ea37203a0b3cfb59cd11aef8be5ba463264", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:e45efbe1266b349f", + "fingerprint": "e45efbe1266b349f27ed35b1b17a68259b676a493a3eba0e95589fb7758ab12b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:052ad8adcf098629", + "fingerprint": "052ad8adcf098629c0a1a59499571048858d93c3ce17f39f3cda9f925664c7ff", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:13592c46eb7bdc56", + "fingerprint": "13592c46eb7bdc56dfc1a2bc4d45ef5a4bdb9dc931cdd7304c13c4a1efa5484b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:1ef745a0517747ef", + "fingerprint": "1ef745a0517747ef556f5ea33546e64f3408ffbf6408a71ea6b096fac010a4be", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:21441fe1f10b23ea", + "fingerprint": "21441fe1f10b23ea41f0f924002cbdb0fa3b6104b711c49375107fb6d8d7c0f8", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:3be14009b029be1f", + "fingerprint": "3be14009b029be1f57d2f0bee83589cdc031aee4c970a22d179d9f4ecb852749", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:44dcfe328c3e1826", + "fingerprint": "44dcfe328c3e1826aa37c4a49686c5bf4877192c52bd7b3f039d0b98cb72b01b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:9287495dc2447ef3", + "fingerprint": "9287495dc2447ef32961113cb30226e8010bcf8e812f828d7cae6af6b8be63d8", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:c47b24d096b3b9a7", + "fingerprint": "c47b24d096b3b9a7e91779a7472237f930a17e8a12c1dc792a718cf1429fc2cf", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d099650db9e07dea", + "fingerprint": "d099650db9e07dea6d5022245acfeda6467992f9dc2a253931cc2cf81cfde32b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d17b28be779777b8", + "fingerprint": "d17b28be779777b85291fdcc057dd1aaae9d9c86a86cf1c63d47aed819294bdd", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:0cf0c8ba085b902c", + "fingerprint": "0cf0c8ba085b902c6c8561d1ff81d6f15e097629670dd1f847dddfc145115028", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:18810195abcf251a", + "fingerprint": "18810195abcf251acf1bf60a4e964d497868bf2e318bf0a7f456129b96d599c7", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:2d2c6d08639f12cd", + "fingerprint": "2d2c6d08639f12cdf9663da5a2dcb29b51683871a973266ea9f3b10e3546f976", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:71dbcd3f57b32faf", + "fingerprint": "71dbcd3f57b32fafc591f050a622acc8a59618eaefae5e54719ca924b1c6d7b8", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:74e3e42a4d700ebf", + "fingerprint": "74e3e42a4d700ebf55ce0bad5ac37ff2351c02bd854266893c8f0d3c89cdc74c", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:917cd51c42f977d1", + "fingerprint": "917cd51c42f977d1ad979dcd8052e0ae934d9664fb0461cc6ed7af8bc83587a4", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09ee0ef5a4783c4", + "fingerprint": "d09ee0ef5a4783c40e4ec096e57772b2b6dee43972145999ab744e350ecfd39b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09f93170e0215b8", + "fingerprint": "d09f93170e0215b8fec915b0382eeb4df5aafff9bdb8dcd17ffdeb610d351d56", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:f0acbfb007f59f9b", + "fingerprint": "f0acbfb007f59f9b96b3bb4016a0ab8ea5de8ee66078c405ec6929457108eacb", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:fe5b6a2e2e827528", + "fingerprint": "fe5b6a2e2e82752894ebbd59f71471ca25fe064c28410c1a6c7cd98a669a1f54", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + } + }, { "id": "branch:dashboard/src/oven/AsciiBlock/AsciiBlock.tsx:AsciiBlock:ConditionalExpression:a3d1557b0a99751e", "fingerprint": "a3d1557b0a99751ebd72f15f86d3926808af94e75b5b26c3fa6c2a0ed4294d22", @@ -30443,7 +30919,7 @@ }, { "id": "surface:dashboard/src/App.tsx", - "fingerprint": "205aa6b64af24b68e4401120560ab28544d414b3912a95726dac2929410f3eba", + "fingerprint": "2f54e6d106504fd73a4640ff1afc0d9ac4cf76cad4c39d90fd995b8c7008c55f", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -30603,7 +31079,7 @@ }, { "id": "surface:dashboard/src/lib/hrefs.ts", - "fingerprint": "8cbb99bfcf27c70cefa93bc103c09d8e2ee76a5f873576396956d057e0e02575", + "fingerprint": "0ae7884fffcbcc5ea2cdd5e99e605224d7f33e940a8eedf36c28b91805b2a9e6", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", diff --git a/audits/oven/console-oven-behavior.json b/audits/oven/console-oven-behavior.json index a9f9e722..ed1932f0 100644 --- a/audits/oven/console-oven-behavior.json +++ b/audits/oven/console-oven-behavior.json @@ -5,6 +5,7 @@ "dashboard/src/oven/AgentMonitorActivityChart/AgentMonitorActivityChart.tsx", "dashboard/src/oven/AgentMonitorActivityChart/index.ts", "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", "dashboard/src/oven/AgentMonitorEventCard/index.ts", "dashboard/src/oven/AsciiBlock/AsciiBlock.tsx", "dashboard/src/oven/AsciiBlock/index.ts", @@ -154,7 +155,7 @@ "fingerprints": [ { "path": "dashboard/src/App.tsx", - "fingerprint": "fe03b8095b03b05f369c0b73cbebab89ab87d7fd40270f23bdbb39b7a3d0187c" + "fingerprint": "ebfc5f7487f08b9b9ce206946c62909ef3aa98d072601d4e416de7b90d1b9e9b" }, { "path": "dashboard/src/components/ChecklistDashboard/ChecklistOvenView.tsx", @@ -194,11 +195,11 @@ }, { "path": "dashboard/src/lib/hrefs.ts", - "fingerprint": "7a7298a67d5c1d886cbe065959874da61888833aa98ea1cccb121b31f37d9ceb" + "fingerprint": "6159eb21e256c77bb2ccf96fac6314ccc8a528fc33e5bc2dbaf67f40b13d5504" }, { "path": "dashboard/src/lib/route-model.mjs", - "fingerprint": "2f4f575d0df5157b2b93cfb7539385fabe4df89af44fe0515d58699d7265a88c" + "fingerprint": "63bbb2a148ca35fb7dbc40ffd793d75a38e287e1d03b1931606fdd3b71d50b9f" }, { "path": "dashboard/src/oven/AgentMonitorActivityChart/AgentMonitorActivityChart.tsx", @@ -210,7 +211,11 @@ }, { "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", - "fingerprint": "3e891f4ce779a4b7b3c69575c5b76e755a61e3e7dd53c9f2adb5c4a36e7649d4" + "fingerprint": "ffaa09e0e4db51a19be496d504d7abbe7add555a458ccf2899caba74849e6f85" + }, + { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "fingerprint": "151325a45c4cf2d8e42f53fe5dfeebe9a5d5ebf2d4fc7ac5bf94ea8901cc2ac5" }, { "path": "dashboard/src/oven/AgentMonitorEventCard/index.ts", @@ -822,6 +827,30 @@ ] }, "behaviors": [ + { + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:0c030c0dfa138bb9", + "fingerprint": "0c030c0dfa138bb971baad58e100a7e2b3e33df0933cc179fe95fa14dd89030c", + "classification": "blocker-to-migrate", + "semanticOwner": { + "ownerType": "migration-target", + "ownerTarget": "B17", + "path": "dashboard/src/App.tsx", + "export": "App", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/App.tsx", + "export": "App", + "node": "ConditionalExpression", + "predicate": "section === \"multi-monitor\"", + "nodeKinds": [], + "fingerprint": "0c030c0dfa138bb971baad58e100a7e2b3e33df0933cc179fe95fa14dd89030c" + }, + "blocker": { + "burnlistItem": "B17", + "condition": "terminal runtime must implement dashboard/src/App.tsx:App" + } + }, { "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:0e91c0434dab74c6", "fingerprint": "0e91c0434dab74c6d8099893af17ae51154dda739455b280188621ce4a0fb170", @@ -871,8 +900,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:3f9dd4948879086e", - "fingerprint": "3f9dd4948879086e4c6599576c739a8e8f4e7ffb67849810e4dcf23a2532c8ed", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:2d7653d3c5be1780", + "fingerprint": "2d7653d3c5be1780de41d1fddf49ca0057cd6eae231c316285a0185a8ff2dea6", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -885,9 +914,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "section === \"new-oven\"", + "predicate": "[\"landing\", \"burnlist\", \"agent-monitor\", \"streaming-diff\", \"multi-monitor\"].includes(section) || (section === \"custom-oven\" && selected)", "nodeKinds": [], - "fingerprint": "3f9dd4948879086e4c6599576c739a8e8f4e7ffb67849810e4dcf23a2532c8ed" + "fingerprint": "2d7653d3c5be1780de41d1fddf49ca0057cd6eae231c316285a0185a8ff2dea6" }, "blocker": { "burnlistItem": "B17", @@ -895,8 +924,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4333dcaf71667d08", - "fingerprint": "4333dcaf71667d08108529b9420ebf1363f9630ceb483537013710d8ebab9bb1", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:348023dcedfc8bf9", + "fingerprint": "348023dcedfc8bf92174e824d346f2569ac05891a69ec78b3b92b8de7db726a9", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -909,9 +938,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "loading && !progress", + "predicate": "section === \"differential-testing\"", "nodeKinds": [], - "fingerprint": "4333dcaf71667d08108529b9420ebf1363f9630ceb483537013710d8ebab9bb1" + "fingerprint": "348023dcedfc8bf92174e824d346f2569ac05891a69ec78b3b92b8de7db726a9" }, "blocker": { "burnlistItem": "B17", @@ -919,8 +948,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4486269fa1d1c1fa", - "fingerprint": "4486269fa1d1c1fa65bacfe24576e3b3ce0c53c6a0ec2f0784b0eeeab32b6926", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:3f9dd4948879086e", + "fingerprint": "3f9dd4948879086e4c6599576c739a8e8f4e7ffb67849810e4dcf23a2532c8ed", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -933,9 +962,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "projects.length && visibleBurnlistCount", + "predicate": "section === \"new-oven\"", "nodeKinds": [], - "fingerprint": "4486269fa1d1c1fa65bacfe24576e3b3ce0c53c6a0ec2f0784b0eeeab32b6926" + "fingerprint": "3f9dd4948879086e4c6599576c739a8e8f4e7ffb67849810e4dcf23a2532c8ed" }, "blocker": { "burnlistItem": "B17", @@ -943,8 +972,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4eaa97a83219daf1", - "fingerprint": "4eaa97a83219daf148230d8b848589756d3e567492f7e0f34105771c3369510e", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:40dd702cfe5c952b", + "fingerprint": "40dd702cfe5c952bd16e0dc222cec01de3d65aad36c598ad70682aec306e3a82", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -957,9 +986,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "projects.length", + "predicate": "section === \"streaming-diff\"", "nodeKinds": [], - "fingerprint": "4eaa97a83219daf148230d8b848589756d3e567492f7e0f34105771c3369510e" + "fingerprint": "40dd702cfe5c952bd16e0dc222cec01de3d65aad36c598ad70682aec306e3a82" }, "blocker": { "burnlistItem": "B17", @@ -967,8 +996,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:5ba000b86bebf3c8", - "fingerprint": "5ba000b86bebf3c8f16ecce4acbb7a7c1f512a31acb08ca6d3263e7f88c7cd6c", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4333dcaf71667d08", + "fingerprint": "4333dcaf71667d08108529b9420ebf1363f9630ceb483537013710d8ebab9bb1", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -981,9 +1010,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "section === \"performance-tracing\"", + "predicate": "loading && !progress", "nodeKinds": [], - "fingerprint": "5ba000b86bebf3c8f16ecce4acbb7a7c1f512a31acb08ca6d3263e7f88c7cd6c" + "fingerprint": "4333dcaf71667d08108529b9420ebf1363f9630ceb483537013710d8ebab9bb1" }, "blocker": { "burnlistItem": "B17", @@ -991,8 +1020,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:7d3765175c92ae64", - "fingerprint": "7d3765175c92ae644ab7e8855b741b70a96ba3cf523c86f7040498ad373dd15e", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4486269fa1d1c1fa", + "fingerprint": "4486269fa1d1c1fa65bacfe24576e3b3ce0c53c6a0ec2f0784b0eeeab32b6926", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1005,9 +1034,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "section === \"run-burn\"", + "predicate": "projects.length && visibleBurnlistCount", "nodeKinds": [], - "fingerprint": "7d3765175c92ae644ab7e8855b741b70a96ba3cf523c86f7040498ad373dd15e" + "fingerprint": "4486269fa1d1c1fa65bacfe24576e3b3ce0c53c6a0ec2f0784b0eeeab32b6926" }, "blocker": { "burnlistItem": "B17", @@ -1015,8 +1044,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:869312be2760fd24", - "fingerprint": "869312be2760fd2482c9aae8ff851f2eb0fbf7dbef8a917d795e204fda903e75", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:4eaa97a83219daf1", + "fingerprint": "4eaa97a83219daf148230d8b848589756d3e567492f7e0f34105771c3369510e", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1029,9 +1058,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "[\"landing\", \"burnlist\", \"agent-monitor\", \"streaming-diff\"].includes(section) || (section === \"custom-oven\" && selected)", + "predicate": "projects.length", "nodeKinds": [], - "fingerprint": "869312be2760fd2482c9aae8ff851f2eb0fbf7dbef8a917d795e204fda903e75" + "fingerprint": "4eaa97a83219daf148230d8b848589756d3e567492f7e0f34105771c3369510e" }, "blocker": { "burnlistItem": "B17", @@ -1039,8 +1068,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:879c4c24e5fd2fba", - "fingerprint": "879c4c24e5fd2fbaa2ec3d0ef72164470cecdcf5a2dc03d1f9a1419d764bc0bd", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:7d3765175c92ae64", + "fingerprint": "7d3765175c92ae644ab7e8855b741b70a96ba3cf523c86f7040498ad373dd15e", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1053,9 +1082,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "section === \"visual-parity\"", + "predicate": "section === \"run-burn\"", "nodeKinds": [], - "fingerprint": "879c4c24e5fd2fbaa2ec3d0ef72164470cecdcf5a2dc03d1f9a1419d764bc0bd" + "fingerprint": "7d3765175c92ae644ab7e8855b741b70a96ba3cf523c86f7040498ad373dd15e" }, "blocker": { "burnlistItem": "B17", @@ -1063,8 +1092,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:92efbbb36b7932f9", - "fingerprint": "92efbbb36b7932f9fbe99cfde78b210e3c2bb7477e0d0926b34abee167c80be1", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:879c4c24e5fd2fba", + "fingerprint": "879c4c24e5fd2fbaa2ec3d0ef72164470cecdcf5a2dc03d1f9a1419d764bc0bd", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1077,9 +1106,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "error", + "predicate": "section === \"visual-parity\"", "nodeKinds": [], - "fingerprint": "92efbbb36b7932f9fbe99cfde78b210e3c2bb7477e0d0926b34abee167c80be1" + "fingerprint": "879c4c24e5fd2fbaa2ec3d0ef72164470cecdcf5a2dc03d1f9a1419d764bc0bd" }, "blocker": { "burnlistItem": "B17", @@ -1087,8 +1116,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:9719effcb0f55d0f", - "fingerprint": "9719effcb0f55d0ffaee19bfd07a27f4b745d21081986c9c7e53309c57862b9e", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:92efbbb36b7932f9", + "fingerprint": "92efbbb36b7932f9fbe99cfde78b210e3c2bb7477e0d0926b34abee167c80be1", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1101,9 +1130,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "section === \"streaming-diff\"", + "predicate": "error", "nodeKinds": [], - "fingerprint": "9719effcb0f55d0ffaee19bfd07a27f4b745d21081986c9c7e53309c57862b9e" + "fingerprint": "92efbbb36b7932f9fbe99cfde78b210e3c2bb7477e0d0926b34abee167c80be1" }, "blocker": { "burnlistItem": "B17", @@ -1183,8 +1212,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:b75437f13ae72c3e", - "fingerprint": "b75437f13ae72c3ece5807ee0f60b4cbbb6c01c7a96828e4424639c2a3277c61", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:c0432f0723f8faf4", + "fingerprint": "c0432f0723f8faf4ced05a5833aa36d99e75a2cacbeec421fe80d8178e14a41c", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1197,9 +1226,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "section === \"model-lab\"", + "predicate": "section === \"agent-monitor\"", "nodeKinds": [], - "fingerprint": "b75437f13ae72c3ece5807ee0f60b4cbbb6c01c7a96828e4424639c2a3277c61" + "fingerprint": "c0432f0723f8faf4ced05a5833aa36d99e75a2cacbeec421fe80d8178e14a41c" }, "blocker": { "burnlistItem": "B17", @@ -1255,8 +1284,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:db078c47db3e50c3", - "fingerprint": "db078c47db3e50c3be160d3fc7c88302b949cd37a92c87b57ad15d850a2e4144", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:d8527748576a174f", + "fingerprint": "d8527748576a174f4d9aa25552207e5865c86d416665403ffa5ef00b5f4d4e7f", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1269,9 +1298,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "section === \"agent-monitor\"", + "predicate": "section === \"performance-tracing\"", "nodeKinds": [], - "fingerprint": "db078c47db3e50c3be160d3fc7c88302b949cd37a92c87b57ad15d850a2e4144" + "fingerprint": "d8527748576a174f4d9aa25552207e5865c86d416665403ffa5ef00b5f4d4e7f" }, "blocker": { "burnlistItem": "B17", @@ -1303,8 +1332,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", - "fingerprint": "ec0dec63345d49febfe15e61ed75a2e4d1300fe40bee3efff9df07e27fd28c15", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:e778a1cabcd841f7", + "fingerprint": "e778a1cabcd841f722e748714b059589f00ce9e5c1eb6c40b7ff380c326cb612", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1317,9 +1346,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "selected", + "predicate": "section === \"model-lab\"", "nodeKinds": [], - "fingerprint": "ec0dec63345d49febfe15e61ed75a2e4d1300fe40bee3efff9df07e27fd28c15" + "fingerprint": "e778a1cabcd841f722e748714b059589f00ce9e5c1eb6c40b7ff380c326cb612" }, "blocker": { "burnlistItem": "B17", @@ -1327,8 +1356,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:f4aaac745193880e", - "fingerprint": "f4aaac745193880e0d70587453da4e3423a346212bc48e1862d66c5cea346a22", + "id": "branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", + "fingerprint": "ec0dec63345d49febfe15e61ed75a2e4d1300fe40bee3efff9df07e27fd28c15", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1341,9 +1370,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "ConditionalExpression", - "predicate": "section === \"differential-testing\"", + "predicate": "selected", "nodeKinds": [], - "fingerprint": "f4aaac745193880e0d70587453da4e3423a346212bc48e1862d66c5cea346a22" + "fingerprint": "ec0dec63345d49febfe15e61ed75a2e4d1300fe40bee3efff9df07e27fd28c15" }, "blocker": { "burnlistItem": "B17", @@ -1374,6 +1403,30 @@ "condition": "terminal runtime must implement dashboard/src/App.tsx:App" } }, + { + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:05fd5ac5daa1e607", + "fingerprint": "05fd5ac5daa1e607a3a486cf8f998433941d4b414ef4dd3b5f6ad0d8941118fe", + "classification": "blocker-to-migrate", + "semanticOwner": { + "ownerType": "migration-target", + "ownerTarget": "B17", + "path": "dashboard/src/App.tsx", + "export": "App", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/App.tsx", + "export": "App", + "node": "LogicalExpression", + "predicate": "section !== \"multi-monitor\" && ", + "nodeKinds": [], + "fingerprint": "05fd5ac5daa1e607a3a486cf8f998433941d4b414ef4dd3b5f6ad0d8941118fe" + }, + "blocker": { + "burnlistItem": "B17", + "condition": "terminal runtime must implement dashboard/src/App.tsx:App" + } + }, { "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:3651b5c07432da72", "fingerprint": "3651b5c07432da726f6ba9febb4e7c215abb7b76e61165bab14fbc99c6f83770", @@ -1399,8 +1452,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e", - "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:43b8fef001929055", + "fingerprint": "43b8fef001929055ce5ca711809cf5a54fe90a1a74b0734eb268445c22ac73cd", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1413,9 +1466,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "LogicalExpression", - "predicate": "filter === \"all\" || entry.status === filter", + "predicate": "[\"agent-monitor\", \"differential-testing\", \"model-lab\", \"performance-tracing\", \"streaming-diff\", \"multi-monitor\", \"visual-parity\", \"custom-oven\"].includes(section) || selected", "nodeKinds": [], - "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932" + "fingerprint": "43b8fef001929055ce5ca711809cf5a54fe90a1a74b0734eb268445c22ac73cd" }, "blocker": { "burnlistItem": "B17", @@ -1423,7 +1476,7 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e:1", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e", "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932", "classification": "blocker-to-migrate", "semanticOwner": { @@ -1447,8 +1500,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:662fae22a9c098ce", - "fingerprint": "662fae22a9c098ce7dfd39d7a5733a921a871489de4300f1b21ee6a59216f31f", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e:1", + "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1461,9 +1514,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "LogicalExpression", - "predicate": "section === \"custom-oven\" && selected", + "predicate": "filter === \"all\" || entry.status === filter", "nodeKinds": [], - "fingerprint": "662fae22a9c098ce7dfd39d7a5733a921a871489de4300f1b21ee6a59216f31f" + "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932" }, "blocker": { "burnlistItem": "B17", @@ -1471,8 +1524,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:6ea5a02132549b79", - "fingerprint": "6ea5a02132549b79b75583eeb9bce2e8c31ec98790221e606b37f92cf5da0862", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:662fae22a9c098ce", + "fingerprint": "662fae22a9c098ce7dfd39d7a5733a921a871489de4300f1b21ee6a59216f31f", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1485,9 +1538,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "LogicalExpression", - "predicate": "[\"landing\", \"burnlist\", \"agent-monitor\", \"streaming-diff\"].includes(section) || (section === \"custom-oven\" && selected)", + "predicate": "section === \"custom-oven\" && selected", "nodeKinds": [], - "fingerprint": "6ea5a02132549b79b75583eeb9bce2e8c31ec98790221e606b37f92cf5da0862" + "fingerprint": "662fae22a9c098ce7dfd39d7a5733a921a871489de4300f1b21ee6a59216f31f" }, "blocker": { "burnlistItem": "B17", @@ -1495,8 +1548,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:ac413be8f7156f5a", - "fingerprint": "ac413be8f7156f5a6171e93d1fd20a65fb0f115d9d0a79ce027e55a064da1e21", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", + "fingerprint": "b67210fdce841e44b3cd523e0c3ecc3dbe2e908d9fa2b9c9dad297789908d9c0", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1509,9 +1562,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "LogicalExpression", - "predicate": "[\"agent-monitor\", \"differential-testing\", \"model-lab\", \"performance-tracing\", \"streaming-diff\", \"visual-parity\", \"custom-oven\"].includes(section) || selected", + "predicate": "loading && !progress", "nodeKinds": [], - "fingerprint": "ac413be8f7156f5a6171e93d1fd20a65fb0f115d9d0a79ce027e55a064da1e21" + "fingerprint": "b67210fdce841e44b3cd523e0c3ecc3dbe2e908d9fa2b9c9dad297789908d9c0" }, "blocker": { "burnlistItem": "B17", @@ -1519,8 +1572,8 @@ } }, { - "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", - "fingerprint": "b67210fdce841e44b3cd523e0c3ecc3dbe2e908d9fa2b9c9dad297789908d9c0", + "id": "branch:dashboard/src/App.tsx:App:LogicalExpression:c55af9294825118a", + "fingerprint": "c55af9294825118a683d98226b527f244d854e0734939eb0e2af0e605824452b", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -1533,9 +1586,9 @@ "path": "dashboard/src/App.tsx", "export": "App", "node": "LogicalExpression", - "predicate": "loading && !progress", + "predicate": "[\"landing\", \"burnlist\", \"agent-monitor\", \"streaming-diff\", \"multi-monitor\"].includes(section) || (section === \"custom-oven\" && selected)", "nodeKinds": [], - "fingerprint": "b67210fdce841e44b3cd523e0c3ecc3dbe2e908d9fa2b9c9dad297789908d9c0" + "fingerprint": "c55af9294825118a683d98226b527f244d854e0734939eb0e2af0e605824452b" }, "blocker": { "burnlistItem": "B17", @@ -3319,8 +3372,8 @@ } }, { - "id": "branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:26cbb2fb634679a0", - "fingerprint": "26cbb2fb634679a0c1865a08c928a0d5dd7cbcdfbd9248acc919346a9a5bfe8c", + "id": "branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:63e46ac71b349afc", + "fingerprint": "63e46ac71b349afc881d5b78f386193995c864fd17343669dfc3c36e11c5158d", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -3333,9 +3386,9 @@ "path": "dashboard/src/lib/hrefs.ts", "export": "ovenRepoKey", "node": "ConditionalExpression", - "predicate": "[\"agent-monitor\", \"differential-testing\", \"model-lab\", \"performance-tracing\", \"streaming-diff\", \"visual-parity\", \"custom-oven\"].includes(current.section)", + "predicate": "[\"agent-monitor\", \"differential-testing\", \"model-lab\", \"performance-tracing\", \"streaming-diff\", \"multi-monitor\", \"visual-parity\", \"custom-oven\"].includes(current.section)", "nodeKinds": [], - "fingerprint": "26cbb2fb634679a0c1865a08c928a0d5dd7cbcdfbd9248acc919346a9a5bfe8c" + "fingerprint": "63e46ac71b349afc881d5b78f386193995c864fd17343669dfc3c36e11c5158d" }, "blocker": { "burnlistItem": "B17", @@ -5050,6 +5103,26 @@ "fingerprint": "f92405e0bbb96d56002d40c43343dbd99e1453f8e22e243a38262f4b6ac169dd" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:bb8ee3b550371d4e", + "fingerprint": "bb8ee3b550371d4e1a877cf83972218f58aa8811b8633eed4df9a857451b5c1f", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "AgentMonitorEventCard", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "AgentMonitorEventCard", + "node": "ConditionalExpression", + "predicate": "category === \"message\"", + "nodeKinds": [], + "fingerprint": "bb8ee3b550371d4e1a877cf83972218f58aa8811b8633eed4df9a857451b5c1f" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:f5d5a951381e35d2", "fingerprint": "f5d5a951381e35d2561d57e9147a17b50201b48962f51bbc9cb47223ddb1bf2d", @@ -5070,6 +5143,26 @@ "fingerprint": "f5d5a951381e35d2561d57e9147a17b50201b48962f51bbc9cb47223ddb1bf2d" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:IfStatement:e9cbcf4188a02297", + "fingerprint": "e9cbcf4188a022974de7f73744081082e3b68f395670fd30f93f73eb197e4a73", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "AgentMonitorEventCard", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "AgentMonitorEventCard", + "node": "IfStatement", + "predicate": "event?.presentation === \"codex\"", + "nodeKinds": [], + "fingerprint": "e9cbcf4188a022974de7f73744081082e3b68f395670fd30f93f73eb197e4a73" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:LogicalExpression:5d0f63658a8a3daa", "fingerprint": "5d0f63658a8a3daaa627977c1402573dc59c6492e4d010256de509958e9a15b2", @@ -5230,6 +5323,26 @@ "fingerprint": "8ff36defcde3a6bfcbabf8188bd570858c14cbdc95adf81c1e5994953edebb4e" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:90573345f9ff3769", + "fingerprint": "90573345f9ff3769fa8f98152b561c3d24ebd0b0b37c5a3ffa1ab64c691028ae", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "module", + "node": "ConditionalExpression", + "predicate": "subtype === \"agent_message\"", + "nodeKinds": [], + "fingerprint": "90573345f9ff3769fa8f98152b561c3d24ebd0b0b37c5a3ffa1ab64c691028ae" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:945aaf2d9c633122", "fingerprint": "945aaf2d9c63312207e2f69a4ca446027616e72b1315e483ed518e8ccf754b9a", @@ -5330,6 +5443,26 @@ "fingerprint": "ebbb3f793e157af6116123f8e4dc9f6515b8fb8fcb934fc295903eea324b521b" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:f035db98ee9c3a99", + "fingerprint": "f035db98ee9c3a9966ad6e73975bcdd73b4ebe351c126083be9a1fd826d76edd", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "module", + "node": "ConditionalExpression", + "predicate": "subtype === \"user_message\"", + "nodeKinds": [], + "fingerprint": "f035db98ee9c3a9966ad6e73975bcdd73b4ebe351c126083be9a1fd826d76edd" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:007847839945ed50", "fingerprint": "007847839945ed502cac03cc978011f440d4c2374d3368e3789b07f627cc8baf", @@ -5490,6 +5623,26 @@ "fingerprint": "6be06653e9876d6ea92a41dfb98b0327067cd4f6b9b9e963362cf3cf84f96c71" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:7316e2c1304eda91", + "fingerprint": "7316e2c1304eda91008625b7b9d6f8fd0aafe91c68ea96188c2369663e488f86", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "typeof value !== \"string\"", + "nodeKinds": [], + "fingerprint": "7316e2c1304eda91008625b7b9d6f8fd0aafe91c68ea96188c2369663e488f86" + } + }, { "id": "branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:9287495dc2447ef3", "fingerprint": "9287495dc2447ef32961113cb30226e8010bcf8e812f828d7cae6af6b8be63d8", @@ -6010,6 +6163,646 @@ "fingerprint": "f7531bbd732c637e7fe26337e05a5565606c804e55334ae4d94d14892ca45e9f" } }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:2a54795e34f2ed5e", + "fingerprint": "2a54795e34f2ed5e59ffe232591780405bac616e6fd139d41d6b304826a13359", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "node": "ConditionalExpression", + "predicate": "typeof event.phase === \"string\"", + "nodeKinds": [], + "fingerprint": "2a54795e34f2ed5e59ffe232591780405bac616e6fd139d41d6b304826a13359" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:6c98bb7d56e077f7", + "fingerprint": "6c98bb7d56e077f7fbb359b227dcc230e6a13cc8be8a4e63452a30859e91e6af", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "node": "ConditionalExpression", + "predicate": "typeof event.content === \"string\"", + "nodeKinds": [], + "fingerprint": "6c98bb7d56e077f7fbb359b227dcc230e6a13cc8be8a4e63452a30859e91e6af" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:8c7bfe4a5843738f", + "fingerprint": "8c7bfe4a5843738ff670d23b4304d25f2952be4f276215675a634261288bc6eb", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "node": "ConditionalExpression", + "predicate": "typeof event.label === \"string\"", + "nodeKinds": [], + "fingerprint": "8c7bfe4a5843738ff670d23b4304d25f2952be4f276215675a634261288bc6eb" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:ef1577ef68846185", + "fingerprint": "ef1577ef68846185f9710b31c71407bf392c8eafdef9b3a33d46071fde5fadfd", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "node": "ConditionalExpression", + "predicate": "event.role === \"user\"", + "nodeKinds": [], + "fingerprint": "ef1577ef68846185f9710b31c71407bf392c8eafdef9b3a33d46071fde5fadfd" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:58152696fac25c31", + "fingerprint": "58152696fac25c3179f4ae2e6050e6c9a55a28b84f9386c4979145337955032d", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "node": "IfStatement", + "predicate": "event.kind === \"worked\"", + "nodeKinds": [], + "fingerprint": "58152696fac25c3179f4ae2e6050e6c9a55a28b84f9386c4979145337955032d" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:a475fb192d334949", + "fingerprint": "a475fb192d334949b31e25064111c57653e422bd3512454d70c0abad66801caa", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "CodexThreadEvent", + "node": "IfStatement", + "predicate": "event.kind === \"edits\"", + "nodeKinds": [], + "fingerprint": "a475fb192d334949b31e25064111c57653e422bd3512454d70c0abad66801caa" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:1ad2ca1d1d8c087e", + "fingerprint": "1ad2ca1d1d8c087e05fe84aea8d32906ecbd84e5a3eca435b7e5be2db551c28d", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "ConditionalExpression", + "predicate": "Array.isArray(event.files)", + "nodeKinds": [], + "fingerprint": "1ad2ca1d1d8c087e05fe84aea8d32906ecbd84e5a3eca435b7e5be2db551c28d" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:355054ea717d610f", + "fingerprint": "355054ea717d610f619849eae109298062a7e63ba15f0e3efbf3e639695fd289", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "ConditionalExpression", + "predicate": "count === 1", + "nodeKinds": [], + "fingerprint": "355054ea717d610f619849eae109298062a7e63ba15f0e3efbf3e639695fd289" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:82f10f23e8410309", + "fingerprint": "82f10f23e8410309269c4384ae76a09798b5e9014715bd357d41aef7d4bdb22d", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "ConditionalExpression", + "predicate": "index < lines.length", + "nodeKinds": [], + "fingerprint": "82f10f23e8410309269c4384ae76a09798b5e9014715bd357d41aef7d4bdb22d" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:835ee5c079a9427f", + "fingerprint": "835ee5c079a9427f771af37049e58dcdd3d3af51cc5001436194aed64fd7a76a", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "ConditionalExpression", + "predicate": "Number.isSafeInteger(value) && Number(value) >= 0", + "nodeKinds": [], + "fingerprint": "835ee5c079a9427f771af37049e58dcdd3d3af51cc5001436194aed64fd7a76a" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:dda8c601551c15bb", + "fingerprint": "dda8c601551c15bb8dd88072ccad0ea37203a0b3cfb59cd11aef8be5ba463264", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "ConditionalExpression", + "predicate": "hidden.length === 1", + "nodeKinds": [], + "fingerprint": "dda8c601551c15bb8dd88072ccad0ea37203a0b3cfb59cd11aef8be5ba463264" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:e45efbe1266b349f", + "fingerprint": "e45efbe1266b349f27ed35b1b17a68259b676a493a3eba0e95589fb7758ab12b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "ConditionalExpression", + "predicate": "typeof file.path === \"string\"", + "nodeKinds": [], + "fingerprint": "e45efbe1266b349f27ed35b1b17a68259b676a493a3eba0e95589fb7758ab12b" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:052ad8adcf098629", + "fingerprint": "052ad8adcf098629c0a1a59499571048858d93c3ce17f39f3cda9f925664c7ff", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "/^[-*]\\s+/u.test(line)", + "nodeKinds": [], + "fingerprint": "052ad8adcf098629c0a1a59499571048858d93c3ce17f39f3cda9f925664c7ff" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:13592c46eb7bdc56", + "fingerprint": "13592c46eb7bdc56dfc1a2bc4d45ef5a4bdb9dc931cdd7304c13c4a1efa5484b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "index > cursor", + "nodeKinds": [], + "fingerprint": "13592c46eb7bdc56dfc1a2bc4d45ef5a4bdb9dc931cdd7304c13c4a1efa5484b" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:1ef745a0517747ef", + "fingerprint": "1ef745a0517747ef556f5ea33546e64f3408ffbf6408a71ea6b096fac010a4be", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "!line.trim()", + "nodeKinds": [], + "fingerprint": "1ef745a0517747ef556f5ea33546e64f3408ffbf6408a71ea6b096fac010a4be" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:21441fe1f10b23ea", + "fingerprint": "21441fe1f10b23ea41f0f924002cbdb0fa3b6104b711c49375107fb6d8d7c0f8", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "line.startsWith(\"```\")", + "nodeKinds": [], + "fingerprint": "21441fe1f10b23ea41f0f924002cbdb0fa3b6104b711c49375107fb6d8d7c0f8" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:3be14009b029be1f", + "fingerprint": "3be14009b029be1f57d2f0bee83589cdc031aee4c970a22d179d9f4ecb852749", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "/^\\d+\\.\\s+/u.test(line)", + "nodeKinds": [], + "fingerprint": "3be14009b029be1f57d2f0bee83589cdc031aee4c970a22d179d9f4ecb852749" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:44dcfe328c3e1826", + "fingerprint": "44dcfe328c3e1826aa37c4a49686c5bf4877192c52bd7b3f039d0b98cb72b01b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "token.startsWith(\"`\")", + "nodeKinds": [], + "fingerprint": "44dcfe328c3e1826aa37c4a49686c5bf4877192c52bd7b3f039d0b98cb72b01b" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:9287495dc2447ef3", + "fingerprint": "9287495dc2447ef32961113cb30226e8010bcf8e812f828d7cae6af6b8be63d8", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "token.startsWith(\"**\")", + "nodeKinds": [], + "fingerprint": "9287495dc2447ef32961113cb30226e8010bcf8e812f828d7cae6af6b8be63d8" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:c47b24d096b3b9a7", + "fingerprint": "c47b24d096b3b9a7e91779a7472237f930a17e8a12c1dc792a718cf1429fc2cf", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "cursor < value.length", + "nodeKinds": [], + "fingerprint": "c47b24d096b3b9a7e91779a7472237f930a17e8a12c1dc792a718cf1429fc2cf" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d099650db9e07dea", + "fingerprint": "d099650db9e07dea6d5022245acfeda6467992f9dc2a253931cc2cf81cfde32b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "heading", + "nodeKinds": [], + "fingerprint": "d099650db9e07dea6d5022245acfeda6467992f9dc2a253931cc2cf81cfde32b" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d17b28be779777b8", + "fingerprint": "d17b28be779777b85291fdcc057dd1aaae9d9c86a86cf1c63d47aed819294bdd", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "IfStatement", + "predicate": "link", + "nodeKinds": [], + "fingerprint": "d17b28be779777b85291fdcc057dd1aaae9d9c86a86cf1c63d47aed819294bdd" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:0cf0c8ba085b902c", + "fingerprint": "0cf0c8ba085b902c6c8561d1ff81d6f15e097629670dd1f847dddfc145115028", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "index < lines.length && /^\\d+\\.\\s+/u.test(lines[index])", + "nodeKinds": [], + "fingerprint": "0cf0c8ba085b902c6c8561d1ff81d6f15e097629670dd1f847dddfc145115028" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:18810195abcf251a", + "fingerprint": "18810195abcf251acf1bf60a4e964d497868bf2e318bf0a7f456129b96d599c7", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "index < lines.length && lines[index].trim()", + "nodeKinds": [], + "fingerprint": "18810195abcf251acf1bf60a4e964d497868bf2e318bf0a7f456129b96d599c7" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:2d2c6d08639f12cd", + "fingerprint": "2d2c6d08639f12cdf9663da5a2dcb29b51683871a973266ea9f3b10e3546f976", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "match.index ?? 0", + "nodeKinds": [], + "fingerprint": "2d2c6d08639f12cdf9663da5a2dcb29b51683871a973266ea9f3b10e3546f976" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:71dbcd3f57b32faf", + "fingerprint": "71dbcd3f57b32fafc591f050a622acc8a59618eaefae5e54719ca924b1c6d7b8", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "Number.isSafeInteger(value) && Number(value) >= 0", + "nodeKinds": [], + "fingerprint": "71dbcd3f57b32fafc591f050a622acc8a59618eaefae5e54719ca924b1c6d7b8" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:74e3e42a4d700ebf", + "fingerprint": "74e3e42a4d700ebf55ce0bad5ac37ff2351c02bd854266893c8f0d3c89cdc74c", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "hidden.length > 0 &&
Show {hidden.length} more {hidden.length === 1 ? \"file\" : \"files\"} {hidden.map((file, index) => )}
", + "nodeKinds": [], + "fingerprint": "74e3e42a4d700ebf55ce0bad5ac37ff2351c02bd854266893c8f0d3c89cdc74c" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:917cd51c42f977d1", + "fingerprint": "917cd51c42f977d1ad979dcd8052e0ae934d9664fb0461cc6ed7af8bc83587a4", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "number(event.count) || files.length", + "nodeKinds": [], + "fingerprint": "917cd51c42f977d1ad979dcd8052e0ae934d9664fb0461cc6ed7af8bc83587a4" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09ee0ef5a4783c4", + "fingerprint": "d09ee0ef5a4783c40e4ec096e57772b2b6dee43972145999ab744e350ecfd39b", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "language || undefined", + "nodeKinds": [], + "fingerprint": "d09ee0ef5a4783c40e4ec096e57772b2b6dee43972145999ab744e350ecfd39b" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09f93170e0215b8", + "fingerprint": "d09f93170e0215b8fec915b0382eeb4df5aafff9bdb8dcd17ffdeb610d351d56", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "index < lines.length && /^[-*]\\s+/u.test(lines[index])", + "nodeKinds": [], + "fingerprint": "d09f93170e0215b8fec915b0382eeb4df5aafff9bdb8dcd17ffdeb610d351d56" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:f0acbfb007f59f9b", + "fingerprint": "f0acbfb007f59f9b96b3bb4016a0ab8ea5de8ee66078c405ec6929457108eacb", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "index < lines.length && lines[index].trim() && !/^(?:```|#{1,3}\\s+|[-*]\\s+|\\d+\\.\\s+)/u.test(lines[index])", + "nodeKinds": [], + "fingerprint": "f0acbfb007f59f9b96b3bb4016a0ab8ea5de8ee66078c405ec6929457108eacb" + } + }, + { + "id": "branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:fe5b6a2e2e827528", + "fingerprint": "fe5b6a2e2e82752894ebbd59f71471ca25fe064c28410c1a6c7cd98a669a1f54", + "classification": "closed-shared-adapter", + "semanticOwner": { + "ownerType": "named-adapter", + "ownerTarget": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module", + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "version": "burnlist-console-oven-behavior@1" + }, + "source": { + "path": "dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx", + "export": "module", + "node": "LogicalExpression", + "predicate": "index < lines.length && !lines[index].startsWith(\"```\")", + "nodeKinds": [], + "fingerprint": "fe5b6a2e2e82752894ebbd59f71471ca25fe064c28410c1a6c7cd98a669a1f54" + } + }, { "id": "branch:dashboard/src/oven/AsciiBlock/AsciiBlock.tsx:AsciiBlock:ConditionalExpression:a3d1557b0a99751e", "fingerprint": "a3d1557b0a99751ebd72f15f86d3926808af94e75b5b26c3fa6c2a0ed4294d22", @@ -51380,7 +52173,7 @@ }, { "id": "surface:dashboard/src/App.tsx", - "fingerprint": "205aa6b64af24b68e4401120560ab28544d414b3912a95726dac2929410f3eba", + "fingerprint": "2f54e6d106504fd73a4640ff1afc0d9ac4cf76cad4c39d90fd995b8c7008c55f", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -51393,7 +52186,7 @@ "path": "dashboard/src/App.tsx", "export": "module", "node": "wrapper-surface", - "fingerprint": "205aa6b64af24b68e4401120560ab28544d414b3912a95726dac2929410f3eba" + "fingerprint": "2f54e6d106504fd73a4640ff1afc0d9ac4cf76cad4c39d90fd995b8c7008c55f" }, "blocker": { "burnlistItem": "B17", @@ -51600,7 +52393,7 @@ }, { "id": "surface:dashboard/src/lib/hrefs.ts", - "fingerprint": "8cbb99bfcf27c70cefa93bc103c09d8e2ee76a5f873576396956d057e0e02575", + "fingerprint": "0ae7884fffcbcc5ea2cdd5e99e605224d7f33e940a8eedf36c28b91805b2a9e6", "classification": "blocker-to-migrate", "semanticOwner": { "ownerType": "migration-target", @@ -51613,7 +52406,7 @@ "path": "dashboard/src/lib/hrefs.ts", "export": "module", "node": "wrapper-surface", - "fingerprint": "8cbb99bfcf27c70cefa93bc103c09d8e2ee76a5f873576396956d057e0e02575" + "fingerprint": "0ae7884fffcbcc5ea2cdd5e99e605224d7f33e940a8eedf36c28b91805b2a9e6" }, "blocker": { "burnlistItem": "B17", diff --git a/audits/oven/terminal-oven-parity.json b/audits/oven/terminal-oven-parity.json index b6a9d1bc..199e4f22 100644 --- a/audits/oven/terminal-oven-parity.json +++ b/audits/oven/terminal-oven-parity.json @@ -1,7 +1,16 @@ { "schema": "burnlist-terminal-oven-parity@1", - "b34ArtifactDigest": "e3745cc25767799922964b2926afda3f62ef0bada1c90b7c77a9f93a6b32db3c", + "b34ArtifactDigest": "3e7b051670b406a0c09537db9e530dbc08b2a3f2e058504b27b3a4a983f1eb6b", "atomicDenominator": [ + { + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:0c030c0dfa138bb9", + "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:0c030c0dfa138bb9", + "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:0c030c0dfa138bb9", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:0c030c0dfa138bb9", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:0e91c0434dab74c6", "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:0e91c0434dab74c6", @@ -20,6 +29,24 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:28670509b2644dea", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:2d7653d3c5be1780", + "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:2d7653d3c5be1780", + "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:2d7653d3c5be1780", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:2d7653d3c5be1780", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:348023dcedfc8bf9", + "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:348023dcedfc8bf9", + "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:348023dcedfc8bf9", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:348023dcedfc8bf9", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:3f9dd4948879086e", "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:3f9dd4948879086e", @@ -29,6 +56,15 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:3f9dd4948879086e", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:40dd702cfe5c952b", + "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:40dd702cfe5c952b", + "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:40dd702cfe5c952b", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:40dd702cfe5c952b", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:4333dcaf71667d08", "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:4333dcaf71667d08", @@ -56,15 +92,6 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:4eaa97a83219daf1", "mappingStatus": "gap" }, - { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:5ba000b86bebf3c8", - "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:5ba000b86bebf3c8", - "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:5ba000b86bebf3c8", - "kind": "row", - "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:5ba000b86bebf3c8", - "mappingStatus": "gap" - }, { "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:7d3765175c92ae64", "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:7d3765175c92ae64", @@ -74,15 +101,6 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:7d3765175c92ae64", "mappingStatus": "gap" }, - { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:869312be2760fd24", - "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:869312be2760fd24", - "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:869312be2760fd24", - "kind": "row", - "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:869312be2760fd24", - "mappingStatus": "gap" - }, { "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:879c4c24e5fd2fba", "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:879c4c24e5fd2fba", @@ -101,15 +119,6 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:92efbbb36b7932f9", "mappingStatus": "gap" }, - { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:9719effcb0f55d0f", - "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:9719effcb0f55d0f", - "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:9719effcb0f55d0f", - "kind": "row", - "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:9719effcb0f55d0f", - "mappingStatus": "gap" - }, { "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:a78a7666d4fd8e82", "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:a78a7666d4fd8e82", @@ -138,12 +147,12 @@ "mappingStatus": "gap" }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:b75437f13ae72c3e", - "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:b75437f13ae72c3e", - "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:b75437f13ae72c3e", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:c0432f0723f8faf4", + "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:c0432f0723f8faf4", + "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:c0432f0723f8faf4", "kind": "row", "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:b75437f13ae72c3e", + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:c0432f0723f8faf4", "mappingStatus": "gap" }, { @@ -165,12 +174,12 @@ "mappingStatus": "gap" }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:db078c47db3e50c3", - "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:db078c47db3e50c3", - "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:db078c47db3e50c3", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:d8527748576a174f", + "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:d8527748576a174f", + "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:d8527748576a174f", "kind": "row", "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:db078c47db3e50c3", + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:d8527748576a174f", "mappingStatus": "gap" }, { @@ -183,21 +192,21 @@ "mappingStatus": "gap" }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", - "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", - "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:e778a1cabcd841f7", + "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:e778a1cabcd841f7", + "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:e778a1cabcd841f7", "kind": "row", "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:e778a1cabcd841f7", "mappingStatus": "gap" }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:f4aaac745193880e", - "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:f4aaac745193880e", - "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:f4aaac745193880e", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", + "familyId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", + "rowId": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", "kind": "row", "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:f4aaac745193880e", + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", "mappingStatus": "gap" }, { @@ -209,6 +218,15 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:IfStatement:32451f4f5a45f320", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:05fd5ac5daa1e607", + "familyId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:05fd5ac5daa1e607", + "rowId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:05fd5ac5daa1e607", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:LogicalExpression:05fd5ac5daa1e607", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:3651b5c07432da72", "familyId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:3651b5c07432da72", @@ -218,6 +236,15 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:LogicalExpression:3651b5c07432da72", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:43b8fef001929055", + "familyId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:43b8fef001929055", + "rowId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:43b8fef001929055", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:LogicalExpression:43b8fef001929055", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e", "familyId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e", @@ -246,30 +273,21 @@ "mappingStatus": "gap" }, { - "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:6ea5a02132549b79", - "familyId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:6ea5a02132549b79", - "rowId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:6ea5a02132549b79", - "kind": "row", - "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:LogicalExpression:6ea5a02132549b79", - "mappingStatus": "gap" - }, - { - "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:ac413be8f7156f5a", - "familyId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:ac413be8f7156f5a", - "rowId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:ac413be8f7156f5a", + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", + "familyId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", + "rowId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", "kind": "row", "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:LogicalExpression:ac413be8f7156f5a", + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", "mappingStatus": "gap" }, { - "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", - "familyId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", - "rowId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:c55af9294825118a", + "familyId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:c55af9294825118a", + "rowId": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:c55af9294825118a", "kind": "row", "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", + "evidenceTarget": "atom:b34:branch:dashboard/src/App.tsx:App:LogicalExpression:c55af9294825118a", "mappingStatus": "gap" }, { @@ -939,12 +957,12 @@ "mappingStatus": "gap" }, { - "id": "b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:26cbb2fb634679a0", - "familyId": "b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:26cbb2fb634679a0", - "rowId": "b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:26cbb2fb634679a0", + "id": "b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:63e46ac71b349afc", + "familyId": "b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:63e46ac71b349afc", + "rowId": "b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:63e46ac71b349afc", "kind": "row", "owner": null, - "evidenceTarget": "atom:b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:26cbb2fb634679a0", + "evidenceTarget": "atom:b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:63e46ac71b349afc", "mappingStatus": "gap" }, { @@ -1622,6 +1640,15 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorActivityChart/AgentMonitorActivityChart.tsx:module:LogicalExpression:f92405e0bbb96d56", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:bb8ee3b550371d4e", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:bb8ee3b550371d4e", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:bb8ee3b550371d4e", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:bb8ee3b550371d4e", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:f5d5a951381e35d2", "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:f5d5a951381e35d2", @@ -1631,6 +1658,15 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:f5d5a951381e35d2", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:IfStatement:e9cbcf4188a02297", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:IfStatement:e9cbcf4188a02297", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:IfStatement:e9cbcf4188a02297", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:IfStatement:e9cbcf4188a02297", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:LogicalExpression:5d0f63658a8a3daa", "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:LogicalExpression:5d0f63658a8a3daa", @@ -1703,6 +1739,15 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:8ff36defcde3a6bf", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:90573345f9ff3769", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:90573345f9ff3769", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:90573345f9ff3769", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:90573345f9ff3769", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:945aaf2d9c633122", "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:945aaf2d9c633122", @@ -1748,6 +1793,15 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:ebbb3f793e157af6", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:f035db98ee9c3a99", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:f035db98ee9c3a99", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:f035db98ee9c3a99", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:f035db98ee9c3a99", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:007847839945ed50", "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:007847839945ed50", @@ -1820,6 +1874,15 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:6be06653e9876d6e", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:7316e2c1304eda91", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:7316e2c1304eda91", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:7316e2c1304eda91", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:7316e2c1304eda91", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:9287495dc2447ef3", "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:9287495dc2447ef3", @@ -2054,6 +2117,294 @@ "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:LogicalExpression:f7531bbd732c637e", "mappingStatus": "gap" }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:2a54795e34f2ed5e", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:2a54795e34f2ed5e", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:2a54795e34f2ed5e", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:2a54795e34f2ed5e", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:6c98bb7d56e077f7", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:6c98bb7d56e077f7", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:6c98bb7d56e077f7", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:6c98bb7d56e077f7", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:8c7bfe4a5843738f", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:8c7bfe4a5843738f", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:8c7bfe4a5843738f", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:8c7bfe4a5843738f", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:ef1577ef68846185", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:ef1577ef68846185", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:ef1577ef68846185", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:ef1577ef68846185", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:58152696fac25c31", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:58152696fac25c31", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:58152696fac25c31", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:58152696fac25c31", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:a475fb192d334949", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:a475fb192d334949", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:a475fb192d334949", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:a475fb192d334949", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:1ad2ca1d1d8c087e", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:1ad2ca1d1d8c087e", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:1ad2ca1d1d8c087e", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:1ad2ca1d1d8c087e", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:355054ea717d610f", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:355054ea717d610f", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:355054ea717d610f", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:355054ea717d610f", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:82f10f23e8410309", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:82f10f23e8410309", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:82f10f23e8410309", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:82f10f23e8410309", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:835ee5c079a9427f", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:835ee5c079a9427f", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:835ee5c079a9427f", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:835ee5c079a9427f", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:dda8c601551c15bb", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:dda8c601551c15bb", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:dda8c601551c15bb", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:dda8c601551c15bb", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:e45efbe1266b349f", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:e45efbe1266b349f", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:e45efbe1266b349f", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:e45efbe1266b349f", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:052ad8adcf098629", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:052ad8adcf098629", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:052ad8adcf098629", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:052ad8adcf098629", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:13592c46eb7bdc56", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:13592c46eb7bdc56", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:13592c46eb7bdc56", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:13592c46eb7bdc56", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:1ef745a0517747ef", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:1ef745a0517747ef", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:1ef745a0517747ef", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:1ef745a0517747ef", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:21441fe1f10b23ea", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:21441fe1f10b23ea", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:21441fe1f10b23ea", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:21441fe1f10b23ea", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:3be14009b029be1f", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:3be14009b029be1f", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:3be14009b029be1f", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:3be14009b029be1f", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:44dcfe328c3e1826", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:44dcfe328c3e1826", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:44dcfe328c3e1826", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:44dcfe328c3e1826", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:9287495dc2447ef3", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:9287495dc2447ef3", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:9287495dc2447ef3", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:9287495dc2447ef3", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:c47b24d096b3b9a7", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:c47b24d096b3b9a7", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:c47b24d096b3b9a7", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:c47b24d096b3b9a7", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d099650db9e07dea", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d099650db9e07dea", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d099650db9e07dea", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d099650db9e07dea", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d17b28be779777b8", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d17b28be779777b8", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d17b28be779777b8", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d17b28be779777b8", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:0cf0c8ba085b902c", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:0cf0c8ba085b902c", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:0cf0c8ba085b902c", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:0cf0c8ba085b902c", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:18810195abcf251a", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:18810195abcf251a", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:18810195abcf251a", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:18810195abcf251a", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:2d2c6d08639f12cd", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:2d2c6d08639f12cd", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:2d2c6d08639f12cd", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:2d2c6d08639f12cd", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:71dbcd3f57b32faf", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:71dbcd3f57b32faf", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:71dbcd3f57b32faf", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:71dbcd3f57b32faf", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:74e3e42a4d700ebf", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:74e3e42a4d700ebf", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:74e3e42a4d700ebf", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:74e3e42a4d700ebf", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:917cd51c42f977d1", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:917cd51c42f977d1", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:917cd51c42f977d1", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:917cd51c42f977d1", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09ee0ef5a4783c4", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09ee0ef5a4783c4", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09ee0ef5a4783c4", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09ee0ef5a4783c4", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09f93170e0215b8", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09f93170e0215b8", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09f93170e0215b8", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09f93170e0215b8", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:f0acbfb007f59f9b", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:f0acbfb007f59f9b", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:f0acbfb007f59f9b", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:f0acbfb007f59f9b", + "mappingStatus": "gap" + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:fe5b6a2e2e827528", + "familyId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:fe5b6a2e2e827528", + "rowId": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:fe5b6a2e2e827528", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:fe5b6a2e2e827528", + "mappingStatus": "gap" + }, { "id": "b34:branch:dashboard/src/oven/AsciiBlock/AsciiBlock.tsx:AsciiBlock:ConditionalExpression:a3d1557b0a99751e", "familyId": "b34:branch:dashboard/src/oven/AsciiBlock/AsciiBlock.tsx:AsciiBlock:ConditionalExpression:a3d1557b0a99751e", @@ -33473,6 +33824,15 @@ "evidenceTarget": "atom:official:ovens/model-lab/model-lab.oven", "mappingStatus": "gap" }, + { + "id": "official:ovens/multi-monitor/multi-monitor.oven", + "familyId": "official:ovens/multi-monitor/multi-monitor.oven", + "rowId": "official:ovens/multi-monitor/multi-monitor.oven", + "kind": "row", + "owner": null, + "evidenceTarget": "atom:official:ovens/multi-monitor/multi-monitor.oven", + "mappingStatus": "gap" + }, { "id": "official:ovens/performance-tracing/performance-tracing.oven", "familyId": "official:ovens/performance-tracing/performance-tracing.oven", @@ -33608,6 +33968,15 @@ "evidenceTarget": "atom:public:dashboard/src/components/index.ts#ModelLabPage", "mappingStatus": "gap" }, + { + "id": "public:dashboard/src/components/index.ts#MultiMonitor", + "familyId": "public:dashboard/src/components/index.ts#MultiMonitor", + "rowId": "public:dashboard/src/components/index.ts#MultiMonitor", + "kind": "row", + "owner": "oven:multi-monitor", + "evidenceTarget": "atom:public:dashboard/src/components/index.ts#MultiMonitor", + "mappingStatus": "gap" + }, { "id": "public:dashboard/src/components/index.ts#NewOvenPage", "familyId": "public:dashboard/src/components/index.ts#NewOvenPage", @@ -152044,6 +152413,16 @@ } ], "b34References": [ + { + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:0c030c0dfa138bb9", + "fingerprint": "0c030c0dfa138bb971baad58e100a7e2b3e33df0933cc179fe95fa14dd89030c", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:0e91c0434dab74c6", "fingerprint": "0e91c0434dab74c6d8099893af17ae51154dda739455b280188621ce4a0fb170", @@ -152065,8 +152444,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:3f9dd4948879086e", - "fingerprint": "3f9dd4948879086e4c6599576c739a8e8f4e7ffb67849810e4dcf23a2532c8ed", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:2d7653d3c5be1780", + "fingerprint": "2d7653d3c5be1780de41d1fddf49ca0057cd6eae231c316285a0185a8ff2dea6", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152075,8 +152454,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:4333dcaf71667d08", - "fingerprint": "4333dcaf71667d08108529b9420ebf1363f9630ceb483537013710d8ebab9bb1", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:348023dcedfc8bf9", + "fingerprint": "348023dcedfc8bf92174e824d346f2569ac05891a69ec78b3b92b8de7db726a9", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152085,8 +152464,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:4486269fa1d1c1fa", - "fingerprint": "4486269fa1d1c1fa65bacfe24576e3b3ce0c53c6a0ec2f0784b0eeeab32b6926", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:3f9dd4948879086e", + "fingerprint": "3f9dd4948879086e4c6599576c739a8e8f4e7ffb67849810e4dcf23a2532c8ed", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152095,8 +152474,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:4eaa97a83219daf1", - "fingerprint": "4eaa97a83219daf148230d8b848589756d3e567492f7e0f34105771c3369510e", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:40dd702cfe5c952b", + "fingerprint": "40dd702cfe5c952bd16e0dc222cec01de3d65aad36c598ad70682aec306e3a82", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152105,8 +152484,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:5ba000b86bebf3c8", - "fingerprint": "5ba000b86bebf3c8f16ecce4acbb7a7c1f512a31acb08ca6d3263e7f88c7cd6c", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:4333dcaf71667d08", + "fingerprint": "4333dcaf71667d08108529b9420ebf1363f9630ceb483537013710d8ebab9bb1", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152115,8 +152494,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:7d3765175c92ae64", - "fingerprint": "7d3765175c92ae644ab7e8855b741b70a96ba3cf523c86f7040498ad373dd15e", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:4486269fa1d1c1fa", + "fingerprint": "4486269fa1d1c1fa65bacfe24576e3b3ce0c53c6a0ec2f0784b0eeeab32b6926", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152125,8 +152504,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:869312be2760fd24", - "fingerprint": "869312be2760fd2482c9aae8ff851f2eb0fbf7dbef8a917d795e204fda903e75", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:4eaa97a83219daf1", + "fingerprint": "4eaa97a83219daf148230d8b848589756d3e567492f7e0f34105771c3369510e", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152135,8 +152514,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:879c4c24e5fd2fba", - "fingerprint": "879c4c24e5fd2fbaa2ec3d0ef72164470cecdcf5a2dc03d1f9a1419d764bc0bd", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:7d3765175c92ae64", + "fingerprint": "7d3765175c92ae644ab7e8855b741b70a96ba3cf523c86f7040498ad373dd15e", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152145,8 +152524,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:92efbbb36b7932f9", - "fingerprint": "92efbbb36b7932f9fbe99cfde78b210e3c2bb7477e0d0926b34abee167c80be1", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:879c4c24e5fd2fba", + "fingerprint": "879c4c24e5fd2fbaa2ec3d0ef72164470cecdcf5a2dc03d1f9a1419d764bc0bd", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152155,8 +152534,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:9719effcb0f55d0f", - "fingerprint": "9719effcb0f55d0ffaee19bfd07a27f4b745d21081986c9c7e53309c57862b9e", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:92efbbb36b7932f9", + "fingerprint": "92efbbb36b7932f9fbe99cfde78b210e3c2bb7477e0d0926b34abee167c80be1", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152195,8 +152574,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:b75437f13ae72c3e", - "fingerprint": "b75437f13ae72c3ece5807ee0f60b4cbbb6c01c7a96828e4424639c2a3277c61", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:c0432f0723f8faf4", + "fingerprint": "c0432f0723f8faf4ced05a5833aa36d99e75a2cacbeec421fe80d8178e14a41c", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152225,8 +152604,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:db078c47db3e50c3", - "fingerprint": "db078c47db3e50c3be160d3fc7c88302b949cd37a92c87b57ad15d850a2e4144", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:d8527748576a174f", + "fingerprint": "d8527748576a174f4d9aa25552207e5865c86d416665403ffa5ef00b5f4d4e7f", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152245,8 +152624,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", - "fingerprint": "ec0dec63345d49febfe15e61ed75a2e4d1300fe40bee3efff9df07e27fd28c15", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:e778a1cabcd841f7", + "fingerprint": "e778a1cabcd841f722e748714b059589f00ce9e5c1eb6c40b7ff380c326cb612", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152255,8 +152634,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:f4aaac745193880e", - "fingerprint": "f4aaac745193880e0d70587453da4e3423a346212bc48e1862d66c5cea346a22", + "id": "b34:branch:dashboard/src/App.tsx:App:ConditionalExpression:ec0dec63345d49fe", + "fingerprint": "ec0dec63345d49febfe15e61ed75a2e4d1300fe40bee3efff9df07e27fd28c15", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152274,6 +152653,16 @@ "status": "gap" } }, + { + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:05fd5ac5daa1e607", + "fingerprint": "05fd5ac5daa1e607a3a486cf8f998433941d4b414ef4dd3b5f6ad0d8941118fe", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:3651b5c07432da72", "fingerprint": "3651b5c07432da726f6ba9febb4e7c215abb7b76e61165bab14fbc99c6f83770", @@ -152285,8 +152674,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e", - "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932", + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:43b8fef001929055", + "fingerprint": "43b8fef001929055ce5ca711809cf5a54fe90a1a74b0734eb268445c22ac73cd", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152295,7 +152684,7 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e:1", + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e", "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932", "mappingStatus": "gap", "atomCoverage": { @@ -152305,8 +152694,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:662fae22a9c098ce", - "fingerprint": "662fae22a9c098ce7dfd39d7a5733a921a871489de4300f1b21ee6a59216f31f", + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:62769dae15dabf3e:1", + "fingerprint": "62769dae15dabf3eb85e55aaaa7917e2737fc2f629738d87b7b8d72d1660d932", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152315,8 +152704,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:6ea5a02132549b79", - "fingerprint": "6ea5a02132549b79b75583eeb9bce2e8c31ec98790221e606b37f92cf5da0862", + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:662fae22a9c098ce", + "fingerprint": "662fae22a9c098ce7dfd39d7a5733a921a871489de4300f1b21ee6a59216f31f", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152325,8 +152714,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:ac413be8f7156f5a", - "fingerprint": "ac413be8f7156f5a6171e93d1fd20a65fb0f115d9d0a79ce027e55a064da1e21", + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", + "fingerprint": "b67210fdce841e44b3cd523e0c3ecc3dbe2e908d9fa2b9c9dad297789908d9c0", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -152335,8 +152724,8 @@ } }, { - "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:b67210fdce841e44", - "fingerprint": "b67210fdce841e44b3cd523e0c3ecc3dbe2e908d9fa2b9c9dad297789908d9c0", + "id": "b34:branch:dashboard/src/App.tsx:App:LogicalExpression:c55af9294825118a", + "fingerprint": "c55af9294825118a683d98226b527f244d854e0734939eb0e2af0e605824452b", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -153085,8 +153474,8 @@ } }, { - "id": "b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:26cbb2fb634679a0", - "fingerprint": "26cbb2fb634679a0c1865a08c928a0d5dd7cbcdfbd9248acc919346a9a5bfe8c", + "id": "b34:branch:dashboard/src/lib/hrefs.ts:ovenRepoKey:ConditionalExpression:63e46ac71b349afc", + "fingerprint": "63e46ac71b349afc881d5b78f386193995c864fd17343669dfc3c36e11c5158d", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -153844,6 +154233,16 @@ "status": "gap" } }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:bb8ee3b550371d4e", + "fingerprint": "bb8ee3b550371d4e1a877cf83972218f58aa8811b8633eed4df9a857451b5c1f", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:ConditionalExpression:f5d5a951381e35d2", "fingerprint": "f5d5a951381e35d2561d57e9147a17b50201b48962f51bbc9cb47223ddb1bf2d", @@ -153854,6 +154253,16 @@ "status": "gap" } }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:IfStatement:e9cbcf4188a02297", + "fingerprint": "e9cbcf4188a022974de7f73744081082e3b68f395670fd30f93f73eb197e4a73", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:AgentMonitorEventCard:LogicalExpression:5d0f63658a8a3daa", "fingerprint": "5d0f63658a8a3daaa627977c1402573dc59c6492e4d010256de509958e9a15b2", @@ -153934,6 +154343,16 @@ "status": "gap" } }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:90573345f9ff3769", + "fingerprint": "90573345f9ff3769fa8f98152b561c3d24ebd0b0b37c5a3ffa1ab64c691028ae", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:945aaf2d9c633122", "fingerprint": "945aaf2d9c63312207e2f69a4ca446027616e72b1315e483ed518e8ccf754b9a", @@ -153984,6 +154403,16 @@ "status": "gap" } }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:ConditionalExpression:f035db98ee9c3a99", + "fingerprint": "f035db98ee9c3a9966ad6e73975bcdd73b4ebe351c126083be9a1fd826d76edd", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:007847839945ed50", "fingerprint": "007847839945ed502cac03cc978011f440d4c2374d3368e3789b07f627cc8baf", @@ -154064,6 +154493,16 @@ "status": "gap" } }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:7316e2c1304eda91", + "fingerprint": "7316e2c1304eda91008625b7b9d6f8fd0aafe91c68ea96188c2369663e488f86", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx:module:IfStatement:9287495dc2447ef3", "fingerprint": "9287495dc2447ef32961113cb30226e8010bcf8e812f828d7cae6af6b8be63d8", @@ -154324,6 +154763,326 @@ "status": "gap" } }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:2a54795e34f2ed5e", + "fingerprint": "2a54795e34f2ed5e59ffe232591780405bac616e6fd139d41d6b304826a13359", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:6c98bb7d56e077f7", + "fingerprint": "6c98bb7d56e077f7fbb359b227dcc230e6a13cc8be8a4e63452a30859e91e6af", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:8c7bfe4a5843738f", + "fingerprint": "8c7bfe4a5843738ff670d23b4304d25f2952be4f276215675a634261288bc6eb", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:ConditionalExpression:ef1577ef68846185", + "fingerprint": "ef1577ef68846185f9710b31c71407bf392c8eafdef9b3a33d46071fde5fadfd", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:58152696fac25c31", + "fingerprint": "58152696fac25c3179f4ae2e6050e6c9a55a28b84f9386c4979145337955032d", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:CodexThreadEvent:IfStatement:a475fb192d334949", + "fingerprint": "a475fb192d334949b31e25064111c57653e422bd3512454d70c0abad66801caa", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:1ad2ca1d1d8c087e", + "fingerprint": "1ad2ca1d1d8c087e05fe84aea8d32906ecbd84e5a3eca435b7e5be2db551c28d", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:355054ea717d610f", + "fingerprint": "355054ea717d610f619849eae109298062a7e63ba15f0e3efbf3e639695fd289", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:82f10f23e8410309", + "fingerprint": "82f10f23e8410309269c4384ae76a09798b5e9014715bd357d41aef7d4bdb22d", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:835ee5c079a9427f", + "fingerprint": "835ee5c079a9427f771af37049e58dcdd3d3af51cc5001436194aed64fd7a76a", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:dda8c601551c15bb", + "fingerprint": "dda8c601551c15bb8dd88072ccad0ea37203a0b3cfb59cd11aef8be5ba463264", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:ConditionalExpression:e45efbe1266b349f", + "fingerprint": "e45efbe1266b349f27ed35b1b17a68259b676a493a3eba0e95589fb7758ab12b", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:052ad8adcf098629", + "fingerprint": "052ad8adcf098629c0a1a59499571048858d93c3ce17f39f3cda9f925664c7ff", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:13592c46eb7bdc56", + "fingerprint": "13592c46eb7bdc56dfc1a2bc4d45ef5a4bdb9dc931cdd7304c13c4a1efa5484b", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:1ef745a0517747ef", + "fingerprint": "1ef745a0517747ef556f5ea33546e64f3408ffbf6408a71ea6b096fac010a4be", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:21441fe1f10b23ea", + "fingerprint": "21441fe1f10b23ea41f0f924002cbdb0fa3b6104b711c49375107fb6d8d7c0f8", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:3be14009b029be1f", + "fingerprint": "3be14009b029be1f57d2f0bee83589cdc031aee4c970a22d179d9f4ecb852749", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:44dcfe328c3e1826", + "fingerprint": "44dcfe328c3e1826aa37c4a49686c5bf4877192c52bd7b3f039d0b98cb72b01b", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:9287495dc2447ef3", + "fingerprint": "9287495dc2447ef32961113cb30226e8010bcf8e812f828d7cae6af6b8be63d8", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:c47b24d096b3b9a7", + "fingerprint": "c47b24d096b3b9a7e91779a7472237f930a17e8a12c1dc792a718cf1429fc2cf", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d099650db9e07dea", + "fingerprint": "d099650db9e07dea6d5022245acfeda6467992f9dc2a253931cc2cf81cfde32b", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:IfStatement:d17b28be779777b8", + "fingerprint": "d17b28be779777b85291fdcc057dd1aaae9d9c86a86cf1c63d47aed819294bdd", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:0cf0c8ba085b902c", + "fingerprint": "0cf0c8ba085b902c6c8561d1ff81d6f15e097629670dd1f847dddfc145115028", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:18810195abcf251a", + "fingerprint": "18810195abcf251acf1bf60a4e964d497868bf2e318bf0a7f456129b96d599c7", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:2d2c6d08639f12cd", + "fingerprint": "2d2c6d08639f12cdf9663da5a2dcb29b51683871a973266ea9f3b10e3546f976", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:71dbcd3f57b32faf", + "fingerprint": "71dbcd3f57b32fafc591f050a622acc8a59618eaefae5e54719ca924b1c6d7b8", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:74e3e42a4d700ebf", + "fingerprint": "74e3e42a4d700ebf55ce0bad5ac37ff2351c02bd854266893c8f0d3c89cdc74c", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:917cd51c42f977d1", + "fingerprint": "917cd51c42f977d1ad979dcd8052e0ae934d9664fb0461cc6ed7af8bc83587a4", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09ee0ef5a4783c4", + "fingerprint": "d09ee0ef5a4783c40e4ec096e57772b2b6dee43972145999ab744e350ecfd39b", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:d09f93170e0215b8", + "fingerprint": "d09f93170e0215b8fec915b0382eeb4df5aafff9bdb8dcd17ffdeb610d351d56", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:f0acbfb007f59f9b", + "fingerprint": "f0acbfb007f59f9b96b3bb4016a0ab8ea5de8ee66078c405ec6929457108eacb", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, + { + "id": "b34:branch:dashboard/src/oven/AgentMonitorEventCard/CodexThreadEvent.tsx:module:LogicalExpression:fe5b6a2e2e827528", + "fingerprint": "fe5b6a2e2e82752894ebbd59f71471ca25fe064c28410c1a6c7cd98a669a1f54", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "b34:branch:dashboard/src/oven/AsciiBlock/AsciiBlock.tsx:AsciiBlock:ConditionalExpression:a3d1557b0a99751e", "fingerprint": "a3d1557b0a99751ebd72f15f86d3926808af94e75b5b26c3fa6c2a0ed4294d22", @@ -176886,7 +177645,7 @@ }, { "id": "b34:surface:dashboard/src/App.tsx", - "fingerprint": "205aa6b64af24b68e4401120560ab28544d414b3912a95726dac2929410f3eba", + "fingerprint": "2f54e6d106504fd73a4640ff1afc0d9ac4cf76cad4c39d90fd995b8c7008c55f", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -176986,7 +177745,7 @@ }, { "id": "b34:surface:dashboard/src/lib/hrefs.ts", - "fingerprint": "8cbb99bfcf27c70cefa93bc103c09d8e2ee76a5f873576396956d057e0e02575", + "fingerprint": "0ae7884fffcbcc5ea2cdd5e99e605224d7f33e940a8eedf36c28b91805b2a9e6", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -177586,6 +178345,18 @@ "status": "gap" } }, + { + "id": "official:ovens/multi-monitor/multi-monitor.oven", + "path": "ovens/multi-monitor/multi-monitor.oven", + "sourceFingerprint": "eb41d8ecbd8a40199d87e52d1f9fab48e2b3770ff0efb5deaed5f38c998a460b", + "irFingerprint": "91532f72b326922d907c5408207134353a05fa3c8030cd44083a2c8d8152b0c1", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "official:ovens/performance-tracing/performance-tracing.oven", "path": "ovens/performance-tracing/performance-tracing.oven", @@ -177646,7 +178417,7 @@ "export": "AppHeader", "definition": "dashboard/src/components/AppHeader/AppHeader.tsx", "classification": "react-component", - "fingerprint": "d0d703a544423c9515e085adf6ffeabba396ddd23e78a5c7395e89f5ea55a42e", + "fingerprint": "16f9ca8f4138e0761b3894901b5b9332d5eb28a9c1c5d822812c94f838f3e1ba", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -177808,6 +178579,20 @@ "status": "gap" } }, + { + "id": "public:dashboard/src/components/index.ts#MultiMonitor", + "root": "dashboard/src/components/index.ts", + "export": "MultiMonitor", + "definition": "dashboard/src/components/MultiMonitor/MultiMonitor.tsx", + "classification": "react-component", + "fingerprint": "2ec8d93b5404657a906837f719100ec44097af7287489d5a8557510c8b0df599", + "mappingStatus": "gap", + "atomCoverage": { + "implemented": 0, + "total": 1, + "status": "gap" + } + }, { "id": "public:dashboard/src/components/index.ts#NewOvenPage", "root": "dashboard/src/components/index.ts", @@ -178598,7 +179383,7 @@ "export": "AgentMonitorEventCard", "definition": "dashboard/src/oven/AgentMonitorEventCard/AgentMonitorEventCard.tsx", "classification": "react-component", - "fingerprint": "3e891f4ce779a4b7b3c69575c5b76e755a61e3e7dd53c9f2adb5c4a36e7649d4", + "fingerprint": "ffaa09e0e4db51a19be496d504d7abbe7add555a458ccf2899caba74849e6f85", "mappingStatus": "gap", "atomCoverage": { "implemented": 0, @@ -293627,7 +294412,7 @@ }, "coverage": { "implemented": 29, - "total": 12998, + "total": 13039, "status": "partial" } } diff --git a/bin/burnlist-codex-bridge.mjs b/bin/burnlist-codex-bridge.mjs new file mode 100755 index 00000000..0c1941df --- /dev/null +++ b/bin/burnlist-codex-bridge.mjs @@ -0,0 +1,230 @@ +#!/usr/bin/env node +import { spawn } from "node:child_process"; +import { + chmodSync, + closeSync, + constants, + existsSync, + lstatSync, + mkdirSync, + openSync, + readFileSync, + rmSync, + statSync, + writeFileSync, +} from "node:fs"; +import { connect } from "node:net"; +import os from "node:os"; +import { dirname, join, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; + +const MACOS_BUNDLED_CODEX = "/Applications/ChatGPT.app/Contents/Resources/codex"; +const CONNECT_TIMEOUT_MS = 10_000; +const SOCKET_PROBE_MS = 2_000; +const STARTUP_LOCK_STALE_MS = 30_000; + +export function defaultBridgeSocket(env = process.env, home = os.homedir()) { + return env.BURNLIST_CODEX_APP_SERVER_SOCKET?.trim() + || join(home, ".codex", "burnlist-app-server", "app-server.sock"); +} + +export function realCodexBinary(env = process.env, platform = process.platform) { + if (env.BURNLIST_CODEX_BIN?.trim()) return env.BURNLIST_CODEX_BIN.trim(); + if (platform === "darwin" && existsSync(MACOS_BUNDLED_CODEX)) return MACOS_BUNDLED_CODEX; + return "codex"; +} + +export function bridgeLaunchArgs(args, socket) { + const appServer = args.indexOf("app-server"); + if (appServer < 0) return null; + const common = args.slice(0, appServer); + const serverOptions = []; + const input = args.slice(appServer + 1); + for (let index = 0; index < input.length; index += 1) { + const value = input[index]; + if (value === "--stdio") continue; + if (value === "--listen") { + index += 1; + continue; + } + if (value.startsWith("--listen=")) continue; + serverOptions.push(value); + } + return { + proxy: [...common, "app-server", "proxy", "--sock", socket], + server: [...common, "app-server", ...serverOptions, "--listen", `unix://${socket}`], + }; +} + +function socketConnection(path, timeoutMs = SOCKET_PROBE_MS) { + return new Promise((resolveConnection) => { + const socket = connect(path); + let settled = false; + const done = (result) => { + if (settled) return; + settled = true; + socket.destroy(); + resolveConnection(result); + }; + socket.once("connect", () => done({ connected: true, code: null, timedOut: false })); + socket.once("error", (error) => done({ + connected: false, + code: error?.code ?? null, + timedOut: false, + })); + socket.setTimeout(timeoutMs, () => done({ connected: false, code: null, timedOut: true })); + }); +} + +async function waitForSocket(path, child, timeoutMs = CONNECT_TIMEOUT_MS) { + const deadline = Date.now() + timeoutMs; + while (Date.now() < deadline) { + if (child.exitCode !== null) { + throw new Error(`Shared Codex App Server exited with code ${child.exitCode}.`); + } + if ((await socketConnection(path)).connected) return; + await new Promise((resolveWait) => setTimeout(resolveWait, 50)); + } + throw new Error(`Shared Codex App Server did not open ${path}.`); +} + +async function staleSocket(path) { + if (!existsSync(path)) return; + const entry = lstatSync(path); + if (!entry.isSocket()) { + throw new Error(`Refusing to replace non-socket bridge path: ${path}`); + } + const probe = await socketConnection(path); + if (probe.connected) return false; + if (probe.timedOut || !["ECONNREFUSED", "ENOENT"].includes(probe.code)) { + throw new Error(`Refusing to replace an unresponsive bridge socket: ${path}`); + } + rmSync(path, { force: true }); + return true; +} + +function lockOwnerIsDead(path) { + try { + const value = JSON.parse(readFileSync(path, "utf8")); + if (!Number.isSafeInteger(value?.pid) || value.pid < 1) return false; + process.kill(value.pid, 0); + return false; + } catch (error) { + return error?.code === "ESRCH"; + } +} + +function acquireStartupLock(path) { + let descriptor; + try { + descriptor = openSync(path, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL, 0o600); + writeFileSync(descriptor, `${JSON.stringify({ pid: process.pid, createdAt: new Date().toISOString() })}\n`); + closeSync(descriptor); + return true; + } catch (error) { + if (descriptor !== undefined) closeSync(descriptor); + if (error?.code === "EEXIST") return false; + throw error; + } +} + +async function startupLock(path, socket) { + if (acquireStartupLock(path)) return true; + const deadline = Date.now() + CONNECT_TIMEOUT_MS; + while (Date.now() < deadline) { + if ((await socketConnection(socket)).connected) return false; + await new Promise((resolveWait) => setTimeout(resolveWait, 50)); + } + const old = Date.now() - statSync(path).mtimeMs >= STARTUP_LOCK_STALE_MS; + if (!old || !lockOwnerIsDead(path)) { + throw new Error(`Shared Codex App Server startup is already in progress: ${path}`); + } + rmSync(path, { force: true }); + if (!acquireStartupLock(path)) { + throw new Error(`Could not acquire shared Codex App Server startup lock: ${path}`); + } + return true; +} + +function waitForExit(child) { + if (child.exitCode !== null) return Promise.resolve(child.exitCode); + return new Promise((resolveExit, reject) => { + child.once("error", reject); + child.once("exit", (code, signal) => resolveExit( + Number.isInteger(code) ? code : signal ? 1 : 0, + )); + }); +} + +export async function runCodexBridge({ + args = process.argv.slice(2), + env = process.env, + spawnProcess = spawn, +} = {}) { + const binary = realCodexBinary(env); + const socket = defaultBridgeSocket(env); + const socketDirectory = dirname(socket); + const lockPath = `${socket}.startup`; + const launch = bridgeLaunchArgs(args, socket); + if (!launch) { + const delegated = spawnProcess(binary, args, { env, shell: false, stdio: "inherit" }); + return waitForExit(delegated); + } + mkdirSync(socketDirectory, { recursive: true, mode: 0o700 }); + if (!env.BURNLIST_CODEX_APP_SERVER_SOCKET?.trim()) chmodSync(socketDirectory, 0o700); + let server = null; + let ownsLock = false; + if (!(await socketConnection(socket)).connected) { + ownsLock = await startupLock(lockPath, socket); + try { + if (!(await socketConnection(socket)).connected) { + await staleSocket(socket); + server = spawnProcess(binary, launch.server, { + env, + shell: false, + stdio: ["ignore", "ignore", "inherit"], + }); + await waitForSocket(socket, server); + } + chmodSync(socket, 0o600); + } catch (error) { + if (server?.exitCode === null) server.kill("SIGTERM"); + throw error; + } finally { + if (ownsLock) rmSync(lockPath, { force: true }); + } + } else { + chmodSync(socket, 0o600); + } + const proxy = spawnProcess(binary, launch.proxy, { env, shell: false, stdio: "inherit" }); + const forward = (signal) => { + if (proxy.exitCode === null) proxy.kill(signal); + }; + process.once("SIGINT", forward); + process.once("SIGTERM", forward); + try { + return await waitForExit(proxy); + } finally { + process.removeListener("SIGINT", forward); + process.removeListener("SIGTERM", forward); + if (server?.exitCode === null) server.kill("SIGTERM"); + } +} + +async function main() { + if (process.argv.includes("--bridge-help")) { + console.log(`Use this executable as CODEX_CLI_PATH to give Codex Desktop and Burnlist +one shared App Server. The default socket is: + + ${defaultBridgeSocket()} + +Override the real Codex binary with BURNLIST_CODEX_BIN and the socket with +BURNLIST_CODEX_APP_SERVER_SOCKET.`); + return; + } + process.exitCode = await runCodexBridge(); +} + +if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) { + await main(); +} diff --git a/bin/burnlist-codex-bridge.test.mjs b/bin/burnlist-codex-bridge.test.mjs new file mode 100644 index 00000000..5f49261f --- /dev/null +++ b/bin/burnlist-codex-bridge.test.mjs @@ -0,0 +1,70 @@ +import assert from "node:assert/strict"; +import test from "node:test"; + +import { + bridgeLaunchArgs, + defaultBridgeSocket, + realCodexBinary, +} from "./burnlist-codex-bridge.mjs"; + +test("Codex bridge derives one stable local socket", () => { + assert.equal( + defaultBridgeSocket({}, "/tmp/fixture-home"), + "/tmp/fixture-home/.codex/burnlist-app-server/app-server.sock", + ); + assert.equal( + defaultBridgeSocket({ BURNLIST_CODEX_APP_SERVER_SOCKET: "/tmp/shared.sock" }, "/unused"), + "/tmp/shared.sock", + ); +}); + +test("Codex bridge preserves Desktop config while replacing stdio with server and proxy", () => { + assert.deepEqual(bridgeLaunchArgs([ + "-c", + "features.code_mode_host=true", + "app-server", + "--analytics-default-enabled", + ], "/tmp/shared.sock"), { + server: [ + "-c", + "features.code_mode_host=true", + "app-server", + "--analytics-default-enabled", + "--listen", + "unix:///tmp/shared.sock", + ], + proxy: [ + "-c", + "features.code_mode_host=true", + "app-server", + "proxy", + "--sock", + "/tmp/shared.sock", + ], + }); + assert.equal(bridgeLaunchArgs(["--version"], "/tmp/shared.sock"), null); +}); + +test("Codex bridge removes every inherited transport before adding its Unix socket", () => { + assert.deepEqual(bridgeLaunchArgs([ + "app-server", + "--listen", + "stdio://", + "--listen=ws://127.0.0.1:4500", + "--stdio", + "--analytics-default-enabled", + ], "/tmp/shared.sock").server, [ + "app-server", + "--analytics-default-enabled", + "--listen", + "unix:///tmp/shared.sock", + ]); +}); + +test("Codex bridge binary override never reads CODEX_CLI_PATH recursively", () => { + assert.equal(realCodexBinary({ + BURNLIST_CODEX_BIN: "/opt/codex", + CODEX_CLI_PATH: "/opt/burnlist-codex-bridge", + }, "linux"), "/opt/codex"); + assert.equal(realCodexBinary({ CODEX_CLI_PATH: "/opt/burnlist-codex-bridge" }, "linux"), "codex"); +}); diff --git a/bin/burnlist.mjs b/bin/burnlist.mjs index 1a338acf..0f65316f 100755 --- a/bin/burnlist.mjs +++ b/bin/burnlist.mjs @@ -203,6 +203,8 @@ Options: --auto-port Try the next available loopback port. --host Bind host; loopback is required by default. --state-dir Override ignored dashboard observer state. + --codex-app-server-socket + Share Codex App Server ownership for live-task messaging. --ovens-dir Override launch-repository custom Oven storage only. --runs-dir Override Run snapshot storage. --oven-data Bind one Oven to a read-only normalized JSON payload. diff --git a/dashboard/src/App.tsx b/dashboard/src/App.tsx index 54659ca8..334741d3 100644 --- a/dashboard/src/App.tsx +++ b/dashboard/src/App.tsx @@ -1,6 +1,6 @@ import { useMemo, useState } from "react"; import { ListChecks } from "lucide-react"; -import { AgentMonitor, AppHeader, BurnlistTable, ChecklistOvenView, CustomOvenView, DashboardError, DifferentialTestingOvenPage, EmptyState, FILTERS, Filters, LensSwitcher, ModelLabPage, NewOvenPage, OvenCatalog, OvenDefinition, OvenExplainer, PerformanceTracingOvenPage, ProjectGroup, RunBurnPage, StreamingDiff, VisualParityPage } from "@components"; +import { AgentMonitor, AppHeader, BurnlistTable, ChecklistOvenView, CustomOvenView, DashboardError, DifferentialTestingOvenPage, EmptyState, FILTERS, Filters, LensSwitcher, ModelLabPage, NewOvenPage, OvenCatalog, OvenDefinition, OvenExplainer, PerformanceTracingOvenPage, ProjectGroup, RunBurnPage, StreamingDiff, MultiMonitor, VisualParityPage } from "@components"; import { useDashboardData } from "@hooks"; import { checklistOvenRepoKey, currentSection, customOvenSelection, filterFromUrl, ovenRepoKey, selectedBurnlist } from "@lib"; import type { Filter } from "@lib"; @@ -12,7 +12,7 @@ export function App() { const repoKey = ovenRepoKey(); const customOven = section === "custom-oven" ? customOvenSelection() : null; const [filter, setFilter] = useState(() => filterFromUrl(FILTERS)); - const dashboardSection = ["landing", "burnlist", "agent-monitor", "streaming-diff"].includes(section) || (section === "custom-oven" && selected) ? "burnlists" : section; + const dashboardSection = ["landing", "burnlist", "agent-monitor", "streaming-diff", "multi-monitor"].includes(section) || (section === "custom-oven" && selected) ? "burnlists" : section; const { projects, progress, error, loading, stale } = useDashboardData({ section: dashboardSection, selected }); const checklistRepoKey = checklistOvenRepoKey(progress, selected); const visibleBurnlistCount = projects.reduce((total, project) => total + project.entries.filter((entry) => filter === "all" || entry.status === filter).length, 0); @@ -27,13 +27,13 @@ export function App() { setFilter(nextFilter); }; - const fullLayout = ["agent-monitor", "differential-testing", "model-lab", "performance-tracing", "streaming-diff", "visual-parity", "custom-oven"].includes(section) || selected; + const fullLayout = ["agent-monitor", "differential-testing", "model-lab", "performance-tracing", "streaming-diff", "multi-monitor", "visual-parity", "custom-oven"].includes(section) || selected; return (
- + {section !== "multi-monitor" && }
- {section === "agent-monitor" ? {(ir) => } : section === "differential-testing" ? {(ir) => } : section === "model-lab" ? {(ir) => } : section === "performance-tracing" ? {(ir) => } : section === "streaming-diff" ? {(ir) => } : section === "visual-parity" ? {(ir) => } : section === "custom-oven" ? : section === "new-oven" ? : section === "run-burn" ? : section === "ovens-catalog" ? : section === "oven-explainer" ? : selected ? ( + {section === "agent-monitor" ? {(ir) => } : section === "differential-testing" ? {(ir) => } : section === "model-lab" ? {(ir) => } : section === "performance-tracing" ? {(ir) => } : section === "streaming-diff" ? {(ir) => } : section === "multi-monitor" ? {(ir) => } : section === "visual-parity" ? {(ir) => } : section === "custom-oven" ? : section === "new-oven" ? : section === "run-burn" ? : section === "ovens-catalog" ? : section === "oven-explainer" ? : selected ? ( loading && !progress ? : progress ? ( <>{error && }{(ir) => } ) : error ? : diff --git a/dashboard/src/components/AppHeader/AppHeader.tsx b/dashboard/src/components/AppHeader/AppHeader.tsx index e1ccf19f..7f8ca074 100644 --- a/dashboard/src/components/AppHeader/AppHeader.tsx +++ b/dashboard/src/components/AppHeader/AppHeader.tsx @@ -5,7 +5,7 @@ const HEADER_LINKS = [ { href: "/ovens/new", label: "New Oven", section: "new-oven" }, ] as const; -const OVEN_SECTIONS = ["agent-monitor", "custom-oven", "differential-testing", "model-lab", "performance-tracing", "streaming-diff", "visual-parity"]; +const OVEN_SECTIONS = ["agent-monitor", "custom-oven", "differential-testing", "model-lab", "performance-tracing", "streaming-diff", "multi-monitor", "visual-parity"]; export function AppHeader({ detail, ovenId, section }: { detail: ChecklistProgressData | null; ovenId?: string | null; section: string }) { const title = section === "agent-monitor" ? "Agent Monitor" @@ -13,6 +13,7 @@ export function AppHeader({ detail, ovenId, section }: { detail: ChecklistProgre : section === "model-lab" ? "Model Lab" : section === "performance-tracing" ? "Performance Tracing" : section === "streaming-diff" ? "Streaming Diff" + : section === "multi-monitor" ? "Multi Monitor" : section === "visual-parity" ? "Visual Parity" : section === "custom-oven" ? detail?.title ?? ovenId : detail?.title; return ( diff --git a/dashboard/src/components/MultiMonitor/MultiMonitor.test.ts b/dashboard/src/components/MultiMonitor/MultiMonitor.test.ts new file mode 100644 index 00000000..aa79d2a4 --- /dev/null +++ b/dashboard/src/components/MultiMonitor/MultiMonitor.test.ts @@ -0,0 +1,50 @@ +import assert from "node:assert/strict"; +import test from "node:test"; +import { createElement } from "react"; +import { renderToStaticMarkup } from "react-dom/server"; + +import { MultiMonitorThreadHeader } from "./MultiMonitor"; +import { MultiMonitorComposer } from "./MultiMonitorComposer"; + +const identity = { + logicalRepoKey: "aaaaaaaaaaaa", + worktreeKey: "bbbbbbbbbbbb", + session: "019f9426-6dde-7293-a57a-163f81e195cb", +}; + +test("Multi Monitor thread header exposes stable identity and actions", () => { + const html = renderToStaticMarkup(createElement(MultiMonitorThreadHeader, { + identity, + onRemove() {}, + state: "Live", + title: "Build a multi-column Codex task surface", + })); + + assert.match(html, /Build a multi-column Codex task surface/u); + assert.match(html, /Live/u); + assert.match(html, /Thread …81e195cb/u); + assert.match(html, /Open thread 019f9426-6dde-7293-a57a-163f81e195cb in Agent Monitor/u); + assert.match(html, /Remove thread 019f9426-6dde-7293-a57a-163f81e195cb/u); +}); + +test("Multi Monitor composer exposes acknowledged Codex delivery", () => { + const html = renderToStaticMarkup(createElement(MultiMonitorComposer, { + canSend: true, + identity, + writeToken: "fixture-token", + })); + assert.match(html, /aria-label="Message Codex task 019f9426-6dde-7293-a57a-163f81e195cb"/u); + assert.match(html, /]+aria-label="Message for Codex"/u); + assert.match(html, /]+aria-label="Send message"[^>]+disabled=""/u); + assert.match(html, /Send to Codex/u); + assert.doesNotMatch(html, /Copy draft|Copy to Codex|Queued/u); +}); + +test("Multi Monitor composer disables delivery without shared Codex ownership", () => { + const html = renderToStaticMarkup(createElement(MultiMonitorComposer, { + identity, + writeToken: "fixture-token", + })); + assert.match(html, /Restart Codex to enable sending/u); + assert.match(html, /]+aria-label="Send message"[^>]+disabled=""/u); +}); diff --git a/dashboard/src/components/MultiMonitor/MultiMonitor.tsx b/dashboard/src/components/MultiMonitor/MultiMonitor.tsx new file mode 100644 index 00000000..a24c37eb --- /dev/null +++ b/dashboard/src/components/MultiMonitor/MultiMonitor.tsx @@ -0,0 +1,335 @@ +import { useEffect, useMemo, useRef, useState } from "react"; +import { ExternalLink, Plus, X } from "lucide-react"; +import { + useAgentMonitorActivation, + useAgentMonitorFeeds, + useAgentMonitorSnapshot, + type ResolvedOvenIr, +} from "@hooks"; +import { + agentMonitorFeedHref, + agentMonitorSnapshotNotice, + parseMultiMonitorSelections, + shortThreadSession, + multiMonitorAvailableFeeds, + multiMonitorConversationPayload, + multiMonitorDefaultSelections, + multiMonitorFeedKey, + multiMonitorHasExplicitEmpty, + multiMonitorHref, + multiMonitorThreadTitle, +} from "@lib"; +import type { AgentMonitorFeed, AgentMonitorIdentity, AgentMonitorPayload } from "@lib"; +import { Button, Select } from "@layout"; +import { OvenRuntime } from "@/oven/runtime/OvenRuntime"; +import { MultiMonitorComposer } from "./MultiMonitorComposer"; +import "./codex-thread.css"; +import "./multi-monitor.css"; + +type ThreadColumnProps = { + canSend: boolean; + canSteerExternal: boolean; + feed?: AgentMonitorFeed; + identity: AgentMonitorIdentity; + ir: ResolvedOvenIr; + onRemove: () => void; + writeToken: string; +}; + +function threadMetadata(payload: AgentMonitorPayload | null) { + const monitor = payload?.monitor; + return monitor && typeof monitor === "object" && monitor.thread + && typeof monitor.thread === "object" + ? monitor.thread + : null; +} + +function currentState( + payload: AgentMonitorPayload | null, + feed: AgentMonitorFeed | undefined, + stale: boolean, +) { + if (stale) return "Refreshing"; + const monitor = payload?.monitor; + const thread = threadMetadata(payload); + const turnOpen = thread && typeof thread === "object" && typeof thread.turnOpen === "boolean" + ? thread.turnOpen + : feed?.turnOpen; + const summary = monitor && typeof monitor === "object" ? monitor.summary : null; + const state = summary && typeof summary === "object" ? summary.state : null; + const activity = state === "Live" || state === "Idle" ? state : feed?.state ?? "Idle"; + if (turnOpen === true) return activity === "Live" ? "Working" : "Stale"; + if (turnOpen === false) return "Ready"; + return activity; +} + +function threadTitleKey(identity: AgentMonitorIdentity) { + return `burnlist:multi-monitor:title:${identity.worktreeKey}:${identity.session}`; +} + +function readThreadTitle(identity: AgentMonitorIdentity) { + try { + return window.localStorage.getItem(threadTitleKey(identity)) ?? ""; + } catch { + return ""; + } +} + +function storeThreadTitle(identity: AgentMonitorIdentity, title: string) { + try { + window.localStorage.setItem(threadTitleKey(identity), title); + } catch { + // Stable titles are an enhancement; storage denial must not break the column. + } +} + +export function MultiMonitorThreadHeader({ + identity, + onRemove, + state, + title, +}: { + identity: AgentMonitorIdentity; + onRemove: () => void; + state: string; + title: string; +}) { + const session = shortThreadSession(identity.session); + return
+
+
+
+ + + +
+
; +} + +function ThreadColumn({ + canSend, + canSteerExternal, + feed, + identity, + ir, + onRemove, + writeToken, +}: ThreadColumnProps) { + const selection = { + repoKey: identity.logicalRepoKey, + worktreeKey: identity.worktreeKey, + session: identity.session, + }; + const snapshot = useAgentMonitorSnapshot(selection); + const payload = snapshot.data ?? null; + const conversation = useMemo( + () => multiMonitorConversationPayload(payload), + [payload], + ); + const bodyRef = useRef(null); + const followTail = useRef(true); + const notice = agentMonitorSnapshotNotice(snapshot); + const state = currentState(payload, feed, snapshot.stale); + const fallbackTitle = `Thread ${shortThreadSession(identity.session)}`; + const derivedTitle = multiMonitorThreadTitle(payload); + const [title, setTitle] = useState(() => readThreadTitle(identity) || fallbackTitle); + const metadata = threadMetadata(payload); + const canCompose = (metadata?.provider === "codex" + && metadata?.threadSource === "user" + && metadata?.topLevel === true) + || (feed?.provider === "codex" && feed.threadSource === "user" && feed.topLevel === true); + const turnOpen = typeof metadata?.turnOpen === "boolean" + ? metadata.turnOpen + : feed?.turnOpen === true; + const monitor = payload?.monitor; + const truncated = monitor && typeof monitor === "object" && monitor.truncated === true; + + useEffect(() => { + if (!derivedTitle) return; + setTitle((current) => { + if (current !== fallbackTitle) return current; + storeThreadTitle(identity, derivedTitle); + return derivedTitle; + }); + }, [derivedTitle, fallbackTitle, identity]); + + useEffect(() => { + if (!conversation || !followTail.current) return; + const frame = window.requestAnimationFrame(() => { + const body = bodyRef.current; + if (body) body.scrollTop = body.scrollHeight; + }); + return () => window.cancelAnimationFrame(frame); + }, [conversation]); + + return
+ +
{ + const body = event.currentTarget; + followTail.current = body.scrollHeight - body.scrollTop - body.clientHeight < 80; + }} + ref={bodyRef} + > + {notice &&

{notice.text}

} + {truncated &&

Earlier task activity is not shown.

} + {conversation && } +
+
+ {canCompose ? + : +
; +} + +export function MultiMonitor({ ir, repoKey }: { ir: ResolvedOvenIr; repoKey: string | null }) { + const initial = useMemo( + () => repoKey ? parseMultiMonitorSelections({ repoKey, search: window.location.search }) as AgentMonitorIdentity[] : [], + [repoKey], + ); + const initialExplicitEmpty = useMemo( + () => multiMonitorHasExplicitEmpty(window.location.search), + [], + ); + const [selections, setSelections] = useState(initial); + const [explicitEmpty, setExplicitEmpty] = useState(initialExplicitEmpty); + const defaulted = useRef(initial.length > 0 || initialExplicitEmpty); + const repositories = useMemo( + () => repoKey ? [{ repoKey, label: repoKey }] : [], + [repoKey], + ); + const activation = useAgentMonitorActivation(repositories); + const feeds = useAgentMonitorFeeds(repositories, activation.loading, false); + const available = multiMonitorAvailableFeeds(feeds.feeds, selections) as AgentMonitorFeed[]; + const [candidate, setCandidate] = useState(""); + const feedsByKey = useMemo( + () => new Map(feeds.feeds.map((feed) => [multiMonitorFeedKey(feed.identity), feed])), + [feeds.feeds], + ); + + const updateSelections = (next: AgentMonitorIdentity[], replace = false) => { + if (!repoKey) return; + const nextExplicitEmpty = next.length === 0; + const href = multiMonitorHref({ + repoKey, + selections: next, + explicitEmpty: nextExplicitEmpty, + }); + window.history[replace ? "replaceState" : "pushState"](null, "", href); + defaulted.current = true; + setExplicitEmpty(nextExplicitEmpty); + setSelections(next); + }; + + useEffect(() => { + if (defaulted.current || feeds.loading || feeds.error) return; + const defaults = multiMonitorDefaultSelections(feeds.feeds) as AgentMonitorIdentity[]; + if (!defaults.length) return; + updateSelections(defaults, true); + }, [explicitEmpty, feeds.error, feeds.feeds, feeds.loading, selections.length]); + + useEffect(() => { + const selected = available.some((feed) => multiMonitorFeedKey(feed.identity) === candidate); + if (!selected) setCandidate(available[0] ? multiMonitorFeedKey(available[0].identity) : ""); + }, [available, candidate]); + + useEffect(() => { + const sync = () => { + const next = repoKey + ? parseMultiMonitorSelections({ repoKey, search: window.location.search }) as AgentMonitorIdentity[] + : []; + const nextExplicitEmpty = multiMonitorHasExplicitEmpty(window.location.search); + defaulted.current = next.length > 0 || nextExplicitEmpty; + setExplicitEmpty(nextExplicitEmpty); + setSelections(next); + }; + window.addEventListener("popstate", sync); + return () => window.removeEventListener("popstate", sync); + }, [repoKey]); + + if (!repoKey) { + return

Multi Monitor

Open this Oven from a repository.

; + } + + const addCandidate = () => { + const feed = feedsByKey.get(candidate); + if (feed) updateSelections([...selections, feed.identity]); + }; + + return
+
+
+

Multi Monitor

+ {selections.length} {selections.length === 1 ? "thread" : "threads"} +
+
+ + +
+
+ {activation.error &&

{activation.error}

} + {feeds.error &&

{feeds.error}

} + {selections.length ?
+ {selections.map((identity) => { + const key = multiMonitorFeedKey(identity); + return updateSelections(selections.filter((item) => multiMonitorFeedKey(item) !== key))} + writeToken={activation.writeToken} + />; + })} +
:
+

{explicitEmpty ? "No task columns" : "No active Codex tasks"}

+

{explicitEmpty + ? "Choose a top-level Codex task above and add it to the workspace." + : "Open a top-level Codex task and it will appear here automatically."}

+
} +
; +} diff --git a/dashboard/src/components/MultiMonitor/MultiMonitorComposer.tsx b/dashboard/src/components/MultiMonitor/MultiMonitorComposer.tsx new file mode 100644 index 00000000..0e4170b3 --- /dev/null +++ b/dashboard/src/components/MultiMonitor/MultiMonitorComposer.tsx @@ -0,0 +1,261 @@ +import { useEffect, useState } from "react"; +import { ArrowUp, Mic, Plus, Settings2 } from "lucide-react"; + +import type { AgentMonitorIdentity } from "@lib"; +import { + MultiMonitorRequestCard, + type MultiMonitorPendingRequest, +} from "./MultiMonitorRequestCard"; +import "./codex-composer.css"; + +type DeliveryState = "idle" | "sending" | "sent" | "error"; +type StoredDraft = { message: string; requestId: string }; + +function draftKey(identity: AgentMonitorIdentity) { + return `burnlist:multi-monitor:draft:${identity.worktreeKey}:${identity.session}`; +} + +function readDraft(identity: AgentMonitorIdentity): StoredDraft { + if (typeof window === "undefined") return { message: "", requestId: "" }; + try { + const value = JSON.parse(window.localStorage.getItem(draftKey(identity)) ?? "null"); + return typeof value?.message === "string" && typeof value?.requestId === "string" + ? value + : { message: "", requestId: "" }; + } catch { + return { message: "", requestId: "" }; + } +} + +function requestId() { + return window.crypto.randomUUID(); +} + +function storeDraft(identity: AgentMonitorIdentity, draft: StoredDraft) { + try { + if (draft.message) window.localStorage.setItem(draftKey(identity), JSON.stringify(draft)); + else window.localStorage.removeItem(draftKey(identity)); + } catch { + // A blocked or full storage area must never break the composer. + } +} + +function clearMatchingDraft(identity: AgentMonitorIdentity, sentRequestId: string) { + try { + const stored = readDraft(identity); + if (stored.requestId === sentRequestId) window.localStorage.removeItem(draftKey(identity)); + } catch { + // The acknowledged delivery is still valid when browser storage is unavailable. + } +} + +export function MultiMonitorComposer({ + canSend = false, + canSteerExternal = false, + identity, + turnOpen = false, + writeToken, +}: { + canSend?: boolean; + canSteerExternal?: boolean; + identity: AgentMonitorIdentity; + turnOpen?: boolean; + writeToken: string; +}) { + const [draft, setDraft] = useState(() => readDraft(identity)); + const [delivery, setDelivery] = useState("idle"); + const [feedback, setFeedback] = useState(""); + const [pendingRequest, setPendingRequest] = useState(null); + const [requestBusy, setRequestBusy] = useState(false); + const [requestError, setRequestError] = useState(""); + const sendable = Boolean(draft.message.trim()) && Boolean(writeToken) + && canSend && delivery !== "sending"; + + useEffect(() => { + if (!canSend || !writeToken) { + setPendingRequest(null); + setRequestError(""); + return undefined; + } + const controller = new AbortController(); + let timer: ReturnType | null = null; + const load = async () => { + const query = new URLSearchParams(identity); + try { + const response = await fetch(`/api/multi-monitor/requests?${query}`, { + cache: "no-store", + headers: { + accept: "application/json", + "x-burnlist-token": writeToken, + }, + signal: controller.signal, + }); + const payload = await response.json().catch(() => null); + if (!response.ok || !Array.isArray(payload?.requests)) { + throw new Error(payload?.error ?? "Could not read pending Codex requests."); + } + const request = payload.requests.find((value: MultiMonitorPendingRequest) => + value?.threadId === identity.session && typeof value?.requestId === "string") ?? null; + setPendingRequest(request); + setRequestError(""); + } catch (cause) { + if (!controller.signal.aborted) { + setRequestError(cause instanceof Error ? cause.message : "Codex request updates failed."); + } + } finally { + if (!controller.signal.aborted) timer = setTimeout(load, 1_000); + } + }; + void load(); + return () => { + controller.abort(); + if (timer) clearTimeout(timer); + }; + }, [ + canSend, + identity.logicalRepoKey, + identity.session, + identity.worktreeKey, + writeToken, + ]); + + const updateDraft = (message: string) => { + const next = { message, requestId: message ? requestId() : "" }; + setDraft(next); + setDelivery("idle"); + setFeedback(""); + storeDraft(identity, next); + }; + + const send = async () => { + if (!sendable) return; + const current = { ...draft, requestId: draft.requestId || requestId() }; + setDraft(current); + storeDraft(identity, current); + setDelivery("sending"); + setFeedback("Sending…"); + try { + const response = await fetch("/api/multi-monitor/messages", { + method: "POST", + cache: "no-store", + headers: { + "content-type": "application/json", + "x-burnlist-token": writeToken, + }, + body: JSON.stringify({ + identity, + message: current.message, + requestId: current.requestId, + }), + }); + const payload = await response.json().catch(() => null); + if (!response.ok || payload?.receipt?.status !== "accepted" + || typeof payload.receipt.turnId !== "string" + || payload.receipt.requestId !== current.requestId + || payload.receipt.threadId !== identity.session) { + throw new Error(payload?.error ?? "Codex did not acknowledge the message."); + } + clearMatchingDraft(identity, current.requestId); + setDraft({ message: "", requestId: "" }); + setDelivery("sent"); + setFeedback(payload.receipt.delivery === "steered" ? "Steered" : "Sent"); + } catch (cause) { + setDelivery("error"); + setFeedback(cause instanceof Error ? cause.message : "Message delivery failed."); + } + }; + + const resolveRequest = async (action: string, answers?: Record) => { + if (!pendingRequest || requestBusy) return; + setRequestBusy(true); + setRequestError(""); + try { + const response = await fetch("/api/multi-monitor/requests", { + method: "POST", + cache: "no-store", + headers: { + "content-type": "application/json", + "x-burnlist-token": writeToken, + }, + body: JSON.stringify({ + identity, + requestId: pendingRequest.requestId, + action, + ...(answers ? { answers } : {}), + }), + }); + const payload = await response.json().catch(() => null); + if (!response.ok || payload?.receipt?.status !== "resolved" + || payload.receipt.requestId !== pendingRequest.requestId + || payload.receipt.threadId !== identity.session) { + throw new Error(payload?.error ?? "Codex did not accept the decision."); + } + setPendingRequest(null); + } catch (cause) { + setRequestError(cause instanceof Error ? cause.message : "Codex request handling failed."); + } finally { + setRequestBusy(false); + } + }; + + const status = feedback || ( + !canSend + ? "Restart Codex to enable sending" + : turnOpen && !canSteerExternal + ? "Shared control required" + : turnOpen ? "Send or steer in Codex" : "Send to Codex" + ); + + return
+ {pendingRequest && void resolveRequest(action, answers)} + request={pendingRequest} + />} + {requestError &&

{requestError}

} +