@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
|
@@ -145,6 +145,36 @@ export interface DiscoveryAPI {
|
|
|
145
145
|
* `undefined` if no lifecycle events have been recorded for it yet.
|
|
146
146
|
*/
|
|
147
147
|
getLifecycleStatus(manifestCid: string): Promise<SolverNetLifecycleStatus | undefined>;
|
|
148
|
+
/**
|
|
149
|
+
* Returns the number of distinct operators that have *ever* claimed a task
|
|
150
|
+
* on the SolverNet identified by `manifestCid` — i.e. the count of unique
|
|
151
|
+
* `attempt.operator` Safe addresses across every task whose
|
|
152
|
+
* `manifestDigest === keccak256(manifestCid)`, **including tasks that are
|
|
153
|
+
* now finalized or refunded**.
|
|
154
|
+
*
|
|
155
|
+
* This is an *ever-participated* signal, not a "currently active" one. The
|
|
156
|
+
* count never filters on task lifecycle state: the on-chain backing reads
|
|
157
|
+
* raw `TaskAttemptCreated` logs, which carry no finalized/refunded flag, so
|
|
158
|
+
* the only count consistent across all three backings (HTTP / embedded /
|
|
159
|
+
* on-chain) is the all-time distinct-operator total. Treat it as "operators
|
|
160
|
+
* who have participated at least once", not "operators participating today".
|
|
161
|
+
*
|
|
162
|
+
* It is the protocol-observable participation signal: a "join" in the
|
|
163
|
+
* operator app is purely a local config write (`joinedSolverNets[<cid>]`,
|
|
164
|
+
* see `spec/2026-05-05-solvernet-creation-and-launch.md` §12) and leaves no
|
|
165
|
+
* on-chain footprint. An operator only becomes visible to the network once
|
|
166
|
+
* they claim a task — `TaskAttemptCreated` is the first on-chain event tied
|
|
167
|
+
* to (operator, SolverNet). This method therefore counts *participating*
|
|
168
|
+
* operators (operators who have claimed at least one task), which is the
|
|
169
|
+
* only honest cross-operator count derivable from the indexer / chain.
|
|
170
|
+
*
|
|
171
|
+
* Task pagination is hard-capped (`MAX_OPERATOR_COUNT_TASK_PAGES` in each
|
|
172
|
+
* backing) so a pathological task volume cannot turn this into an unbounded
|
|
173
|
+
* scan; on a SolverNet beyond the cap the count is a lower bound.
|
|
174
|
+
*
|
|
175
|
+
* Returns `0` when no operator has attempted a task on the SolverNet yet.
|
|
176
|
+
*/
|
|
177
|
+
getSolverNetOperatorCount(manifestCid: string): Promise<number>;
|
|
148
178
|
/**
|
|
149
179
|
* Returns envelope refs matching the query. Refs only — byte retrieval is
|
|
150
180
|
* done by the corpus library on demand.
|
|
@@ -191,6 +221,36 @@ export interface DiscoveryAPI {
|
|
|
191
221
|
builderAgentId: string;
|
|
192
222
|
limit?: number;
|
|
193
223
|
}): Promise<PublishedArtifact[]>;
|
|
224
|
+
/**
|
|
225
|
+
* Returns network-truth pass counts per swe-rebench-v2 instance_id for a
|
|
226
|
+
* given SolverNet manifest. Keyed by `instance_id`; the value is the count
|
|
227
|
+
* of distinct (requestId, chainId) verdictEnvelopeMeta rows where
|
|
228
|
+
* `solverNetManifestCid` equals `args.manifestCid`, `actualPassed = true`,
|
|
229
|
+
* `solverType` starts with `swe-rebench-v2`, and `instanceId` is non-empty.
|
|
230
|
+
*
|
|
231
|
+
* Per-SolverNet scoping (#669 Finding 2): the indexer enrichment pass reads
|
|
232
|
+
* the task body's top-level `solverNetManifestCid` (task.v1 schema; see
|
|
233
|
+
* `client/src/types/task-document.ts`) on the same IPFS round-trip that
|
|
234
|
+
* resolves `instance_id`, and writes it to `verdictEnvelopeMeta`. The
|
|
235
|
+
* GraphQL filter pins to that column, so multi-SolverNet operators with
|
|
236
|
+
* overlapping instance_id pools do NOT cross-tenant over-count — successes
|
|
237
|
+
* on SolverNet-B can no longer prematurely saturate SolverNet-A's launcher.
|
|
238
|
+
*
|
|
239
|
+
* Backed by `verdictEnvelopeMeta` in the indexer. Throws
|
|
240
|
+
* `DiscoveryUnavailableError` when the backing is unreachable — callers
|
|
241
|
+
* MUST NOT silently fall through to local-only counts (#669 acceptance
|
|
242
|
+
* criterion: behave as if the on-chain count is the truth). The
|
|
243
|
+
* `withFallback` wrapper enforces this by never routing
|
|
244
|
+
* `getInstanceSuccessCounts` to the floor.
|
|
245
|
+
*
|
|
246
|
+
* The on-chain floor implementation (`OnchainDiscoveryAPI`) returns an
|
|
247
|
+
* empty Map, since the underlying data comes from IPFS enrichment that the
|
|
248
|
+
* floor cannot reconstruct. The floor's empty Map is therefore not the
|
|
249
|
+
* runtime path — `withFallback` propagates the error instead.
|
|
250
|
+
*/
|
|
251
|
+
getInstanceSuccessCounts(args: {
|
|
252
|
+
manifestCid: string;
|
|
253
|
+
}): Promise<Map<string, number>>;
|
|
194
254
|
}
|
|
195
255
|
/**
|
|
196
256
|
* Thrown by a DiscoveryAPI implementation when it is temporarily unable to
|
|
@@ -200,7 +260,21 @@ export interface DiscoveryAPI {
|
|
|
200
260
|
* The `withFallback` wrapper catches this class (plus network-shaped errors)
|
|
201
261
|
* and routes to the floor implementation for the duration of the outage.
|
|
202
262
|
*/
|
|
263
|
+
/**
|
|
264
|
+
* Machine-readable reason a discovery read failed. `rpc_rate_limited` is the
|
|
265
|
+
* one branch callers act on distinctly: it means the configured RPC endpoint
|
|
266
|
+
* returned a 429 (or otherwise rate-limited the daemon), which — on the shared
|
|
267
|
+
* default RPC — is an operator-actionable condition ("add your own key"), not
|
|
268
|
+
* an indexer outage. Any other transport failure is left untyped (`undefined`).
|
|
269
|
+
*/
|
|
270
|
+
export type DiscoveryUnavailableCode = 'rpc_rate_limited';
|
|
203
271
|
export declare class DiscoveryUnavailableError extends Error {
|
|
204
272
|
readonly cause?: unknown;
|
|
205
|
-
|
|
273
|
+
/**
|
|
274
|
+
* Typed reason, when one can be classified — currently only
|
|
275
|
+
* `rpc_rate_limited`, surfaced end-to-end so the operator UI can render a
|
|
276
|
+
* distinct "your RPC is throttled" message instead of a generic failure.
|
|
277
|
+
*/
|
|
278
|
+
readonly code?: DiscoveryUnavailableCode;
|
|
279
|
+
constructor(message: string, cause?: unknown, code?: DiscoveryUnavailableCode);
|
|
206
280
|
}
|
package/dist/discovery/types.js
CHANGED
|
@@ -9,21 +9,19 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Spec: spec/2026-05-11-discovery-api-and-shared-indexer.md §5.
|
|
11
11
|
*/
|
|
12
|
-
// ── Error ────────────────────────────────────────────────────────────────────
|
|
13
|
-
/**
|
|
14
|
-
* Thrown by a DiscoveryAPI implementation when it is temporarily unable to
|
|
15
|
-
* serve a request — e.g. indexer unreachable, embedded Ponder still syncing,
|
|
16
|
-
* hosted subgraph 5xx.
|
|
17
|
-
*
|
|
18
|
-
* The `withFallback` wrapper catches this class (plus network-shaped errors)
|
|
19
|
-
* and routes to the floor implementation for the duration of the outage.
|
|
20
|
-
*/
|
|
21
12
|
export class DiscoveryUnavailableError extends Error {
|
|
22
13
|
cause;
|
|
23
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Typed reason, when one can be classified — currently only
|
|
16
|
+
* `rpc_rate_limited`, surfaced end-to-end so the operator UI can render a
|
|
17
|
+
* distinct "your RPC is throttled" message instead of a generic failure.
|
|
18
|
+
*/
|
|
19
|
+
code;
|
|
20
|
+
constructor(message, cause, code) {
|
|
24
21
|
super(message);
|
|
25
22
|
this.name = 'DiscoveryUnavailableError';
|
|
26
23
|
this.cause = cause;
|
|
24
|
+
this.code = code;
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
27
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/discovery/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiTH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAChC,KAAK,CAAW;IAClC;;;;OAIG;IACM,IAAI,CAA4B;IAEzC,YAAY,OAAe,EAAE,KAAe,EAAE,IAA+B;QAC3E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
* operators can see why their daemon is running slowly. After the window
|
|
13
13
|
* elapses the wrapper probes the primary again on the next call.
|
|
14
14
|
*
|
|
15
|
+
* NOTE (2026-05-23): this wrapper is no longer engaged by default. The
|
|
16
|
+
* factory installs it only when `discovery.fallbackToOnchain === true` (an
|
|
17
|
+
* explicit opt-in). Without the opt-in, indexer outages propagate as
|
|
18
|
+
* DiscoveryUnavailableError so the operator-app surfaces them rather than the
|
|
19
|
+
* daemon silently storming shared RPC. The wrapper itself is unchanged for
|
|
20
|
+
* operators who still want it.
|
|
21
|
+
*
|
|
15
22
|
* Spec: spec/2026-05-11-discovery-api-and-shared-indexer.md §9.3.
|
|
16
23
|
*/
|
|
17
24
|
import type { DiscoveryAPI } from './types.js';
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
* operators can see why their daemon is running slowly. After the window
|
|
13
13
|
* elapses the wrapper probes the primary again on the next call.
|
|
14
14
|
*
|
|
15
|
+
* NOTE (2026-05-23): this wrapper is no longer engaged by default. The
|
|
16
|
+
* factory installs it only when `discovery.fallbackToOnchain === true` (an
|
|
17
|
+
* explicit opt-in). Without the opt-in, indexer outages propagate as
|
|
18
|
+
* DiscoveryUnavailableError so the operator-app surfaces them rather than the
|
|
19
|
+
* daemon silently storming shared RPC. The wrapper itself is unchanged for
|
|
20
|
+
* operators who still want it.
|
|
21
|
+
*
|
|
15
22
|
* Spec: spec/2026-05-11-discovery-api-and-shared-indexer.md §9.3.
|
|
16
23
|
*/
|
|
17
24
|
import { DiscoveryUnavailableError } from './types.js';
|
|
@@ -145,6 +152,9 @@ export function withFallback(primary, floor, opts = {}) {
|
|
|
145
152
|
getLifecycleStatus(manifestCid) {
|
|
146
153
|
return dispatch(() => primary.getLifecycleStatus(manifestCid), () => floor.getLifecycleStatus(manifestCid));
|
|
147
154
|
},
|
|
155
|
+
getSolverNetOperatorCount(manifestCid) {
|
|
156
|
+
return dispatch(() => primary.getSolverNetOperatorCount(manifestCid), () => floor.getSolverNetOperatorCount(manifestCid));
|
|
157
|
+
},
|
|
148
158
|
queryEnvelopes(query) {
|
|
149
159
|
return dispatch(() => primary.queryEnvelopes(query), () => floor.queryEnvelopes(query));
|
|
150
160
|
},
|
|
@@ -157,6 +167,16 @@ export function withFallback(primary, floor, opts = {}) {
|
|
|
157
167
|
listBuilderArtifacts(args) {
|
|
158
168
|
return dispatch(() => primary.listBuilderArtifacts(args), () => floor.listBuilderArtifacts(args));
|
|
159
169
|
},
|
|
170
|
+
getInstanceSuccessCounts(args) {
|
|
171
|
+
// Never fall through to the floor for this method — an empty Map from
|
|
172
|
+
// the floor is indistinguishable from "all instances have 0 successes",
|
|
173
|
+
// which is the under-count bug this method was introduced to fix (#669).
|
|
174
|
+
// If the primary is degraded, propagate the error so the launcher aborts
|
|
175
|
+
// its tick rather than silently posting against local-only counters.
|
|
176
|
+
// The DiscoveryAPI.getInstanceSuccessCounts JSDoc encodes this contract
|
|
177
|
+
// ("callers MUST NOT silently fall through to local-only counts").
|
|
178
|
+
return primary.getInstanceSuccessCounts(args);
|
|
179
|
+
},
|
|
160
180
|
};
|
|
161
181
|
}
|
|
162
182
|
//# sourceMappingURL=with-fallback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-fallback.js","sourceRoot":"","sources":["../../src/discovery/with-fallback.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"with-fallback.js","sourceRoot":"","sources":["../../src/discovery/with-fallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,78 @@
|
|
|
4
4
|
* Phase 1 (master): generate mnemonic → fund master EOA
|
|
5
5
|
* Phase 2 (per-service): derive agent → stake → deploy mech
|
|
6
6
|
*/
|
|
7
|
-
import type { FleetState, FleetBootstrapResult } from './types.js';
|
|
7
|
+
import type { FleetState, FleetBootstrapResult, StakingMode } from './types.js';
|
|
8
8
|
import { requestTestnetFunding } from './faucet.js';
|
|
9
|
+
import { type JinnOnchainNetwork } from './viem-clients.js';
|
|
10
|
+
/**
|
|
11
|
+
* 2× cold-start headroom for master ETH target on a fresh bootstrap.
|
|
12
|
+
*
|
|
13
|
+
* Gas accounting for a single standard-mode service on first run:
|
|
14
|
+
* ~1.3M gas for the Safe deploy + stake + mech (at 2 gwei ≈ 0.0026 ETH)
|
|
15
|
+
* + 0.002 ETH Safe seed (sent to the Safe so it can pay mech fees)
|
|
16
|
+
* ≈ 0.0046 ETH minimum; 2× gives ≈ 0.009–0.010 ETH — the bootstrap
|
|
17
|
+
* `minEoaGasEth` default.
|
|
18
|
+
*
|
|
19
|
+
* Used by {@link stage1MinMasterEth} to size the Stage 1 master gas budget.
|
|
20
|
+
*
|
|
21
|
+
* Single source of truth: imported by funding-plan.ts.
|
|
22
|
+
*/
|
|
23
|
+
export declare const STANDARD_MASTER_BOOTSTRAP_MULTIPLIER = 2n;
|
|
24
|
+
/**
|
|
25
|
+
* Self-bond mode needs much more ETH per service than standard mode because
|
|
26
|
+
* the master funds the agent which then pays for: Safe deploy, 5 service
|
|
27
|
+
* registry txs (create, activate, register, deploy, stake), and mech deploy.
|
|
28
|
+
* Roughly 15 txs at varying gas costs. 0.03 ETH per service is a safe
|
|
29
|
+
* estimate. Single source of truth: imported by funding-plan.ts.
|
|
30
|
+
*/
|
|
31
|
+
export declare const SELF_BOND_ETH_PER_SERVICE = 30000000000000000n;
|
|
32
|
+
/**
|
|
33
|
+
* Single source of truth for the master-ETH cold-start funding gate.
|
|
34
|
+
*
|
|
35
|
+
* Both the mutating bootstrapper ({@link FleetBootstrapper.ensureStage1And2})
|
|
36
|
+
* and the read-only funding plan (`planFleetFunding` in funding-plan.ts) route
|
|
37
|
+
* through this helper, so a migration-wiped fleet computes an identical
|
|
38
|
+
* required-ETH gate in both views. Re-implementing the gate inline at either
|
|
39
|
+
* call site is the u34i cross-module invariant-drift hazard — do not do it.
|
|
40
|
+
*
|
|
41
|
+
* Standard-mode gate has three branches:
|
|
42
|
+
* 1. `standardFleetAlreadyComplete` — fleet already has its full target of
|
|
43
|
+
* operational services and no deprecated-setup migration is pending →
|
|
44
|
+
* `0n` (nothing to fund).
|
|
45
|
+
* 2. `preStage1` — no fleet identity yet (`fleet_stage === 'none'` or no
|
|
46
|
+
* fleet state at all) → the Stage 1 gate from {@link stage1MinMasterEth},
|
|
47
|
+
* which covers the master → agent transfer plus the master's own gas
|
|
48
|
+
* reserve. See jinn-mono-u34i.
|
|
49
|
+
* 3. otherwise — the Stage 2 master gas budget: `minEoaGasEth` (stake gas)
|
|
50
|
+
* plus a per-extra-service top-up transfer for services 2..N.
|
|
51
|
+
*
|
|
52
|
+
* Self-bond mode is a flat `SELF_BOND_ETH_PER_SERVICE × targetServices`
|
|
53
|
+
* regardless of stage.
|
|
54
|
+
*
|
|
55
|
+
* @param services Persisted service states
|
|
56
|
+
* @param minEoaGasEth Configured minimum EOA gas target (wei)
|
|
57
|
+
* @param pendingSetupMigration True when a deprecated testnet setup is
|
|
58
|
+
* detected — suppresses the `standardFleetAlreadyComplete` short-circuit so a
|
|
59
|
+
* migration-wiped fleet is correctly treated as needing funding. Both call
|
|
60
|
+
* sites MUST pass this so the bootstrapper gate and the funding-plan view
|
|
61
|
+
* agree for migration-wiped fleets.
|
|
62
|
+
* @param targetServices How many services the fleet is aiming for
|
|
63
|
+
* @param stakingMode `'standard'` (default) or `'self-bond'`
|
|
64
|
+
* @param preStage1 True when fleet identity is not yet provisioned —
|
|
65
|
+
* selects the Stage 1 gate. The bootstrapper passes `false` here because it
|
|
66
|
+
* only computes this gate *after* `ensureStage1` succeeds.
|
|
67
|
+
*/
|
|
68
|
+
export declare function computeRequiredMasterEth({ services, minEoaGasEth, pendingSetupMigration, targetServices, stakingMode, preStage1, }: {
|
|
69
|
+
services: Array<{
|
|
70
|
+
service_id?: number | null | undefined;
|
|
71
|
+
step?: string;
|
|
72
|
+
}>;
|
|
73
|
+
minEoaGasEth: bigint;
|
|
74
|
+
pendingSetupMigration?: boolean;
|
|
75
|
+
targetServices?: number;
|
|
76
|
+
stakingMode?: StakingMode;
|
|
77
|
+
preStage1?: boolean;
|
|
78
|
+
}): bigint;
|
|
9
79
|
/** Master ETH required to FINISH the whole bootstrap from a fresh start (not
|
|
10
80
|
* just to enter Stage 1). Centralized so the daemon's ensureStage1 gate,
|
|
11
81
|
* the read-side funding-plan, gather-status, and the panel faucet target
|
|
@@ -62,8 +132,9 @@ export interface FleetBootstrapperOptions {
|
|
|
62
132
|
/** Optional Safe ETH target override (wei). */
|
|
63
133
|
minSafeEthWei?: string;
|
|
64
134
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
135
|
+
* Daemon poll interval. Currently unused by the master-daily-estimate path
|
|
136
|
+
* (the poll-based blend was removed in #288); kept on the options bag so
|
|
137
|
+
* existing callers compile unchanged.
|
|
67
138
|
*/
|
|
68
139
|
pollIntervalMs?: number;
|
|
69
140
|
/**
|
|
@@ -139,7 +210,11 @@ export declare class FleetBootstrapper {
|
|
|
139
210
|
*/
|
|
140
211
|
private bindAgentWalletWithRetry;
|
|
141
212
|
/**
|
|
142
|
-
* Conservative daily master gas (wei)
|
|
213
|
+
* Conservative daily master gas (wei). Returns the floor; operators who
|
|
214
|
+
* want a more aggressive estimate can still set `JINN_MASTER_ETH_DAILY_WEI`.
|
|
215
|
+
* See DEFAULT_MASTER_ETH_DAILY_WEI for rationale (#288). The
|
|
216
|
+
* `pollIntervalMs` parameter is vestigial since the poll-based blend was
|
|
217
|
+
* removed; kept so the constructor call site stays unchanged.
|
|
143
218
|
*/
|
|
144
219
|
private estimateMasterDailyGasWei;
|
|
145
220
|
/**
|
|
@@ -286,3 +361,24 @@ export declare class FleetBootstrapper {
|
|
|
286
361
|
}
|
|
287
362
|
/** @deprecated Use FleetBootstrapper */
|
|
288
363
|
export declare const EarningBootstrapper: typeof FleetBootstrapper;
|
|
364
|
+
export interface RecoverEvictedServiceOptions {
|
|
365
|
+
/** Display index of the service (used only for log messages). */
|
|
366
|
+
serviceDisplayIndex: number;
|
|
367
|
+
serviceId: number;
|
|
368
|
+
stakingAddress: string;
|
|
369
|
+
distributorAddress: string;
|
|
370
|
+
rpcUrl: string;
|
|
371
|
+
chain: JinnOnchainNetwork;
|
|
372
|
+
mnemonic: string;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Re-stake an evicted service by calling `distributor.reStake(stakingProxy, serviceId)`.
|
|
376
|
+
*
|
|
377
|
+
* Extracted from `FleetBootstrapper.recoverEvictedService` so it can be called
|
|
378
|
+
* from the in-process `EvictionLoop` without requiring a full bootstrapper
|
|
379
|
+
* context (jinn-mono-hjex.3).
|
|
380
|
+
*
|
|
381
|
+
* The caller is responsible for advancing the local service step back to
|
|
382
|
+
* `mech_deployed` after this returns (just like the bootstrapper resume path does).
|
|
383
|
+
*/
|
|
384
|
+
export declare function recoverEvictedService(opts: RecoverEvictedServiceOptions): Promise<void>;
|