@jinn-network/client 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +23 -4
- package/deployments/deployment-jinn-mvi-l1-sepolia.json +23 -4
- package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +5 -4
- package/dist/adapters/mech/adapter.d.ts +38 -1
- package/dist/adapters/mech/adapter.js +241 -54
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +17 -4
- package/dist/adapters/mech/contracts.js +8 -2
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/safe-revert.d.ts +20 -0
- package/dist/adapters/mech/safe-revert.js +12 -4
- package/dist/adapters/mech/safe-revert.js.map +1 -1
- package/dist/adapters/mech/safe.d.ts +5 -1
- package/dist/adapters/mech/safe.js +27 -8
- package/dist/adapters/mech/safe.js.map +1 -1
- package/dist/adapters/mech/verdict-code.d.ts +1 -0
- package/dist/adapters/mech/verdict-code.js +18 -0
- package/dist/adapters/mech/verdict-code.js.map +1 -1
- package/dist/api/admin-endpoint.d.ts +15 -3
- package/dist/api/admin-endpoint.js +24 -2
- package/dist/api/admin-endpoint.js.map +1 -1
- package/dist/api/bootstrap-endpoint.js +49 -0
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- package/dist/api/codex-doctor-endpoint.d.ts +73 -0
- package/dist/api/codex-doctor-endpoint.js +177 -0
- package/dist/api/codex-doctor-endpoint.js.map +1 -0
- package/dist/api/discovery-endpoint.d.ts +1 -0
- package/dist/api/discovery-endpoint.js +26 -0
- package/dist/api/discovery-endpoint.js.map +1 -1
- package/dist/api/fleet-build.d.ts +1 -0
- package/dist/api/fleet-build.js +2 -1
- package/dist/api/fleet-build.js.map +1 -1
- package/dist/api/gather-status.d.ts +11 -0
- package/dist/api/gather-status.js +400 -4
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/hermes-doctor-endpoint.d.ts +117 -0
- package/dist/api/hermes-doctor-endpoint.js +229 -23
- package/dist/api/hermes-doctor-endpoint.js.map +1 -1
- package/dist/api/launcher-status.d.ts +21 -16
- package/dist/api/launcher-status.js +2 -1
- package/dist/api/launcher-status.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +10 -0
- package/dist/api/portfolio-v0-build.js +24 -5
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/prediction-v1-build.d.ts +10 -0
- package/dist/api/prediction-v1-build.js +7 -1
- package/dist/api/prediction-v1-build.js.map +1 -1
- package/dist/api/server.d.ts +31 -1
- package/dist/api/server.js +68 -1
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +16 -0
- package/dist/api/setup-endpoints.js +78 -4
- package/dist/api/setup-endpoints.js.map +1 -1
- package/dist/api/setup-retry-endpoint.d.ts +19 -0
- package/dist/api/setup-retry-endpoint.js +32 -0
- package/dist/api/setup-retry-endpoint.js.map +1 -0
- package/dist/api/solvernets-endpoints.d.ts +8 -0
- package/dist/api/solvernets-endpoints.js +71 -43
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +72 -0
- package/dist/api/status-build.js +73 -18
- package/dist/api/status-build.js.map +1 -1
- package/dist/api/task-run-routing.d.ts +7 -0
- package/dist/api/task-run-routing.js +12 -0
- package/dist/api/task-run-routing.js.map +1 -0
- package/dist/api/task-runs-build.d.ts +21 -0
- package/dist/api/task-runs-build.js +14 -1
- package/dist/api/task-runs-build.js.map +1 -1
- package/dist/build-info.json +4 -4
- package/dist/build-meta.json +1 -1
- package/dist/chain-read-errors.d.ts +10 -0
- package/dist/chain-read-errors.js +15 -0
- package/dist/chain-read-errors.js.map +1 -1
- package/dist/cli/commands/auth.js +1 -1
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/create.js +3 -2
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.js +2 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/rewards.js +11 -7
- package/dist/cli/commands/rewards.js.map +1 -1
- package/dist/cli/commands/solver-nets.js +24 -9
- package/dist/cli/commands/solver-nets.js.map +1 -1
- package/dist/cli/commands/status.js +1 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/tasks.js +86 -9
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/update.d.ts +10 -0
- package/dist/cli/commands/update.js +36 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/introspection-context.js +5 -0
- package/dist/cli/introspection-context.js.map +1 -1
- package/dist/cli/task-native-readiness.d.ts +3 -1
- package/dist/cli/task-native-readiness.js +28 -6
- package/dist/cli/task-native-readiness.js.map +1 -1
- package/dist/config.d.ts +106 -5
- package/dist/config.js +97 -18
- package/dist/config.js.map +1 -1
- package/dist/daemon/checkpoint-loop.d.ts +48 -0
- package/dist/daemon/checkpoint-loop.js +76 -0
- package/dist/daemon/checkpoint-loop.js.map +1 -0
- package/dist/daemon/creator.d.ts +1 -1
- package/dist/daemon/creator.js +7 -3
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +19 -0
- package/dist/daemon/daemon.js +68 -1
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/eviction-loop.d.ts +40 -0
- package/dist/daemon/eviction-loop.js +67 -0
- package/dist/daemon/eviction-loop.js.map +1 -0
- package/dist/daemon/jinn-claim-loop-wiring.d.ts +33 -0
- package/dist/daemon/jinn-claim-loop-wiring.js +40 -0
- package/dist/daemon/jinn-claim-loop-wiring.js.map +1 -0
- package/dist/daemon/jinn-claim-loop.d.ts +24 -17
- package/dist/daemon/jinn-claim-loop.js +77 -23
- package/dist/daemon/jinn-claim-loop.js.map +1 -1
- package/dist/daemon/skip-log-dedup.d.ts +69 -0
- package/dist/daemon/skip-log-dedup.js +106 -0
- package/dist/daemon/skip-log-dedup.js.map +1 -0
- package/dist/dashboard/assets/index-BUlE8F3Y.js +330 -0
- package/dist/dashboard/assets/index-blqc7eqq.css +32 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/discovery/factory.d.ts +17 -5
- package/dist/discovery/factory.js +46 -18
- package/dist/discovery/factory.js.map +1 -1
- package/dist/discovery/http.js +142 -3
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.d.ts +5 -0
- package/dist/discovery/onchain.js +407 -15
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +45 -1
- package/dist/discovery/types.js +8 -10
- package/dist/discovery/types.js.map +1 -1
- package/dist/discovery/with-fallback.d.ts +7 -0
- package/dist/discovery/with-fallback.js +10 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap.d.ts +92 -1
- package/dist/earning/bootstrap.js +203 -63
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +14 -0
- package/dist/earning/contracts.js +17 -5
- package/dist/earning/contracts.js.map +1 -1
- package/dist/earning/funding-plan.js +27 -18
- package/dist/earning/funding-plan.js.map +1 -1
- package/dist/earning/jinn-rewards.d.ts +46 -0
- package/dist/earning/jinn-rewards.js +32 -0
- package/dist/earning/jinn-rewards.js.map +1 -1
- package/dist/earning/safe-adapter.d.ts +2 -0
- package/dist/earning/safe-adapter.js +26 -12
- package/dist/earning/safe-adapter.js.map +1 -1
- package/dist/earning/store.d.ts +8 -0
- package/dist/earning/store.js.map +1 -1
- package/dist/earning/testnet-setup-migration.d.ts +12 -0
- package/dist/earning/testnet-setup-migration.js +27 -1
- package/dist/earning/testnet-setup-migration.js.map +1 -1
- package/dist/earning/types.d.ts +15 -0
- package/dist/erc8004/reputation.d.ts +8 -0
- package/dist/erc8004/reputation.js +22 -3
- package/dist/erc8004/reputation.js.map +1 -1
- package/dist/harnesses/cost-estimates.d.ts +145 -0
- package/dist/harnesses/cost-estimates.js +297 -0
- package/dist/harnesses/cost-estimates.js.map +1 -0
- package/dist/harnesses/engine/engine.d.ts +72 -0
- package/dist/harnesses/engine/engine.js +105 -8
- package/dist/harnesses/engine/engine.js.map +1 -1
- package/dist/harnesses/engine/persistence.d.ts +51 -1
- package/dist/harnesses/engine/persistence.js +118 -5
- package/dist/harnesses/engine/persistence.js.map +1 -1
- package/dist/harnesses/engine/work-dir-reaper.d.ts +65 -0
- package/dist/harnesses/engine/work-dir-reaper.js +100 -0
- package/dist/harnesses/engine/work-dir-reaper.js.map +1 -0
- package/dist/harnesses/impls/hermes-agent/adapter.js +40 -0
- package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +20 -0
- package/dist/harnesses/impls/hermes-agent/bootstrap.js +40 -6
- package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/harness.d.ts +59 -1
- package/dist/harnesses/impls/hermes-agent/harness.js +104 -0
- package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
- package/dist/harnesses/impls/index.d.ts +7 -0
- package/dist/harnesses/impls/index.js +16 -1
- package/dist/harnesses/impls/index.js.map +1 -1
- package/dist/harnesses/impls/learner/harness.d.ts +38 -4
- package/dist/harnesses/impls/learner/harness.js +96 -2
- package/dist/harnesses/impls/learner/harness.js.map +1 -1
- package/dist/harnesses/impls/learner/plugin-path.d.ts +0 -13
- package/dist/harnesses/impls/learner/plugin-path.js +35 -15
- package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
- package/dist/harnesses/impls/learner/types.d.ts +11 -0
- package/dist/harnesses/impls/stub.d.ts +58 -0
- package/dist/harnesses/impls/stub.js +89 -0
- package/dist/harnesses/impls/stub.js.map +1 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +69 -50
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +178 -93
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +12 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +121 -7
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +15 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +54 -4
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +6 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
- package/dist/harnesses/readiness-registry.js +9 -1
- package/dist/harnesses/readiness-registry.js.map +1 -1
- package/dist/main.js +371 -82
- package/dist/main.js.map +1 -1
- package/dist/observability/emit-event.d.ts +1 -1
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/operator-errors.d.ts +7 -0
- package/dist/operator-errors.js +13 -1
- package/dist/operator-errors.js.map +1 -1
- package/dist/plugins/learner/.claude-plugin/plugin.json +9 -0
- package/dist/plugins/learner/.codex-plugin/plugin.json +39 -0
- package/dist/plugins/learner/AGENTS.md +40 -0
- package/dist/plugins/learner/CLAUDE.md +33 -0
- package/dist/plugins/learner/README.md +59 -0
- package/dist/plugins/learner/hooks/hooks.json +16 -0
- package/dist/plugins/learner/hooks/session-start +38 -0
- package/dist/plugins/learner/skills/learn/SKILL.md +412 -0
- package/dist/plugins/learner/skills/learn/analyst-prompt.md +68 -0
- package/dist/plugins/learner/skills/learn/consolidator-prompt.md +94 -0
- package/dist/plugins/learner/skills/learn/explorer-prompt.md +53 -0
- package/dist/plugins/learner/skills/learn/planner-prompt.md +87 -0
- package/dist/plugins/learner/skills/learn/promoter-prompt.md +113 -0
- package/dist/plugins/learner/skills/learn/step-worker-prompt.md +47 -0
- package/dist/plugins/learner/skills/learn/strategist-prompt.md +85 -0
- package/dist/restart-daemon.d.ts +90 -0
- package/dist/restart-daemon.js +95 -0
- package/dist/restart-daemon.js.map +1 -0
- package/dist/setup/halt-mode.d.ts +14 -0
- package/dist/setup/halt-mode.js +17 -0
- package/dist/setup/halt-mode.js.map +1 -0
- package/dist/solver-nets/prediction-operator-ux.js +43 -3
- package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
- package/dist/solver-nets/registry.d.ts +1 -0
- package/dist/solver-nets/registry.js +1 -1
- package/dist/solver-nets/registry.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-pool-cache.d.ts +58 -0
- package/dist/solver-types/_swe-rebench-v2-pool-cache.js +87 -0
- package/dist/solver-types/_swe-rebench-v2-pool-cache.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-substrate.d.ts +1 -0
- package/dist/solver-types/_swe-rebench-v2-substrate.js +10 -0
- package/dist/solver-types/_swe-rebench-v2-substrate.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +65 -0
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +243 -26
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2-auto.d.ts +22 -7
- package/dist/solver-types/swe-rebench-v2-auto.js +45 -20
- package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2.d.ts +13 -2
- package/dist/solver-types/swe-rebench-v2.js +233 -94
- package/dist/solver-types/swe-rebench-v2.js.map +1 -1
- package/dist/solvernets/daemon-init.d.ts +10 -2
- package/dist/solvernets/daemon-init.js +22 -2
- package/dist/solvernets/daemon-init.js.map +1 -1
- package/dist/solvernets/launched-record-dispatcher.js +35 -7
- package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
- package/dist/solvernets/store.d.ts +5 -0
- package/dist/solvernets/store.js +1 -0
- package/dist/solvernets/store.js.map +1 -1
- package/dist/store/store.d.ts +15 -0
- package/dist/store/store.js +118 -3
- package/dist/store/store.js.map +1 -1
- package/dist/tasks/sources.d.ts +18 -1
- package/dist/tasks/sources.js +33 -5
- package/dist/tasks/sources.js.map +1 -1
- package/dist/tx-retry.d.ts +151 -19
- package/dist/tx-retry.js +286 -32
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/payloads/prediction-apy-v0.d.ts +5 -5
- package/dist/types/payloads/prediction-v0.d.ts +5 -5
- package/dist/types/task-document.d.ts +392 -0
- package/dist/types/task-document.js +10 -0
- package/dist/types/task-document.js.map +1 -1
- package/dist/types/task.d.ts +28 -0
- package/dist/util/extract-tx-hash.d.ts +14 -0
- package/dist/util/extract-tx-hash.js +19 -0
- package/dist/util/extract-tx-hash.js.map +1 -0
- package/dist/vendor/@jinn-network/sdk/dist/contracts.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +3 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -0
- package/package.json +29 -12
- package/dist/dashboard/assets/index-DOlzFN8a.css +0 -32
- package/dist/dashboard/assets/index-NkZ7CTAT.js +0 -140
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
3
|
+
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|
|
4
|
+
* https://github.com/chjj/term.js
|
|
5
|
+
* @license MIT
|
|
6
|
+
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in
|
|
15
|
+
* all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
23
|
+
* THE SOFTWARE.
|
|
24
|
+
*
|
|
25
|
+
* Originally forked from (with the author's permission):
|
|
26
|
+
* Fabrice Bellard's javascript vt100 for jslinux:
|
|
27
|
+
* http://bellard.org/jslinux/
|
|
28
|
+
* Copyright (c) 2011 Fabrice Bellard
|
|
29
|
+
* The original design remains. The terminal itself
|
|
30
|
+
* has been extended to include xterm CSI codes, among
|
|
31
|
+
* other features.
|
|
32
|
+
*/.xterm{cursor:text;position:relative;-moz-user-select:none;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width: 1400px){.container{max-width:1400px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-2{left:.5rem}.left-\[3px\]{left:3px}.left-\[50\%\]{left:50%}.right-0{right:0}.right-4{right:1rem}.right-\[3px\]{right:3px}.top-0{top:0}.top-4{top:1rem}.top-8{top:2rem}.top-\[2px\]{top:2px}.top-\[50\%\]{top:50%}.z-50{z-index:50}.col-span-12{grid-column:span 12 / span 12}.col-span-2{grid-column:span 2 / span 2}.col-span-full{grid-column:1 / -1}.m-0{margin:0}.m-3{margin:.75rem}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:.125rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-2\.5{margin-left:.625rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mr-auto{margin-right:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.\!size-3{width:.75rem!important;height:.75rem!important}.\!size-3\.5{width:.875rem!important;height:.875rem!important}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[18px\]{height:18px}.h-\[3px\]{height:3px}.h-\[calc\(100vh-220px\)\]{height:calc(100vh - 220px)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-60{max-height:15rem}.max-h-\[280px\]{max-height:280px}.max-h-\[560px\]{max-height:560px}.min-h-0{min-height:0px}.min-h-\[1\.5em\]{min-height:1.5em}.min-h-\[400px\]{min-height:400px}.min-h-\[520px\]{min-height:520px}.min-h-\[96px\]{min-height:96px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/6{width:66.666667%}.w-40{width:10rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[14\%\]{width:14%}.w-\[16\%\]{width:16%}.w-\[22\%\]{width:22%}.w-\[34\%\]{width:34%}.w-\[min\(28rem\,90vw\)\]{width:min(28rem,90vw)}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[100px\]{min-width:100px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[260px\]{min-width:260px}.min-w-\[64px\]{min-width:64px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.max-w-\[1100px\]{max-width:1100px}.max-w-\[1280px\]{max-width:1280px}.max-w-\[320px\]{max-width:320px}.max-w-\[34ch\]{max-width:34ch}.max-w-\[420px\]{max-width:420px}.max-w-\[440px\]{max-width:440px}.max-w-\[64ch\]{max-width:64ch}.max-w-\[720px\]{max-width:720px}.max-w-\[72ch\]{max-width:72ch}.max-w-\[880px\]{max-width:880px}.max-w-\[960px\]{max-width:960px}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-\[1_1_360px\]{flex:1 1 360px}.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.caption-bottom{caption-side:bottom}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-y{resize:vertical}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[140px_1fr\]{grid-template-columns:140px 1fr}.grid-cols-\[160px_1fr\]{grid-template-columns:160px 1fr}.grid-cols-\[1fr_320px\]{grid-template-columns:1fr 320px}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[3rem_1fr_auto\]{grid-template-columns:3rem 1fr auto}.grid-cols-\[68px_84px_1fr\]{grid-template-columns:68px 84px 1fr}.grid-cols-\[90px_1fr\]{grid-template-columns:90px 1fr}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.grid-cols-\[auto_1fr_auto_auto\]{grid-template-columns:auto 1fr auto auto}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-rows-\[auto_auto_auto_minmax\(0\,1fr\)\]{grid-template-rows:auto auto auto minmax(0,1fr)}.grid-rows-\[auto_auto_minmax\(0\,1fr\)\]{grid-template-rows:auto auto minmax(0,1fr)}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[3px\]{gap:3px}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-3\.5{-moz-column-gap:.875rem;column-gap:.875rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-2\.5{row-gap:.625rem}.self-start{align-self:flex-start}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius-3)}.rounded-md{border-radius:var(--radius-2)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-1)}.border{border-width:1px}.border-0{border-width:0px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-0{border-left-width:0px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[var\(--accent-sky\)\]{border-color:var(--accent-sky)}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--break-red\)\]{border-color:var(--break-red)}.border-\[var\(--severity-blocking-border\)\]{border-color:var(--severity-blocking-border)}.border-\[var\(--severity-blocking-fg\)\]{border-color:var(--severity-blocking-fg)}.border-\[var\(--severity-info-fg\)\]{border-color:var(--severity-info-fg)}.border-\[var\(--severity-warning-border\)\]{border-color:var(--severity-warning-border)}.border-\[var\(--severity-warning-fg\)\]{border-color:var(--severity-warning-fg)}.border-\[var\(--vow-green\)\]{border-color:var(--vow-green)}.border-\[var\(--wane\)\]{border-color:var(--wane)}.border-border{border-color:var(--border)}.border-break-red{border-color:var(--break-red)}.border-destructive{border-color:var(--destructive)}.border-input{border-color:var(--input)}.border-muted-foreground{border-color:var(--muted-foreground)}.border-primary{border-color:var(--primary)}.border-transparent{border-color:transparent}.border-wane{border-color:var(--wane)}.border-l-\[var\(\$\{expectedToken\}\)\]{border-left-color:var(${expectedToken})}.border-l-\[var\(--severity-blocking-fg\)\]{border-left-color:var(--severity-blocking-fg)}.border-l-\[var\(--severity-info-fg\)\]{border-left-color:var(--severity-info-fg)}.border-l-\[var\(--severity-warning-fg\)\]{border-left-color:var(--severity-warning-fg)}.border-l-primary{border-left-color:var(--primary)}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[var\(--accent-gold\)\]{background-color:var(--accent-gold)}.bg-\[var\(--accent-sky\)\]{background-color:var(--accent-sky)}.bg-\[var\(--bg\)\]{background-color:var(--bg)}.bg-\[var\(--bg-elevated\)\]{background-color:var(--bg-elevated)}.bg-\[var\(--bg-sunken\)\]{background-color:var(--bg-sunken)}.bg-\[var\(--border-strong\)\]{background-color:var(--border-strong)}.bg-\[var\(--break-red\)\]{background-color:var(--break-red)}.bg-\[var\(--fg-muted\)\]{background-color:var(--fg-muted)}.bg-\[var\(--seer-violet\)\]{background-color:var(--seer-violet)}.bg-\[var\(--severity-blocking-bg\)\]{background-color:var(--severity-blocking-bg)}.bg-\[var\(--severity-warning-bg\)\]{background-color:var(--severity-warning-bg)}.bg-\[var\(--vow-green\)\]{background-color:var(--vow-green)}.bg-accent{background-color:var(--accent)}.bg-accent-sky{background-color:var(--accent-sky)}.bg-background{background-color:var(--background)}.bg-black\/70{background-color:#000000b3}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-elevated{background-color:var(--bg-elevated)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-sunken,.bg-surface-sunken{background-color:var(--bg-sunken)}.bg-transparent{background-color:transparent}.p-0{padding:0}.p-1{padding:.25rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-px{padding:1px}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-\[5px\]{padding-top:5px;padding-bottom:5px}.py-px{padding-top:1px;padding-bottom:1px}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-px{padding-bottom:1px}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-8{padding-left:2rem}.pl-\[22px\]{padding-left:22px}.pr-2{padding-right:.5rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-3\.5{padding-top:.875rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.align-middle{vertical-align:middle}.font-mono{font-family:var(--mono)}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.font-serif{font-family:var(--serif)}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.text-\[32px\]{font-size:32px}.text-\[64px\]{font-size:64px}.text-\[76px\]{font-size:76px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.05\]{line-height:1.05}.leading-\[1\.25\]{line-height:1.25}.leading-\[1\.2\]{line-height:1.2}.leading-\[1\.5\]{line-height:1.5}.leading-\[1\.6\]{line-height:1.6}.leading-\[1\.7\]{line-height:1.7}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[-0\.01em\]{letter-spacing:-.01em}.tracking-\[0\.05em\]{letter-spacing:.05em}.tracking-\[0\.06em\]{letter-spacing:.06em}.tracking-\[0\.08em\]{letter-spacing:.08em}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-\[0\.14em\]{letter-spacing:.14em}.tracking-\[0\.1em\]{letter-spacing:.1em}.tracking-normal{letter-spacing:0em}.text-\[var\(--accent-gold\)\]{color:var(--accent-gold)}.text-\[var\(--accent-sky\)\]{color:var(--accent-sky)}.text-\[var\(--bg\)\]{color:var(--bg)}.text-\[var\(--bg-sunken\)\]{color:var(--bg-sunken)}.text-\[var\(--break-red\)\]{color:var(--break-red)}.text-\[var\(--fg\)\]{color:var(--fg)}.text-\[var\(--fg-dim\)\]{color:var(--fg-dim)}.text-\[var\(--fg-muted\)\]{color:var(--fg-muted)}.text-\[var\(--severity-blocking-fg\)\]{color:var(--severity-blocking-fg)}.text-\[var\(--severity-info-fg\)\]{color:var(--severity-info-fg)}.text-\[var\(--severity-warning-fg\)\]{color:var(--severity-warning-fg)}.text-\[var\(--vow-green\)\]{color:var(--vow-green)}.text-\[var\(--wane\)\]{color:var(--wane)}.text-accent-sky{color:var(--accent-sky)}.text-break-red{color:var(--break-red)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-dim,.text-fg-dim{color:var(--fg-dim)}.text-fg-muted{color:var(--fg-muted)}.text-foreground{color:var(--foreground)}.text-inherit{color:inherit}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.accent-accent-sky{accent-color:var(--accent-sky)}.accent-destructive{accent-color:var(--destructive)}.accent-primary{accent-color:var(--primary)}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-offset-background{--tw-ring-offset-color: var(--background)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.duration-200{animation-duration:.2s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.running{animation-play-state:running}.paused{animation-play-state:paused}.\[grid-template-columns\:120px_minmax\(0\,1fr\)\]{grid-template-columns:120px minmax(0,1fr)}.\[grid-template-columns\:140px_minmax\(0\,1fr\)\]{grid-template-columns:140px minmax(0,1fr)}.\[grid-template-columns\:minmax\(0\,1fr\)_minmax\(0\,380px\)\]{grid-template-columns:minmax(0,1fr) minmax(0,380px)}.\[grid-template-columns\:minmax\(120px\,180px\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(120px,180px) minmax(0,1fr)}.\[grid-template-columns\:minmax\(160px\,200px\)_minmax\(0\,1fr\)_minmax\(180px\,220px\)\]{grid-template-columns:minmax(160px,200px) minmax(0,1fr) minmax(180px,220px)}.\[grid-template-columns\:repeat\(auto-fit\,minmax\(120px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.\[grid-template-columns\:repeat\(auto-fit\,minmax\(150px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.\[grid-template-columns\:repeat\(auto-fit\,minmax\(180px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.\[grid-template-columns\:repeat\(auto-fit\,minmax\(220px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}:root{--bg: #0c1628;--bg-elevated: #142340;--bg-sunken: #070d18;--fg: #f2f7fc;--fg-muted: #a4b0c2;--fg-dim: #7d8ba3;--border: #1f3a66;--border-strong: #7aa7dc;--border-accent: #c9a048;--accent-sky: #7aa7dc;--accent-sky-hover: #a8c8ea;--accent-gold: #dcb866;--accent-gold-hover: #ead08e;--vow-green: #6a9b8f;--wane: #b8802f;--break-red: #a85a5a;--seer-violet: #7a6db0;--surface: var(--bg-elevated);--surface-sunken: var(--bg-sunken);--radius-1: 4px;--radius-2: 6px;--radius-3: 10px;--radius-pill: 999px;--serif: "Instrument Serif", "Times New Roman", serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--text-2xs: 10px;--text-xs: 11px;--text-sm: 12px;--text-base: 14px;--text-md: 17px;--text-lg: 20px;--text-xl: 24px;--text-2xl: 26px;--text-display: 64px;--text-display-xl: 88px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--dur-fast: 80ms;--dur-base: .14s;--dur-slow: .24s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--severity-blocking-fg: var(--break-red);--severity-blocking-border: rgba(168, 90, 90, .6);--severity-blocking-bg: rgba(168, 90, 90, .06);--severity-warning-fg: var(--wane);--severity-warning-border: rgba(184, 128, 47, .6);--severity-warning-bg: rgba(184, 128, 47, .06);--severity-info-fg: var(--accent-sky);--severity-info-border: rgba(122, 167, 220, .4);--severity-info-bg: transparent;--severity-success-fg: var(--vow-green);--background: var(--bg);--foreground: var(--fg);--card: var(--bg-elevated);--card-foreground: var(--fg);--popover: var(--bg-elevated);--popover-foreground: var(--fg);--primary: var(--accent-sky);--primary-foreground: var(--bg-sunken);--secondary: var(--bg-elevated);--secondary-foreground: var(--fg-muted);--muted: var(--bg-elevated);--muted-foreground: var(--fg-muted);--accent: var(--bg-elevated);--accent-foreground: var(--accent-sky);--destructive: var(--break-red);--destructive-foreground: var(--fg);--input: var(--border);--ring: var(--accent-sky);--radius: var(--radius-2)}html,body{background:var(--bg);color:var(--fg);font-family:var(--mono);font-feature-settings:"ss01" on,"ss02" on,"cv01" on}#root{min-height:100vh}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:1px solid var(--accent-sky);outline-offset:2px}@keyframes jinnPulse{0%{box-shadow:0 0 #dcb8668c}70%{box-shadow:0 0 0 10px #dcb86600}to{box-shadow:0 0 #dcb86600}}@keyframes jinnFadeSlide{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.jinn-anim-pulse{animation:jinnPulse 1.6s ease-out infinite}.jinn-anim-fade-slide{animation:jinnFadeSlide .32s ease-out both}.phase-row[data-status=active]{background:linear-gradient(90deg,rgba(220,184,102,.04) 0%,transparent 60%);transition:background .32s ease}.xterm,.xterm-viewport,.xterm-screen{width:100%!important}.agent-rail .xterm{min-width:0;overflow:hidden}.agent-rail .xterm-viewport{overflow-x:hidden}.agent-rail .xterm-accessibility-tree{display:none}.hfmf-intro-markdown h1{font-family:var(--serif);font-weight:400;font-size:40px;line-height:1.1;letter-spacing:0;color:var(--fg);margin:0 0 16px}.hfmf-intro-markdown h2{font-family:var(--serif);font-weight:400;font-size:22px;line-height:1.25;letter-spacing:0;color:var(--fg);margin:28px 0 8px;padding-top:20px;border-top:1px solid var(--border)}.hfmf-intro-markdown h2:first-child,.hfmf-intro-markdown h1+h2{padding-top:0;border-top:none}.hfmf-intro-markdown h3{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin:20px 0 8px}.hfmf-intro-markdown p{font-family:var(--mono);font-size:13px;line-height:1.7;letter-spacing:-.01em;color:var(--fg-muted);margin:0 0 12px;max-width:72ch}.hfmf-intro-markdown ul{font-family:var(--mono);font-size:13px;line-height:1.7;color:var(--fg-muted);list-style:none;padding:0;margin:0 0 12px}.hfmf-intro-markdown ul li{position:relative;padding-left:16px;margin:4px 0}.hfmf-intro-markdown ul li:before{content:"—";position:absolute;left:0;color:var(--fg-dim)}.hfmf-intro-markdown code{font-family:var(--mono);font-size:12px;color:var(--accent-sky);background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--radius-1);padding:1px 6px}.hfmf-intro-markdown pre{font-family:var(--mono);font-size:12px;line-height:1.6;color:var(--fg);background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--radius-2);padding:14px 16px;margin:0 0 14px;overflow-x:auto}.hfmf-intro-markdown pre code{background:transparent;border:0;padding:0;color:inherit}.hfmf-intro-markdown a{color:var(--accent-sky);text-decoration:none;border-bottom:1px solid var(--border)}.hfmf-intro-markdown a:hover{color:var(--accent-sky-hover);border-bottom-color:var(--accent-sky)}.placeholder\:text-\[var\(--fg-dim\)\]::-moz-placeholder{color:var(--fg-dim)}.placeholder\:text-\[var\(--fg-dim\)\]::placeholder{color:var(--fg-dim)}.placeholder\:text-fg-dim::-moz-placeholder{color:var(--fg-dim)}.placeholder\:text-fg-dim::placeholder{color:var(--fg-dim)}.hover\:border-foreground:hover{border-color:var(--foreground)}.hover\:bg-\[var\(--accent-gold-hover\)\]:hover{background-color:var(--accent-gold-hover)}.hover\:bg-\[var\(--accent-sky-hover\)\]:hover{background-color:var(--accent-sky-hover)}.hover\:bg-\[var\(--bg\)\]:hover{background-color:var(--bg)}.hover\:bg-\[var\(--bg-sunken\)\]:hover{background-color:var(--bg-sunken)}.hover\:bg-\[var\(--severity-blocking-bg\)\]:hover{background-color:var(--severity-blocking-bg)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-elevated:hover{background-color:var(--bg-elevated)}.hover\:bg-sunken:hover{background-color:var(--bg-sunken)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-\[var\(--accent-sky-hover\)\]:hover{color:var(--accent-sky-hover)}.hover\:text-\[var\(--fg\)\]:hover{color:var(--fg)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:bg-\[var\(--bg-sunken\)\]:focus{background-color:var(--bg-sunken)}.focus\:text-foreground:focus{color:var(--foreground)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:bg-sunken:focus-visible{background-color:var(--bg-sunken)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: var(--ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: var(--background)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group.toaster .group-\[\.toaster\]\:border-border{border-color:var(--border)}.group.toast .group-\[\.toast\]\:bg-\[var\(--accent-sky\)\]{background-color:var(--accent-sky)}.group.toast .group-\[\.toast\]\:bg-transparent{background-color:transparent}.group.toaster .group-\[\.toaster\]\:bg-card{background-color:var(--card)}.group.toast .group-\[\.toast\]\:text-\[var\(--bg-sunken\)\]{color:var(--bg-sunken)}.group.toast .group-\[\.toast\]\:text-\[var\(--fg-muted\)\]{color:var(--fg-muted)}.group.toaster .group-\[\.toaster\]\:text-card-foreground{color:var(--card-foreground)}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0\.5[data-state=unchecked]{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:bg-\[var\(--bg-sunken\)\][data-state=active]{background-color:var(--bg-sunken)}.data-\[state\=checked\]\:bg-\[var\(--vow-green\)\][data-state=checked]{background-color:var(--vow-green)}.data-\[state\=selected\]\:bg-\[var\(--bg-sunken\)\][data-state=selected]{background-color:var(--bg-sunken)}.data-\[state\=unchecked\]\:bg-border[data-state=unchecked]{background-color:var(--border)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open],.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open],.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open],.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y: -48%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}@media (min-width: 640px){.sm\:mt-0{margin-top:0}.sm\:hidden{display:none}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:rounded-lg{border-radius:var(--radius-3)}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr}}@media (min-width: 1024px){.lg\:col-span-5{grid-column:span 5 / span 5}.lg\:col-span-7{grid-column:span 7 / span 7}}.\[\&\>div\]\:bg-\[var\(--accent-gold\)\]>div{background-color:var(--accent-gold)}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-3>svg{top:.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}.\[\&_tr\]\:border-border tr{border-color:var(--border)}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500;600&display=swap"
|
|
11
11
|
rel="stylesheet"
|
|
12
12
|
/>
|
|
13
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-BUlE8F3Y.js"></script>
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-blqc7eqq.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
17
17
|
<div id="root"></div>
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* createDiscoveryAPI factory — builds a DiscoveryAPI from the daemon config.
|
|
3
3
|
*
|
|
4
|
-
* Selects the primary implementation per config.discovery.mode,
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Selects the primary implementation per config.discovery.mode, builds an
|
|
5
|
+
* OnchainDiscoveryAPI floor *only* when `fallbackToOnchain` is explicitly
|
|
6
|
+
* `true`, and returns a withFallback composition in that case.
|
|
7
|
+
*
|
|
8
|
+
* `fallbackToOnchain` defaults to `false` (since the 2026-05-23 substrate
|
|
9
|
+
* incident): silent fall-through to direct `eth_getLogs` masks indexer
|
|
10
|
+
* outages and turns every daemon into its own indexer, which storms shared
|
|
11
|
+
* RPC quota. Operators opt in explicitly when they want the fallback —
|
|
12
|
+
* usually only when they self-host an alternate RPC with generous getLogs
|
|
13
|
+
* quotas. When `false`, an indexer outage propagates as
|
|
14
|
+
* DiscoveryUnavailableError so the operator-app surfaces it and the daemon
|
|
15
|
+
* stops claiming until the indexer is back.
|
|
7
16
|
*
|
|
8
17
|
* Spec: spec/2026-05-11-discovery-api-and-shared-indexer.md §9.1–9.2.
|
|
9
18
|
*/
|
|
@@ -43,7 +52,10 @@ export interface DiscoveryConfig {
|
|
|
43
52
|
* - 'http' → HttpDiscoveryAPI backed by a Ponder GraphQL endpoint (280n.4)
|
|
44
53
|
* - 'embedded' → not yet shipped (280n.5); throws at boot
|
|
45
54
|
*
|
|
46
|
-
* When `fallbackToOnchain` is true (
|
|
47
|
-
* withFallback(primary, floor)
|
|
55
|
+
* When `fallbackToOnchain` is true (explicit opt-in), the primary is wrapped
|
|
56
|
+
* in withFallback(primary, floor) and a boot warning is logged so operators
|
|
57
|
+
* can see they're in fall-through mode. The default is false: the primary is
|
|
58
|
+
* returned directly and an indexer outage surfaces as
|
|
59
|
+
* DiscoveryUnavailableError.
|
|
48
60
|
*/
|
|
49
61
|
export declare function createDiscoveryAPI(config: DiscoveryConfig, deps: DiscoveryFactoryDeps): DiscoveryAPI;
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* createDiscoveryAPI factory — builds a DiscoveryAPI from the daemon config.
|
|
3
3
|
*
|
|
4
|
-
* Selects the primary implementation per config.discovery.mode,
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Selects the primary implementation per config.discovery.mode, builds an
|
|
5
|
+
* OnchainDiscoveryAPI floor *only* when `fallbackToOnchain` is explicitly
|
|
6
|
+
* `true`, and returns a withFallback composition in that case.
|
|
7
|
+
*
|
|
8
|
+
* `fallbackToOnchain` defaults to `false` (since the 2026-05-23 substrate
|
|
9
|
+
* incident): silent fall-through to direct `eth_getLogs` masks indexer
|
|
10
|
+
* outages and turns every daemon into its own indexer, which storms shared
|
|
11
|
+
* RPC quota. Operators opt in explicitly when they want the fallback —
|
|
12
|
+
* usually only when they self-host an alternate RPC with generous getLogs
|
|
13
|
+
* quotas. When `false`, an indexer outage propagates as
|
|
14
|
+
* DiscoveryUnavailableError so the operator-app surfaces it and the daemon
|
|
15
|
+
* stops claiming until the indexer is back.
|
|
7
16
|
*
|
|
8
17
|
* Spec: spec/2026-05-11-discovery-api-and-shared-indexer.md §9.1–9.2.
|
|
9
18
|
*/
|
|
@@ -19,26 +28,29 @@ import { createHttpDiscoveryAPI } from './http.js';
|
|
|
19
28
|
* - 'http' → HttpDiscoveryAPI backed by a Ponder GraphQL endpoint (280n.4)
|
|
20
29
|
* - 'embedded' → not yet shipped (280n.5); throws at boot
|
|
21
30
|
*
|
|
22
|
-
* When `fallbackToOnchain` is true (
|
|
23
|
-
* withFallback(primary, floor)
|
|
31
|
+
* When `fallbackToOnchain` is true (explicit opt-in), the primary is wrapped
|
|
32
|
+
* in withFallback(primary, floor) and a boot warning is logged so operators
|
|
33
|
+
* can see they're in fall-through mode. The default is false: the primary is
|
|
34
|
+
* returned directly and an indexer outage surfaces as
|
|
35
|
+
* DiscoveryUnavailableError.
|
|
24
36
|
*/
|
|
25
37
|
export function createDiscoveryAPI(config, deps) {
|
|
26
38
|
const mode = config.mode ?? 'onchain';
|
|
27
|
-
|
|
28
|
-
//
|
|
29
|
-
const
|
|
30
|
-
rpcUrl: deps.rpcUrl,
|
|
31
|
-
chainId: deps.chainId,
|
|
32
|
-
routerAddress: deps.routerAddress,
|
|
33
|
-
identityRegistryAddress: deps.identityRegistryAddress,
|
|
34
|
-
safeAddress: deps.safeAddress,
|
|
35
|
-
mechAddress: deps.mechAddress,
|
|
36
|
-
taskDiscoveryFromBlock: deps.taskDiscoveryFromBlock,
|
|
37
|
-
});
|
|
39
|
+
// Default-off (since the 2026-05-23 substrate incident): silent fall-through
|
|
40
|
+
// to on-chain getLogs is opt-in. See docstring above.
|
|
41
|
+
const fallbackToOnchain = config.fallbackToOnchain ?? false;
|
|
38
42
|
if (mode === 'onchain') {
|
|
39
|
-
// For the floor-only mode, return
|
|
43
|
+
// For the floor-only mode, return the floor alone — withFallback(floor, floor)
|
|
40
44
|
// would be pointless overhead.
|
|
41
|
-
return
|
|
45
|
+
return createOnchainDiscoveryAPI({
|
|
46
|
+
rpcUrl: deps.rpcUrl,
|
|
47
|
+
chainId: deps.chainId,
|
|
48
|
+
routerAddress: deps.routerAddress,
|
|
49
|
+
identityRegistryAddress: deps.identityRegistryAddress,
|
|
50
|
+
safeAddress: deps.safeAddress,
|
|
51
|
+
mechAddress: deps.mechAddress,
|
|
52
|
+
taskDiscoveryFromBlock: deps.taskDiscoveryFromBlock,
|
|
53
|
+
});
|
|
42
54
|
}
|
|
43
55
|
if (mode === 'http') {
|
|
44
56
|
if (!config.url) {
|
|
@@ -55,6 +67,22 @@ export function createDiscoveryAPI(config, deps) {
|
|
|
55
67
|
if (!fallbackToOnchain) {
|
|
56
68
|
return primary;
|
|
57
69
|
}
|
|
70
|
+
// Operator explicitly opted in to silent fall-through. Log once at boot
|
|
71
|
+
// so the choice is visible — without this, operators can't tell from
|
|
72
|
+
// logs whether they're in indexer-only or indexer-with-fallback mode.
|
|
73
|
+
console.warn('[discovery] fallbackToOnchain=true — daemon will silently fall through to ' +
|
|
74
|
+
'eth_getLogs when the indexer is unreachable. This trades observability of ' +
|
|
75
|
+
'indexer outages for availability. Only recommended when you self-host an RPC ' +
|
|
76
|
+
'with generous getLogs quotas.');
|
|
77
|
+
const floor = createOnchainDiscoveryAPI({
|
|
78
|
+
rpcUrl: deps.rpcUrl,
|
|
79
|
+
chainId: deps.chainId,
|
|
80
|
+
routerAddress: deps.routerAddress,
|
|
81
|
+
identityRegistryAddress: deps.identityRegistryAddress,
|
|
82
|
+
safeAddress: deps.safeAddress,
|
|
83
|
+
mechAddress: deps.mechAddress,
|
|
84
|
+
taskDiscoveryFromBlock: deps.taskDiscoveryFromBlock,
|
|
85
|
+
});
|
|
58
86
|
return withFallback(primary, floor);
|
|
59
87
|
}
|
|
60
88
|
// mode === 'embedded'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/discovery/factory.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/discovery/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAmCnD,iFAAiF;AAEjF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAuB,EACvB,IAA0B;IAE1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;IACtC,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAC;IAE5D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,+EAA+E;QAC/E,+BAA+B;QAC/B,OAAO,yBAAyB,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,qEAAqE;YACrE,kEAAkE;YAClE,2FAA2F;YAC3F,MAAM,IAAI,KAAK,CACb,0DAA0D;gBAC1D,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,sBAAsB,CAAC;YACrC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,wEAAwE;QACxE,qEAAqE;QACrE,sEAAsE;QACtE,OAAO,CAAC,IAAI,CACV,4EAA4E;YAC5E,4EAA4E;YAC5E,+EAA+E;YAC/E,+BAA+B,CAChC,CAAC;QAEF,MAAM,KAAK,GAAG,yBAAyB,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,sBAAsB;IACtB,sEAAsE;IACtE,MAAM,IAAI,KAAK,CACb,kDAAkD;QAClD,wDAAwD;QACxD,4CAA4C,CAC7C,CAAC;AACJ,CAAC"}
|
package/dist/discovery/http.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DiscoveryUnavailableError } from './types.js';
|
|
2
|
+
import { manifestDigestForCid } from '../adapters/mech/digest.js';
|
|
2
3
|
// ── GraphQL query strings ─────────────────────────────────────────────────────
|
|
3
4
|
/**
|
|
4
5
|
* Claimable tasks query. Fetches task rows in pages; attempt counts are
|
|
@@ -59,6 +60,14 @@ query Tasks(
|
|
|
59
60
|
* Client-side grouping by taskId produces per-task counts.
|
|
60
61
|
*/
|
|
61
62
|
const ATTEMPTS_PAGE_LIMIT = 1000;
|
|
63
|
+
/**
|
|
64
|
+
* Hard cap on `OPERATOR_COUNT_TASKS_QUERY` pages (leg 1 of the operator-count
|
|
65
|
+
* query). At `ATTEMPTS_PAGE_LIMIT` rows per page that is 50_000 tasks — far
|
|
66
|
+
* beyond any realistic SolverNet — and bounds the scan so the dashboard's
|
|
67
|
+
* recurring poll cannot trigger an unbounded walk. On a SolverNet past the cap
|
|
68
|
+
* the resulting count is a lower bound; see `getSolverNetOperatorCount`.
|
|
69
|
+
*/
|
|
70
|
+
const MAX_OPERATOR_COUNT_TASK_PAGES = 50;
|
|
62
71
|
const ATTEMPTS_FOR_TASKS_QUERY = `
|
|
63
72
|
query AttemptsForTasks($taskIds: [String!]!, $chainId: Int!, $limit: Int!, $after: String) {
|
|
64
73
|
attempts(
|
|
@@ -116,6 +125,62 @@ query GetLifecycleStatus($manifestCid: String!) {
|
|
|
116
125
|
}
|
|
117
126
|
}
|
|
118
127
|
`;
|
|
128
|
+
/**
|
|
129
|
+
* Per-SolverNet attempt fetch for the operator-count query. Pages through every
|
|
130
|
+
* `attempt` row whose `taskId` belongs to a task with the given
|
|
131
|
+
* `manifestDigest`. The caller de-duplicates `operator` client-side to derive
|
|
132
|
+
* the distinct-operator count.
|
|
133
|
+
*
|
|
134
|
+
* There is no single GraphQL field joining `attempt` to `task.manifestDigest`,
|
|
135
|
+
* so this runs in two legs: first `OPERATOR_COUNT_TASKS_QUERY` (task ids for
|
|
136
|
+
* the digest), then `OPERATOR_COUNT_ATTEMPTS_QUERY` batched over those ids via
|
|
137
|
+
* the `_in` operator — the same pattern `findClaimableTasks` already uses.
|
|
138
|
+
*
|
|
139
|
+
* The task query intentionally does NOT filter `finalized` / `refunded`: the
|
|
140
|
+
* on-chain backing reads raw `TaskAttemptCreated` logs and cannot see lifecycle
|
|
141
|
+
* state, so adding the filter here would make HTTP and on-chain disagree. The
|
|
142
|
+
* count is an *ever-participated* signal across all task lifecycle states — see
|
|
143
|
+
* `DiscoveryAPI.getSolverNetOperatorCount`.
|
|
144
|
+
*/
|
|
145
|
+
const OPERATOR_COUNT_TASKS_QUERY = `
|
|
146
|
+
query OperatorCountTasks($manifestDigest: String!, $limit: Int!, $after: String) {
|
|
147
|
+
tasks(
|
|
148
|
+
where: { manifestDigest: $manifestDigest },
|
|
149
|
+
limit: $limit,
|
|
150
|
+
after: $after,
|
|
151
|
+
orderBy: "id",
|
|
152
|
+
orderDirection: "asc"
|
|
153
|
+
) {
|
|
154
|
+
items {
|
|
155
|
+
id
|
|
156
|
+
chainId
|
|
157
|
+
}
|
|
158
|
+
pageInfo {
|
|
159
|
+
hasNextPage
|
|
160
|
+
endCursor
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
`;
|
|
165
|
+
const OPERATOR_COUNT_ATTEMPTS_QUERY = `
|
|
166
|
+
query OperatorCountAttempts($taskIds: [String!]!, $chainId: Int!, $limit: Int!, $after: String) {
|
|
167
|
+
attempts(
|
|
168
|
+
where: { taskId_in: $taskIds, chainId: $chainId },
|
|
169
|
+
limit: $limit,
|
|
170
|
+
after: $after,
|
|
171
|
+
orderBy: "attemptIndex",
|
|
172
|
+
orderDirection: "asc"
|
|
173
|
+
) {
|
|
174
|
+
items {
|
|
175
|
+
operator
|
|
176
|
+
}
|
|
177
|
+
pageInfo {
|
|
178
|
+
hasNextPage
|
|
179
|
+
endCursor
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
`;
|
|
119
184
|
const QUERY_ENVELOPES_QUERY = `
|
|
120
185
|
query QueryEnvelopes($where: envelopeFilter, $limit: Int!) {
|
|
121
186
|
envelopes(
|
|
@@ -285,9 +350,16 @@ export function createHttpDiscoveryAPI(opts) {
|
|
|
285
350
|
const operatorLower = args.operatorAddress.toLowerCase();
|
|
286
351
|
const now = args.nowSeconds ?? Math.floor(Date.now() / 1000);
|
|
287
352
|
const seen = new Set();
|
|
288
|
-
|
|
353
|
+
// Per-CID buckets. We must not flatten + global-sort by taskId across CIDs
|
|
354
|
+
// — that lets a backlogged SolverNet monopolise the per-tick yield in the
|
|
355
|
+
// adapter (which yields one announcement per cycle), starving siblings.
|
|
356
|
+
// Each bucket holds its CID's candidates in lowest-taskId-first order (the
|
|
357
|
+
// TASKS_QUERY already orders ASC by id, so the page-merged list is also
|
|
358
|
+
// ASC). After collection we interleave the buckets round-robin.
|
|
359
|
+
const buckets = [];
|
|
289
360
|
for (const cid of cids) {
|
|
290
361
|
const manifestDigest = keccak256(toBytes(cid));
|
|
362
|
+
const bucket = [];
|
|
291
363
|
for (let page = 0; page < maxPages; page++) {
|
|
292
364
|
const data = await postGql(gqlUrl, fetchImpl, TASKS_QUERY, { manifestDigest, limit: pageSize, offset: page * pageSize });
|
|
293
365
|
const rows = data.tasks?.items ?? [];
|
|
@@ -366,14 +438,32 @@ export function createHttpDiscoveryAPI(opts) {
|
|
|
366
438
|
candidate.claimWindowEnd = claimWindowEnd;
|
|
367
439
|
if (maxClaims !== undefined)
|
|
368
440
|
candidate.maxClaims = maxClaims;
|
|
369
|
-
|
|
441
|
+
bucket.push(candidate);
|
|
370
442
|
}
|
|
371
443
|
const hasNextPage = data.tasks?.pageInfo?.hasNextPage ?? (rows.length === pageSize);
|
|
372
444
|
if (!hasNextPage)
|
|
373
445
|
break;
|
|
374
446
|
}
|
|
447
|
+
// Each bucket is already ASC by taskId (the GraphQL TASKS_QUERY orders
|
|
448
|
+
// by id ASC and pages are appended in page order), but sort defensively
|
|
449
|
+
// so the round-robin always pulls the lowest unclaimed id from each CID
|
|
450
|
+
// even if upstream ordering ever changes.
|
|
451
|
+
bucket.sort((a, b) => Number(BigInt(a.taskId) - BigInt(b.taskId)));
|
|
452
|
+
buckets.push(bucket);
|
|
453
|
+
}
|
|
454
|
+
// Round-robin interleave across CID buckets: pull index 0 from each CID
|
|
455
|
+
// first, then index 1 from each, etc. This guarantees that a backlog on
|
|
456
|
+
// one SolverNet cannot starve a sibling SolverNet that also has claimable
|
|
457
|
+
// work, because `discoverSubgraphRestorationTasks` in adapter.ts yields
|
|
458
|
+
// only one announcement per poll cycle.
|
|
459
|
+
const out = [];
|
|
460
|
+
const maxBucketLen = buckets.reduce((m, b) => Math.max(m, b.length), 0);
|
|
461
|
+
for (let i = 0; i < maxBucketLen; i++) {
|
|
462
|
+
for (const bucket of buckets) {
|
|
463
|
+
if (i < bucket.length)
|
|
464
|
+
out.push(bucket[i]);
|
|
465
|
+
}
|
|
375
466
|
}
|
|
376
|
-
out.sort((a, b) => Number(BigInt(a.taskId) - BigInt(b.taskId)));
|
|
377
467
|
return out;
|
|
378
468
|
}
|
|
379
469
|
// ── listLaunchedSolverNets ────────────────────────────────────────────────
|
|
@@ -425,6 +515,54 @@ export function createHttpDiscoveryAPI(opts) {
|
|
|
425
515
|
: '0x'),
|
|
426
516
|
};
|
|
427
517
|
}
|
|
518
|
+
// ── getSolverNetOperatorCount ─────────────────────────────────────────────
|
|
519
|
+
async function getSolverNetOperatorCount(manifestCid) {
|
|
520
|
+
await ensureReady();
|
|
521
|
+
// The indexer keys tasks by `manifestDigest = keccak256(toBytes(cid))`,
|
|
522
|
+
// not by the cid string. Compute the digest so the task filter matches.
|
|
523
|
+
const manifestDigest = manifestDigestForCid(manifestCid).toLowerCase();
|
|
524
|
+
// Leg 1: page every task id for this SolverNet. Single-chain query, so all
|
|
525
|
+
// rows share a chainId — captured for the leg-2 attempt filter. Capped at
|
|
526
|
+
// MAX_OPERATOR_COUNT_TASK_PAGES so the dashboard's recurring poll cannot
|
|
527
|
+
// trigger an unbounded scan.
|
|
528
|
+
const taskIds = [];
|
|
529
|
+
let chainId;
|
|
530
|
+
let taskCursor = null;
|
|
531
|
+
for (let page = 0; page < MAX_OPERATOR_COUNT_TASK_PAGES; page++) {
|
|
532
|
+
const data = await postGql(gqlUrl, fetchImpl, OPERATOR_COUNT_TASKS_QUERY, { manifestDigest, limit: ATTEMPTS_PAGE_LIMIT, after: taskCursor });
|
|
533
|
+
const items = data.tasks?.items ?? [];
|
|
534
|
+
for (const row of items) {
|
|
535
|
+
taskIds.push(row.id);
|
|
536
|
+
if (chainId === undefined)
|
|
537
|
+
chainId = row.chainId;
|
|
538
|
+
}
|
|
539
|
+
const pageInfo = data.tasks?.pageInfo;
|
|
540
|
+
if (!pageInfo?.hasNextPage || !pageInfo.endCursor)
|
|
541
|
+
break;
|
|
542
|
+
taskCursor = pageInfo.endCursor;
|
|
543
|
+
}
|
|
544
|
+
// No tasks → no attempts → no participating operators.
|
|
545
|
+
if (taskIds.length === 0 || chainId === undefined)
|
|
546
|
+
return 0;
|
|
547
|
+
// Leg 2: page every attempt for those task ids, collecting distinct
|
|
548
|
+
// operators. Batched over the id set via the `_in` operator (Ponder caps
|
|
549
|
+
// plural-query limit at 1000, hence ATTEMPTS_PAGE_LIMIT paging).
|
|
550
|
+
const operators = new Set();
|
|
551
|
+
let attemptCursor = null;
|
|
552
|
+
for (;;) {
|
|
553
|
+
const data = await postGql(gqlUrl, fetchImpl, OPERATOR_COUNT_ATTEMPTS_QUERY, { taskIds, chainId, limit: ATTEMPTS_PAGE_LIMIT, after: attemptCursor });
|
|
554
|
+
for (const row of data.attempts?.items ?? []) {
|
|
555
|
+
if (typeof row.operator === 'string' && row.operator.length > 0) {
|
|
556
|
+
operators.add(row.operator.toLowerCase());
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
const pageInfo = data.attempts?.pageInfo;
|
|
560
|
+
if (!pageInfo?.hasNextPage || !pageInfo.endCursor)
|
|
561
|
+
break;
|
|
562
|
+
attemptCursor = pageInfo.endCursor;
|
|
563
|
+
}
|
|
564
|
+
return operators.size;
|
|
565
|
+
}
|
|
428
566
|
// ── queryEnvelopes ────────────────────────────────────────────────────────
|
|
429
567
|
async function queryEnvelopes(query) {
|
|
430
568
|
await ensureReady();
|
|
@@ -538,6 +676,7 @@ export function createHttpDiscoveryAPI(opts) {
|
|
|
538
676
|
findClaimableTasks,
|
|
539
677
|
listLaunchedSolverNets,
|
|
540
678
|
getLifecycleStatus,
|
|
679
|
+
getSolverNetOperatorCount,
|
|
541
680
|
queryEnvelopes,
|
|
542
681
|
listPluginPublications,
|
|
543
682
|
getPluginScores,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/discovery/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/discovery/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,11 @@
|
|
|
16
16
|
* from IdentityRegistry (key prefix `solvernet-manifest:`) and fold via the
|
|
17
17
|
* existing `resolveMostRecentWins` helper.
|
|
18
18
|
*
|
|
19
|
+
* - `listPluginPublications` / `listBuilderArtifacts` read `MetadataSet` events
|
|
20
|
+
* (key prefix `plugin:`), decode the on-chain PLUGIN_PAYLOAD_TUPLE /
|
|
21
|
+
* REVOCATION_PAYLOAD_TUPLE, and fold most-recent-wins so the operator app's
|
|
22
|
+
* /build registry panels keep rendering during an indexer outage (gh#290).
|
|
23
|
+
*
|
|
19
24
|
* - `queryEnvelopes` delegates to the existing `runOnchainCorpusQuery`.
|
|
20
25
|
*
|
|
21
26
|
* - `cursorCache` is an optional injection point: when provided, the start
|