@jinn-network/client 0.1.7 → 0.1.8-canary.09a3b2f6
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/README.md +67 -1
- package/dist/adapters/mech/adapter.d.ts +39 -2
- package/dist/adapters/mech/adapter.js +178 -20
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +22 -1
- package/dist/adapters/mech/contracts.js +96 -52
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/safe-revert.d.ts +4 -0
- package/dist/adapters/mech/safe-revert.js +5 -1
- package/dist/adapters/mech/safe-revert.js.map +1 -1
- package/dist/adapters/mech/safe.d.ts +1 -1
- package/dist/adapters/mech/safe.js +10 -4
- 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/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/bootstrap-endpoint.d.ts +1 -2
- package/dist/api/bootstrap-endpoint.js +42 -24
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- package/dist/api/codex-doctor-endpoint.d.ts +22 -5
- package/dist/api/codex-doctor-endpoint.js +136 -17
- package/dist/api/codex-doctor-endpoint.js.map +1 -1
- package/dist/api/debug-report-endpoint.d.ts +27 -0
- package/dist/api/debug-report-endpoint.js +157 -0
- package/dist/api/debug-report-endpoint.js.map +1 -0
- package/dist/api/discovery-endpoint.d.ts +1 -0
- package/dist/api/discovery-endpoint.js +24 -0
- package/dist/api/discovery-endpoint.js.map +1 -1
- package/dist/api/fleet-build.d.ts +1 -7
- package/dist/api/fleet-build.js +0 -7
- package/dist/api/fleet-build.js.map +1 -1
- package/dist/api/gather-status.d.ts +39 -0
- package/dist/api/gather-status.js +181 -84
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/hermes-doctor-endpoint.d.ts +15 -7
- package/dist/api/hermes-doctor-endpoint.js +56 -19
- package/dist/api/hermes-doctor-endpoint.js.map +1 -1
- package/dist/api/launcher-status.d.ts +4 -2
- package/dist/api/launcher-status.js +11 -10
- 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/loop-completion-build.d.ts +79 -0
- package/dist/api/loop-completion-build.js +155 -0
- package/dist/api/loop-completion-build.js.map +1 -0
- 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 +7 -1
- package/dist/api/portfolio-v0-build.js +6 -2
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/prediction-v1-build.d.ts +6 -0
- package/dist/api/prediction-v1-build.js +3 -1
- package/dist/api/prediction-v1-build.js.map +1 -1
- package/dist/api/server.d.ts +17 -0
- package/dist/api/server.js +40 -1
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +13 -9
- package/dist/api/setup-endpoints.js +50 -173
- package/dist/api/setup-endpoints.js.map +1 -1
- package/dist/api/solvernets-endpoints.js +33 -63
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +140 -17
- package/dist/api/status-build.js +47 -34
- 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/status-rollup-build.d.ts +0 -4
- package/dist/api/status-rollup-build.js +0 -4
- package/dist/api/status-rollup-build.js.map +1 -1
- package/dist/api/task-runs-build.d.ts +8 -0
- package/dist/api/task-runs-build.js +5 -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 +12 -0
- package/dist/chain-read-errors.js +26 -1
- package/dist/chain-read-errors.js.map +1 -1
- package/dist/cli/commands/codedigest-revert-check.d.ts +33 -0
- package/dist/cli/commands/codedigest-revert-check.js +253 -0
- package/dist/cli/commands/codedigest-revert-check.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.js +35 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/eval.d.ts +76 -0
- package/dist/cli/commands/eval.js +401 -0
- package/dist/cli/commands/eval.js.map +1 -0
- package/dist/cli/commands/rewards.d.ts +2 -0
- package/dist/cli/commands/rewards.js +27 -0
- package/dist/cli/commands/rewards.js.map +1 -1
- package/dist/cli/commands/solver-nets.d.ts +1 -0
- package/dist/cli/commands/solver-nets.js +245 -22
- 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 +0 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/tasks.js +15 -2
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/task-native-readiness.d.ts +7 -0
- package/dist/cli/task-native-readiness.js +7 -5
- package/dist/cli/task-native-readiness.js.map +1 -1
- package/dist/config.d.ts +206 -232
- package/dist/config.js +289 -107
- package/dist/config.js.map +1 -1
- package/dist/daemon/ai-units-gate.d.ts +54 -0
- package/dist/daemon/ai-units-gate.js +83 -0
- package/dist/daemon/ai-units-gate.js.map +1 -0
- package/dist/daemon/creator.js +13 -0
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +10 -0
- package/dist/daemon/daemon.js +205 -30
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/eviction-loop.d.ts +7 -0
- package/dist/daemon/eviction-loop.js +16 -0
- package/dist/daemon/eviction-loop.js.map +1 -1
- 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.js +22 -4
- 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/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-3quVQqik.js +167 -0
- package/dist/dashboard/assets/index-BVAWkLwY.css +1 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/discovery/http.d.ts +7 -0
- package/dist/discovery/http.js +567 -24
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.js +197 -5
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +235 -0
- package/dist/discovery/types.js +40 -0
- package/dist/discovery/types.js.map +1 -1
- package/dist/discovery/with-fallback.js +41 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap.d.ts +31 -3
- package/dist/earning/bootstrap.js +94 -22
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/faucet.d.ts +1 -1
- package/dist/earning/faucet.js +2 -2
- package/dist/earning/faucet.js.map +1 -1
- package/dist/earning/safe-adapter.js +34 -11
- package/dist/earning/safe-adapter.js.map +1 -1
- package/dist/earning/types.d.ts +6 -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 +38 -11
- 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/eval/eval-harness-run.d.ts +63 -0
- package/dist/eval/eval-harness-run.js +123 -0
- package/dist/eval/eval-harness-run.js.map +1 -0
- package/dist/eval/orchestrator.d.ts +163 -0
- package/dist/eval/orchestrator.js +232 -0
- package/dist/eval/orchestrator.js.map +1 -0
- package/dist/eval/paired.d.ts +68 -0
- package/dist/eval/paired.js +93 -0
- package/dist/eval/paired.js.map +1 -0
- package/dist/eval/resolve-slate-tasks.d.ts +35 -0
- package/dist/eval/resolve-slate-tasks.js +56 -0
- package/dist/eval/resolve-slate-tasks.js.map +1 -0
- package/dist/eval/screen-discovery.d.ts +22 -0
- package/dist/eval/screen-discovery.js +71 -0
- package/dist/eval/screen-discovery.js.map +1 -0
- package/dist/eval/screen-progress.d.ts +41 -0
- package/dist/eval/screen-progress.js +60 -0
- package/dist/eval/screen-progress.js.map +1 -0
- package/dist/eval/screen-runner.d.ts +30 -0
- package/dist/eval/screen-runner.js +289 -0
- package/dist/eval/screen-runner.js.map +1 -0
- package/dist/eval/screen.d.ts +107 -0
- package/dist/eval/screen.js +159 -0
- package/dist/eval/screen.js.map +1 -0
- package/dist/eval/slope.d.ts +29 -0
- package/dist/eval/slope.js +46 -0
- package/dist/eval/slope.js.map +1 -0
- package/dist/eval/train-sequence.d.ts +35 -0
- package/dist/eval/train-sequence.js +59 -0
- package/dist/eval/train-sequence.js.map +1 -0
- package/dist/eval/wilson.d.ts +45 -0
- package/dist/eval/wilson.js +48 -0
- package/dist/eval/wilson.js.map +1 -0
- package/dist/events/types.d.ts +2 -2
- package/dist/harnesses/cost-estimates.d.ts +10 -31
- package/dist/harnesses/cost-estimates.js +11 -43
- package/dist/harnesses/cost-estimates.js.map +1 -1
- package/dist/harnesses/engine/canonical-json.js +5 -3
- package/dist/harnesses/engine/canonical-json.js.map +1 -1
- package/dist/harnesses/engine/engine.d.ts +37 -4
- package/dist/harnesses/engine/engine.js +151 -20
- package/dist/harnesses/engine/engine.js.map +1 -1
- package/dist/harnesses/engine/persistence.d.ts +38 -4
- package/dist/harnesses/engine/persistence.js +71 -6
- package/dist/harnesses/engine/persistence.js.map +1 -1
- package/dist/harnesses/engine/state.d.ts +9 -0
- package/dist/harnesses/engine/state.js +23 -10
- package/dist/harnesses/engine/state.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/adapter.d.ts +2 -0
- package/dist/harnesses/impls/hermes-agent/adapter.js +8 -5
- package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +1 -0
- package/dist/harnesses/impls/hermes-agent/bootstrap.js +10 -3
- package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/config-builder.d.ts +1 -1
- package/dist/harnesses/impls/hermes-agent/config-builder.js +4 -2
- package/dist/harnesses/impls/hermes-agent/config-builder.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/harness.d.ts +31 -3
- package/dist/harnesses/impls/hermes-agent/harness.js +84 -7
- 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 +2 -0
- package/dist/harnesses/impls/index.js +2 -0
- package/dist/harnesses/impls/index.js.map +1 -1
- package/dist/harnesses/impls/learner/adapters/claude-code.d.ts +17 -0
- package/dist/harnesses/impls/learner/adapters/claude-code.js +118 -14
- package/dist/harnesses/impls/learner/adapters/claude-code.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 +41 -1
- package/dist/harnesses/impls/learner/harness.js +78 -4
- package/dist/harnesses/impls/learner/harness.js.map +1 -1
- package/dist/harnesses/impls/learner/harvest.d.ts +3 -1
- package/dist/harnesses/impls/learner/harvest.js +30 -6
- package/dist/harnesses/impls/learner/harvest.js.map +1 -1
- package/dist/harnesses/impls/learner/plugin-path.js +1 -0
- 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/swe-rebench-v2-evaluator/eval-runner.js +21 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +3 -1
- 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 +74 -5
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +103 -32
- 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 +2 -2
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +3 -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 +9 -0
- package/dist/harnesses/readiness-registry.js.map +1 -1
- package/dist/harnesses/types.d.ts +14 -0
- package/dist/learner/revert-decision.d.ts +74 -0
- package/dist/learner/revert-decision.js +73 -0
- package/dist/learner/revert-decision.js.map +1 -0
- package/dist/learner/revert-stats.d.ts +38 -0
- package/dist/learner/revert-stats.js +86 -0
- package/dist/learner/revert-stats.js.map +1 -0
- package/dist/local-provider-url.d.ts +3 -0
- package/dist/local-provider-url.js +28 -0
- package/dist/local-provider-url.js.map +1 -0
- package/dist/main.js +199 -104
- package/dist/main.js.map +1 -1
- package/dist/mcp/get-codedigest-reward.d.ts +13 -0
- package/dist/mcp/get-codedigest-reward.js +23 -0
- package/dist/mcp/get-codedigest-reward.js.map +1 -0
- package/dist/mcp/server.js +23 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/observability/debug-report-assemble.d.ts +43 -0
- package/dist/observability/debug-report-assemble.js +80 -0
- package/dist/observability/debug-report-assemble.js.map +1 -0
- package/dist/observability/emit-event.d.ts +9 -2
- package/dist/observability/emit-event.js +36 -2
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/observability/file-logger.d.ts +69 -0
- package/dist/observability/file-logger.js +177 -0
- package/dist/observability/file-logger.js.map +1 -0
- package/dist/observability/redact-secrets.d.ts +65 -0
- package/dist/observability/redact-secrets.js +300 -0
- package/dist/observability/redact-secrets.js.map +1 -0
- package/dist/observability/tar.d.ts +30 -0
- package/dist/observability/tar.js +102 -0
- package/dist/observability/tar.js.map +1 -0
- package/dist/plugins/learner/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/learner/.codex-plugin/plugin.json +1 -1
- package/dist/plugins/learner/hooks/session-start +30 -1
- package/dist/plugins/learner/skills/learn/consolidator-prompt.md +22 -1
- package/dist/plugins/learner/skills/learn/promoter-prompt.md +72 -1
- package/dist/preflight/deployment-readiness.d.ts +147 -0
- package/dist/preflight/deployment-readiness.js +366 -0
- package/dist/preflight/deployment-readiness.js.map +1 -0
- package/dist/preflight/pidfile-liveness.d.ts +50 -0
- package/dist/preflight/pidfile-liveness.js +117 -0
- package/dist/preflight/pidfile-liveness.js.map +1 -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/rpc/transport.d.ts +145 -0
- package/dist/rpc/transport.js +319 -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/scripts/swe-rebench-v2-pytest-missing.json +16 -0
- package/dist/solver-nets/prediction-operator-ux.d.ts +1 -2
- package/dist/solver-nets/prediction-operator-ux.js +56 -53
- package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
- package/dist/solver-nets/registry.d.ts +19 -1
- package/dist/solver-nets/registry.js +37 -24
- package/dist/solver-nets/registry.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-held-out-slate.d.ts +76 -0
- package/dist/solver-types/_swe-rebench-v2-held-out-slate.js +156 -0
- package/dist/solver-types/_swe-rebench-v2-held-out-slate.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-pool-recovery.d.ts +81 -0
- package/dist/solver-types/_swe-rebench-v2-pool-recovery.js +116 -0
- package/dist/solver-types/_swe-rebench-v2-pool-recovery.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-state.d.ts +24 -0
- package/dist/solver-types/_swe-rebench-v2-state.js +33 -0
- package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +116 -2
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +296 -21
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
- package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json +20 -0
- package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.json +19 -0
- package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.screening-report.json +628 -0
- package/dist/solver-types/solver-type.d.ts +8 -0
- package/dist/solver-types/swe-rebench-v2-auto.d.ts +20 -11
- package/dist/solver-types/swe-rebench-v2-auto.js +64 -19
- package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2.d.ts +10 -2
- package/dist/solver-types/swe-rebench-v2.js +233 -13
- package/dist/solver-types/swe-rebench-v2.js.map +1 -1
- package/dist/solvernets/daemon-init.d.ts +1 -1
- package/dist/solvernets/daemon-init.js +19 -4
- package/dist/solvernets/daemon-init.js.map +1 -1
- package/dist/solvernets/launched-record-dispatcher.d.ts +7 -0
- package/dist/solvernets/launched-record-dispatcher.js +10 -4
- package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
- package/dist/solvernets/registry-client-erc8004.js +40 -37
- package/dist/solvernets/registry-client-erc8004.js.map +1 -1
- package/dist/solvernets/registry-client.d.ts +6 -0
- package/dist/solvernets/store.d.ts +2 -2
- package/dist/solvernets/store.js +7 -2
- package/dist/solvernets/store.js.map +1 -1
- package/dist/spend/ai-units-config.d.ts +49 -0
- package/dist/spend/ai-units-config.js +34 -0
- package/dist/spend/ai-units-config.js.map +1 -0
- package/dist/spend/ai-units.d.ts +140 -0
- package/dist/spend/ai-units.js +229 -0
- package/dist/spend/ai-units.js.map +1 -0
- package/dist/spend/cost-surface-status.d.ts +12 -0
- package/dist/spend/cost-surface-status.js +24 -0
- package/dist/spend/cost-surface-status.js.map +1 -0
- package/dist/spend/credential.d.ts +39 -0
- package/dist/spend/credential.js +71 -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 +43 -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 +187 -0
- package/dist/store/store.js +467 -4
- package/dist/store/store.js.map +1 -1
- package/dist/trajectory/transcript-parsers/codex-session.d.ts +12 -6
- package/dist/trajectory/transcript-parsers/codex-session.js +114 -13
- package/dist/trajectory/transcript-parsers/codex-session.js.map +1 -1
- package/dist/trajectory/transcript-parsers/types.d.ts +8 -8
- package/dist/trajectory/transcript-session-dirs.d.ts +18 -0
- package/dist/trajectory/transcript-session-dirs.js +85 -0
- package/dist/trajectory/transcript-session-dirs.js.map +1 -0
- package/dist/trajectory/transcript-watcher.d.ts +20 -1
- package/dist/trajectory/transcript-watcher.js +108 -32
- package/dist/trajectory/transcript-watcher.js.map +1 -1
- package/dist/tx-retry.d.ts +25 -0
- package/dist/tx-retry.js +95 -7
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/payloads/portfolio-v0.d.ts +3 -3
- package/dist/types/payloads/prediction-apy-v0.d.ts +3 -3
- package/dist/types/payloads/prediction-v0.d.ts +12 -12
- package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +108 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +25 -1
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.d.ts +65 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.js +123 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +2 -2
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +1 -1
- package/dist/vendor/@jinn-network/sdk/package.json +4 -0
- package/docker-compose.yml +3 -2
- package/package.json +30 -18
- package/plugins/learner/.claude-plugin/plugin.json +1 -1
- package/plugins/learner/.codex-plugin/plugin.json +1 -1
- package/plugins/learner/hooks/session-start +30 -1
- package/plugins/learner/skills/learn/consolidator-prompt.md +22 -1
- package/plugins/learner/skills/learn/promoter-prompt.md +72 -1
- 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/hooks/hooks.json +16 -0
- package/plugins/swe-rebench-v2-runtime/hooks/session-start +74 -0
- package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +2 -3
- package/plugins/swe-rebench-v2-runtime/skills/task/SKILL.md +81 -0
- package/dist/dashboard/assets/index-BUlE8F3Y.js +0 -330
- package/dist/dashboard/assets/index-blqc7eqq.css +0 -32
- package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +0 -29
- package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +0 -53
|
@@ -32,6 +32,22 @@ export interface ClaimableTaskCandidate {
|
|
|
32
32
|
attemptCount: number;
|
|
33
33
|
operatorAttemptCount: number;
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Per-on-chain-task claim-budget snapshot for a launched SolverNet. Returned by
|
|
37
|
+
* `getInstanceClaimCounts`, keyed by **on-chain taskId** (decimal string) — NOT
|
|
38
|
+
* by instance_id, because the on-chain `task`/`attempt` tables carry no
|
|
39
|
+
* instance_id (only IPFS enrichment does). The generator owns the
|
|
40
|
+
* taskId → instance_id join via its local `generator-state.json` ledger
|
|
41
|
+
* (`last_task_id`), so it looks up its known posted taskIds in this map.
|
|
42
|
+
*/
|
|
43
|
+
export interface InstanceClaimCount {
|
|
44
|
+
/** On-chain taskId (decimal string), matching `task.id` in the indexer. */
|
|
45
|
+
taskId: string;
|
|
46
|
+
/** Number of attempt rows recorded for this task = consumed claim slots. */
|
|
47
|
+
consumed: number;
|
|
48
|
+
/** maxClaims from the task's TaskCreated event = the one-way claim budget. */
|
|
49
|
+
maxClaims: number;
|
|
50
|
+
}
|
|
35
51
|
/**
|
|
36
52
|
* Base shape for a builder-published artifact. Discriminated on `artifactType`
|
|
37
53
|
* so future kinds (`harness`) add without breaking consumers.
|
|
@@ -114,6 +130,77 @@ export interface BuilderAttributedRun {
|
|
|
114
130
|
* temporarily unavailable. The `withFallback` wrapper catches these and routes
|
|
115
131
|
* to the floor implementation for the duration of the outage.
|
|
116
132
|
*/
|
|
133
|
+
/**
|
|
134
|
+
* Per-codeDigest network-truth reward aggregate (issue #764). One row per
|
|
135
|
+
* distinct executor.codeDigest, joining attemptEnvelopeMeta (codeDigest, mode)
|
|
136
|
+
* to verdictEnvelopeMeta (actualPassed, actualScore) on (requestId, chainId).
|
|
137
|
+
* `actualPassed` is the source of truth (NOT the on-chain verdictCode, which
|
|
138
|
+
* defaults to Pass — see verdictEnvelopeMeta JSDoc).
|
|
139
|
+
*/
|
|
140
|
+
/**
|
|
141
|
+
* Windowed on-chain task-post counts for one scope (chain-wide or a single
|
|
142
|
+
* SolverNet). Each window is a count of `TaskCreated` events whose block falls
|
|
143
|
+
* within the last 1h / 6h / 24h, computed backend-side as a block-window
|
|
144
|
+
* approximation (Base ~2s blocktime: 1h≈1800, 6h≈10800, 24h≈43200 blocks back
|
|
145
|
+
* from head). The windows nest: `h1 ⊆ h6 ⊆ h24`. Counts are approximate —
|
|
146
|
+
* blocktime drift and the per-call scan cap mean the 24h figure is a lower
|
|
147
|
+
* bound on a very high-volume SolverNet. See `DiscoveryAPI.getTaskPostCounts`.
|
|
148
|
+
*/
|
|
149
|
+
export interface TaskPostCounts {
|
|
150
|
+
/** TaskCreated events in the last ~1h. */
|
|
151
|
+
h1: number;
|
|
152
|
+
/** TaskCreated events in the last ~6h (includes h1). */
|
|
153
|
+
h6: number;
|
|
154
|
+
/** TaskCreated events in the last ~24h (includes h6). */
|
|
155
|
+
h24: number;
|
|
156
|
+
/** Block at the head of the window (Number(getBlockNumber()) on-chain; the latest indexed task block on HTTP). */
|
|
157
|
+
windowEndBlock: number;
|
|
158
|
+
/** Unix seconds the window was computed. */
|
|
159
|
+
windowEndTs: number;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Block-window thresholds for `getTaskPostCounts`, from Base's ~2s blocktime:
|
|
163
|
+
* 1h≈1800, 6h≈10800, 24h≈43200 blocks back from the window head. Shared by the
|
|
164
|
+
* HTTP and on-chain backings so they bucket identically. The windows nest
|
|
165
|
+
* (h1 ⊆ h6 ⊆ h24); the 24h figure also bounds the on-chain scan range.
|
|
166
|
+
*/
|
|
167
|
+
export declare const TASK_POST_WINDOW_BLOCKS: {
|
|
168
|
+
readonly h1: 1800;
|
|
169
|
+
readonly h6: 10800;
|
|
170
|
+
readonly h24: 43200;
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* Bucket a stream of TaskCreated events into chain-wide + per-cid
|
|
174
|
+
* `TaskPostCounts`, shared by both DiscoveryAPI backings. `events` carry a
|
|
175
|
+
* `block` (number) and lowercased manifest `digest`; `cidByDigest` maps each
|
|
176
|
+
* requested digest to its cid. Counts nest (h1 ⊆ h6 ⊆ h24); events older than
|
|
177
|
+
* the 24h cut are ignored.
|
|
178
|
+
*/
|
|
179
|
+
export declare function bucketTaskPostCounts(windowEndBlock: number, windowEndTs: number, events: Array<{
|
|
180
|
+
block: number;
|
|
181
|
+
digest: string;
|
|
182
|
+
}>, cidByDigest: Map<string, string>): {
|
|
183
|
+
chain: TaskPostCounts;
|
|
184
|
+
byCid: Record<string, TaskPostCounts>;
|
|
185
|
+
};
|
|
186
|
+
export interface CodeDigestRewardRow {
|
|
187
|
+
/** The executor.codeDigest, e.g. "sha256:<hex>". */
|
|
188
|
+
codeDigest: string;
|
|
189
|
+
/** Count of distinct (requestId, chainId) attempts with a verdict, mode='train'. */
|
|
190
|
+
attempts: number;
|
|
191
|
+
/** Count where verdictEnvelopeMeta.actualPassed === true. */
|
|
192
|
+
passes: number;
|
|
193
|
+
/** passes / attempts; 0 when attempts === 0. */
|
|
194
|
+
passRate: number;
|
|
195
|
+
/** Mean of numeric actualScore over verdicts that carried one; 0 when none. */
|
|
196
|
+
avgScore: number;
|
|
197
|
+
/**
|
|
198
|
+
* Per-attempt graded score (passedCount/totalCount) for in-window verdicts
|
|
199
|
+
* that carried v2 counts (totalCount > 0). Empty / short when verdicts predate
|
|
200
|
+
* verdict.v2. Consumed by the learner's Mann-Whitney sensitivity tier (#1019).
|
|
201
|
+
*/
|
|
202
|
+
gradedScores: number[];
|
|
203
|
+
}
|
|
117
204
|
export interface DiscoveryAPI {
|
|
118
205
|
/**
|
|
119
206
|
* Returns claimable task candidates for a set of SolverNet manifests,
|
|
@@ -221,6 +308,154 @@ export interface DiscoveryAPI {
|
|
|
221
308
|
builderAgentId: string;
|
|
222
309
|
limit?: number;
|
|
223
310
|
}): Promise<PublishedArtifact[]>;
|
|
311
|
+
/**
|
|
312
|
+
* Returns network-truth pass counts per swe-rebench-v2 instance_id for a
|
|
313
|
+
* given SolverNet manifest. Keyed by `instance_id`; the value is the count
|
|
314
|
+
* of distinct (requestId, chainId) verdictEnvelopeMeta rows where
|
|
315
|
+
* `solverNetManifestCid` equals `args.manifestCid`, `actualPassed = true`,
|
|
316
|
+
* `solverType` starts with `swe-rebench-v2`, and `instanceId` is non-empty.
|
|
317
|
+
*
|
|
318
|
+
* Per-SolverNet scoping (#669 Finding 2): the indexer enrichment pass reads
|
|
319
|
+
* the task body's top-level `solverNetManifestCid` (task.v1 schema; see
|
|
320
|
+
* `client/src/types/task-document.ts`) on the same IPFS round-trip that
|
|
321
|
+
* resolves `instance_id`, and writes it to `verdictEnvelopeMeta`. The
|
|
322
|
+
* GraphQL filter pins to that column, so multi-SolverNet operators with
|
|
323
|
+
* overlapping instance_id pools do NOT cross-tenant over-count — successes
|
|
324
|
+
* on SolverNet-B can no longer prematurely saturate SolverNet-A's launcher.
|
|
325
|
+
*
|
|
326
|
+
* Backed by `verdictEnvelopeMeta` in the indexer. Throws
|
|
327
|
+
* `DiscoveryUnavailableError` when the backing is unreachable — callers
|
|
328
|
+
* MUST NOT silently fall through to local-only counts (#669 acceptance
|
|
329
|
+
* criterion: behave as if the on-chain count is the truth). The
|
|
330
|
+
* `withFallback` wrapper enforces this by never routing
|
|
331
|
+
* `getInstanceSuccessCounts` to the floor.
|
|
332
|
+
*
|
|
333
|
+
* The on-chain floor implementation (`OnchainDiscoveryAPI`) returns an
|
|
334
|
+
* empty Map, since the underlying data comes from IPFS enrichment that the
|
|
335
|
+
* floor cannot reconstruct. The floor's empty Map is therefore not the
|
|
336
|
+
* runtime path — `withFallback` propagates the error instead.
|
|
337
|
+
*/
|
|
338
|
+
getInstanceSuccessCounts(args: {
|
|
339
|
+
manifestCid: string;
|
|
340
|
+
}): Promise<Map<string, number>>;
|
|
341
|
+
/**
|
|
342
|
+
* Returns per-codeDigest reward aggregates (#764) for the given codeDigests,
|
|
343
|
+
* scoped to mode='train'. Joins attemptEnvelopeMeta (codeDigest) to
|
|
344
|
+
* verdictEnvelopeMeta (actualPassed, actualScore) on (requestId, chainId).
|
|
345
|
+
* When `operator` is provided, further restricts to attempts the operator
|
|
346
|
+
* claimed (via the `attempt` table, joined on requestId). When
|
|
347
|
+
* `solverNetManifestCid` is provided, scopes the aggregate to a single
|
|
348
|
+
* SolverNet via `verdictEnvelopeMeta.solverNetManifestCid` (the only table in
|
|
349
|
+
* this join carrying the column) — attempts whose verdicts belong to other
|
|
350
|
+
* SolverNets are excluded. Omitted → unscoped across all SolverNets (#764).
|
|
351
|
+
*
|
|
352
|
+
* Like getInstanceSuccessCounts (#669), this throws DiscoveryUnavailableError
|
|
353
|
+
* on a degraded backing and MUST NOT silently fall through to the on-chain
|
|
354
|
+
* floor (substrate-incident policy) — the floor returns an empty array and
|
|
355
|
+
* withFallback never routes this method to it. A codeDigest with zero indexed
|
|
356
|
+
* attempts is simply absent from the result (callers treat absence as
|
|
357
|
+
* "insufficient samples", not pass-rate zero).
|
|
358
|
+
*
|
|
359
|
+
* Rides PR #783's attemptEnvelopeMeta.codeDigest index.
|
|
360
|
+
*
|
|
361
|
+
* `window` (#764 C1) caps each codeDigest's aggregate to its most-recent
|
|
362
|
+
* `window` attempts (by enrichedAtBlock desc). Because Ponder's GraphQL
|
|
363
|
+
* `limit` is global across all requested codeDigests, the cap is applied
|
|
364
|
+
* client-side per-digest, not as a query limit. Omitted → no cap (aggregate
|
|
365
|
+
* over the full paginated history, byte-identical to the prior behaviour).
|
|
366
|
+
*/
|
|
367
|
+
getCodeDigestRewards(args: {
|
|
368
|
+
codeDigests: string[];
|
|
369
|
+
operator?: `0x${string}`;
|
|
370
|
+
solverNetManifestCid?: string;
|
|
371
|
+
window?: number;
|
|
372
|
+
}): Promise<CodeDigestRewardRow[]>;
|
|
373
|
+
/**
|
|
374
|
+
* Returns the per-task claim-budget snapshot for every task posted on the
|
|
375
|
+
* SolverNet identified by `manifestCid`. Keyed by on-chain taskId; each value
|
|
376
|
+
* carries `consumed` (count of `attempt` rows) and `maxClaims` (the one-way
|
|
377
|
+
* claim budget from TaskCreated). A task is *exhausted* when
|
|
378
|
+
* `consumed >= maxClaims`.
|
|
379
|
+
*
|
|
380
|
+
* Modelled one-for-one on `getInstanceSuccessCounts`: backed by the indexer's
|
|
381
|
+
* `task` + `attempt` tables. Throws `DiscoveryUnavailableError` when the
|
|
382
|
+
* backing is unreachable — on a genuine error the caller MUST abort the tick,
|
|
383
|
+
* not treat the absence of data as truth. The `withFallback` wrapper enforces
|
|
384
|
+
* this by never routing `getInstanceClaimCounts` to the floor: a *successful*
|
|
385
|
+
* empty Map from the floor is indistinguishable from "every task has 0
|
|
386
|
+
* consumed slots", so on a real outage it would silently mask exhaustion —
|
|
387
|
+
* exhausted postings would classify `live`, their reposts would be suppressed,
|
|
388
|
+
* and the SolverNet would under-serve N (#802, mirroring #669).
|
|
389
|
+
*
|
|
390
|
+
* Note the generator's own classifier treats a *missing entry for a known
|
|
391
|
+
* taskId* as `live` (assume not-yet-indexed; the indexer never deletes task
|
|
392
|
+
* rows, so a finalized/refunded/exhausted task is still present), which is why
|
|
393
|
+
* the floor must propagate the error rather than return an empty success: a
|
|
394
|
+
* whole-map empty-success would make every posting inert, not storm.
|
|
395
|
+
*
|
|
396
|
+
* The on-chain floor implementation returns an empty Map (the runtime path is
|
|
397
|
+
* never the floor for this method — `withFallback` propagates the error
|
|
398
|
+
* instead). The claim data IS reconstructible on-chain, but the floor stays a
|
|
399
|
+
* no-op to keep the abort-on-outage guarantee symmetric with
|
|
400
|
+
* `getInstanceSuccessCounts`.
|
|
401
|
+
*/
|
|
402
|
+
getInstanceClaimCounts(args: {
|
|
403
|
+
manifestCid: string;
|
|
404
|
+
}): Promise<Map<string, InstanceClaimCount>>;
|
|
405
|
+
/**
|
|
406
|
+
* Returns windowed on-chain task-post counts (last 1h / 6h / 24h) sourced
|
|
407
|
+
* from `TaskCreated` events on the active chain's JinnRouter / TaskCoordinator.
|
|
408
|
+
* Always returns the `chain`-wide totals; when `manifestCids` is supplied, also
|
|
409
|
+
* returns per-SolverNet totals in `byCid` (keyed by manifest CID), joined via
|
|
410
|
+
* `manifestDigestForCid(cid)` against each event's `manifestDigest`.
|
|
411
|
+
*
|
|
412
|
+
* Windowing is a block-window approximation computed backend-side (Base ~2s
|
|
413
|
+
* blocktime — see `TaskPostCounts`); counts are approximate. Each backing caps
|
|
414
|
+
* its scan, so on a very high-volume chain the figures are a lower bound.
|
|
415
|
+
*
|
|
416
|
+
* This is a *supply signal*, not a correctness gate, so it is NOT
|
|
417
|
+
* abort-on-outage: like `getSolverNetOperatorCount`, the `withFallback` wrapper
|
|
418
|
+
* routes it to the on-chain floor when the indexer is unavailable rather than
|
|
419
|
+
* propagating `DiscoveryUnavailableError`. The on-chain floor reconstructs the
|
|
420
|
+
* counts directly from `TaskCreated` logs.
|
|
421
|
+
*/
|
|
422
|
+
getTaskPostCounts(args?: {
|
|
423
|
+
manifestCids?: string[];
|
|
424
|
+
}): Promise<{
|
|
425
|
+
windowEndBlock: number;
|
|
426
|
+
windowEndTs: number;
|
|
427
|
+
/** Chain-wide totals (always present). */
|
|
428
|
+
chain: TaskPostCounts;
|
|
429
|
+
/** Per-SolverNet totals keyed by manifest CID; empty `{}` when no manifestCids given. */
|
|
430
|
+
byCid: Record<string, TaskPostCounts>;
|
|
431
|
+
}>;
|
|
432
|
+
/**
|
|
433
|
+
* Returns the most-recently-created task on the SolverNet identified by
|
|
434
|
+
* `manifestCid` — its on-chain `taskCidDigest` and decimal `taskId` — or
|
|
435
|
+
* `undefined` when no task has ever been posted for the SolverNet.
|
|
436
|
+
*
|
|
437
|
+
* The join key is the same `manifestDigest === keccak256(manifestCid)` used by
|
|
438
|
+
* `findClaimableTasks` / `getInstanceClaimCounts` (computed via
|
|
439
|
+
* `manifestDigestForCid`). "Most recent" is by creation order: the HTTP
|
|
440
|
+
* backing orders the `task` table by `createdAtBlock` desc, limit 1; the
|
|
441
|
+
* on-chain floor takes the highest-block `TaskCreated` log for the digest.
|
|
442
|
+
*
|
|
443
|
+
* This is a PURE indexer/chain read — it returns only the on-chain digest, NOT
|
|
444
|
+
* any IPFS body. The caller reconstructs the IPFS task CID
|
|
445
|
+
* (`f01551220 + digestHexWithout0x`, see `adapters/mech/adapter.ts`) and fetches
|
|
446
|
+
* the body itself. It is the read primitive behind the swe-rebench-v2 fresh-
|
|
447
|
+
* volume pool recovery (#957): an operator with an empty disk reads a recent
|
|
448
|
+
* task's eligibility `vettedPoolRef` to re-fetch the published vetted pool.
|
|
449
|
+
*
|
|
450
|
+
* This is a *recovery signal*, not a correctness gate, so it is NOT
|
|
451
|
+
* abort-on-outage: like `getSolverNetOperatorCount` / `getTaskPostCounts`, the
|
|
452
|
+
* `withFallback` wrapper routes it to the on-chain floor when the indexer is
|
|
453
|
+
* unavailable rather than propagating `DiscoveryUnavailableError`.
|
|
454
|
+
*/
|
|
455
|
+
getMostRecentTaskCidDigest(manifestCid: string): Promise<{
|
|
456
|
+
taskCidDigest: `0x${string}`;
|
|
457
|
+
taskId: string;
|
|
458
|
+
} | undefined>;
|
|
224
459
|
}
|
|
225
460
|
/**
|
|
226
461
|
* Thrown by a DiscoveryAPI implementation when it is temporarily unable to
|
package/dist/discovery/types.js
CHANGED
|
@@ -9,6 +9,46 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Spec: spec/2026-05-11-discovery-api-and-shared-indexer.md §5.
|
|
11
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* Block-window thresholds for `getTaskPostCounts`, from Base's ~2s blocktime:
|
|
14
|
+
* 1h≈1800, 6h≈10800, 24h≈43200 blocks back from the window head. Shared by the
|
|
15
|
+
* HTTP and on-chain backings so they bucket identically. The windows nest
|
|
16
|
+
* (h1 ⊆ h6 ⊆ h24); the 24h figure also bounds the on-chain scan range.
|
|
17
|
+
*/
|
|
18
|
+
export const TASK_POST_WINDOW_BLOCKS = { h1: 1_800, h6: 10_800, h24: 43_200 };
|
|
19
|
+
/**
|
|
20
|
+
* Bucket a stream of TaskCreated events into chain-wide + per-cid
|
|
21
|
+
* `TaskPostCounts`, shared by both DiscoveryAPI backings. `events` carry a
|
|
22
|
+
* `block` (number) and lowercased manifest `digest`; `cidByDigest` maps each
|
|
23
|
+
* requested digest to its cid. Counts nest (h1 ⊆ h6 ⊆ h24); events older than
|
|
24
|
+
* the 24h cut are ignored.
|
|
25
|
+
*/
|
|
26
|
+
export function bucketTaskPostCounts(windowEndBlock, windowEndTs, events, cidByDigest) {
|
|
27
|
+
const h1Cut = windowEndBlock - TASK_POST_WINDOW_BLOCKS.h1;
|
|
28
|
+
const h6Cut = windowEndBlock - TASK_POST_WINDOW_BLOCKS.h6;
|
|
29
|
+
const h24Cut = windowEndBlock - TASK_POST_WINDOW_BLOCKS.h24;
|
|
30
|
+
const blank = () => ({ h1: 0, h6: 0, h24: 0, windowEndBlock, windowEndTs });
|
|
31
|
+
const chain = blank();
|
|
32
|
+
const byCid = {};
|
|
33
|
+
for (const cid of cidByDigest.values())
|
|
34
|
+
byCid[cid] = blank();
|
|
35
|
+
const bucket = (target, block) => {
|
|
36
|
+
if (block < h24Cut)
|
|
37
|
+
return;
|
|
38
|
+
target.h24 += 1;
|
|
39
|
+
if (block >= h6Cut)
|
|
40
|
+
target.h6 += 1;
|
|
41
|
+
if (block >= h1Cut)
|
|
42
|
+
target.h1 += 1;
|
|
43
|
+
};
|
|
44
|
+
for (const e of events) {
|
|
45
|
+
bucket(chain, e.block);
|
|
46
|
+
const cid = cidByDigest.get(e.digest);
|
|
47
|
+
if (cid)
|
|
48
|
+
bucket(byCid[cid], e.block);
|
|
49
|
+
}
|
|
50
|
+
return { chain, byCid };
|
|
51
|
+
}
|
|
12
52
|
export class DiscoveryUnavailableError extends Error {
|
|
13
53
|
cause;
|
|
14
54
|
/**
|
|
@@ -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;AA0LH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAW,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAAsB,EACtB,WAAmB,EACnB,MAAgD,EAChD,WAAgC;IAEhC,MAAM,KAAK,GAAG,cAAc,GAAG,uBAAuB,CAAC,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,cAAc,GAAG,uBAAuB,CAAC,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC;IAE5D,MAAM,KAAK,GAAG,GAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC;IACtB,MAAM,KAAK,GAAmC,EAAE,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC;IAE7D,MAAM,MAAM,GAAG,CAAC,MAAsB,EAAE,KAAa,EAAQ,EAAE;QAC7D,IAAI,KAAK,GAAG,MAAM;YAAE,OAAO;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QAChB,IAAI,KAAK,IAAI,KAAK;YAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,KAAK;YAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,GAAG;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAmTD,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"}
|
|
@@ -167,6 +167,47 @@ export function withFallback(primary, floor, opts = {}) {
|
|
|
167
167
|
listBuilderArtifacts(args) {
|
|
168
168
|
return dispatch(() => primary.listBuilderArtifacts(args), () => floor.listBuilderArtifacts(args));
|
|
169
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
|
+
},
|
|
180
|
+
getCodeDigestRewards(args) {
|
|
181
|
+
// Never fall through to the floor — an empty array from the floor is
|
|
182
|
+
// indistinguishable from "no successes", the exact failure mode #764's
|
|
183
|
+
// revert logic must avoid. Propagate the error so the Consolidator skips
|
|
184
|
+
// reverts on degraded data (substrate-incident policy; mirrors #669).
|
|
185
|
+
return primary.getCodeDigestRewards(args);
|
|
186
|
+
},
|
|
187
|
+
getInstanceClaimCounts(args) {
|
|
188
|
+
// Never fall through to the floor for this method — a *successful* empty
|
|
189
|
+
// Map from the floor is indistinguishable from "every task has 0 consumed
|
|
190
|
+
// slots", so on a real outage it would mask exhaustion: exhausted
|
|
191
|
+
// postings would classify `live`, their reposts would be suppressed, and
|
|
192
|
+
// the SolverNet would under-serve N (#802, mirroring the #669 contract on
|
|
193
|
+
// getInstanceSuccessCounts). Propagate the error so the launcher aborts
|
|
194
|
+
// its tick rather than treating absent data as truth.
|
|
195
|
+
return primary.getInstanceClaimCounts(args);
|
|
196
|
+
},
|
|
197
|
+
getTaskPostCounts(args) {
|
|
198
|
+
// Supply signal (not a correctness gate): fall through to the floor on an
|
|
199
|
+
// indexer outage like getSolverNetOperatorCount. The on-chain floor
|
|
200
|
+
// reconstructs the windowed counts directly from TaskCreated logs, so a
|
|
201
|
+
// floor result is meaningful (unlike the abort-on-outage methods above).
|
|
202
|
+
return dispatch(() => primary.getTaskPostCounts(args), () => floor.getTaskPostCounts(args));
|
|
203
|
+
},
|
|
204
|
+
getMostRecentTaskCidDigest(manifestCid) {
|
|
205
|
+
// Recovery signal (not a correctness gate): fall through to the floor on
|
|
206
|
+
// an indexer outage like getTaskPostCounts. The on-chain floor reads the
|
|
207
|
+
// newest TaskCreated log for the manifest directly, so a floor result is
|
|
208
|
+
// meaningful (#957).
|
|
209
|
+
return dispatch(() => primary.getMostRecentTaskCidDigest(manifestCid), () => floor.getMostRecentTaskCidDigest(manifestCid));
|
|
210
|
+
},
|
|
170
211
|
};
|
|
171
212
|
}
|
|
172
213
|
//# sourceMappingURL=with-fallback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-fallback.js","sourceRoot":"","sources":["../../src/discovery/with-fallback.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"with-fallback.js","sourceRoot":"","sources":["../../src/discovery/with-fallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
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 Hex } from 'viem';
|
|
7
8
|
import type { FleetState, FleetBootstrapResult, StakingMode } from './types.js';
|
|
8
9
|
import { requestTestnetFunding } from './faucet.js';
|
|
9
10
|
import { type JinnOnchainNetwork } from './viem-clients.js';
|
|
@@ -132,8 +133,9 @@ export interface FleetBootstrapperOptions {
|
|
|
132
133
|
/** Optional Safe ETH target override (wei). */
|
|
133
134
|
minSafeEthWei?: string;
|
|
134
135
|
/**
|
|
135
|
-
*
|
|
136
|
-
*
|
|
136
|
+
* Daemon poll interval. Currently unused by the master-daily-estimate path
|
|
137
|
+
* (the poll-based blend was removed in #288); kept on the options bag so
|
|
138
|
+
* existing callers compile unchanged.
|
|
137
139
|
*/
|
|
138
140
|
pollIntervalMs?: number;
|
|
139
141
|
/**
|
|
@@ -161,6 +163,11 @@ export interface FleetBootstrapperOptions {
|
|
|
161
163
|
* (~1.5 Base Sepolia blocks). Tests pass 0 to skip the sleep entirely.
|
|
162
164
|
*/
|
|
163
165
|
safeBindingRetryDelayMs?: number;
|
|
166
|
+
/**
|
|
167
|
+
* Backoff before retrying a transient CDP faucet 429 (issue #984 work unit 1).
|
|
168
|
+
* Defaults to 15000 ms. Tests pass 0 to skip the sleep entirely.
|
|
169
|
+
*/
|
|
170
|
+
faucetRateLimitBackoffMs?: number;
|
|
164
171
|
}
|
|
165
172
|
export declare class FleetBootstrapper {
|
|
166
173
|
private readonly store;
|
|
@@ -178,6 +185,7 @@ export declare class FleetBootstrapper {
|
|
|
178
185
|
private readonly autoTestnetFaucet;
|
|
179
186
|
private readonly safeBindingMaxAttempts;
|
|
180
187
|
private readonly safeBindingRetryDelayMs;
|
|
188
|
+
private readonly faucetRateLimitBackoffMs;
|
|
181
189
|
constructor(options?: FleetBootstrapperOptions);
|
|
182
190
|
getStatus(): Promise<FleetState>;
|
|
183
191
|
/**
|
|
@@ -209,7 +217,11 @@ export declare class FleetBootstrapper {
|
|
|
209
217
|
*/
|
|
210
218
|
private bindAgentWalletWithRetry;
|
|
211
219
|
/**
|
|
212
|
-
* Conservative daily master gas (wei)
|
|
220
|
+
* Conservative daily master gas (wei). Returns the floor; operators who
|
|
221
|
+
* want a more aggressive estimate can still set `JINN_MASTER_ETH_DAILY_WEI`.
|
|
222
|
+
* See DEFAULT_MASTER_ETH_DAILY_WEI for rationale (#288). The
|
|
223
|
+
* `pollIntervalMs` parameter is vestigial since the poll-based blend was
|
|
224
|
+
* removed; kept so the constructor call site stays unchanged.
|
|
213
225
|
*/
|
|
214
226
|
private estimateMasterDailyGasWei;
|
|
215
227
|
/**
|
|
@@ -366,6 +378,22 @@ export interface RecoverEvictedServiceOptions {
|
|
|
366
378
|
chain: JinnOnchainNetwork;
|
|
367
379
|
mnemonic: string;
|
|
368
380
|
}
|
|
381
|
+
/**
|
|
382
|
+
* Inspect a mined reStake receipt and log the correct outcome (#916).
|
|
383
|
+
*
|
|
384
|
+
* Pure + I/O-free so it can be unit-tested without a chain client. On a
|
|
385
|
+
* `success` receipt it logs `reStake confirmed`. On a `reverted` receipt it
|
|
386
|
+
* logs `reStake reverted` at error level (with the decoded reason if the
|
|
387
|
+
* caller could obtain one) and throws so the recovery attempt re-queues.
|
|
388
|
+
*/
|
|
389
|
+
export declare function handleReStakeReceipt(args: {
|
|
390
|
+
receipt: {
|
|
391
|
+
status: 'success' | 'reverted';
|
|
392
|
+
};
|
|
393
|
+
serviceDisplayIndex: number;
|
|
394
|
+
reStakeHash: Hex;
|
|
395
|
+
revertReason?: string;
|
|
396
|
+
}): void;
|
|
369
397
|
/**
|
|
370
398
|
* Re-stake an evicted service by calling `distributor.reStake(stakingProxy, serviceId)`.
|
|
371
399
|
*
|