@jinn-network/client 0.1.8 → 0.1.9-canary.023faefb
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/CONTRIBUTING.md +2 -2
- package/README.md +6 -0
- package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
- package/deployments/deployment-stolas-l2-baseSepolia-fast.json +23 -3
- package/deployments/deployment-task-coordinator-router-v3-baseSepolia-fast.json +34 -6
- package/dist/adapters/mech/adapter.d.ts +31 -1
- package/dist/adapters/mech/adapter.js +126 -53
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +174 -13
- package/dist/adapters/mech/contracts.js +99 -49
- 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.js +77 -1
- package/dist/adapters/mech/safe.js.map +1 -1
- package/dist/adapters/mech/types.d.ts +5 -130
- package/dist/adapters/mech/types.js +9 -65
- package/dist/adapters/mech/types.js.map +1 -1
- package/dist/adapters/mech/verdict-code.js +1 -1
- package/dist/adapters/mech/verdict-code.js.map +1 -1
- package/dist/api/bootstrap-endpoint.d.ts +19 -3
- package/dist/api/bootstrap-endpoint.js +4 -0
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- 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 +26 -17
- package/dist/api/gather-status.js +62 -520
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/harness-auth-status-endpoint.d.ts +21 -0
- package/dist/api/harness-auth-status-endpoint.js +17 -0
- package/dist/api/harness-auth-status-endpoint.js.map +1 -0
- package/dist/api/launcher-endpoints.js +6 -1
- package/dist/api/launcher-endpoints.js.map +1 -1
- package/dist/api/launcher-status.d.ts +2 -0
- package/dist/api/launcher-status.js.map +1 -1
- package/dist/api/launcher-tasks.d.ts +47 -0
- package/dist/api/launcher-tasks.js +88 -3
- 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 +154 -0
- package/dist/api/loop-completion-build.js.map +1 -0
- package/dist/api/operator-artifacts-endpoint.js +1 -1
- package/dist/api/operator-artifacts-endpoint.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +2 -1
- package/dist/api/portfolio-v0-build.js +5 -7
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/prediction-v1-build.d.ts +2 -2
- package/dist/api/prediction-v1-build.js +5 -7
- package/dist/api/prediction-v1-build.js.map +1 -1
- package/dist/api/rewards-build.d.ts +8 -1
- package/dist/api/rewards-build.js +32 -4
- package/dist/api/rewards-build.js.map +1 -1
- package/dist/api/rewards-endpoint.d.ts +12 -0
- package/dist/api/rewards-endpoint.js +46 -0
- package/dist/api/rewards-endpoint.js.map +1 -0
- package/dist/api/server.d.ts +6 -16
- package/dist/api/server.js +29 -26
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +45 -0
- package/dist/api/setup-endpoints.js +271 -52
- package/dist/api/setup-endpoints.js.map +1 -1
- package/dist/api/solvernets-endpoints.js +4 -1
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +71 -94
- package/dist/api/status-build.js +11 -77
- package/dist/api/status-build.js.map +1 -1
- 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/stop-hook.d.ts +1 -1
- package/dist/api/stop-hook.js +1 -1
- package/dist/api/stop-hook.js.map +1 -1
- package/dist/api/task-run-routing.d.ts +1 -1
- package/dist/api/task-runs-build.d.ts +2 -2
- package/dist/api/task-runs-build.js +5 -7
- package/dist/api/task-runs-build.js.map +1 -1
- package/dist/bin/jinn-distil-mcp.js +813 -0
- package/dist/bin/jinn-layer.js +12568 -0
- package/dist/build-info.json +4 -4
- package/dist/build-meta.json +1 -1
- package/dist/captures/distil-export.d.ts +54 -0
- package/dist/captures/distil-export.js +135 -0
- package/dist/captures/distil-export.js.map +1 -0
- package/dist/captures/ingest.d.ts +21 -0
- package/dist/captures/ingest.js +144 -0
- package/dist/captures/ingest.js.map +1 -0
- package/dist/captures/live-publisher.d.ts +9 -0
- package/dist/captures/live-publisher.js +5 -3
- package/dist/captures/live-publisher.js.map +1 -1
- package/dist/captures/publish.d.ts +15 -0
- package/dist/captures/publish.js +17 -7
- package/dist/captures/publish.js.map +1 -1
- package/dist/cli/commands/codedigest-revert-check.js +6 -2
- package/dist/cli/commands/codedigest-revert-check.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.js +36 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/eval.d.ts +87 -0
- package/dist/cli/commands/eval.js +481 -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 +39 -10
- package/dist/cli/commands/rewards.js.map +1 -1
- package/dist/cli/commands/solver-nets.js +68 -0
- package/dist/cli/commands/solver-nets.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/update.js +8 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/version.js +4 -0
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/execution-context.js +2 -1
- package/dist/cli/execution-context.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/introspection-context.js +0 -3
- package/dist/cli/introspection-context.js.map +1 -1
- package/dist/config.d.ts +158 -541
- package/dist/config.js +190 -197
- package/dist/config.js.map +1 -1
- package/dist/contracts/abis.d.ts +100 -0
- package/dist/contracts/abis.js +58 -0
- package/dist/contracts/abis.js.map +1 -0
- package/dist/contracts/addresses.d.ts +36 -0
- package/dist/contracts/addresses.js +60 -0
- package/dist/contracts/addresses.js.map +1 -0
- package/dist/corpus/acquire.d.ts +7 -6
- package/dist/corpus/acquire.js +10 -10
- package/dist/corpus/acquire.js.map +1 -1
- package/dist/corpus/fetch-artifact.d.ts +21 -0
- package/dist/corpus/fetch-artifact.js +33 -0
- package/dist/corpus/fetch-artifact.js.map +1 -0
- package/dist/corpus/index.d.ts +2 -2
- package/dist/corpus/onchain-query.d.ts +0 -1
- package/dist/corpus/onchain-query.js +2 -5
- package/dist/corpus/onchain-query.js.map +1 -1
- package/dist/corpus/route-resolver.d.ts +3 -3
- package/dist/corpus/route-resolver.js +3 -3
- package/dist/daemon/ai-units-gate.d.ts +6 -6
- package/dist/daemon/ai-units-gate.js +11 -10
- package/dist/daemon/ai-units-gate.js.map +1 -1
- package/dist/daemon/balance-topup-loop.js +27 -9
- package/dist/daemon/balance-topup-loop.js.map +1 -1
- package/dist/daemon/checkpoint-loop.js +2 -2
- package/dist/daemon/creator.d.ts +1 -0
- package/dist/daemon/creator.js +39 -25
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +15 -10
- package/dist/daemon/daemon.js +95 -41
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/delivery-watcher.d.ts +9 -0
- package/dist/daemon/delivery-watcher.js +24 -1
- package/dist/daemon/delivery-watcher.js.map +1 -1
- package/dist/daemon/eviction-loop.d.ts +7 -0
- package/dist/daemon/eviction-loop.js +19 -3
- package/dist/daemon/eviction-loop.js.map +1 -1
- package/dist/daemon/join-applier.d.ts +35 -0
- package/dist/daemon/join-applier.js +49 -0
- package/dist/daemon/join-applier.js.map +1 -0
- package/dist/daemon/loop-heartbeat.d.ts +89 -0
- package/dist/daemon/loop-heartbeat.js +75 -0
- package/dist/daemon/loop-heartbeat.js.map +1 -0
- package/dist/{api/peers.js → daemon/peer-sync.js} +3 -1
- package/dist/daemon/peer-sync.js.map +1 -0
- package/dist/daemon/reward-claim-loop.js +28 -10
- package/dist/daemon/reward-claim-loop.js.map +1 -1
- package/dist/daemon/skip-log-dedup.d.ts +1 -1
- package/dist/daemon/skip-log-dedup.js +3 -0
- package/dist/daemon/skip-log-dedup.js.map +1 -1
- package/dist/daemon/spend-cap-gate.d.ts +0 -6
- package/dist/daemon/spend-cap-gate.js +1 -8
- package/dist/daemon/spend-cap-gate.js.map +1 -1
- package/dist/daemon/watchdog-loop.d.ts +84 -0
- package/dist/daemon/watchdog-loop.js +91 -0
- package/dist/daemon/watchdog-loop.js.map +1 -0
- package/dist/dashboard/assets/index-B_5Cb-ZH.js +161 -0
- package/dist/dashboard/assets/index-D7rvJRNa.css +1 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/discovery/http.d.ts +17 -0
- package/dist/discovery/http.js +378 -26
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.js +174 -10
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +149 -0
- package/dist/discovery/types.js +40 -0
- package/dist/discovery/types.js.map +1 -1
- package/dist/discovery/with-fallback.js +24 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap-run.d.ts +25 -0
- package/dist/earning/bootstrap-run.js +315 -0
- package/dist/earning/bootstrap-run.js.map +1 -0
- package/dist/earning/bootstrap.d.ts +31 -11
- package/dist/earning/bootstrap.js +123 -212
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +2 -232
- package/dist/earning/contracts.js +16 -205
- package/dist/earning/contracts.js.map +1 -1
- package/dist/earning/faucet-topup-store.d.ts +41 -0
- package/dist/earning/faucet-topup-store.js +89 -0
- package/dist/earning/faucet-topup-store.js.map +1 -0
- 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 +12 -45
- package/dist/earning/safe-adapter.js.map +1 -1
- package/dist/earning/steps/context.d.ts +42 -0
- package/dist/earning/steps/context.js +4 -0
- package/dist/earning/steps/context.js.map +1 -0
- package/dist/earning/steps/fleet-identity-register.d.ts +4 -0
- package/dist/earning/steps/fleet-identity-register.js +65 -0
- package/dist/earning/steps/fleet-identity-register.js.map +1 -0
- package/dist/earning/steps/fleet-safe-deploy.d.ts +4 -0
- package/dist/earning/steps/fleet-safe-deploy.js +62 -0
- package/dist/earning/steps/fleet-safe-deploy.js.map +1 -0
- package/dist/earning/steps/fleet-safe-predict.d.ts +4 -0
- package/dist/earning/steps/fleet-safe-predict.js +18 -0
- package/dist/earning/steps/fleet-safe-predict.js.map +1 -0
- package/dist/earning/steps/receipt-parsing.d.ts +12 -0
- package/dist/earning/steps/receipt-parsing.js +71 -0
- package/dist/earning/steps/receipt-parsing.js.map +1 -0
- package/dist/earning/stolas-claim.js +8 -8
- package/dist/earning/stolas-claim.js.map +1 -1
- package/dist/earning/{jinn-rewards.d.ts → stolas-staking.d.ts} +4 -8
- package/dist/earning/{jinn-rewards.js → stolas-staking.js} +6 -10
- package/dist/earning/stolas-staking.js.map +1 -0
- package/dist/earning/testnet-setup-migration.d.ts +1 -0
- package/dist/earning/testnet-setup-migration.js +7 -2
- package/dist/earning/testnet-setup-migration.js.map +1 -1
- package/dist/earning/types.d.ts +1 -1
- package/dist/earning/types.js +1 -1
- package/dist/earning/types.js.map +1 -1
- package/dist/earning/viem-clients.d.ts +3 -19
- package/dist/earning/viem-clients.js +4 -31
- package/dist/earning/viem-clients.js.map +1 -1
- package/dist/erc8004/addresses.d.ts +6 -5
- package/dist/erc8004/addresses.js +7 -5
- package/dist/erc8004/addresses.js.map +1 -1
- package/dist/erc8004/identity.d.ts +12 -1
- package/dist/erc8004/identity.js +31 -0
- package/dist/erc8004/identity.js.map +1 -1
- package/dist/erc8004/index.d.ts +1 -1
- package/dist/erc8004/index.js +1 -1
- package/dist/erc8004/index.js.map +1 -1
- package/dist/eval/capability-slate.d.ts +54 -0
- package/dist/eval/capability-slate.js +116 -0
- package/dist/eval/capability-slate.js.map +1 -0
- package/dist/eval/capability-stats.d.ts +39 -0
- package/dist/eval/capability-stats.js +123 -0
- package/dist/eval/capability-stats.js.map +1 -0
- package/dist/eval/contested-band.d.ts +18 -0
- package/dist/eval/contested-band.js +19 -0
- package/dist/eval/contested-band.js.map +1 -0
- package/dist/eval/corpus-index.d.ts +21 -0
- package/dist/eval/corpus-index.js +55 -0
- package/dist/eval/corpus-index.js.map +1 -0
- package/dist/eval/disjointness.d.ts +26 -0
- package/dist/eval/disjointness.js +67 -0
- package/dist/eval/disjointness.js.map +1 -0
- 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/mcnemar-power.d.ts +14 -0
- package/dist/eval/mcnemar-power.js +40 -0
- package/dist/eval/mcnemar-power.js.map +1 -0
- package/dist/eval/orchestrator.d.ts +224 -0
- package/dist/eval/orchestrator.js +250 -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 +1 -1
- package/dist/events/types.js +1 -1
- package/dist/events/types.js.map +1 -1
- package/dist/harnesses/auth-source.d.ts +51 -0
- package/dist/harnesses/auth-source.js +155 -0
- package/dist/harnesses/auth-source.js.map +1 -0
- 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 +34 -1
- package/dist/harnesses/engine/engine.js +91 -11
- package/dist/harnesses/engine/engine.js.map +1 -1
- package/dist/harnesses/engine/packaging.js +5 -5
- package/dist/harnesses/engine/packaging.js.map +1 -1
- package/dist/harnesses/engine/persistence.d.ts +19 -61
- package/dist/harnesses/engine/persistence.js +28 -0
- package/dist/harnesses/engine/persistence.js.map +1 -1
- package/dist/harnesses/impls/_evaluator-base.d.ts +48 -0
- package/dist/harnesses/impls/_evaluator-base.js +35 -0
- package/dist/harnesses/impls/_evaluator-base.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +1 -1
- package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js +1 -1
- package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/index.d.ts +2 -3
- package/dist/harnesses/impls/claude-mcp-prediction/index.js +29 -99
- package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js +4 -21
- package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.d.ts +2 -0
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js +30 -79
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js +4 -19
- package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +2 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.d.ts +39 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js +62 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server.d.ts +40 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js +44 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.d.ts +56 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js +79 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js.map +1 -0
- 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 +6 -1
- package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/harness.d.ts +25 -3
- package/dist/harnesses/impls/hermes-agent/harness.js +89 -5
- package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
- package/dist/harnesses/impls/index.d.ts +2 -0
- package/dist/harnesses/impls/index.js +10 -1
- package/dist/harnesses/impls/index.js.map +1 -1
- package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.d.ts +34 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js +111 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js.map +1 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.d.ts +24 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js +19 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js.map +1 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/harness.d.ts +64 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/harness.js +125 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/harness.js.map +1 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/repro.d.ts +32 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/repro.js +73 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/repro.js.map +1 -0
- package/dist/harnesses/impls/learner/adapters/claude-code.js +5 -0
- package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
- package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +11 -1
- package/dist/harnesses/impls/learner/adapters/codex-code.js +130 -15
- package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
- package/dist/harnesses/impls/learner/harness.d.ts +29 -1
- package/dist/harnesses/impls/learner/harness.js +85 -1
- package/dist/harnesses/impls/learner/harness.js.map +1 -1
- package/dist/harnesses/impls/learner/harvest.d.ts +2 -0
- package/dist/harnesses/impls/learner/harvest.js +51 -1
- 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/portfolio-v0-evaluator/index.d.ts +5 -15
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.js +10 -29
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -1
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.d.ts +5 -15
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +10 -23
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
- package/dist/harnesses/impls/prediction-v0-evaluator/index.d.ts +5 -15
- package/dist/harnesses/impls/prediction-v0-evaluator/index.js +10 -25
- package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -1
- package/dist/harnesses/impls/stub.d.ts +2 -2
- package/dist/harnesses/impls/stub.js +2 -2
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +8 -0
- 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/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 +16 -0
- package/dist/harnesses/readiness-registry.js +28 -6
- package/dist/harnesses/readiness-registry.js.map +1 -1
- package/dist/harnesses/types.d.ts +26 -0
- package/dist/learner/revert-decision.d.ts +16 -1
- package/dist/learner/revert-decision.js +38 -18
- package/dist/learner/revert-decision.js.map +1 -1
- package/dist/learner/revert-stats.d.ts +14 -0
- package/dist/learner/revert-stats.js +42 -0
- package/dist/learner/revert-stats.js.map +1 -1
- package/dist/learner/verification-gate.d.ts +53 -0
- package/dist/learner/verification-gate.js +80 -0
- package/dist/learner/verification-gate.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 +188 -566
- package/dist/main.js.map +1 -1
- package/dist/mcp/acquire-artifact.d.ts +3 -3
- package/dist/mcp/acquire-artifact.js +3 -3
- package/dist/mcp/operator-server.js +1 -1
- package/dist/mcp/operator-server.js.map +1 -1
- package/dist/mcp/server.js +5 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/monitoring/net-liveness.d.ts +143 -0
- package/dist/monitoring/net-liveness.js +301 -0
- package/dist/monitoring/net-liveness.js.map +1 -0
- package/dist/observability/emit-event.d.ts +1 -1
- package/dist/observability/emit-event.js +0 -4
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/observability/progress.d.ts +11 -0
- package/dist/observability/progress.js +16 -0
- package/dist/observability/progress.js.map +1 -0
- package/dist/pilot/cost.d.ts +19 -0
- package/dist/pilot/cost.js +31 -0
- package/dist/pilot/cost.js.map +1 -0
- package/dist/pilot/instance.d.ts +20 -0
- package/dist/pilot/instance.js +19 -0
- package/dist/pilot/instance.js.map +1 -0
- package/dist/pilot/repo.d.ts +31 -0
- package/dist/pilot/repo.js +42 -0
- package/dist/pilot/repo.js.map +1 -0
- package/dist/pilot/solve.d.ts +22 -0
- package/dist/pilot/solve.js +37 -0
- package/dist/pilot/solve.js.map +1 -0
- package/dist/pilot/tally.d.ts +35 -0
- package/dist/pilot/tally.js +61 -0
- package/dist/pilot/tally.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 +4 -0
- package/dist/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
- package/dist/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
- package/dist/plugins/local-trace-distiller/.mcp.json +8 -0
- package/dist/plugins/local-trace-distiller/README.md +27 -0
- package/dist/plugins/local-trace-distiller/jinn.plugin.json +36 -0
- package/dist/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
- package/dist/preflight/deployment-readiness.d.ts +127 -0
- package/dist/preflight/deployment-readiness.js +308 -0
- package/dist/preflight/deployment-readiness.js.map +1 -0
- package/dist/preflight/pidfile-liveness.d.ts +7 -1
- package/dist/preflight/pidfile-liveness.js +14 -0
- package/dist/preflight/pidfile-liveness.js.map +1 -1
- package/dist/preflight/rpc-network.d.ts +10 -3
- package/dist/preflight/rpc-network.js +46 -13
- package/dist/preflight/rpc-network.js.map +1 -1
- package/dist/preflight/stable-cwd.d.ts +29 -0
- package/dist/preflight/stable-cwd.js +98 -0
- package/dist/preflight/stable-cwd.js.map +1 -0
- package/dist/rpc/transport.d.ts +43 -5
- package/dist/rpc/transport.js +131 -30
- package/dist/rpc/transport.js.map +1 -1
- package/dist/scripts/swe-rebench-v2-seed-pool.json +2 -1
- package/dist/solver-nets/registry.d.ts +19 -0
- package/dist/solver-nets/registry.js +95 -66
- package/dist/solver-nets/registry.js.map +1 -1
- package/dist/solver-types/_jinn-repo-pool.d.ts +27 -0
- package/dist/solver-types/_jinn-repo-pool.js +27 -0
- package/dist/solver-types/_jinn-repo-pool.js.map +1 -0
- 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-state.d.ts +9 -0
- package/dist/solver-types/_swe-rebench-v2-state.js +14 -0
- package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +30 -0
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +40 -0
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
- package/dist/solver-types/index.js +2 -0
- package/dist/solver-types/index.js.map +1 -1
- package/dist/solver-types/jinn-repo-admit.d.ts +17 -0
- package/dist/solver-types/jinn-repo-admit.js +16 -0
- package/dist/solver-types/jinn-repo-admit.js.map +1 -0
- package/dist/solver-types/jinn-repo-auto.d.ts +60 -0
- package/dist/solver-types/jinn-repo-auto.js +163 -0
- package/dist/solver-types/jinn-repo-auto.js.map +1 -0
- package/dist/solver-types/jinn-repo-definition.d.ts +15 -0
- package/dist/solver-types/jinn-repo-definition.js +34 -0
- package/dist/solver-types/jinn-repo-definition.js.map +1 -0
- package/dist/solver-types/jinn-repo-extract.d.ts +16 -0
- package/dist/solver-types/jinn-repo-extract.js +32 -0
- package/dist/solver-types/jinn-repo-extract.js.map +1 -0
- package/dist/solver-types/jinn-repo.d.ts +21 -0
- package/dist/solver-types/jinn-repo.js +23 -0
- package/dist/solver-types/jinn-repo.js.map +1 -0
- package/dist/solver-types/learner-loop-test.js +1 -1
- package/dist/solver-types/learner-loop-test.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.d.ts +2 -0
- package/dist/solver-types/swe-rebench-v2.js +115 -10
- package/dist/solver-types/swe-rebench-v2.js.map +1 -1
- package/dist/solvernets/launched-record-dispatcher.d.ts +5 -0
- package/dist/solvernets/launched-record-dispatcher.js +14 -1
- package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
- package/dist/solvernets/registry-client-erc8004.js +29 -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 +1 -1
- package/dist/solvernets/store.js +8 -3
- package/dist/solvernets/store.js.map +1 -1
- package/dist/spend/ai-units-config.d.ts +10 -0
- package/dist/spend/ai-units-config.js +7 -1
- package/dist/spend/ai-units-config.js.map +1 -1
- package/dist/spend/ai-units.d.ts +51 -0
- package/dist/spend/ai-units.js +73 -0
- package/dist/spend/ai-units.js.map +1 -1
- package/dist/spend/credential.d.ts +2 -2
- package/dist/spend/credential.js +9 -3
- package/dist/spend/credential.js.map +1 -1
- package/dist/spend/record.js +12 -5
- package/dist/spend/record.js.map +1 -1
- package/dist/spend/spend-cap.d.ts +10 -0
- package/dist/spend/spend-cap.js +13 -0
- package/dist/spend/spend-cap.js.map +1 -0
- package/dist/spend/usage.js +39 -3
- package/dist/spend/usage.js.map +1 -1
- package/dist/store/store.d.ts +106 -5
- package/dist/store/store.js +194 -8
- package/dist/store/store.js.map +1 -1
- package/dist/trajectory/emit.d.ts +6 -0
- package/dist/trajectory/emit.js +9 -1
- package/dist/trajectory/emit.js.map +1 -1
- package/dist/trajectory/harness-bundle-schema.d.ts +1 -1
- package/dist/trajectory/harness-bundle-schema.js +1 -1
- package/dist/trajectory/harness-bundle-schema.js.map +1 -1
- package/dist/trajectory/processors/identity-scrub.js +22 -3
- package/dist/trajectory/processors/identity-scrub.js.map +1 -1
- package/dist/trajectory/schema.d.ts +1 -1
- package/dist/trajectory/schema.js +1 -1
- package/dist/trajectory/schema.js.map +1 -1
- package/dist/trajectory/scrub/build.d.ts +46 -0
- package/dist/trajectory/scrub/build.js +76 -0
- package/dist/trajectory/scrub/build.js.map +1 -0
- package/dist/trajectory/scrub/emit-scrub.d.ts +41 -0
- package/dist/trajectory/scrub/emit-scrub.js +88 -0
- package/dist/trajectory/scrub/emit-scrub.js.map +1 -0
- package/dist/trajectory/scrub/key-policy.d.ts +20 -0
- package/dist/trajectory/scrub/key-policy.js +43 -0
- package/dist/trajectory/scrub/key-policy.js.map +1 -0
- package/dist/trajectory/scrub/layer2.d.ts +23 -0
- package/dist/trajectory/scrub/layer2.js +33 -0
- package/dist/trajectory/scrub/layer2.js.map +1 -0
- package/dist/trajectory/scrub/ml-pii-stage.d.ts +24 -0
- package/dist/trajectory/scrub/ml-pii-stage.js +43 -0
- package/dist/trajectory/scrub/ml-pii-stage.js.map +1 -0
- package/dist/trajectory/scrub/openredaction-stage.d.ts +178 -0
- package/dist/trajectory/scrub/openredaction-stage.js +269 -0
- package/dist/trajectory/scrub/openredaction-stage.js.map +1 -0
- package/dist/trajectory/scrub/pii-build.d.ts +31 -0
- package/dist/trajectory/scrub/pii-build.js +64 -0
- package/dist/trajectory/scrub/pii-build.js.map +1 -0
- package/dist/trajectory/scrub/pipeline.d.ts +37 -0
- package/dist/trajectory/scrub/pipeline.js +83 -0
- package/dist/trajectory/scrub/pipeline.js.map +1 -0
- package/dist/trajectory/scrub/plain-patterns-stage.d.ts +31 -0
- package/dist/trajectory/scrub/plain-patterns-stage.js +85 -0
- package/dist/trajectory/scrub/plain-patterns-stage.js.map +1 -0
- package/dist/trajectory/scrub/secretlint-stage.d.ts +35 -0
- package/dist/trajectory/scrub/secretlint-stage.js +250 -0
- package/dist/trajectory/scrub/secretlint-stage.js.map +1 -0
- package/dist/trajectory/scrub/transformers-detector.d.ts +35 -0
- package/dist/trajectory/scrub/transformers-detector.js +68 -0
- package/dist/trajectory/scrub/transformers-detector.js.map +1 -0
- package/dist/trajectory/scrub/types.d.ts +25 -0
- package/dist/trajectory/scrub/types.js +2 -0
- package/dist/trajectory/scrub/types.js.map +1 -0
- package/dist/trajectory/transcript-parsers/types.d.ts +1 -1
- package/dist/trajectory/transcript-parsers/types.js +1 -1
- package/dist/trajectory/transcript-parsers/types.js.map +1 -1
- package/dist/trajectory/transcript-watcher.d.ts +26 -0
- package/dist/trajectory/transcript-watcher.js +33 -0
- package/dist/trajectory/transcript-watcher.js.map +1 -1
- package/dist/tx-retry.d.ts +12 -0
- package/dist/tx-retry.js +41 -12
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/envelope.d.ts +1 -1
- package/dist/types/envelope.js +1 -1
- package/dist/types/envelope.js.map +1 -1
- package/dist/types/payloads/index.d.ts +1 -1
- package/dist/types/payloads/index.js +7 -1
- package/dist/types/payloads/index.js.map +1 -1
- package/dist/types/payloads/portfolio-v0.d.ts +1 -1
- package/dist/types/payloads/portfolio-v0.js +1 -1
- package/dist/types/payloads/portfolio-v0.js.map +1 -1
- package/dist/types/payloads/prediction-apy-v0.d.ts +1 -1
- package/dist/types/payloads/prediction-apy-v0.js +1 -1
- package/dist/types/payloads/prediction-apy-v0.js.map +1 -1
- package/dist/types/payloads/prediction-v0.d.ts +1 -1
- package/dist/types/payloads/prediction-v0.js +1 -1
- package/dist/types/payloads/prediction-v0.js.map +1 -1
- package/dist/types/portfolio.d.ts +1 -1
- package/dist/types/portfolio.js +1 -1
- package/dist/types/portfolio.js.map +1 -1
- package/dist/types/prediction-apy.d.ts +1 -1
- package/dist/types/prediction-apy.js +1 -1
- package/dist/types/prediction-apy.js.map +1 -1
- package/dist/types/prediction.d.ts +1 -1
- package/dist/types/prediction.js +1 -1
- package/dist/types/prediction.js.map +1 -1
- package/dist/types/session-provenance.d.ts +1 -1
- package/dist/types/session-provenance.js +1 -1
- package/dist/types/session-provenance.js.map +1 -1
- package/dist/types/skill-artifact.d.ts +442 -0
- package/dist/types/skill-artifact.js +137 -0
- package/dist/types/skill-artifact.js.map +1 -0
- package/dist/types/task-document.d.ts +315 -1
- package/dist/types/task-document.js +9 -1
- package/dist/types/task-document.js.map +1 -1
- package/dist/types/task-run-read-model.d.ts +21 -0
- package/dist/types/task-run-read-model.js +2 -0
- package/dist/types/task-run-read-model.js.map +1 -0
- package/dist/types/task-run.d.ts +75 -0
- package/dist/types/task-run.js +2 -0
- package/dist/types/task-run.js.map +1 -0
- package/dist/types/task.d.ts +29 -1
- package/dist/types/task.js +1 -1
- package/dist/types/task.js.map +1 -1
- package/dist/types/window.d.ts +1 -1
- package/dist/types/window.js +1 -1
- package/dist/types/window.js.map +1 -1
- package/dist/util/redact-rpc-urls.d.ts +1 -1
- package/dist/util/redact-rpc-urls.js +57 -2
- package/dist/util/redact-rpc-urls.js.map +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +3 -2
- package/dist/vendor/@jinn-network/sdk/dist/contracts.js +49 -0
- package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.d.ts +44 -0
- package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.js +25 -0
- package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.d.ts +38 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.js +22 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +109 -2
- package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +26 -2
- package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.d.ts +4 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.js +2 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -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/dist/swe-rebench-v2.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +1 -1
- package/dist/vendor/@jinn-network/sdk/package.json +9 -1
- package/docker-compose.yml +3 -2
- package/package.json +43 -28
- package/plugins/jinn-repo-runtime/.claude-plugin/plugin.json +5 -0
- package/plugins/jinn-repo-runtime/.codex-plugin/plugin.json +39 -0
- package/plugins/jinn-repo-runtime/README.md +27 -0
- package/plugins/jinn-repo-runtime/hooks/hooks.json +16 -0
- package/plugins/jinn-repo-runtime/hooks/session-start +73 -0
- package/plugins/jinn-repo-runtime/jinn.plugin.json +11 -0
- package/plugins/jinn-repo-runtime/skills/task/SKILL.md +92 -0
- 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 +4 -0
- package/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
- package/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
- package/plugins/local-trace-distiller/.mcp.json +8 -0
- package/plugins/local-trace-distiller/README.md +27 -0
- package/plugins/local-trace-distiller/jinn.plugin.json +36 -0
- package/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
- package/plugins/swe-rebench-v2-runtime/hooks/hooks.json +16 -0
- package/plugins/swe-rebench-v2-runtime/hooks/session-start +74 -0
- package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +0 -55
- package/deployments/deployment-jinn-mvi-l1-sepolia.json +0 -55
- package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +0 -13
- package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +0 -15
- package/dist/api/peers.js.map +0 -1
- package/dist/daemon/jinn-claim-loop-canonical.d.ts +0 -207
- package/dist/daemon/jinn-claim-loop-canonical.js +0 -296
- package/dist/daemon/jinn-claim-loop-canonical.js.map +0 -1
- package/dist/daemon/jinn-claim-loop-mock.d.ts +0 -61
- package/dist/daemon/jinn-claim-loop-mock.js +0 -122
- package/dist/daemon/jinn-claim-loop-mock.js.map +0 -1
- package/dist/daemon/jinn-claim-loop-wiring.d.ts +0 -33
- package/dist/daemon/jinn-claim-loop-wiring.js +0 -40
- package/dist/daemon/jinn-claim-loop-wiring.js.map +0 -1
- package/dist/daemon/jinn-claim-loop.d.ts +0 -130
- package/dist/daemon/jinn-claim-loop.js +0 -328
- package/dist/daemon/jinn-claim-loop.js.map +0 -1
- package/dist/dashboard/assets/index-CzKxvMcU.css +0 -32
- package/dist/dashboard/assets/index-yVemxHot.js +0 -351
- package/dist/earning/jinn-rewards.js.map +0 -1
- package/dist/scripts/donation-consumption-acceptance.d.ts +0 -85
- package/dist/scripts/donation-consumption-acceptance.js +0 -1382
- package/dist/scripts/donation-consumption-acceptance.js.map +0 -1
- package/dist/x402/acquire.d.ts +0 -17
- package/dist/x402/acquire.js +0 -49
- package/dist/x402/acquire.js.map +0 -1
- package/dist/x402/facilitator.d.ts +0 -11
- package/dist/x402/facilitator.js +0 -52
- package/dist/x402/facilitator.js.map +0 -1
- package/dist/x402/handler.d.ts +0 -27
- package/dist/x402/handler.js +0 -236
- package/dist/x402/handler.js.map +0 -1
- /package/dist/{api/peers.d.ts → daemon/peer-sync.d.ts} +0 -0
package/CONTRIBUTING.md
CHANGED
|
@@ -74,7 +74,7 @@ The `files` field in `package.json` ensures only `dist/`, `deployments/`, `READM
|
|
|
74
74
|
|
|
75
75
|
## Releases
|
|
76
76
|
|
|
77
|
-
Use [RELEASING.md](./RELEASING.md) for the package bootstrap publish, npm trusted-publishing setup, canary/stable release flow, the fork-based operator gate (`yarn release:operator-gate`), the
|
|
77
|
+
Use [RELEASING.md](./RELEASING.md) for the package bootstrap publish, npm trusted-publishing setup, canary/stable release flow, the fork-based operator gate (`yarn release:operator-gate`), the OLAS rails smoke gate (`yarn release:olas-rails-smoke`), the contracts release gate (`cd ../contracts && yarn test && forge install foundry-rs/forge-std --no-git && forge test --match-contract Invariant`), and the manual Docker-first real testnet acceptance gate (`yarn release:testnet-acceptance`) that must pass on the exact stable release commit. The dedicated Docker acceptance environment and evidence expectations are documented in [TESTNET_ACCEPTANCE.md](./TESTNET_ACCEPTANCE.md).
|
|
78
78
|
|
|
79
79
|
## Updating deployment artifacts
|
|
80
80
|
|
|
@@ -98,7 +98,7 @@ This copies the 4 deployment JSON files from `contracts/` into `client/deploymen
|
|
|
98
98
|
| `yarn staking` | Earning bootstrap validation on Anvil fork |
|
|
99
99
|
| `yarn pack:smoke` | Pack tarball and run smoke tests |
|
|
100
100
|
| `yarn release:operator-gate` | Run the stable-release operator gate (`staking` then `e2e`) |
|
|
101
|
-
| `yarn release:
|
|
101
|
+
| `yarn release:olas-rails-smoke` | Dry-run by default: writes a prediction.v1 smoke spec and evidence plan; pass `--execute` for live Base Sepolia OLAS rails proof |
|
|
102
102
|
| `cd ../contracts && yarn test && forge install foundry-rs/forge-std --no-git && forge test --match-contract Invariant` | Run the contracts release gate |
|
|
103
103
|
| `yarn release:testnet-acceptance` | Run the manual Docker-first real testnet acceptance harness |
|
|
104
104
|
| `yarn setup:testnet-acceptance-operator` | First-time Docker acceptance setup + bootstrap/funding helper (`TESTNET_ACCEPTANCE.md`) |
|
package/README.md
CHANGED
|
@@ -184,6 +184,12 @@ returns `waiting_for_external_action` with the URL and the exact command to
|
|
|
184
184
|
rerun next. Agents with the `jinn-operator` skill installed know how to walk an
|
|
185
185
|
operator through a SolverNet automatically.
|
|
186
186
|
|
|
187
|
+
Each Harness reads its **own** auth store (the daemon only forwards an
|
|
188
|
+
allowlisted set of env vars — it does not hold your provider keys). For the
|
|
189
|
+
per-harness auth store, the canonical rotate command/file, and why `client/.env`
|
|
190
|
+
must not be used to set provider keys at runtime, see
|
|
191
|
+
[`docs/operator/rotating-harness-keys.md`](../docs/operator/rotating-harness-keys.md).
|
|
192
|
+
|
|
187
193
|
**Safety net:** before spending gas on a claim, the daemon checks whether the
|
|
188
194
|
responsible Harness is actually ready. If a portfolio.v0 request arrives and your
|
|
189
195
|
api-wallet isn't approved, the daemon records the Task as FAILED locally
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"network": "baseSepolia",
|
|
3
3
|
"chainId": 84532,
|
|
4
4
|
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
5
|
-
"deployedAt": "2026-
|
|
5
|
+
"deployedAt": "2026-06-30T16:18:56.618Z",
|
|
6
6
|
"config": {
|
|
7
7
|
"timingProfile": "fast-test",
|
|
8
8
|
"fee": 0,
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"mechMarketplace": "0xD3233FdAaB51E9775f6bFCE8242B02C181D7c0e7",
|
|
19
19
|
"balanceTracker": "0xDbeEF1947F7BB3657f984aA6b230a0ca6578229D",
|
|
20
20
|
"mechFactory": "0x206183F35B2450Ca15A906BB923E74d945F78d67",
|
|
21
|
-
"jinnRouter": "
|
|
21
|
+
"jinnRouter": "0x6059Dd37eB0FD3a55BCe7A3C1fA86AB84F2d9675",
|
|
22
22
|
"serviceRegistry": "0x31D3202d8744B16A120117A053459DDFAE93c855",
|
|
23
23
|
"activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
|
|
24
|
-
"stakingToken": "
|
|
24
|
+
"stakingToken": "0x4DB0Fcb877CCd92B6AeEdAaD561DaccB0CCc7E39"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"network": "baseSepolia",
|
|
3
3
|
"chainId": 84532,
|
|
4
4
|
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
5
|
-
"deployedAt": "2026-
|
|
5
|
+
"deployedAt": "2026-06-30T16:18:56.618Z",
|
|
6
6
|
"config": {
|
|
7
7
|
"l2Jinn": "0xAB9a01cd4A379e36006ec6df2960CF39EF79df63",
|
|
8
|
-
"stakingContract": "
|
|
8
|
+
"stakingContract": "0x4DB0Fcb877CCd92B6AeEdAaD561DaccB0CCc7E39",
|
|
9
9
|
"l1DepositProcessor": "0x494FBcd686C895fD6265e852086B53Abf15cb076",
|
|
10
10
|
"l1DistributorProxy": "0x12F14eF5b4881a932BE3F334599cB9473aBE987A",
|
|
11
11
|
"l1TreasuryProxy": "0xa87c117cB54d9C6C8a8e0aA0b336a1125E485Cb7",
|
|
@@ -31,5 +31,25 @@
|
|
|
31
31
|
"stakingManagerImpl": "0xFb0B086D3f7C03f1F671C6ccD5D16CC779B25Af9",
|
|
32
32
|
"stakingManager": "0x5edCd012C581b946E06a74e1906a5f29D588403e",
|
|
33
33
|
"baseStakingProcessorL2": "0x23a063f600e9938405D0367a137f1bE2F0B4D0D2"
|
|
34
|
-
}
|
|
34
|
+
},
|
|
35
|
+
"rewires": [
|
|
36
|
+
{
|
|
37
|
+
"rewiredAt": "2026-06-29T14:53:46.226Z",
|
|
38
|
+
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
39
|
+
"legacyStakingProxy": "0xf358b5c1ac4ddc4e807b5baf008826bf193eab3b",
|
|
40
|
+
"freshStakingProxy": "0x3A14c71e94F3d38A6BE4319808B259FbFb47B86f",
|
|
41
|
+
"activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
|
|
42
|
+
"packedConfig": "2199023257600001",
|
|
43
|
+
"fundWei": "100000000000000000000"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"rewiredAt": "2026-06-30T16:18:56.618Z",
|
|
47
|
+
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
48
|
+
"legacyStakingProxy": "0x3A14c71e94F3d38A6BE4319808B259FbFb47B86f",
|
|
49
|
+
"freshStakingProxy": "0x4DB0Fcb877CCd92B6AeEdAaD561DaccB0CCc7E39",
|
|
50
|
+
"activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
|
|
51
|
+
"packedConfig": "2199023257600001",
|
|
52
|
+
"fundWei": "100000000000000000000"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
35
55
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"chainId": 84532,
|
|
4
4
|
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
5
5
|
"owner": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
6
|
-
"deployedAt": "2026-
|
|
6
|
+
"deployedAt": "2026-06-29T14:52:46.003Z",
|
|
7
7
|
"config": {
|
|
8
8
|
"timingProfile": "fast-test",
|
|
9
9
|
"mechMarketplaceSource": "deployment-phase1b-mech-baseSepolia-fast.json",
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
"coordinatorInitialOwner": "0x15e78734481bD31F6e183dad05225505a45ACd07"
|
|
12
12
|
},
|
|
13
13
|
"contracts": {
|
|
14
|
-
"taskCoordinatorImpl": "
|
|
15
|
-
"taskCoordinator": "
|
|
16
|
-
"jinnRouterV3Impl": "
|
|
17
|
-
"jinnRouterV3": "
|
|
14
|
+
"taskCoordinatorImpl": "0xC756D4A5b7a6a7C2F74Fa4Ce4fd84E7b82D223ca",
|
|
15
|
+
"taskCoordinator": "0x8a34793e10595c89B7e41Cc7Ff0F76850F44AD98",
|
|
16
|
+
"jinnRouterV3Impl": "0x2521e932B2508B2589cCc35F8cfB8B29f0e086D5",
|
|
17
|
+
"jinnRouterV3": "0x6f47863Ac4120A5a97Af224a5e30C3Ec2c9eA247",
|
|
18
18
|
"mechMarketplace": "0xD3233FdAaB51E9775f6bFCE8242B02C181D7c0e7",
|
|
19
19
|
"activityChecker": "0x0e1B5f264F4FAdcFAA950fb00c58d9A39C040f70",
|
|
20
|
-
"activityCheckerImpl": "
|
|
20
|
+
"activityCheckerImpl": "0x3f061273348264b2a1Ae584eCC614185748832a8"
|
|
21
21
|
},
|
|
22
22
|
"upgrades": [
|
|
23
23
|
{
|
|
@@ -33,6 +33,34 @@
|
|
|
33
33
|
"jinnRouterV3Impl": "0x5f3E1e26Fd26b7A6BE4171976e555d62Bd3dcFC0",
|
|
34
34
|
"activityCheckerImpl": "0x9e573CFbbc52729528199005A9F3d274FE7052C4"
|
|
35
35
|
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"upgradedAt": "2026-05-06T13:41:14.651Z",
|
|
39
|
+
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
40
|
+
"previous": {
|
|
41
|
+
"taskCoordinatorImpl": "0x830bFdBdA48D599e414c51888c8CDA6c84e67B18",
|
|
42
|
+
"jinnRouterV3Impl": "0x5f3E1e26Fd26b7A6BE4171976e555d62Bd3dcFC0",
|
|
43
|
+
"activityCheckerImpl": "0x9e573CFbbc52729528199005A9F3d274FE7052C4"
|
|
44
|
+
},
|
|
45
|
+
"current": {
|
|
46
|
+
"taskCoordinatorImpl": "0x047C9d27acD5cd860398389f48b87d42BEaCd8fd",
|
|
47
|
+
"jinnRouterV3Impl": "0xDb713EB5F1827C5764e7B0E4c7d8951BeD2ba0ee",
|
|
48
|
+
"activityCheckerImpl": "0x84E0302460Ab11B2169a2D00336C049Ab650a4aC"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"upgradedAt": "2026-06-29T14:52:46.003Z",
|
|
53
|
+
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
54
|
+
"previous": {
|
|
55
|
+
"taskCoordinatorImpl": "0x047C9d27acD5cd860398389f48b87d42BEaCd8fd",
|
|
56
|
+
"jinnRouterV3Impl": "0xDb713EB5F1827C5764e7B0E4c7d8951BeD2ba0ee",
|
|
57
|
+
"activityCheckerImpl": "0x84E0302460Ab11B2169a2D00336C049Ab650a4aC"
|
|
58
|
+
},
|
|
59
|
+
"current": {
|
|
60
|
+
"taskCoordinatorImpl": "0x69f857b222D970460202e9C94c6205Be87582610",
|
|
61
|
+
"jinnRouterV3Impl": "0x7c1F768E92c7Fd84e789CB7748B70340B876E25d",
|
|
62
|
+
"activityCheckerImpl": "0x916027798716518a601824ea1A6f09105a152C36"
|
|
63
|
+
}
|
|
36
64
|
}
|
|
37
65
|
]
|
|
38
66
|
}
|
|
@@ -52,7 +52,26 @@ export declare class MechAdapter implements ExecutionAdapter {
|
|
|
52
52
|
constructor(config: MechAdapterConfig, store?: Store);
|
|
53
53
|
initialize(): Promise<void>;
|
|
54
54
|
private recoverPendingState;
|
|
55
|
-
|
|
55
|
+
/**
|
|
56
|
+
* The gh #300 scorability admission floor: tasks created before this block are
|
|
57
|
+
* "ghosts" from a prior eval-semantics regime and are rejected — including on
|
|
58
|
+
* the `DiscoveryAPI` (indexer) path. Fixed per chain; an explicit operator
|
|
59
|
+
* `onchainFromBlock` raises it. Returns `undefined` when no SolverNet is joined
|
|
60
|
+
* (the daemon claims nothing, so there is no floor to apply).
|
|
61
|
+
*
|
|
62
|
+
* This is deliberately NOT the on-chain scan start — see `onchainScanFromBlock`.
|
|
63
|
+
* Bounding the scan for RPC cost must never narrow which tasks are admitted.
|
|
64
|
+
*/
|
|
65
|
+
private taskAdmissionFloorBlock;
|
|
66
|
+
/**
|
|
67
|
+
* Start block for the on-chain TaskCreated backlog scan (the secondary backstop
|
|
68
|
+
* behind `DiscoveryAPI.findClaimableTasks`). Defaults to a bounded rolling
|
|
69
|
+
* window `head − DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS`, never below the admission
|
|
70
|
+
* floor (scanning pre-floor blocks only surfaces rejected ghosts). An explicit
|
|
71
|
+
* `onchainFromBlock` override pins an absolute start, honored as the operator's
|
|
72
|
+
* choice. Returns `undefined` when no SolverNet is joined.
|
|
73
|
+
*/
|
|
74
|
+
private onchainScanFromBlock;
|
|
56
75
|
private joinedManifestDigestSet;
|
|
57
76
|
private allowedDiscoveryTaskIds;
|
|
58
77
|
private isDiscoveryTaskAllowed;
|
|
@@ -89,6 +108,16 @@ export declare class MechAdapter implements ExecutionAdapter {
|
|
|
89
108
|
private buildEvaluationTask;
|
|
90
109
|
private restorationAnnouncementForTaskId;
|
|
91
110
|
private restorationAnnouncementFromDigest;
|
|
111
|
+
/**
|
|
112
|
+
* #1412: a task's execution window (task.window.endTs) is only known after
|
|
113
|
+
* IPFS hydration, not from any on-chain/discovery candidate shape. The
|
|
114
|
+
* engine kills the harness subprocess the instant this window is in the
|
|
115
|
+
* past (engine.ts: setTimeout(abort, max(0, endTs - now)) fires at 0ms), so
|
|
116
|
+
* claiming an already-expired task always fails with no chance of a real
|
|
117
|
+
* solve. Both discovery paths (DiscoveryAPI and the on-chain TaskCreated
|
|
118
|
+
* backlog scan) must skip these before spending a claim tx on a doomed run.
|
|
119
|
+
*/
|
|
120
|
+
private hasExpiredExecutionWindow;
|
|
92
121
|
private discoverSubgraphRestorationTasks;
|
|
93
122
|
/**
|
|
94
123
|
* Look up the Deliver-event envelope CID for a pending evaluation solution.
|
|
@@ -118,6 +147,7 @@ export declare class MechAdapter implements ExecutionAdapter {
|
|
|
118
147
|
submitSolutionDelivery(requestId: RequestId, solutionDigest: Hex): Promise<void>;
|
|
119
148
|
submitVerdictDelivery(requestId: RequestId, verdictDigest: Hex, verdictCode: VerdictCode): Promise<void>;
|
|
120
149
|
private deliveryClaimForDelivery;
|
|
150
|
+
private verdictCodeFromEnvelopePayload;
|
|
121
151
|
private ensureDeliveryClaimed;
|
|
122
152
|
/**
|
|
123
153
|
* Paginate `getLogs` over `[deliveryBlockCursor+1, currentBlock]` chunked by
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getAddress
|
|
1
|
+
import { getAddress } from 'viem';
|
|
2
2
|
import { keccak256, toBytes } from 'viem';
|
|
3
3
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
4
4
|
import { base, baseSepolia } from 'viem/chains';
|
|
@@ -16,10 +16,11 @@ function rpcUrlForDisplay(rpcUrl) {
|
|
|
16
16
|
import { buildResultPayload, uploadToIpfs, cidToDigestHex, fetchFromIpfs, fetchSignedTaskFromIpfs, fetchSignedEnvelopeFromIpfs, } from './ipfs.js';
|
|
17
17
|
import { canonicalJson } from '../../harnesses/engine/canonical-json.js';
|
|
18
18
|
import { normalizeEnvelopeRole, SignedEnvelopeSchema } from '../../types/envelope.js';
|
|
19
|
-
import { submitTask, claimTask as claimTaskOnchain, claimEvaluation as claimEvaluationOnchain, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeTaskCreatedLogs, decodeSolutionDeliveryClaimedLogs, decodeDeliverLogs, findLatestDeliveryDataHexForRequest, getMarketplaceRequestDeliveryMech, getTaskCidDigest, callDeliverToMarketplace, canClaimTask, canClaimEvaluation, } from './contracts.js';
|
|
19
|
+
import { submitTask, claimTask as claimTaskOnchain, claimEvaluation as claimEvaluationOnchain, claimDelivery, getMechDeliveryRate, getTimeoutBounds, decodeTaskCreatedLogs, decodeSolutionDeliveryClaimedLogs, decodeDeliverLogs, ROUTER_DISCOVERY_EVENTS, MECH_DELIVER_EVENT, findLatestDeliveryDataHexForRequest, getMarketplaceRequestDeliveryMech, getTaskCidDigest, callDeliverToMarketplace, canClaimTask, canClaimEvaluation, } from './contracts.js';
|
|
20
20
|
import { SafeInnerRevertError, formatDecodedRevert, isNonRecoverableInnerRevert, } from './safe-revert.js';
|
|
21
|
-
import { verdictCodeFromValue } from './verdict-code.js';
|
|
21
|
+
import { VerdictCode, verdictCodeFromValue } from './verdict-code.js';
|
|
22
22
|
import { manifestDigestForCid } from './digest.js';
|
|
23
|
+
import { recordLoopTick } from '../../daemon/loop-heartbeat.js';
|
|
23
24
|
import { emitStructured } from '../../events/emitter.js';
|
|
24
25
|
import { withRecoverableRetry } from '../../tx-retry.js';
|
|
25
26
|
import { formatRpcError } from '../../rpc-error-context.js';
|
|
@@ -64,6 +65,20 @@ function isTerminalEvaluationReason(revertName) {
|
|
|
64
65
|
return isNonRecoverableInnerRevert(revertName);
|
|
65
66
|
}
|
|
66
67
|
const DEFAULT_ROUTER_LOG_CHUNK_BLOCKS = 9999n;
|
|
68
|
+
/**
|
|
69
|
+
* Default rolling-window size for the on-chain TaskCreated backlog scan (#801).
|
|
70
|
+
*
|
|
71
|
+
* The scan is a *backstop* behind `DiscoveryAPI.findClaimableTasks` (the indexer
|
|
72
|
+
* on testnet, the newest-first RPC floor on mainnet), which is the primary
|
|
73
|
+
* discovery path on every chain. Without a bound the scan replays from the fixed
|
|
74
|
+
* admission floor to head on *every* restart, a range that grows monotonically
|
|
75
|
+
* with the chain — the startup-stall regression #801 documents. Bounding it to
|
|
76
|
+
* `head − N` makes restart cost fixed regardless of chain age while still
|
|
77
|
+
* re-observing a generous recent window (~28h on Base at ~2s/block) for tasks
|
|
78
|
+
* and SolutionDeliveryClaimed events the indexer might have lagged on. Operators
|
|
79
|
+
* who want a wider net pin an absolute start via `taskDiscoveryOnchainFromBlock`.
|
|
80
|
+
*/
|
|
81
|
+
const DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS = 50000n;
|
|
67
82
|
/**
|
|
68
83
|
* Floor block for the on-chain TaskCreated backlog scan, per chain.
|
|
69
84
|
*
|
|
@@ -173,7 +188,7 @@ export class MechAdapter {
|
|
|
173
188
|
await this.recoverPendingState(blockNumber);
|
|
174
189
|
}
|
|
175
190
|
else {
|
|
176
|
-
const fromBlock = this.
|
|
191
|
+
const fromBlock = this.onchainScanFromBlock(blockNumber);
|
|
177
192
|
if (fromBlock && fromBlock <= blockNumber) {
|
|
178
193
|
this.requestBlockCursor = fromBlock - 1n;
|
|
179
194
|
}
|
|
@@ -193,17 +208,27 @@ export class MechAdapter {
|
|
|
193
208
|
if (routerFromBlock < currentBlock) {
|
|
194
209
|
this.requestBlockCursor = routerFromBlock;
|
|
195
210
|
}
|
|
196
|
-
const scanFromBlock = this.
|
|
211
|
+
const scanFromBlock = this.onchainScanFromBlock(currentBlock);
|
|
197
212
|
if (scanFromBlock && scanFromBlock <= currentBlock) {
|
|
198
213
|
const canonicalCursor = scanFromBlock - 1n;
|
|
199
214
|
if (canonicalCursor < this.requestBlockCursor) {
|
|
200
215
|
this.requestBlockCursor = canonicalCursor;
|
|
201
216
|
}
|
|
202
|
-
console.error(`[mech] TaskCreated
|
|
203
|
-
'
|
|
217
|
+
console.error(`[mech] TaskCreated backlog scan (bounded backstop) enabled from block ${scanFromBlock}; ` +
|
|
218
|
+
'DiscoveryAPI.findClaimableTasks is the primary discovery path');
|
|
204
219
|
}
|
|
205
220
|
}
|
|
206
|
-
|
|
221
|
+
/**
|
|
222
|
+
* The gh #300 scorability admission floor: tasks created before this block are
|
|
223
|
+
* "ghosts" from a prior eval-semantics regime and are rejected — including on
|
|
224
|
+
* the `DiscoveryAPI` (indexer) path. Fixed per chain; an explicit operator
|
|
225
|
+
* `onchainFromBlock` raises it. Returns `undefined` when no SolverNet is joined
|
|
226
|
+
* (the daemon claims nothing, so there is no floor to apply).
|
|
227
|
+
*
|
|
228
|
+
* This is deliberately NOT the on-chain scan start — see `onchainScanFromBlock`.
|
|
229
|
+
* Bounding the scan for RPC cost must never narrow which tasks are admitted.
|
|
230
|
+
*/
|
|
231
|
+
taskAdmissionFloorBlock() {
|
|
207
232
|
const discovery = this.config.taskDiscovery;
|
|
208
233
|
const hasJoinedSolverNet = (discovery?.solverNetManifestCids?.length ?? 0) > 0;
|
|
209
234
|
if (!hasJoinedSolverNet)
|
|
@@ -215,6 +240,24 @@ export class MechAdapter {
|
|
|
215
240
|
}
|
|
216
241
|
return DEFAULT_TASK_DISCOVERY_FROM_BLOCK[this.config.chainId];
|
|
217
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Start block for the on-chain TaskCreated backlog scan (the secondary backstop
|
|
245
|
+
* behind `DiscoveryAPI.findClaimableTasks`). Defaults to a bounded rolling
|
|
246
|
+
* window `head − DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS`, never below the admission
|
|
247
|
+
* floor (scanning pre-floor blocks only surfaces rejected ghosts). An explicit
|
|
248
|
+
* `onchainFromBlock` override pins an absolute start, honored as the operator's
|
|
249
|
+
* choice. Returns `undefined` when no SolverNet is joined.
|
|
250
|
+
*/
|
|
251
|
+
onchainScanFromBlock(head) {
|
|
252
|
+
const floor = this.taskAdmissionFloorBlock();
|
|
253
|
+
if (floor === undefined)
|
|
254
|
+
return undefined;
|
|
255
|
+
// An explicit override is reflected verbatim in `floor`; honor it as the pin.
|
|
256
|
+
if (this.config.taskDiscovery?.onchainFromBlock !== undefined)
|
|
257
|
+
return floor;
|
|
258
|
+
const window = head - DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS;
|
|
259
|
+
return window > floor ? window : floor;
|
|
260
|
+
}
|
|
218
261
|
joinedManifestDigestSet() {
|
|
219
262
|
const cids = this.config.taskDiscovery?.solverNetManifestCids ?? [];
|
|
220
263
|
return new Set(cids
|
|
@@ -236,8 +279,13 @@ export class MechAdapter {
|
|
|
236
279
|
const end = start + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS > toBlock
|
|
237
280
|
? toBlock
|
|
238
281
|
: start + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS;
|
|
282
|
+
// #116: filter server-side to the two router events the poll loop decodes
|
|
283
|
+
// (TaskCreated + SolutionDeliveryClaimed) via an OR-of-topic0, instead of an
|
|
284
|
+
// address-only scan that decode-discards the rest. Chunking is unchanged —
|
|
285
|
+
// a topic filter shrinks the result set, not the permitted block range.
|
|
239
286
|
logs.push(...await this.publicClient.getLogs({
|
|
240
287
|
address: this.config.routerAddress,
|
|
288
|
+
events: ROUTER_DISCOVERY_EVENTS,
|
|
241
289
|
fromBlock: start,
|
|
242
290
|
toBlock: end,
|
|
243
291
|
}));
|
|
@@ -481,45 +529,25 @@ export class MechAdapter {
|
|
|
481
529
|
return signTaskV1(taskDoc, this.config.agentEoaPrivateKey);
|
|
482
530
|
}
|
|
483
531
|
contractPolicyForTask(state) {
|
|
484
|
-
|
|
532
|
+
// Tokenless-OLAS pivot: the on-chain TaskCoordinator.TaskPolicy is the
|
|
533
|
+
// launcher-funded attempt count (`maxClaims`) plus the self-evaluation gate
|
|
534
|
+
// (`allowSolverSelfEvaluation`). Windows, lease, and quorum do NOT cross the
|
|
535
|
+
// wire — that off-chain scheduling intent stays in the task.v1 `claimPolicy`
|
|
536
|
+
// field (still carried on the signed task document and read by the local
|
|
537
|
+
// scheduler).
|
|
538
|
+
//
|
|
539
|
+
// `allowSolverSelfEvaluation` comes from the off-chain `claimPolicy` when it
|
|
540
|
+
// sets the flag explicitly; that explicit value always wins. When it is
|
|
541
|
+
// absent (the common case — the auto-generators do not set it) the default
|
|
542
|
+
// is network-keyed: TRUE on testnet (Base Sepolia, 84532) so a single
|
|
543
|
+
// operator can solve + self-evaluate + close the loop solo for dogfooding,
|
|
544
|
+
// and FALSE on mainnet to preserve the independent-evaluation invariant (the
|
|
545
|
+
// coordinator rejects a verdict whose evaluator is the attempt's solver).
|
|
485
546
|
const claimPolicy = state.claimPolicy ?? DEFAULT_MECH_CLAIM_POLICY;
|
|
486
|
-
const
|
|
487
|
-
const raw = value ?? fallback;
|
|
488
|
-
return BigInt(raw > 10_000_000_000 ? Math.floor(raw / 1000) : raw);
|
|
489
|
-
};
|
|
490
|
-
const claimWindowStart = normalizeTs(claimPolicy.claimWindowStartTs ?? state.window?.startTs, nowSeconds);
|
|
491
|
-
const claimWindowEnd = normalizeTs(claimPolicy.claimWindowEndTs ?? state.window?.endTs, nowSeconds + 30 * 60);
|
|
492
|
-
const submissionDeadline = normalizeTs(claimPolicy.submissionDeadlineTs, Number(claimWindowEnd) + claimPolicy.claimLeaseTtlSeconds);
|
|
547
|
+
const isTestnet = this.config.chainId === 84532;
|
|
493
548
|
return {
|
|
494
|
-
claimWindowStart,
|
|
495
|
-
claimWindowEnd,
|
|
496
|
-
submissionDeadline,
|
|
497
|
-
claimLeaseTtlSeconds: claimPolicy.claimLeaseTtlSeconds,
|
|
498
549
|
maxClaims: claimPolicy.maxClaims,
|
|
499
|
-
|
|
500
|
-
policyHook: (claimPolicy.policyHook ?? zeroAddress),
|
|
501
|
-
evaluationPolicy: {
|
|
502
|
-
// `requiredVerdicts` defaults to 1 but is overridable via the task's
|
|
503
|
-
// claim policy. A value > 1 opens additional verdict claim slots per
|
|
504
|
-
// attempt; combined with the per-evaluator cap below (1), it
|
|
505
|
-
// guarantees an honest evaluator can still claim and deliver a slot
|
|
506
|
-
// even when other evaluators have squatted some — the structural fix
|
|
507
|
-
// for a shared/adversarial testnet where a non-delivering claimer
|
|
508
|
-
// would otherwise permanently lock a single-slot attempt.
|
|
509
|
-
requiredVerdicts: claimPolicy.requiredVerdicts ?? 1,
|
|
510
|
-
passThreshold: 1,
|
|
511
|
-
evaluationDeadline: submissionDeadline + BigInt(claimPolicy.claimLeaseTtlSeconds),
|
|
512
|
-
maxVerdictsPerEvaluator: 1,
|
|
513
|
-
// Allow the same operator to evaluate its own Solution on Base Sepolia
|
|
514
|
-
// (84532) so a single dogfood daemon can close the full
|
|
515
|
-
// post→claim→solve→grade→settle loop without standing up a second
|
|
516
|
-
// operator. Mainnet (8453) keeps the protocol-level protection.
|
|
517
|
-
// TODO: revert to unconditional `true` before mainnet launch, OR move
|
|
518
|
-
// this to a per-SolverNet manifest field so individual launchers can
|
|
519
|
-
// opt in to single-operator dogfood while the protocol default stays
|
|
520
|
-
// strict.
|
|
521
|
-
disallowSolverSelfEvaluation: this.config.chainId !== 84532,
|
|
522
|
-
},
|
|
550
|
+
allowSolverSelfEvaluation: claimPolicy.allowSolverSelfEvaluation ?? isTestnet,
|
|
523
551
|
};
|
|
524
552
|
}
|
|
525
553
|
buildEvaluationTask(params) {
|
|
@@ -576,6 +604,19 @@ export class MechAdapter {
|
|
|
576
604
|
this.observedTasks.set(params.taskId, announcement);
|
|
577
605
|
return announcement;
|
|
578
606
|
}
|
|
607
|
+
/**
|
|
608
|
+
* #1412: a task's execution window (task.window.endTs) is only known after
|
|
609
|
+
* IPFS hydration, not from any on-chain/discovery candidate shape. The
|
|
610
|
+
* engine kills the harness subprocess the instant this window is in the
|
|
611
|
+
* past (engine.ts: setTimeout(abort, max(0, endTs - now)) fires at 0ms), so
|
|
612
|
+
* claiming an already-expired task always fails with no chance of a real
|
|
613
|
+
* solve. Both discovery paths (DiscoveryAPI and the on-chain TaskCreated
|
|
614
|
+
* backlog scan) must skip these before spending a claim tx on a doomed run.
|
|
615
|
+
*/
|
|
616
|
+
hasExpiredExecutionWindow(announcement) {
|
|
617
|
+
const windowEndTs = announcement.task.window?.endTs;
|
|
618
|
+
return windowEndTs !== undefined && windowEndTs <= Date.now();
|
|
619
|
+
}
|
|
579
620
|
async *discoverSubgraphRestorationTasks() {
|
|
580
621
|
const discovery = this.config.taskDiscovery;
|
|
581
622
|
const discoveryApi = discovery?.discoveryApi;
|
|
@@ -598,7 +639,7 @@ export class MechAdapter {
|
|
|
598
639
|
console.error('[mech] task discovery (DiscoveryAPI) failed:', err instanceof Error ? err.message : err);
|
|
599
640
|
return;
|
|
600
641
|
}
|
|
601
|
-
const discoveryFloorBlock = this.
|
|
642
|
+
const discoveryFloorBlock = this.taskAdmissionFloorBlock();
|
|
602
643
|
for (const candidate of candidates) {
|
|
603
644
|
if (!this.isDiscoveryTaskAllowed(candidate.taskId))
|
|
604
645
|
continue;
|
|
@@ -636,12 +677,15 @@ export class MechAdapter {
|
|
|
636
677
|
// cycle we let the engine apply its gate to each one, preserving the
|
|
637
678
|
// round-robin fairness across joined SolverNets. See task 212 live
|
|
638
679
|
// verification in the fix's commit body.
|
|
639
|
-
|
|
680
|
+
const announcement = await this.restorationAnnouncementFromDigest({
|
|
640
681
|
taskId: candidate.taskId,
|
|
641
682
|
taskCidDigest: candidate.taskCidDigest,
|
|
642
683
|
transactionHash: candidate.createdAtTx,
|
|
643
684
|
blockNumber: candidate.createdAtBlock,
|
|
644
685
|
});
|
|
686
|
+
if (this.hasExpiredExecutionWindow(announcement))
|
|
687
|
+
continue;
|
|
688
|
+
yield announcement;
|
|
645
689
|
}
|
|
646
690
|
catch (err) {
|
|
647
691
|
console.error(`[mech] failed to hydrate subgraph task ${candidate.taskId}:`, err instanceof Error ? err.message : err);
|
|
@@ -794,10 +838,6 @@ export class MechAdapter {
|
|
|
794
838
|
for (const solution of submittedSolutions) {
|
|
795
839
|
this.rememberPendingEvaluationSolution(solution);
|
|
796
840
|
}
|
|
797
|
-
this.requestBlockCursor = currentBlock;
|
|
798
|
-
if (this.store) {
|
|
799
|
-
this.store.setConfigValue(ROUTER_REQUEST_CURSOR_CONFIG_KEY, currentBlock.toString());
|
|
800
|
-
}
|
|
801
841
|
const joinedManifestDigests = this.joinedManifestDigestSet();
|
|
802
842
|
const createdTasks = decodeTaskCreatedLogs(logs);
|
|
803
843
|
for (const { taskId, taskCidDigest, manifestDigest, transactionHash, blockNumber } of createdTasks) {
|
|
@@ -817,6 +857,8 @@ export class MechAdapter {
|
|
|
817
857
|
transactionHash,
|
|
818
858
|
blockNumber,
|
|
819
859
|
});
|
|
860
|
+
if (this.hasExpiredExecutionWindow(announcement))
|
|
861
|
+
continue;
|
|
820
862
|
yield announcement;
|
|
821
863
|
}
|
|
822
864
|
catch (err) {
|
|
@@ -826,6 +868,10 @@ export class MechAdapter {
|
|
|
826
868
|
for await (const announcement of this.retryPendingEvaluationSolutions()) {
|
|
827
869
|
yield announcement;
|
|
828
870
|
}
|
|
871
|
+
this.requestBlockCursor = currentBlock;
|
|
872
|
+
if (this.store) {
|
|
873
|
+
this.store.setConfigValue(ROUTER_REQUEST_CURSOR_CONFIG_KEY, currentBlock.toString());
|
|
874
|
+
}
|
|
829
875
|
}
|
|
830
876
|
}
|
|
831
877
|
catch (err) {
|
|
@@ -837,6 +883,10 @@ export class MechAdapter {
|
|
|
837
883
|
fromBlock: this.requestBlockCursor + 1n,
|
|
838
884
|
}));
|
|
839
885
|
}
|
|
886
|
+
// #1043/#1038: heartbeat at the poll-cycle tail (every poll, even when
|
|
887
|
+
// nothing was yielded) so an idle-but-polling loop never looks stale.
|
|
888
|
+
if (this.store)
|
|
889
|
+
recordLoopTick(this.store, 'engine-watcher');
|
|
840
890
|
await new Promise(r => setTimeout(r, this.config.pollIntervalMs));
|
|
841
891
|
}
|
|
842
892
|
}
|
|
@@ -930,15 +980,31 @@ export class MechAdapter {
|
|
|
930
980
|
}
|
|
931
981
|
const kind = role === 'verdict' ? 'verdict' : 'solution';
|
|
932
982
|
const payload = rawSigned['payload'];
|
|
933
|
-
const
|
|
934
|
-
? payload
|
|
983
|
+
const verdictCode = kind === 'verdict'
|
|
984
|
+
? this.verdictCodeFromEnvelopePayload(parsed.solverType, payload)
|
|
935
985
|
: undefined;
|
|
936
986
|
return {
|
|
937
987
|
evidenceHash: recomputed,
|
|
938
988
|
kind,
|
|
939
|
-
verdictCode
|
|
989
|
+
verdictCode,
|
|
940
990
|
};
|
|
941
991
|
}
|
|
992
|
+
verdictCodeFromEnvelopePayload(solverType, payload) {
|
|
993
|
+
if (payload == null || typeof payload !== 'object') {
|
|
994
|
+
throw new Error(`missing verdict payload for solverType=${solverType}; refusing to claim Invalid(3) without an explicit evaluator verdict`);
|
|
995
|
+
}
|
|
996
|
+
const record = payload;
|
|
997
|
+
const rawVerdict = record['verdict'];
|
|
998
|
+
if (rawVerdict !== undefined)
|
|
999
|
+
return verdictCodeFromValue(rawVerdict);
|
|
1000
|
+
if (solverType === 'swe-rebench-v2.v1') {
|
|
1001
|
+
const passedMatch = record['passed_match'];
|
|
1002
|
+
if (typeof passedMatch === 'boolean') {
|
|
1003
|
+
return passedMatch ? VerdictCode.Pass : VerdictCode.Fail;
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
throw new Error(`missing verdict signal for solverType=${solverType}; refusing to claim Invalid(3) without an explicit evaluator verdict`);
|
|
1007
|
+
}
|
|
942
1008
|
async ensureDeliveryClaimed(requestId, deliveryDataHex) {
|
|
943
1009
|
let claimOptions;
|
|
944
1010
|
try {
|
|
@@ -1001,8 +1067,11 @@ export class MechAdapter {
|
|
|
1001
1067
|
const chunkEnd = chunkStart + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS > currentBlock
|
|
1002
1068
|
? currentBlock
|
|
1003
1069
|
: chunkStart + DEFAULT_ROUTER_LOG_CHUNK_BLOCKS;
|
|
1070
|
+
// #116: pin the mech `Deliver` topic server-side rather than fetching the
|
|
1071
|
+
// whole address and decode-discarding. Range/chunking unchanged.
|
|
1004
1072
|
const logs = await this.publicClient.getLogs({
|
|
1005
1073
|
address: this.config.mechContractAddress,
|
|
1074
|
+
event: MECH_DELIVER_EVENT,
|
|
1006
1075
|
fromBlock: chunkStart,
|
|
1007
1076
|
toBlock: chunkEnd,
|
|
1008
1077
|
});
|
|
@@ -1114,6 +1183,10 @@ export class MechAdapter {
|
|
|
1114
1183
|
}
|
|
1115
1184
|
// Cursor persistence is per-chunk inside the loop above (#552). A poll
|
|
1116
1185
|
// that did no chunked work has no progress to persist.
|
|
1186
|
+
// #1043/#1038: heartbeat at the poll-cycle tail (every poll, even when
|
|
1187
|
+
// nothing was yielded) so an idle-but-polling loop never looks stale.
|
|
1188
|
+
if (this.store)
|
|
1189
|
+
recordLoopTick(this.store, 'delivery-watcher');
|
|
1117
1190
|
await new Promise(r => setTimeout(r, this.config.pollIntervalMs));
|
|
1118
1191
|
}
|
|
1119
1192
|
}
|