@jinn-network/client 0.1.6 → 0.1.7-canary.08ebd916
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/README.md +67 -1
- 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 -2
- package/dist/adapters/mech/adapter.js +269 -62
- 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 +6 -2
- package/dist/adapters/mech/safe.js +32 -11
- package/dist/adapters/mech/safe.js.map +1 -1
- package/dist/adapters/mech/types.d.ts +6 -1
- package/dist/adapters/mech/types.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/agent/operator-claude.js +8 -0
- package/dist/agent/operator-claude.js.map +1 -1
- package/dist/api/activity-events-endpoint.d.ts +14 -0
- package/dist/api/activity-events-endpoint.js +59 -0
- package/dist/api/activity-events-endpoint.js.map +1 -0
- 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.d.ts +1 -2
- package/dist/api/bootstrap-endpoint.js +85 -18
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- package/dist/api/codex-doctor-endpoint.d.ts +90 -0
- package/dist/api/codex-doctor-endpoint.js +296 -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 +37 -0
- package/dist/api/gather-status.js +572 -19
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/hermes-doctor-endpoint.d.ts +128 -3
- package/dist/api/hermes-doctor-endpoint.js +265 -22
- package/dist/api/hermes-doctor-endpoint.js.map +1 -1
- package/dist/api/launcher-status.d.ts +25 -17
- package/dist/api/launcher-status.js +13 -11
- package/dist/api/launcher-status.js.map +1 -1
- package/dist/api/launcher-tasks.d.ts +1 -1
- package/dist/api/launcher-tasks.js +12 -8
- package/dist/api/launcher-tasks.js.map +1 -1
- package/dist/api/operator-artifacts-endpoint.js +73 -6
- package/dist/api/operator-artifacts-endpoint.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 +95 -2
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +16 -0
- package/dist/api/setup-endpoints.js +89 -135
- 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 +99 -60
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +168 -2
- package/dist/api/status-build.js +116 -27
- package/dist/api/status-build.js.map +1 -1
- package/dist/api/status-harness-rollup.d.ts +35 -0
- package/dist/api/status-harness-rollup.js +45 -0
- package/dist/api/status-harness-rollup.js.map +1 -0
- 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/captures/live-publisher.js +24 -4
- package/dist/captures/live-publisher.js.map +1 -1
- package/dist/captures/publish.d.ts +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 +101 -15
- package/dist/cli/commands/solver-nets.js.map +1 -1
- package/dist/cli/commands/solver-plugins-block.d.ts +33 -0
- package/dist/cli/commands/solver-plugins-block.js +118 -0
- package/dist/cli/commands/solver-plugins-block.js.map +1 -0
- package/dist/cli/commands/solver-plugins-feedback.d.ts +72 -0
- package/dist/cli/commands/solver-plugins-feedback.js +262 -0
- package/dist/cli/commands/solver-plugins-feedback.js.map +1 -0
- package/dist/cli/commands/solver-plugins-read.d.ts +54 -0
- package/dist/cli/commands/solver-plugins-read.js +259 -0
- package/dist/cli/commands/solver-plugins-read.js.map +1 -0
- package/dist/cli/commands/solver-plugins.d.ts +35 -0
- package/dist/cli/commands/solver-plugins.js +399 -2
- package/dist/cli/commands/solver-plugins.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 +101 -11
- 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 +10 -1
- package/dist/cli/task-native-readiness.js +30 -6
- package/dist/cli/task-native-readiness.js.map +1 -1
- package/dist/config.d.ts +273 -235
- package/dist/config.js +305 -114
- 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 +22 -0
- package/dist/daemon/daemon.js +156 -23
- 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/gate-logger.d.ts +9 -0
- package/dist/daemon/gate-logger.js +2 -0
- package/dist/daemon/gate-logger.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/readiness-gate.d.ts +1 -4
- package/dist/daemon/readiness-gate.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/daemon/spend-cap-gate.d.ts +40 -0
- package/dist/daemon/spend-cap-gate.js +46 -0
- package/dist/daemon/spend-cap-gate.js.map +1 -0
- package/dist/dashboard/assets/index-C4huIsUW.css +32 -0
- package/dist/dashboard/assets/index-DkTglWXU.js +345 -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 +216 -3
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.d.ts +5 -0
- package/dist/discovery/onchain.js +418 -15
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +75 -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 +20 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap.d.ts +100 -4
- package/dist/earning/bootstrap.js +221 -74
- 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 +37 -11
- 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 +21 -6
- package/dist/earning/viem-clients.d.ts +11 -4
- package/dist/earning/viem-clients.js +14 -5
- package/dist/earning/viem-clients.js.map +1 -1
- package/dist/erc8004/identity.d.ts +19 -3
- package/dist/erc8004/identity.js +21 -6
- package/dist/erc8004/identity.js.map +1 -1
- package/dist/erc8004/index.d.ts +1 -1
- package/dist/erc8004/index.js.map +1 -1
- 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/events/types.d.ts +2 -2
- 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 +78 -0
- package/dist/harnesses/engine/engine.js +153 -11
- 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/hermes-agent/prompt.d.ts +6 -6
- package/dist/harnesses/impls/hermes-agent/prompt.js +6 -6
- 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/adapters/codex-code.d.ts +9 -0
- package/dist/harnesses/impls/learner/adapters/codex-code.js +30 -8
- package/dist/harnesses/impls/learner/adapters/codex-code.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/harvest.d.ts +1 -1
- package/dist/harnesses/impls/learner/harvest.js +23 -5
- package/dist/harnesses/impls/learner/harvest.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/restoration-patch.d.ts +2 -2
- package/dist/harnesses/impls/learner/restoration-patch.js +25 -6
- package/dist/harnesses/impls/learner/restoration-patch.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 +88 -4
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +143 -22
- 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.d.ts +7 -0
- package/dist/harnesses/readiness-registry.js +18 -1
- package/dist/harnesses/readiness-registry.js.map +1 -1
- package/dist/main.js +419 -111
- package/dist/main.js.map +1 -1
- package/dist/observability/emit-event.d.ts +3 -2
- package/dist/observability/emit-event.js +22 -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/preflight/rpc-network.d.ts +40 -0
- package/dist/preflight/rpc-network.js +67 -1
- package/dist/preflight/rpc-network.js.map +1 -1
- 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/rpc/transport.d.ts +109 -0
- package/dist/rpc/transport.js +220 -0
- package/dist/rpc/transport.js.map +1 -0
- package/dist/scripts/donation-consumption-acceptance.js +7 -28
- package/dist/scripts/donation-consumption-acceptance.js.map +1 -1
- 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.d.ts +1 -2
- package/dist/solver-nets/prediction-operator-ux.js +90 -47
- package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
- package/dist/solver-nets/registry.d.ts +20 -1
- package/dist/solver-nets/registry.js +38 -25
- 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-pool.d.ts +9 -2
- package/dist/solver-types/_swe-rebench-v2-pool.js +15 -20
- package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -1
- 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 +94 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +305 -39
- 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 +57 -20
- package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2.d.ts +18 -2
- package/dist/solver-types/swe-rebench-v2.js +310 -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.d.ts +4 -0
- package/dist/solvernets/launched-record-dispatcher.js +44 -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/spend/credential.d.ts +8 -0
- package/dist/spend/credential.js +30 -0
- package/dist/spend/credential.js.map +1 -0
- package/dist/spend/daemon-config.d.ts +13 -0
- package/dist/spend/daemon-config.js +24 -0
- package/dist/spend/daemon-config.js.map +1 -0
- package/dist/spend/pricing.d.ts +16 -0
- package/dist/spend/pricing.js +26 -0
- package/dist/spend/pricing.js.map +1 -0
- package/dist/spend/record.d.ts +13 -0
- package/dist/spend/record.js +30 -0
- package/dist/spend/record.js.map +1 -0
- package/dist/spend/usage.d.ts +27 -0
- package/dist/spend/usage.js +113 -0
- package/dist/spend/usage.js.map +1 -0
- package/dist/store/store.d.ts +61 -0
- package/dist/store/store.js +302 -7
- 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/trajectory/transcript-parsers/types.d.ts +8 -8
- package/dist/tx-retry.d.ts +166 -19
- package/dist/tx-retry.js +310 -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 +36 -13
- package/plugins/swe-rebench-v2-diffmin/README.md +10 -9
- package/plugins/swe-rebench-v2-diffmin/jinn.plugin.json +1 -1
- package/plugins/swe-rebench-v2-diffmin/skills/diffmin/SKILL.md +15 -10
- package/plugins/swe-rebench-v2-diffmin/skills/test-map/SKILL.md +10 -12
- package/plugins/swe-rebench-v2-runtime/.claude-plugin/plugin.json +1 -1
- package/plugins/swe-rebench-v2-runtime/.codex-plugin/plugin.json +3 -3
- package/plugins/swe-rebench-v2-runtime/README.md +6 -6
- package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +2 -3
- package/plugins/swe-rebench-v2-runtime/skills/task/SKILL.md +69 -0
- package/dist/dashboard/assets/index-DOlzFN8a.css +0 -32
- package/dist/dashboard/assets/index-NkZ7CTAT.js +0 -140
- package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +0 -29
- package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +0 -53
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { promisify } from 'node:util';
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
7
|
+
/**
|
|
8
|
+
* Tested @openai/codex CLI version window (#675). Below MIN or above MAX, the
|
|
9
|
+
* harness may break — codex 0.133.0 introduced a stdin contract change that
|
|
10
|
+
* silently broke the previous positional-prompt invocation. Bumping these
|
|
11
|
+
* bounds is a deliberate compatibility statement, made with a green run of
|
|
12
|
+
* `yarn test test/harnesses/impls/learner/codex-code-adapter.test.ts` against
|
|
13
|
+
* the new CLI version.
|
|
14
|
+
*
|
|
15
|
+
* The upper bound is compared on major+minor only: patch releases within the
|
|
16
|
+
* same minor as `MAX_TESTED_CODEX_VERSION` are treated as `'ok'`, since codex
|
|
17
|
+
* patch bumps almost never break the CLI contract and warning on every patch
|
|
18
|
+
* would produce alarm fatigue. Bump `MAX_TESTED_CODEX_VERSION` when codex
|
|
19
|
+
* bumps its minor or major; patch bumps stay `'ok'` automatically.
|
|
20
|
+
*/
|
|
21
|
+
const MIN_TESTED_CODEX_VERSION = '0.50.0';
|
|
22
|
+
const MAX_TESTED_CODEX_VERSION = '0.133.0';
|
|
23
|
+
/**
|
|
24
|
+
* Decodes a JWT's payload and returns its `exp` claim (epoch seconds), or
|
|
25
|
+
* `undefined` when the token is absent, malformed, or carries no `exp`.
|
|
26
|
+
* Defensive: never throws.
|
|
27
|
+
*
|
|
28
|
+
* Note: the JWT signature is intentionally NOT verified — this is not a
|
|
29
|
+
* security gap. The daemon only needs the `exp` claim for a liveness hint;
|
|
30
|
+
* Codex itself verifies signatures when the token is actually used.
|
|
31
|
+
*/
|
|
32
|
+
function jwtExpiry(token) {
|
|
33
|
+
if (typeof token !== 'string' || token.length === 0)
|
|
34
|
+
return undefined;
|
|
35
|
+
const parts = token.split('.');
|
|
36
|
+
if (parts.length !== 3)
|
|
37
|
+
return undefined;
|
|
38
|
+
try {
|
|
39
|
+
const payloadJson = Buffer.from(parts[1], 'base64url').toString('utf8');
|
|
40
|
+
const payload = JSON.parse(payloadJson);
|
|
41
|
+
return typeof payload.exp === 'number' ? payload.exp : undefined;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Classifies the credentials inside a parsed `auth.json`.
|
|
49
|
+
*
|
|
50
|
+
* - A non-empty `OPENAI_API_KEY` in the file is API-key mode — there is no
|
|
51
|
+
* expiry, so presence is acceptable (`'ok'`).
|
|
52
|
+
* - Otherwise it is OAuth (`codex login`) mode. The live-ness signal is the
|
|
53
|
+
* `refresh_token`: codex transparently mints fresh `id_token` /
|
|
54
|
+
* `access_token` from it on its next run, so a present refresh_token means
|
|
55
|
+
* the session is live (`'ok'`). The `id_token` is a ~1h OIDC token and the
|
|
56
|
+
* `access_token` only lasts days — both routinely lapse between codex runs
|
|
57
|
+
* on a perfectly healthy login, so gating on their `exp` false-fails the
|
|
58
|
+
* readiness check and deadlocks the claim loop: the probe shells
|
|
59
|
+
* `codex --version`, which never refreshes, so the daemon never claims,
|
|
60
|
+
* never runs codex, and the tokens never rotate (#464).
|
|
61
|
+
* - With no refresh_token, fall back to a best-effort bearer-token expiry
|
|
62
|
+
* check (`access_token` first, `id_token` last). An expired or
|
|
63
|
+
* un-checkable bearer token is `'expired'` — the safe direction for a
|
|
64
|
+
* claim gate: a logged-out operator with a leftover file must not read as
|
|
65
|
+
* live (#366). `codex logout` deletes `auth.json` outright, so a
|
|
66
|
+
* structurally-valid file that still carries a refresh_token is a live
|
|
67
|
+
* session.
|
|
68
|
+
*/
|
|
69
|
+
function classifyAuthFile(auth, nowMs) {
|
|
70
|
+
const fileApiKey = auth.OPENAI_API_KEY;
|
|
71
|
+
if (typeof fileApiKey === 'string' && fileApiKey.trim().length > 0) {
|
|
72
|
+
return 'ok';
|
|
73
|
+
}
|
|
74
|
+
const tokens = auth.tokens;
|
|
75
|
+
if (!tokens || typeof tokens !== 'object') {
|
|
76
|
+
// A file with neither an API key nor a tokens object carries no usable
|
|
77
|
+
// credential — treat as stale rather than live.
|
|
78
|
+
return 'expired';
|
|
79
|
+
}
|
|
80
|
+
// A present refresh_token is the live-ness signal: codex renews the
|
|
81
|
+
// short-lived id_token / access_token from it on demand (#464).
|
|
82
|
+
const refreshToken = tokens.refresh_token;
|
|
83
|
+
if (typeof refreshToken === 'string' && refreshToken.trim().length > 0) {
|
|
84
|
+
return 'ok';
|
|
85
|
+
}
|
|
86
|
+
// No refresh_token — best-effort bearer-token expiry check (access_token
|
|
87
|
+
// first, id_token only as a last resort).
|
|
88
|
+
const exp = jwtExpiry(tokens.access_token) ?? jwtExpiry(tokens.id_token);
|
|
89
|
+
if (exp === undefined) {
|
|
90
|
+
// Tokens present but not expiry-checkable — cannot prove liveness.
|
|
91
|
+
return 'expired';
|
|
92
|
+
}
|
|
93
|
+
return exp * 1000 > nowMs ? 'ok' : 'expired';
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Reads `auth.json` (from `CODEX_HOME` or `~/.codex`) and returns its raw
|
|
97
|
+
* contents, or `undefined` when the file does not exist. A read error other
|
|
98
|
+
* than "not found" (e.g. EACCES) is reported as an empty string so the caller
|
|
99
|
+
* classifies it as `expired` rather than `not_configured`.
|
|
100
|
+
*/
|
|
101
|
+
function readCodexAuthFile(config) {
|
|
102
|
+
if (config.readAuthFile)
|
|
103
|
+
return config.readAuthFile();
|
|
104
|
+
const env = config.env ?? process.env;
|
|
105
|
+
const codexHome = env['CODEX_HOME']?.trim();
|
|
106
|
+
const authPath = codexHome
|
|
107
|
+
? join(codexHome, 'auth.json')
|
|
108
|
+
: join(homedir(), '.codex', 'auth.json');
|
|
109
|
+
try {
|
|
110
|
+
return readFileSync(authPath, 'utf8');
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
const code = err?.code;
|
|
114
|
+
if (code === 'ENOENT')
|
|
115
|
+
return undefined;
|
|
116
|
+
// File exists but is unreadable — surface as a present-but-broken file so
|
|
117
|
+
// it classifies as `expired`, never `not_configured`.
|
|
118
|
+
return '';
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Classifies Codex credential state. Codex authenticates either via the
|
|
123
|
+
* `OPENAI_API_KEY` env var (no expiry) or via a `codex login` session
|
|
124
|
+
* persisted to `auth.json` under `CODEX_HOME` (falling back to `~/.codex`).
|
|
125
|
+
*
|
|
126
|
+
* Liveness, not mere existence: a malformed file or an expired OAuth session
|
|
127
|
+
* classifies as `'expired'`, distinct from `'not_configured'` (no file and no
|
|
128
|
+
* env key). Never throws — a corrupt file degrades to `'expired'`.
|
|
129
|
+
*/
|
|
130
|
+
function detectCodexAuthStatus(config) {
|
|
131
|
+
if (hasApiKey(config))
|
|
132
|
+
return 'ok';
|
|
133
|
+
const raw = readCodexAuthFile(config);
|
|
134
|
+
if (raw === undefined)
|
|
135
|
+
return 'not_configured';
|
|
136
|
+
let parsed;
|
|
137
|
+
try {
|
|
138
|
+
parsed = JSON.parse(raw);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// Malformed / truncated auth.json — a logged-out operator with a corrupt
|
|
142
|
+
// leftover file. Stale-class, never a false `ok` (#366).
|
|
143
|
+
return 'expired';
|
|
144
|
+
}
|
|
145
|
+
if (!parsed || typeof parsed !== 'object')
|
|
146
|
+
return 'expired';
|
|
147
|
+
const nowMs = config.now ?? Date.now();
|
|
148
|
+
return classifyAuthFile(parsed, nowMs);
|
|
149
|
+
}
|
|
150
|
+
function hasApiKey(config) {
|
|
151
|
+
const env = config.env ?? process.env;
|
|
152
|
+
return Boolean(env['OPENAI_API_KEY']?.trim());
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Extracts the first `MAJOR.MINOR.PATCH` semver-looking triple from `codex
|
|
156
|
+
* --version` output. Returns null when no such triple is present.
|
|
157
|
+
*/
|
|
158
|
+
function parseCodexVersion(stdout) {
|
|
159
|
+
const match = stdout.match(/\d+\.\d+\.\d+/);
|
|
160
|
+
return match ? match[0] : null;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Compares two `MAJOR.MINOR.PATCH` strings segment-by-segment as integers.
|
|
164
|
+
* Returns -1 if `a < b`, 0 if equal, 1 if `a > b`. Non-numeric / missing
|
|
165
|
+
* segments fall back to 0 so a partial input never throws.
|
|
166
|
+
*/
|
|
167
|
+
function compareSemver(a, b) {
|
|
168
|
+
const av = a.split('.').map((s) => Number.parseInt(s, 10) || 0);
|
|
169
|
+
const bv = b.split('.').map((s) => Number.parseInt(s, 10) || 0);
|
|
170
|
+
for (let i = 0; i < 3; i++) {
|
|
171
|
+
const ai = av[i] ?? 0;
|
|
172
|
+
const bi = bv[i] ?? 0;
|
|
173
|
+
if (ai < bi)
|
|
174
|
+
return -1;
|
|
175
|
+
if (ai > bi)
|
|
176
|
+
return 1;
|
|
177
|
+
}
|
|
178
|
+
return 0;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Returns true when `a`'s `MAJOR.MINOR` is strictly greater than `b`'s. Patch
|
|
182
|
+
* differences within the same minor are ignored, so 0.133.5 is NOT above
|
|
183
|
+
* 0.133.0, but 0.134.0 and 1.0.0 are. Used for the upper-bound check (#675)
|
|
184
|
+
* so codex patch releases don't trip the untested-version warning.
|
|
185
|
+
*/
|
|
186
|
+
function isAboveMinor(a, b) {
|
|
187
|
+
const av = a.split('.').map((s) => Number.parseInt(s, 10) || 0);
|
|
188
|
+
const bv = b.split('.').map((s) => Number.parseInt(s, 10) || 0);
|
|
189
|
+
const [aMajor, aMinor] = [av[0] ?? 0, av[1] ?? 0];
|
|
190
|
+
const [bMajor, bMinor] = [bv[0] ?? 0, bv[1] ?? 0];
|
|
191
|
+
if (aMajor !== bMajor)
|
|
192
|
+
return aMajor > bMajor;
|
|
193
|
+
return aMinor > bMinor;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Classifies a parsed semver against the tested range.
|
|
197
|
+
* - null → 'unknown'
|
|
198
|
+
* - below MIN (full semver compare) → 'untested'
|
|
199
|
+
* - above MAX on major+minor → 'untested' (patch bumps within the tested
|
|
200
|
+
* minor stay 'ok'; bump MAX_TESTED_CODEX_VERSION on minor/major bumps)
|
|
201
|
+
* - otherwise → 'ok'
|
|
202
|
+
*/
|
|
203
|
+
function classifyVersion(cliVersion) {
|
|
204
|
+
if (cliVersion === null)
|
|
205
|
+
return 'unknown';
|
|
206
|
+
if (compareSemver(cliVersion, MIN_TESTED_CODEX_VERSION) < 0
|
|
207
|
+
|| isAboveMinor(cliVersion, MAX_TESTED_CODEX_VERSION)) {
|
|
208
|
+
return 'untested';
|
|
209
|
+
}
|
|
210
|
+
return 'ok';
|
|
211
|
+
}
|
|
212
|
+
// Module-scoped so the warning fires once per process even though
|
|
213
|
+
// `probeCodexDoctor` is called every readiness tick.
|
|
214
|
+
let untestedVersionWarningEmitted = false;
|
|
215
|
+
/**
|
|
216
|
+
* Asynchronously runs `codex --version` and classifies install + auth state.
|
|
217
|
+
* Pure (no Hono dependency) so the harness layer can call it without pulling
|
|
218
|
+
* the API server in.
|
|
219
|
+
*
|
|
220
|
+
* Async (#778 follow-up): see file header — `execFile` failures (non-zero
|
|
221
|
+
* exit OR kill-by-timeout) throw with `{stdout, stderr, code, signal}`
|
|
222
|
+
* attached; we unwrap that into the same classification surface the old
|
|
223
|
+
* sync code produced.
|
|
224
|
+
*/
|
|
225
|
+
export async function probeCodexDoctor(config = {}) {
|
|
226
|
+
const codexBin = config.codexPath ?? 'codex';
|
|
227
|
+
// Defaults to 10s here (vs 30s on the sync path) because this fires on the
|
|
228
|
+
// readiness-registry refresh tick — a hung shell-out must not snowball into
|
|
229
|
+
// an outstanding 30s timer per tick.
|
|
230
|
+
const timeoutMs = config.codexDoctorTimeoutMs ?? 10_000;
|
|
231
|
+
let status = 0;
|
|
232
|
+
let signal = null;
|
|
233
|
+
let stdout = '';
|
|
234
|
+
let stderr = '';
|
|
235
|
+
let errorCode;
|
|
236
|
+
try {
|
|
237
|
+
const ok = await execFileAsync(codexBin, ['--version'], {
|
|
238
|
+
timeout: timeoutMs,
|
|
239
|
+
encoding: 'utf8',
|
|
240
|
+
});
|
|
241
|
+
stdout = ok.stdout;
|
|
242
|
+
stderr = ok.stderr;
|
|
243
|
+
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
const errno = err;
|
|
246
|
+
const codeIsString = typeof errno.code === 'string';
|
|
247
|
+
status = !codeIsString && typeof errno.code === 'number' ? errno.code : null;
|
|
248
|
+
errorCode = codeIsString ? errno.code : undefined;
|
|
249
|
+
signal = errno.signal ?? null;
|
|
250
|
+
stdout = typeof errno.stdout === 'string' ? errno.stdout : errno.stdout?.toString() ?? '';
|
|
251
|
+
stderr = typeof errno.stderr === 'string' ? errno.stderr : errno.stderr?.toString() ?? '';
|
|
252
|
+
}
|
|
253
|
+
// installed=true means we found the binary on disk. ENOENT is the only
|
|
254
|
+
// definitive not-installed signal. Other errors (EACCES = wrong
|
|
255
|
+
// permissions; ETIMEDOUT = ran but didn't finish in time) indicate the
|
|
256
|
+
// binary exists but couldn't be exercised cleanly — surface those as
|
|
257
|
+
// config-issue, not missing.
|
|
258
|
+
const notFound = errorCode === 'ENOENT';
|
|
259
|
+
const installed = !notFound && (status !== null
|
|
260
|
+
|| signal !== null
|
|
261
|
+
|| (errorCode != null && errorCode !== 'ENOENT'));
|
|
262
|
+
// Auth is only meaningful once the binary is present and runnable.
|
|
263
|
+
const runnable = installed && status === 0;
|
|
264
|
+
const authStatus = runnable
|
|
265
|
+
? detectCodexAuthStatus(config)
|
|
266
|
+
: 'not_configured';
|
|
267
|
+
// Version surfacing (#675). Parse only when we have a runnable binary;
|
|
268
|
+
// otherwise the stdout is meaningless.
|
|
269
|
+
const cliVersion = runnable ? parseCodexVersion(stdout) : null;
|
|
270
|
+
const versionStatus = runnable
|
|
271
|
+
? classifyVersion(cliVersion)
|
|
272
|
+
: 'unknown';
|
|
273
|
+
if (versionStatus === 'untested' && !untestedVersionWarningEmitted) {
|
|
274
|
+
untestedVersionWarningEmitted = true;
|
|
275
|
+
// eslint-disable-next-line no-console
|
|
276
|
+
console.warn(`codex CLI version ${cliVersion} is outside the tested range `
|
|
277
|
+
+ `${MIN_TESTED_CODEX_VERSION}–${MAX_TESTED_CODEX_VERSION}; the harness `
|
|
278
|
+
+ `may break — see issue #675`);
|
|
279
|
+
}
|
|
280
|
+
return {
|
|
281
|
+
installed,
|
|
282
|
+
authenticated: authStatus === 'ok',
|
|
283
|
+
authStatus,
|
|
284
|
+
cliVersion,
|
|
285
|
+
versionStatus,
|
|
286
|
+
exitCode: status,
|
|
287
|
+
stdout: stdout.slice(0, 4000),
|
|
288
|
+
stderr: stderr.slice(0, 4000),
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
export function addCodexDoctorRoutes(app, config = {}) {
|
|
292
|
+
app.get('/api/codex/doctor', async (c) => {
|
|
293
|
+
return c.json(await probeCodexDoctor(config));
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=codex-doctor-endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-doctor-endpoint.js","sourceRoot":"","sources":["../../src/api/codex-doctor-endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* GET /v1/discovery/plugin-publications?solverType&builderAgentId&includeRevoked
|
|
7
7
|
* GET /v1/discovery/builder-artifacts?builderAgentId&limit
|
|
8
8
|
* GET /v1/discovery/plugin-scores?cid&limit
|
|
9
|
+
* GET /v1/discovery/solvernet-operator-count?cid
|
|
9
10
|
*
|
|
10
11
|
* Used by the /build SPA route (hfmf) to render published plug-ins, the
|
|
11
12
|
* local operator's published plug-ins, and per-plug-in score history.
|
|
@@ -50,6 +50,32 @@ export function addDiscoveryRoutes(app, config) {
|
|
|
50
50
|
return c.json({ error: 'internal_error', detail: err.message }, 503);
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
|
+
// GET /v1/discovery/solvernet-operator-count?cid=<manifestCid>
|
|
54
|
+
//
|
|
55
|
+
// Returns the count of distinct operators with on-chain activity (claimed
|
|
56
|
+
// tasks) on the SolverNet identified by `cid`. Backs the operator-count
|
|
57
|
+
// surface on the launched-SolverNet dashboard (issue #351). See
|
|
58
|
+
// `DiscoveryAPI.getSolverNetOperatorCount` for why this counts
|
|
59
|
+
// *participating* operators rather than config-level "joins".
|
|
60
|
+
app.get('/v1/discovery/solvernet-operator-count', async (c) => {
|
|
61
|
+
const discovery = getDiscovery();
|
|
62
|
+
if (!discovery) {
|
|
63
|
+
return c.json({ error: 'subsystem_not_ready', message: 'DiscoveryAPI still initialising' }, 503);
|
|
64
|
+
}
|
|
65
|
+
const cid = c.req.query('cid');
|
|
66
|
+
if (!cid)
|
|
67
|
+
return c.json({ error: 'cid is required' }, 400);
|
|
68
|
+
try {
|
|
69
|
+
const operatorCount = await discovery.getSolverNetOperatorCount(cid);
|
|
70
|
+
return c.json({ manifestCid: cid, operatorCount });
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
if (err instanceof DiscoveryUnavailableError) {
|
|
74
|
+
return c.json({ error: 'discovery_unavailable' }, 503);
|
|
75
|
+
}
|
|
76
|
+
return c.json({ error: 'internal_error', detail: err.message }, 503);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
53
79
|
app.get('/v1/discovery/plugin-scores', async (c) => {
|
|
54
80
|
const discovery = getDiscovery();
|
|
55
81
|
if (!discovery) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery-endpoint.js","sourceRoot":"","sources":["../../src/api/discovery-endpoint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discovery-endpoint.js","sourceRoot":"","sources":["../../src/api/discovery-endpoint.ts"],"names":[],"mappings":"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"}
|
package/dist/api/fleet-build.js
CHANGED
|
@@ -72,8 +72,9 @@ export function assembleFleetV1(raw) {
|
|
|
72
72
|
},
|
|
73
73
|
staking: {
|
|
74
74
|
staked: isStakedLikeServiceStep(svc.step),
|
|
75
|
-
evicted: false,
|
|
75
|
+
evicted: raw.evictedByServiceIndex?.[di] ?? false,
|
|
76
76
|
sinceBlock: null,
|
|
77
|
+
inactivitySeconds: raw.inactivityByServiceIndex?.[di] ?? null,
|
|
77
78
|
},
|
|
78
79
|
activity: {
|
|
79
80
|
lastEventAt: per?.lastEventAt ?? null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-build.js","sourceRoot":"","sources":["../../src/api/fleet-build.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fleet-build.js","sourceRoot":"","sources":["../../src/api/fleet-build.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Store } from '../store/store.js';
|
|
5
5
|
import type { JinnConfig } from '../config.js';
|
|
6
|
+
import type { CredentialId } from '../spend/credential.js';
|
|
6
7
|
import { type GatheredStatusRaw, type StatusV1Response } from './status-build.js';
|
|
8
|
+
import type { HarnessReadinessSnapshot, JoinedHarnessSpec } from '../harnesses/readiness-registry.js';
|
|
9
|
+
/** Test-only: clear the first-seen-evicted tracker. Do not call from production code. */
|
|
10
|
+
export declare function __resetEvictionFirstSeenForTests(): void;
|
|
7
11
|
/**
|
|
8
12
|
* Drop any cached prediction operator status for `config`.
|
|
9
13
|
*
|
|
@@ -19,6 +23,25 @@ export declare function invalidatePredictionOperatorStatusCache(config: JinnConf
|
|
|
19
23
|
export interface StatusGatherConfig {
|
|
20
24
|
earningDir: string;
|
|
21
25
|
rpcUrl: string;
|
|
26
|
+
/**
|
|
27
|
+
* tJINN ERC-20 token address — resolved from the bundled JINN MVI L1
|
|
28
|
+
* deployment artifact in `main.ts` (single source of truth). Optional so
|
|
29
|
+
* test callers can omit it; gather-status falls back to the artifact-derived
|
|
30
|
+
* default when absent.
|
|
31
|
+
*/
|
|
32
|
+
tjinnTokenAddress?: string;
|
|
33
|
+
/** tJINN chain id — resolved from the same artifact as `tjinnTokenAddress`. */
|
|
34
|
+
tjinnChainId?: number;
|
|
35
|
+
/** JinnDistributor address used for real operator lifetime claimed totals. */
|
|
36
|
+
tjinnDistributorAddress?: string;
|
|
37
|
+
/**
|
|
38
|
+
* stOLAS L2 distributor address (`CHAIN_CONFIG.distributorAddress`). Used
|
|
39
|
+
* solely to mirror `main.ts`'s `evictionCheck` predicate (issue #651). The
|
|
40
|
+
* tJINN distributor on L1 is a different contract — do not substitute one
|
|
41
|
+
* for the other even though they happen to bundle together in our current
|
|
42
|
+
* testnet deployment.
|
|
43
|
+
*/
|
|
44
|
+
stOlasDistributorAddress?: string;
|
|
22
45
|
network: 'mainnet' | 'testnet';
|
|
23
46
|
pollIntervalMs: number;
|
|
24
47
|
masterEthDailyEstimateWei?: string;
|
|
@@ -35,6 +58,20 @@ export interface StatusGatherConfig {
|
|
|
35
58
|
/** Full config enables SolverNet/plugin/Harness diagnostics in /v1/status. */
|
|
36
59
|
config?: JinnConfig;
|
|
37
60
|
configPath?: string;
|
|
61
|
+
/** Per-credential daily caps; when present, /v1/status carries a `spend` block. */
|
|
62
|
+
spendCaps?: Record<CredentialId, number>;
|
|
63
|
+
/**
|
|
64
|
+
* Optional getter that returns the live HarnessReadinessRegistry snapshot
|
|
65
|
+
* + joinedHarnessesByCid map. Threaded by `server.ts` for the `/v1/status`
|
|
66
|
+
* handler so the response carries a `harness` rollup. Returning `null`
|
|
67
|
+
* means "registry not ready yet" — gather-status leaves `raw.harnessRollup`
|
|
68
|
+
* unset and the assembler defaults to ready. Mirrors the holder pattern
|
|
69
|
+
* already used for `harnessReadinessRegistry` in main.ts.
|
|
70
|
+
*/
|
|
71
|
+
harnessReadiness?: () => {
|
|
72
|
+
snapshot: HarnessReadinessSnapshot;
|
|
73
|
+
joinedHarnessesByCid: Record<string, JoinedHarnessSpec>;
|
|
74
|
+
} | null;
|
|
38
75
|
}
|
|
39
76
|
/** Collect status inputs without assembling the legacy mega-response. */
|
|
40
77
|
export declare function gatherGatheredStatusRaw(store: Store, status: StatusGatherConfig | undefined): Promise<GatheredStatusRaw>;
|