@jinn-network/client 0.1.8 → 0.1.9-canary.02befda9
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 +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 +21 -1
- package/dist/adapters/mech/adapter.js +107 -52
- 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 +4 -42
- package/dist/adapters/mech/types.js +8 -20
- 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 +1 -0
- package/dist/api/bootstrap-endpoint.js +1 -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 +57 -516
- 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/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 +1 -1
- package/dist/api/operator-artifacts-endpoint.js.map +1 -1
- package/dist/api/peers.js +2 -0
- package/dist/api/peers.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 +41 -0
- package/dist/api/setup-endpoints.js +258 -45
- 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/build-info.json +4 -4
- package/dist/build-meta.json +1 -1
- package/dist/captures/live-publisher.d.ts +9 -0
- package/dist/captures/live-publisher.js +1 -0
- package/dist/captures/live-publisher.js.map +1 -1
- package/dist/captures/publish.d.ts +11 -0
- package/dist/captures/publish.js +15 -5
- 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/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 +189 -196
- package/dist/config.js.map +1 -1
- 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/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 +3 -0
- 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 +26 -14
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +15 -10
- package/dist/daemon/daemon.js +71 -39
- 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 +34 -0
- package/dist/daemon/loop-heartbeat.js +38 -0
- package/dist/daemon/loop-heartbeat.js.map +1 -0
- package/dist/daemon/reward-claim-loop.js +4 -1
- 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/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-BsrAAmvC.js +171 -0
- package/dist/dashboard/assets/index-DQOWJ2SF.css +1 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/discovery/http.d.ts +17 -0
- package/dist/discovery/http.js +295 -25
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.js +158 -2
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +106 -0
- package/dist/discovery/types.js +40 -0
- package/dist/discovery/types.js.map +1 -1
- package/dist/discovery/with-fallback.js +14 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap.d.ts +25 -0
- package/dist/earning/bootstrap.js +79 -28
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +0 -229
- package/dist/earning/contracts.js +4 -184
- 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 +11 -0
- package/dist/earning/safe-adapter.js.map +1 -1
- 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/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 +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 +32 -0
- package/dist/harnesses/engine/engine.js +76 -9
- 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 +17 -0
- package/dist/harnesses/engine/persistence.js +28 -0
- package/dist/harnesses/engine/persistence.js.map +1 -1
- 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/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 +8 -0
- package/dist/harnesses/impls/learner/adapters/codex-code.js +91 -11
- 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/stub.d.ts +2 -2
- package/dist/harnesses/impls/stub.js +2 -2
- 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/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 +125 -120
- 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/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/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/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/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 +8 -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/record.js +12 -5
- package/dist/spend/record.js.map +1 -1
- package/dist/spend/usage.js +39 -3
- package/dist/spend/usage.js.map +1 -1
- package/dist/store/store.d.ts +92 -5
- package/dist/store/store.js +184 -7
- 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/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 +27 -0
- package/dist/trajectory/scrub/build.js +43 -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/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 +14 -0
- package/dist/trajectory/scrub/openredaction-stage.js +36 -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 +16 -0
- package/dist/trajectory/scrub/pipeline.js +26 -0
- package/dist/trajectory/scrub/pipeline.js.map +1 -0
- package/dist/trajectory/scrub/secretlint-stage.d.ts +13 -0
- package/dist/trajectory/scrub/secretlint-stage.js +121 -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/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/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.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/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 +36 -26
- 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/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/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/config.js
CHANGED
|
@@ -16,10 +16,11 @@
|
|
|
16
16
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
17
17
|
import { homedir } from 'node:os';
|
|
18
18
|
import { dirname, join } from 'node:path';
|
|
19
|
-
import { z } from 'zod';
|
|
19
|
+
import { z } from 'zod/v3';
|
|
20
20
|
import { TaskSchema, parseTask } from './types/task.js';
|
|
21
21
|
import { canonicalHarnessName } from './harnesses/names.js';
|
|
22
22
|
import { parseRpcUrls } from './rpc/transport.js';
|
|
23
|
+
import { canonicalLocalHttpBaseUrl } from './local-provider-url.js';
|
|
23
24
|
// ── Schema ──────────────────────────────────────────────────────────────────
|
|
24
25
|
const HarnessNameSchema = z.string().transform((name) => canonicalHarnessName(name));
|
|
25
26
|
export const JinnConfigSchema = z.object({
|
|
@@ -44,12 +45,17 @@ export const JinnConfigSchema = z.object({
|
|
|
44
45
|
rpcUrl: z.union([z.string(), z.array(z.string()).min(1)]).optional(),
|
|
45
46
|
archiveRpcUrl: z.union([z.string(), z.array(z.string()).min(1)]).optional(),
|
|
46
47
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
48
|
+
* Single volume-aware durable-state root. When set (env JINN_STATE_DIR or
|
|
49
|
+
* this file field), `earningDir`, `dbPath`, `engine.implStateDirRoot`, and
|
|
50
|
+
* the swe-rebench-v2 pool dir derive from it as `<stateDir>/<subdir>` —
|
|
51
|
+
* UNLESS each is individually overridden, in which case the per-key value
|
|
52
|
+
* wins (derive-don't-collapse). With `stateDir` unset, every default is
|
|
53
|
+
* byte-identical to the legacy `~/.jinn-client/<subdir>` paths. Hosted
|
|
54
|
+
* deploys collapse four ENV lines to one `JINN_STATE_DIR=/data`.
|
|
55
|
+
* `engine.workingDirRoot` is deliberately NOT derived — it stays ephemeral
|
|
56
|
+
* (reaped per-task).
|
|
51
57
|
*/
|
|
52
|
-
|
|
58
|
+
stateDir: z.string().optional(),
|
|
53
59
|
/** Earning state directory */
|
|
54
60
|
earningDir: z.string().default(join(homedir(), '.jinn-client', 'earning')),
|
|
55
61
|
/** SQLite database path */
|
|
@@ -58,11 +64,11 @@ export const JinnConfigSchema = z.object({
|
|
|
58
64
|
pollIntervalMs: z.number().int().positive().default(5000),
|
|
59
65
|
/**
|
|
60
66
|
* How often the daemon attempts stOLAS ExternalStakingDistributor.claim for each staked
|
|
61
|
-
* fleet service (ms). Default
|
|
62
|
-
*
|
|
67
|
+
* fleet service (ms). Default 0 so operators claim OLAS manually from the app.
|
|
68
|
+
* Set JINN_REWARD_CLAIM_INTERVAL_MS=600000 for managed/headless auto-claim.
|
|
63
69
|
* Env: JINN_REWARD_CLAIM_INTERVAL_MS
|
|
64
70
|
*/
|
|
65
|
-
rewardClaimIntervalMs: z.number().int().min(0).default(
|
|
71
|
+
rewardClaimIntervalMs: z.number().int().min(0).default(0),
|
|
66
72
|
/**
|
|
67
73
|
* How often the daemon checks agent EOA and Safe balances and tops them up from the master
|
|
68
74
|
* wallet when they drop below trigger thresholds (ms). Default 300000 (5 min).
|
|
@@ -105,6 +111,22 @@ export const JinnConfigSchema = z.object({
|
|
|
105
111
|
hermesModel: z.string().optional(),
|
|
106
112
|
/** Hermes provider (e.g. 'anthropic'). */
|
|
107
113
|
hermesProvider: z.string().optional(),
|
|
114
|
+
/** Local OpenAI-compatible Hermes base URL, e.g. http://127.0.0.1:11434/v1 for Ollama. */
|
|
115
|
+
hermesBaseUrl: z
|
|
116
|
+
.string()
|
|
117
|
+
.url()
|
|
118
|
+
.transform((value, ctx) => {
|
|
119
|
+
const canonical = canonicalLocalHttpBaseUrl(value);
|
|
120
|
+
if (!canonical) {
|
|
121
|
+
ctx.addIssue({
|
|
122
|
+
code: z.ZodIssueCode.custom,
|
|
123
|
+
message: 'hermesBaseUrl must be a local HTTP(S) URL',
|
|
124
|
+
});
|
|
125
|
+
return z.NEVER;
|
|
126
|
+
}
|
|
127
|
+
return canonical;
|
|
128
|
+
})
|
|
129
|
+
.optional(),
|
|
108
130
|
/**
|
|
109
131
|
* Timeout in ms for `hermes doctor` health-check runs.
|
|
110
132
|
* Default 30 000 ms. Env: JINN_HERMES_DOCTOR_TIMEOUT_MS.
|
|
@@ -161,16 +183,18 @@ export const JinnConfigSchema = z.object({
|
|
|
161
183
|
* Narrow task discovery to specific on-chain task ids. This is primarily
|
|
162
184
|
* for live acceptance gates that must avoid claiming unrelated public
|
|
163
185
|
* backlog while proving one fresh task path.
|
|
186
|
+
* Env: JINN_TASK_DISCOVERY_ALLOWED_TASK_IDS (comma-separated).
|
|
164
187
|
*/
|
|
165
188
|
taskDiscoveryAllowedTaskIds: z.array(z.string()).optional(),
|
|
166
189
|
/**
|
|
167
|
-
*
|
|
168
|
-
* on-chain TaskCreated backlog scan. Unset → the
|
|
169
|
-
*
|
|
170
|
-
* a
|
|
171
|
-
* (DiscoveryAPI.findClaimableTasks)
|
|
172
|
-
*
|
|
173
|
-
*
|
|
190
|
+
* Explicit absolute lower bound (L2 block number) for the mech adapter's
|
|
191
|
+
* on-chain TaskCreated backlog scan. Unset → the scan defaults to a bounded
|
|
192
|
+
* rolling window (`head − DEFAULT_ONCHAIN_SCAN_WINDOW_BLOCKS`, ~28h on Base),
|
|
193
|
+
* so a restart no longer replays full chain history every boot (#801); the
|
|
194
|
+
* indexer (DiscoveryAPI.findClaimableTasks) is the primary discovery path and
|
|
195
|
+
* the on-chain scan is a bounded backstop. Set this to widen the backstop to a
|
|
196
|
+
* specific block (the value pins both the scan start and the gh #300 admission
|
|
197
|
+
* floor). Env: JINN_TASK_DISCOVERY_FROM_BLOCK.
|
|
174
198
|
*/
|
|
175
199
|
taskDiscoveryOnchainFromBlock: z.number().int().min(0).optional(),
|
|
176
200
|
/** This node's public HTTP endpoint (for 8004 registration) */
|
|
@@ -190,98 +214,12 @@ export const JinnConfigSchema = z.object({
|
|
|
190
214
|
/** Optional Base Sepolia stOLAS deployment artifact path */
|
|
191
215
|
testnetStolasDeploymentPath: z.string().optional(),
|
|
192
216
|
/**
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*/
|
|
198
|
-
jinnMviL1DeploymentPath: z.string().optional(),
|
|
199
|
-
/**
|
|
200
|
-
* Optional deployment artifact for the v0 MVI L2 emitter
|
|
201
|
-
* (deployment-jinn-mvi-l2-{network}.json). Provides the
|
|
202
|
-
* TaskClaimEmitter address on the measurement chain (Base / Base Sepolia).
|
|
203
|
-
*/
|
|
204
|
-
jinnMviL2DeploymentPath: z.string().optional(),
|
|
205
|
-
// ── Cross-chain claim loop (Phase B / jinn-mono-7x5) ─────────────────────
|
|
206
|
-
/**
|
|
207
|
-
* RPC endpoint(s) for the L1 governance chain (Ethereum / Sepolia) where
|
|
208
|
-
* the JinnDistributor lives. Accepts string or array form (see rpcUrl) and
|
|
209
|
-
* supports comma-separated env values. Testnet defaults to a public Sepolia
|
|
210
|
-
* RPC; mainnet requires an operator override when L1 submit mode is
|
|
211
|
-
* configured. Env: JINN_ETHEREUM_RPC_URL.
|
|
217
|
+
* Loop-watchdog auto-restart gate (#1043). Default OFF (the locked Option A
|
|
218
|
+
* decision): the watchdog always detects a stale loop and loud-logs + emits
|
|
219
|
+
* a `loop_watchdog_stale` event, but the non-zero process.exit recovery only
|
|
220
|
+
* fires when this is on. Env: JINN_WATCHDOG_AUTO_RESTART=1|true|yes.
|
|
212
221
|
*/
|
|
213
|
-
|
|
214
|
-
/**
|
|
215
|
-
* Optional archive RPC endpoint(s) for the L1 governance chain. Used for
|
|
216
|
-
* historical block lookups when constructing canonical-mode proofs. Accepts
|
|
217
|
-
* string or array form. Env: JINN_ETHEREUM_ARCHIVE_RPC_URL.
|
|
218
|
-
*/
|
|
219
|
-
ethereumArchiveRpcUrl: z.union([z.string(), z.array(z.string()).min(1)]).optional(),
|
|
220
|
-
/**
|
|
221
|
-
* L1 network used by the cross-chain claim loop. 'sepolia' tracks Base
|
|
222
|
-
* Sepolia testnet; 'ethereum' tracks Base mainnet. Defaults to 'sepolia'
|
|
223
|
-
* during Phase 1b. Env: JINN_L1_NETWORK.
|
|
224
|
-
*/
|
|
225
|
-
jinnL1Network: z.enum(['sepolia', 'ethereum']).default('sepolia'),
|
|
226
|
-
/**
|
|
227
|
-
* JinnDistributor address on the L1 governance chain. Required for
|
|
228
|
-
* jinnClaimSubmissionMode='submit'. When set for submit mode, ethereumRpcUrl
|
|
229
|
-
* MUST also be set. Resolved from jinnMviL1DeploymentPath when omitted;
|
|
230
|
-
* otherwise a manual override. Env: JINN_DISTRIBUTOR_ADDRESS.
|
|
231
|
-
*/
|
|
232
|
-
jinnDistributorAddress: z
|
|
233
|
-
.string()
|
|
234
|
-
.regex(/^0x[0-9a-fA-F]{40}$/, 'must be a 0x-prefixed 20-byte address')
|
|
235
|
-
.optional(),
|
|
236
|
-
/**
|
|
237
|
-
* TaskClaimEmitter address on the L2 measurement chain (Base / Base
|
|
238
|
-
* Sepolia). Resolved from jinnMviL2DeploymentPath when omitted.
|
|
239
|
-
* Env: JINN_CLAIM_EMITTER_ADDRESS.
|
|
240
|
-
*/
|
|
241
|
-
jinnClaimEmitterAddress: z
|
|
242
|
-
.string()
|
|
243
|
-
.regex(/^0x[0-9a-fA-F]{40}$/, 'must be a 0x-prefixed 20-byte address')
|
|
244
|
-
.optional(),
|
|
245
|
-
/**
|
|
246
|
-
* Messenger address on the L1 governance chain. Resolved from
|
|
247
|
-
* jinnMviL1DeploymentPath when omitted.
|
|
248
|
-
* Env: JINN_MESSENGER_ADDRESS.
|
|
249
|
-
*/
|
|
250
|
-
jinnMessengerAddress: z
|
|
251
|
-
.string()
|
|
252
|
-
.regex(/^0x[0-9a-fA-F]{40}$/, 'must be a 0x-prefixed 20-byte address')
|
|
253
|
-
.optional(),
|
|
254
|
-
/**
|
|
255
|
-
* Messenger mode driving proof construction. `mock` submits MockMessenger
|
|
256
|
-
* fixtures — required for automated Sepolia burn-in (`runOnce`). `canonical`
|
|
257
|
-
* builds OP-Stack storage proofs for verifier-only checks; scheduled daemon
|
|
258
|
-
* ticks **skip** canonical mode (multi-day finality) — use
|
|
259
|
-
* `tsx scripts/verify-canonical-canary.ts` after finality instead. Defaults
|
|
260
|
-
* to `canonical`.
|
|
261
|
-
* Env: JINN_MESSENGER_MODE.
|
|
262
|
-
*/
|
|
263
|
-
jinnMessengerMode: z.enum(['canonical', 'mock']).default('canonical'),
|
|
264
|
-
/**
|
|
265
|
-
* Claim submission mode. `emit-only` only submits TaskClaimEmitter.emitClaim
|
|
266
|
-
* on L2 and records the resulting ticket. `submit` continues into the L1
|
|
267
|
-
* messenger/distributor path.
|
|
268
|
-
* Env: JINN_CLAIM_SUBMISSION_MODE.
|
|
269
|
-
*/
|
|
270
|
-
jinnClaimSubmissionMode: z.enum(['emit-only', 'submit']).default('emit-only'),
|
|
271
|
-
/**
|
|
272
|
-
* Explicit operator gate for the cross-chain JINN claim loop. The schema
|
|
273
|
-
* default stays off for mainnet/unknown networks; loadConfig defaults this
|
|
274
|
-
* on for testnet now that the emitter and standing relayer are live.
|
|
275
|
-
* Env: JINN_CLAIM_LOOP_ENABLED=1|true|yes.
|
|
276
|
-
*/
|
|
277
|
-
jinnClaimLoopEnabled: z.boolean().default(false),
|
|
278
|
-
/**
|
|
279
|
-
* How often the daemon ticks the cross-chain JINN claim loop (ms). Default
|
|
280
|
-
* 3 600 000 (1 hour) — well below mainnet challenge windows while
|
|
281
|
-
* minimising RPC/gas churn. Set to 0 to disable when the address is set.
|
|
282
|
-
* Env: JINN_CLAIM_LOOP_INTERVAL_MS.
|
|
283
|
-
*/
|
|
284
|
-
jinnClaimLoopIntervalMs: z.number().int().min(0).default(60 * 60 * 1000),
|
|
222
|
+
watchdogAutoRestart: z.boolean().default(false),
|
|
285
223
|
/** Staking mode: 'standard' uses stOLAS (no OLAS needed), 'self-bond' uses operator-provided OLAS. */
|
|
286
224
|
stakingMode: z.enum(['standard', 'self-bond']).default('standard'),
|
|
287
225
|
/** Number of services to bootstrap and run. */
|
|
@@ -316,6 +254,25 @@ export const JinnConfigSchema = z.object({
|
|
|
316
254
|
.string()
|
|
317
255
|
.regex(/^\d+$/, 'must be a non-negative integer string')
|
|
318
256
|
.optional(),
|
|
257
|
+
/**
|
|
258
|
+
* Faucet top-up daily cap + cooldown (issue #560). Single source of truth
|
|
259
|
+
* for the running-mode Dashboard "Top up from faucet" batch action, shared
|
|
260
|
+
* by the daemon endpoint and surfaced to the SPA via GET /v1/setup/drip/quota.
|
|
261
|
+
*
|
|
262
|
+
* `faucetDailyTopupCap` — number of faucet drips a single operator click may
|
|
263
|
+
* issue in one batch (and the per-24h ceiling per wallet). Env:
|
|
264
|
+
* JINN_FAUCET_DAILY_TOPUP_CAP.
|
|
265
|
+
*
|
|
266
|
+
* `faucetTopupCooldownMs` — once the cap is reached, the top-up action is
|
|
267
|
+
* disabled until this window elapses since the first call of that batch.
|
|
268
|
+
* Env: JINN_FAUCET_TOPUP_COOLDOWN_MS.
|
|
269
|
+
*/
|
|
270
|
+
faucetDailyTopupCap: z.number().int().positive().default(10),
|
|
271
|
+
faucetTopupCooldownMs: z
|
|
272
|
+
.number()
|
|
273
|
+
.int()
|
|
274
|
+
.min(0)
|
|
275
|
+
.default(24 * 60 * 60 * 1000),
|
|
319
276
|
/**
|
|
320
277
|
* Operator-controlled Harness inventory.
|
|
321
278
|
*/
|
|
@@ -397,6 +354,18 @@ export const JinnConfigSchema = z.object({
|
|
|
397
354
|
disabledDefaultPlugins: z.array(z.string()).default([]),
|
|
398
355
|
}))
|
|
399
356
|
.optional(),
|
|
357
|
+
/**
|
|
358
|
+
* Set true once the operator clicks "Enter dashboard" at the end of the
|
|
359
|
+
* #983 guided onboarding takeover. Distinct from `joinedSolverNets` being
|
|
360
|
+
* non-empty: a node can have a membership mid-onboarding (the first join
|
|
361
|
+
* populates the map) yet not have finished harness/model selection. The SPA
|
|
362
|
+
* gates the bootstrap→dashboard hand-off on this flag (see App.tsx), so the
|
|
363
|
+
* first join no longer ejects the operator before the harness step.
|
|
364
|
+
*
|
|
365
|
+
* Written by POST /v1/operator/onboarding-complete (persisted to disk AND
|
|
366
|
+
* mutated in-memory so GET /v1/bootstrap reflects it without a restart).
|
|
367
|
+
*/
|
|
368
|
+
onboardingComplete: z.boolean().optional(),
|
|
400
369
|
/**
|
|
401
370
|
* Trusted ed25519 publishers for external harness impls. The daemon
|
|
402
371
|
* refuses to load any external impl whose manifest signature is not
|
|
@@ -480,8 +449,25 @@ export const JinnConfigSchema = z.object({
|
|
|
480
449
|
port: z.number().int().positive().default(7342),
|
|
481
450
|
})
|
|
482
451
|
.default({ enabled: false, port: 7342 }),
|
|
452
|
+
/**
|
|
453
|
+
* Seller-side ML PII detection (Transformers.js NER, in-process) applied
|
|
454
|
+
* before captures (and task trajectories) are published. Off by default:
|
|
455
|
+
* the structural key policy + openredaction + secretlint/entropy stages
|
|
456
|
+
* always scrub (the non-ML guarantee); this adds person/org/location NER
|
|
457
|
+
* at the cost of a one-time model download. When enabled, a model-load
|
|
458
|
+
* failure fails closed at the publish altitude — the trajectory is not
|
|
459
|
+
* published — while the daemon's other loops keep running.
|
|
460
|
+
* Env: JINN_CAPTURES_PII_DETECTION_ENABLED=1|true|yes,
|
|
461
|
+
* JINN_CAPTURES_PII_DETECTION_MODEL=<hf-model-id>
|
|
462
|
+
*/
|
|
463
|
+
piiDetection: z
|
|
464
|
+
.object({
|
|
465
|
+
enabled: z.boolean().default(false),
|
|
466
|
+
model: z.string().optional(),
|
|
467
|
+
})
|
|
468
|
+
.default({ enabled: false }),
|
|
483
469
|
})
|
|
484
|
-
.default({ llmProxy: { enabled: false, port: 7342 } }),
|
|
470
|
+
.default({ llmProxy: { enabled: false, port: 7342 }, piiDetection: { enabled: false } }),
|
|
485
471
|
/**
|
|
486
472
|
* Run idempotent legacy migrations at daemon startup (jinn-mono-jgp:
|
|
487
473
|
* backfill `agent_id` on `complete` services that pre-date j07).
|
|
@@ -547,13 +533,6 @@ export const JinnConfigSchema = z.object({
|
|
|
547
533
|
blockedCids: z.array(z.string()).default([]),
|
|
548
534
|
})
|
|
549
535
|
.default({ blockedCids: [] }),
|
|
550
|
-
}).refine((cfg) => cfg.jinnClaimSubmissionMode !== 'submit' ||
|
|
551
|
-
!cfg.jinnDistributorAddress ||
|
|
552
|
-
!!cfg.ethereumRpcUrl, {
|
|
553
|
-
message: 'ethereumRpcUrl must be set when jinnDistributorAddress is configured in submit mode ' +
|
|
554
|
-
'(env JINN_ETHEREUM_RPC_URL or config field). The cross-chain claim loop ' +
|
|
555
|
-
'cannot reach the L1 governance chain without it.',
|
|
556
|
-
path: ['ethereumRpcUrl'],
|
|
557
536
|
});
|
|
558
537
|
const DEFAULT_ENGINE = {
|
|
559
538
|
workingDirRoot: join(homedir(), '.jinn-client', 'engine', 'work'),
|
|
@@ -570,21 +549,42 @@ export const DEFAULT_CONFIG_PATH = join(DEFAULT_DIR, 'config.json');
|
|
|
570
549
|
* historical sync — see ponder.config.ts).
|
|
571
550
|
*/
|
|
572
551
|
export const DEFAULT_TESTNET_DISCOVERY_URL = 'https://jinn-indexer-production.up.railway.app';
|
|
573
|
-
export const DEFAULT_TESTNET_ETHEREUM_RPC_URL = 'https://ethereum-sepolia-rpc.publicnode.com';
|
|
574
552
|
/**
|
|
575
|
-
* Default fallback chain for the L2 measurement chain (Base Sepolia
|
|
576
|
-
* testnet.
|
|
577
|
-
*
|
|
578
|
-
*
|
|
579
|
-
*
|
|
580
|
-
*
|
|
553
|
+
* Default fallback chain for the L2 measurement chain (Base Sepolia, chain-id
|
|
554
|
+
* 84532) on testnet. Originally a two-provider chain (AC2 of issue #592);
|
|
555
|
+
* widened to ≥5 distinct free providers per issue #911 so a default-config
|
|
556
|
+
* daemon tolerates a single-provider quota cliff (the Tenderly shared-quota
|
|
557
|
+
* cliff of 2026-05-24) without an operator key.
|
|
558
|
+
* slot 0 — `https://base-sepolia.publicnode.com` (#835 no-auth primary,
|
|
559
|
+
* 50k-block getLogs cap, no shared-quota cliff).
|
|
560
|
+
* slot 1 — `https://base-sepolia-rpc.publicnode.com`
|
|
561
|
+
* slot 2 — `https://base-sepolia.drpc.org`
|
|
562
|
+
* slot 3 — `https://base-sepolia.gateway.tenderly.co`
|
|
563
|
+
* slot 4 — `https://sepolia.base.org` (free public Coinbase endpoint,
|
|
564
|
+
* 2k-block cap; last-resort backup, stays last).
|
|
581
565
|
* Operators are encouraged to prepend a paid primary key (Alchemy, Tenderly,
|
|
582
566
|
* etc.) via `rpcUrl` config or `JINN_RPC_URL` / `BASE_SEPOLIA_RPC_URL` env.
|
|
567
|
+
* All five endpoints live-verified to return chain-id 84532 (#911).
|
|
583
568
|
*/
|
|
584
569
|
export const DEFAULT_TESTNET_RPC_URLS = [
|
|
585
570
|
'https://base-sepolia.publicnode.com',
|
|
571
|
+
'https://base-sepolia-rpc.publicnode.com',
|
|
572
|
+
'https://base-sepolia.drpc.org',
|
|
573
|
+
'https://base-sepolia.gateway.tenderly.co',
|
|
586
574
|
'https://sepolia.base.org',
|
|
587
575
|
];
|
|
576
|
+
/**
|
|
577
|
+
* Default fallback chain for the L2 measurement chain (Base mainnet, chain-id
|
|
578
|
+
* 8453). ≥5 distinct free providers per issue #911.
|
|
579
|
+
* slot 0 — `https://mainnet.base.org` (free public Coinbase endpoint).
|
|
580
|
+
*/
|
|
581
|
+
export const DEFAULT_MAINNET_RPC_URLS = [
|
|
582
|
+
'https://mainnet.base.org',
|
|
583
|
+
'https://base.publicnode.com',
|
|
584
|
+
'https://base.drpc.org',
|
|
585
|
+
'https://1rpc.io/base',
|
|
586
|
+
'https://base.meowrpc.com',
|
|
587
|
+
];
|
|
588
588
|
export class ConfigLoadError extends Error {
|
|
589
589
|
code;
|
|
590
590
|
details;
|
|
@@ -715,8 +715,6 @@ export function loadConfig(configPath) {
|
|
|
715
715
|
const merged = { ...fileValues };
|
|
716
716
|
if (env['JINN_NETWORK'])
|
|
717
717
|
merged.network = env['JINN_NETWORK'];
|
|
718
|
-
if (env['JINN_L2_PROOF_RPC_URL'])
|
|
719
|
-
merged.l2ProofRpcUrl = env['JINN_L2_PROOF_RPC_URL'];
|
|
720
718
|
if (env['JINN_EARNING_DIR'])
|
|
721
719
|
merged.earningDir = env['JINN_EARNING_DIR'];
|
|
722
720
|
if (env['JINN_DB_PATH'])
|
|
@@ -736,6 +734,12 @@ export function loadConfig(configPath) {
|
|
|
736
734
|
if (env['JINN_TASK_DISCOVERY_FROM_BLOCK'] !== undefined) {
|
|
737
735
|
merged.taskDiscoveryOnchainFromBlock = Number.parseInt(env['JINN_TASK_DISCOVERY_FROM_BLOCK'], 10);
|
|
738
736
|
}
|
|
737
|
+
if (env['JINN_TASK_DISCOVERY_ALLOWED_TASK_IDS'] !== undefined) {
|
|
738
|
+
merged.taskDiscoveryAllowedTaskIds = env['JINN_TASK_DISCOVERY_ALLOWED_TASK_IDS']
|
|
739
|
+
.split(',')
|
|
740
|
+
.map((id) => id.trim())
|
|
741
|
+
.filter(Boolean);
|
|
742
|
+
}
|
|
739
743
|
if (env['JINN_API_PORT'])
|
|
740
744
|
merged.apiPort = parseInt(env['JINN_API_PORT'], 10);
|
|
741
745
|
if (env['JINN_API_BIND_HOST'])
|
|
@@ -750,6 +754,8 @@ export function loadConfig(configPath) {
|
|
|
750
754
|
merged.hermesModel = env['JINN_HERMES_MODEL'];
|
|
751
755
|
if (env['JINN_HERMES_PROVIDER'])
|
|
752
756
|
merged.hermesProvider = env['JINN_HERMES_PROVIDER'];
|
|
757
|
+
if (env['JINN_HERMES_BASE_URL'])
|
|
758
|
+
merged.hermesBaseUrl = env['JINN_HERMES_BASE_URL'];
|
|
753
759
|
if (env['JINN_HERMES_DOCTOR_TIMEOUT_MS']) {
|
|
754
760
|
merged.hermesDoctorTimeoutMs = parseInt(env['JINN_HERMES_DOCTOR_TIMEOUT_MS'], 10);
|
|
755
761
|
}
|
|
@@ -801,33 +807,9 @@ export function loadConfig(configPath) {
|
|
|
801
807
|
merged.testnetL2TokenDeploymentPath = env['JINN_TESTNET_TOKEN_DEPLOYMENT'];
|
|
802
808
|
if (env['JINN_TESTNET_MECH_DEPLOYMENT'])
|
|
803
809
|
merged.testnetMechDeploymentPath = env['JINN_TESTNET_MECH_DEPLOYMENT'];
|
|
804
|
-
if (env['
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
merged.jinnMviL2DeploymentPath = env['JINN_MVI_L2_DEPLOYMENT'];
|
|
808
|
-
if (env['JINN_ETHEREUM_RPC_URL'])
|
|
809
|
-
merged.ethereumRpcUrl = env['JINN_ETHEREUM_RPC_URL'];
|
|
810
|
-
if (env['JINN_ETHEREUM_ARCHIVE_RPC_URL'])
|
|
811
|
-
merged.ethereumArchiveRpcUrl = env['JINN_ETHEREUM_ARCHIVE_RPC_URL'];
|
|
812
|
-
if (env['JINN_L1_NETWORK'])
|
|
813
|
-
merged.jinnL1Network = env['JINN_L1_NETWORK'];
|
|
814
|
-
if (env['JINN_DISTRIBUTOR_ADDRESS'])
|
|
815
|
-
merged.jinnDistributorAddress = env['JINN_DISTRIBUTOR_ADDRESS'];
|
|
816
|
-
if (env['JINN_CLAIM_EMITTER_ADDRESS'])
|
|
817
|
-
merged.jinnClaimEmitterAddress = env['JINN_CLAIM_EMITTER_ADDRESS'];
|
|
818
|
-
if (env['JINN_MESSENGER_ADDRESS'])
|
|
819
|
-
merged.jinnMessengerAddress = env['JINN_MESSENGER_ADDRESS'];
|
|
820
|
-
if (env['JINN_MESSENGER_MODE'])
|
|
821
|
-
merged.jinnMessengerMode = env['JINN_MESSENGER_MODE'];
|
|
822
|
-
if (env['JINN_CLAIM_SUBMISSION_MODE']) {
|
|
823
|
-
merged.jinnClaimSubmissionMode = env['JINN_CLAIM_SUBMISSION_MODE'];
|
|
824
|
-
}
|
|
825
|
-
if (env['JINN_CLAIM_LOOP_ENABLED'] !== undefined) {
|
|
826
|
-
const v = env['JINN_CLAIM_LOOP_ENABLED'].trim().toLowerCase();
|
|
827
|
-
merged.jinnClaimLoopEnabled = v === '1' || v === 'true' || v === 'yes';
|
|
828
|
-
}
|
|
829
|
-
if (env['JINN_CLAIM_LOOP_INTERVAL_MS'] !== undefined) {
|
|
830
|
-
merged.jinnClaimLoopIntervalMs = parseInt(env['JINN_CLAIM_LOOP_INTERVAL_MS'], 10);
|
|
810
|
+
if (env['JINN_WATCHDOG_AUTO_RESTART'] !== undefined) {
|
|
811
|
+
const v = env['JINN_WATCHDOG_AUTO_RESTART'].trim().toLowerCase();
|
|
812
|
+
merged.watchdogAutoRestart = v === '1' || v === 'true' || v === 'yes';
|
|
831
813
|
}
|
|
832
814
|
if (env['JINN_STAKING_MODE'])
|
|
833
815
|
merged.stakingMode = env['JINN_STAKING_MODE'];
|
|
@@ -851,6 +833,12 @@ export function loadConfig(configPath) {
|
|
|
851
833
|
if (env['JINN_MIN_SAFE_ETH_WEI']) {
|
|
852
834
|
merged.minSafeEthWei = env['JINN_MIN_SAFE_ETH_WEI'].trim();
|
|
853
835
|
}
|
|
836
|
+
if (env['JINN_FAUCET_DAILY_TOPUP_CAP'] !== undefined) {
|
|
837
|
+
merged.faucetDailyTopupCap = parseInt(env['JINN_FAUCET_DAILY_TOPUP_CAP'], 10);
|
|
838
|
+
}
|
|
839
|
+
if (env['JINN_FAUCET_TOPUP_COOLDOWN_MS'] !== undefined) {
|
|
840
|
+
merged.faucetTopupCooldownMs = parseInt(env['JINN_FAUCET_TOPUP_COOLDOWN_MS'], 10);
|
|
841
|
+
}
|
|
854
842
|
// Legacy `JINN_PREDICTION_V1_*` env vars are no longer recognised. Their
|
|
855
843
|
// values now live in the launched-record's generator-config block per
|
|
856
844
|
// spec/2026-05-05-solvernet-creation-and-launch.md (Decision 5 + Task 14)
|
|
@@ -889,16 +877,24 @@ export function loadConfig(configPath) {
|
|
|
889
877
|
};
|
|
890
878
|
}
|
|
891
879
|
if (env['JINN_CAPTURES_LLM_PROXY_ENABLED'] !== undefined ||
|
|
892
|
-
env['JINN_CAPTURES_LLM_PROXY_PORT'] !== undefined
|
|
880
|
+
env['JINN_CAPTURES_LLM_PROXY_PORT'] !== undefined ||
|
|
881
|
+
env['JINN_CAPTURES_PII_DETECTION_ENABLED'] !== undefined ||
|
|
882
|
+
env['JINN_CAPTURES_PII_DETECTION_MODEL'] !== undefined) {
|
|
893
883
|
const prevCaptures = typeof merged['captures'] === 'object' && merged['captures'] !== null
|
|
894
884
|
? merged['captures']
|
|
895
885
|
: {};
|
|
896
886
|
const prevProxy = typeof prevCaptures['llmProxy'] === 'object' && prevCaptures['llmProxy'] !== null
|
|
897
887
|
? prevCaptures['llmProxy']
|
|
898
888
|
: {};
|
|
889
|
+
const prevPii = typeof prevCaptures['piiDetection'] === 'object' && prevCaptures['piiDetection'] !== null
|
|
890
|
+
? prevCaptures['piiDetection']
|
|
891
|
+
: {};
|
|
899
892
|
const enabled = env['JINN_CAPTURES_LLM_PROXY_ENABLED'] !== undefined
|
|
900
893
|
? ['1', 'true', 'yes'].includes(env['JINN_CAPTURES_LLM_PROXY_ENABLED'].trim().toLowerCase())
|
|
901
894
|
: undefined;
|
|
895
|
+
const piiEnabled = env['JINN_CAPTURES_PII_DETECTION_ENABLED'] !== undefined
|
|
896
|
+
? ['1', 'true', 'yes'].includes(env['JINN_CAPTURES_PII_DETECTION_ENABLED'].trim().toLowerCase())
|
|
897
|
+
: undefined;
|
|
902
898
|
merged['captures'] = {
|
|
903
899
|
...prevCaptures,
|
|
904
900
|
llmProxy: {
|
|
@@ -908,6 +904,13 @@ export function loadConfig(configPath) {
|
|
|
908
904
|
? { port: Number.parseInt(env['JINN_CAPTURES_LLM_PROXY_PORT'], 10) }
|
|
909
905
|
: {}),
|
|
910
906
|
},
|
|
907
|
+
piiDetection: {
|
|
908
|
+
...prevPii,
|
|
909
|
+
...(piiEnabled !== undefined ? { enabled: piiEnabled } : {}),
|
|
910
|
+
...(env['JINN_CAPTURES_PII_DETECTION_MODEL']
|
|
911
|
+
? { model: env['JINN_CAPTURES_PII_DETECTION_MODEL'] }
|
|
912
|
+
: {}),
|
|
913
|
+
},
|
|
911
914
|
};
|
|
912
915
|
}
|
|
913
916
|
if (env['JINN_ENGINE_WORKING_DIR_ROOT'] || env['JINN_ENGINE_IMPL_STATE_DIR_ROOT']) {
|
|
@@ -920,6 +923,28 @@ export function loadConfig(configPath) {
|
|
|
920
923
|
...(env['JINN_ENGINE_IMPL_STATE_DIR_ROOT'] ? { implStateDirRoot: env['JINN_ENGINE_IMPL_STATE_DIR_ROOT'] } : {}),
|
|
921
924
|
};
|
|
922
925
|
}
|
|
926
|
+
// JINN_STATE_DIR: single volume-aware root. Runs AFTER all per-key env
|
|
927
|
+
// overrides above are applied into `merged` and BEFORE safeParse — so a
|
|
928
|
+
// still-`undefined` per-key value means neither file nor env set it. Per-key
|
|
929
|
+
// precedence: explicit (file or env, already in `merged`) > <stateDir>/<subdir>
|
|
930
|
+
// > legacy default (filled by the schema / engine assembly when still absent).
|
|
931
|
+
// workingDirRoot is deliberately NOT derived — it stays ephemeral.
|
|
932
|
+
const stateDir = env['JINN_STATE_DIR']
|
|
933
|
+
?? (typeof merged['stateDir'] === 'string' ? merged['stateDir'] : undefined);
|
|
934
|
+
if (stateDir) {
|
|
935
|
+
merged['stateDir'] = stateDir;
|
|
936
|
+
if (merged['earningDir'] === undefined)
|
|
937
|
+
merged['earningDir'] = join(stateDir, 'earning');
|
|
938
|
+
if (merged['dbPath'] === undefined)
|
|
939
|
+
merged['dbPath'] = join(stateDir, 'jinn.db');
|
|
940
|
+
const engineObj = (typeof merged['engine'] === 'object' && merged['engine'] !== null)
|
|
941
|
+
? merged['engine']
|
|
942
|
+
: {};
|
|
943
|
+
if (engineObj['implStateDirRoot'] === undefined) {
|
|
944
|
+
engineObj['implStateDirRoot'] = join(stateDir, 'engine', 'impl-state');
|
|
945
|
+
merged['engine'] = engineObj;
|
|
946
|
+
}
|
|
947
|
+
}
|
|
923
948
|
const resolvedNetwork = merged.network === 'testnet' ? 'testnet' : 'mainnet';
|
|
924
949
|
// Testnet default: point discovery at the privately-operated Ponder indexer
|
|
925
950
|
// (jinn-mono-280n.4), unless the operator has set their own `discovery` block.
|
|
@@ -951,12 +976,6 @@ export function loadConfig(configPath) {
|
|
|
951
976
|
: {}),
|
|
952
977
|
};
|
|
953
978
|
}
|
|
954
|
-
if (resolvedNetwork === 'testnet' && !merged.ethereumRpcUrl) {
|
|
955
|
-
merged.ethereumRpcUrl = DEFAULT_TESTNET_ETHEREUM_RPC_URL;
|
|
956
|
-
}
|
|
957
|
-
if (resolvedNetwork === 'testnet' && merged.jinnClaimLoopEnabled === undefined) {
|
|
958
|
-
merged.jinnClaimLoopEnabled = true;
|
|
959
|
-
}
|
|
960
979
|
// Keep the legacy BASE_RPC_URL override for Base mainnet only. Testnet must
|
|
961
980
|
// not silently inherit a mainnet RPC from client/.env during bootstrap.
|
|
962
981
|
if (env['JINN_RPC_URL']) {
|
|
@@ -1018,30 +1037,22 @@ export function loadConfig(configPath) {
|
|
|
1018
1037
|
// shared-quota cliff of 2026-05-24 that took out every default-config
|
|
1019
1038
|
// daemon at once). See #554 + the NetworkSection.tsx "shared RPC" panel for
|
|
1020
1039
|
// the operator-facing pitch to bring their own key. The sibling Ethereum L1
|
|
1021
|
-
// default (
|
|
1022
|
-
// this keeps the two L1/L2 defaults symmetric.
|
|
1040
|
+
// default (DEFAULT_TESTNET_ETHEREUM_RPC_URLS above) is publicnode-headed —
|
|
1041
|
+
// this keeps the two L1/L2 defaults symmetric. Both chains ship ≥5 free
|
|
1042
|
+
// providers per issue #911.
|
|
1023
1043
|
const parsed = result.data;
|
|
1024
1044
|
const defaultRpcUrls = parsed.network === 'testnet'
|
|
1025
1045
|
? DEFAULT_TESTNET_RPC_URLS
|
|
1026
|
-
:
|
|
1046
|
+
: DEFAULT_MAINNET_RPC_URLS;
|
|
1027
1047
|
const rpcUrlsResolved = parsed.rpcUrl !== undefined
|
|
1028
1048
|
? parseRpcUrls(parsed.rpcUrl)
|
|
1029
1049
|
: [...defaultRpcUrls];
|
|
1030
1050
|
const archiveRpcUrlsResolved = parsed.archiveRpcUrl !== undefined
|
|
1031
1051
|
? parseRpcUrls(parsed.archiveRpcUrl)
|
|
1032
1052
|
: undefined;
|
|
1033
|
-
const l2ProofRpcUrlsResolved = parsed.l2ProofRpcUrl !== undefined
|
|
1034
|
-
? parseRpcUrls(parsed.l2ProofRpcUrl)
|
|
1035
|
-
: undefined;
|
|
1036
|
-
const ethereumRpcUrlsResolved = parsed.ethereumRpcUrl !== undefined
|
|
1037
|
-
? parseRpcUrls(parsed.ethereumRpcUrl)
|
|
1038
|
-
: undefined;
|
|
1039
|
-
const ethereumArchiveRpcUrlsResolved = parsed.ethereumArchiveRpcUrl !== undefined
|
|
1040
|
-
? parseRpcUrls(parsed.ethereumArchiveRpcUrl)
|
|
1041
|
-
: undefined;
|
|
1042
1053
|
// Strip the union-typed (string | string[]) RPC fields from `parsed` — the
|
|
1043
1054
|
// returned shape carries the resolved head URL plus a `*Urls` array instead.
|
|
1044
|
-
const { rpcUrl: _rpcUrl, archiveRpcUrl: _archiveRpcUrl,
|
|
1055
|
+
const { rpcUrl: _rpcUrl, archiveRpcUrl: _archiveRpcUrl, ...rest } = parsed;
|
|
1045
1056
|
return {
|
|
1046
1057
|
...rest,
|
|
1047
1058
|
rpcUrl: rpcUrlsResolved[0],
|
|
@@ -1049,18 +1060,6 @@ export function loadConfig(configPath) {
|
|
|
1049
1060
|
...(archiveRpcUrlsResolved
|
|
1050
1061
|
? { archiveRpcUrl: archiveRpcUrlsResolved[0], archiveRpcUrls: archiveRpcUrlsResolved }
|
|
1051
1062
|
: {}),
|
|
1052
|
-
...(l2ProofRpcUrlsResolved
|
|
1053
|
-
? { l2ProofRpcUrl: l2ProofRpcUrlsResolved[0], l2ProofRpcUrls: l2ProofRpcUrlsResolved }
|
|
1054
|
-
: {}),
|
|
1055
|
-
...(ethereumRpcUrlsResolved
|
|
1056
|
-
? { ethereumRpcUrl: ethereumRpcUrlsResolved[0], ethereumRpcUrls: ethereumRpcUrlsResolved }
|
|
1057
|
-
: {}),
|
|
1058
|
-
...(ethereumArchiveRpcUrlsResolved
|
|
1059
|
-
? {
|
|
1060
|
-
ethereumArchiveRpcUrl: ethereumArchiveRpcUrlsResolved[0],
|
|
1061
|
-
ethereumArchiveRpcUrls: ethereumArchiveRpcUrlsResolved,
|
|
1062
|
-
}
|
|
1063
|
-
: {}),
|
|
1064
1063
|
// parseTask assigns a UUID to any entry missing an id
|
|
1065
1064
|
tasks: parsed.tasks.map(parseTask),
|
|
1066
1065
|
engine: {
|
|
@@ -1103,6 +1102,7 @@ export function persistTopLevelConfigValue(key, value, configPath) {
|
|
|
1103
1102
|
*/
|
|
1104
1103
|
const TRACKED_ENV_VARS = [
|
|
1105
1104
|
'JINN_NETWORK',
|
|
1105
|
+
'JINN_STATE_DIR',
|
|
1106
1106
|
'JINN_EARNING_DIR',
|
|
1107
1107
|
'JINN_DB_PATH',
|
|
1108
1108
|
'JINN_POLL_INTERVAL_MS',
|
|
@@ -1116,31 +1116,21 @@ const TRACKED_ENV_VARS = [
|
|
|
1116
1116
|
'JINN_HERMES_PATH',
|
|
1117
1117
|
'JINN_HERMES_MODEL',
|
|
1118
1118
|
'JINN_HERMES_PROVIDER',
|
|
1119
|
+
'JINN_HERMES_BASE_URL',
|
|
1119
1120
|
'JINN_HERMES_DOCTOR_TIMEOUT_MS',
|
|
1120
1121
|
'JINN_RUNTIME_MODE',
|
|
1121
1122
|
'JINN_PEERS',
|
|
1122
1123
|
'JINN_DISCOVERY_MODE',
|
|
1123
1124
|
'JINN_DISCOVERY_URL',
|
|
1124
1125
|
'JINN_DISCOVERY_FALLBACK',
|
|
1126
|
+
'JINN_TASK_DISCOVERY_ALLOWED_TASK_IDS',
|
|
1125
1127
|
'JINN_NODE_ENDPOINT',
|
|
1126
1128
|
'JINN_IPFS_REGISTRY_URL',
|
|
1127
1129
|
'JINN_IPFS_GATEWAY_URL',
|
|
1128
1130
|
'JINN_TESTNET_L2_DEPLOYMENT',
|
|
1129
1131
|
'JINN_TESTNET_TOKEN_DEPLOYMENT',
|
|
1130
1132
|
'JINN_TESTNET_MECH_DEPLOYMENT',
|
|
1131
|
-
'
|
|
1132
|
-
'JINN_MVI_L1_DEPLOYMENT',
|
|
1133
|
-
'JINN_MVI_L2_DEPLOYMENT',
|
|
1134
|
-
'JINN_ETHEREUM_RPC_URL',
|
|
1135
|
-
'JINN_ETHEREUM_ARCHIVE_RPC_URL',
|
|
1136
|
-
'JINN_L1_NETWORK',
|
|
1137
|
-
'JINN_DISTRIBUTOR_ADDRESS',
|
|
1138
|
-
'JINN_CLAIM_EMITTER_ADDRESS',
|
|
1139
|
-
'JINN_MESSENGER_ADDRESS',
|
|
1140
|
-
'JINN_MESSENGER_MODE',
|
|
1141
|
-
'JINN_CLAIM_SUBMISSION_MODE',
|
|
1142
|
-
'JINN_CLAIM_LOOP_ENABLED',
|
|
1143
|
-
'JINN_CLAIM_LOOP_INTERVAL_MS',
|
|
1133
|
+
'JINN_WATCHDOG_AUTO_RESTART',
|
|
1144
1134
|
'JINN_STAKING_MODE',
|
|
1145
1135
|
'JINN_TARGET_SERVICES',
|
|
1146
1136
|
'JINN_DEBUG',
|
|
@@ -1148,6 +1138,8 @@ const TRACKED_ENV_VARS = [
|
|
|
1148
1138
|
'JINN_MASTER_ETH_DAILY_WEI',
|
|
1149
1139
|
'JINN_MIN_EOA_GAS_WEI',
|
|
1150
1140
|
'JINN_MIN_SAFE_ETH_WEI',
|
|
1141
|
+
'JINN_FAUCET_DAILY_TOPUP_CAP',
|
|
1142
|
+
'JINN_FAUCET_TOPUP_COOLDOWN_MS',
|
|
1151
1143
|
'JINN_IDENTITY_REGISTRY_ADDRESS',
|
|
1152
1144
|
'JINN_VALIDATION_REGISTRY_ADDRESS',
|
|
1153
1145
|
'JINN_REPUTATION_ENABLED',
|
|
@@ -1158,6 +1150,7 @@ const TRACKED_ENV_VARS = [
|
|
|
1158
1150
|
'JINN_TASKS',
|
|
1159
1151
|
'JINN_ENGINE_WORKING_DIR_ROOT',
|
|
1160
1152
|
'JINN_ENGINE_IMPL_STATE_DIR_ROOT',
|
|
1153
|
+
'JINN_SWE_REBENCH_V2_STATE_DIR',
|
|
1161
1154
|
'JINN_OPERATOR_PUBLIC_ENDPOINT',
|
|
1162
1155
|
'JINN_OPERATOR_DEFAULT_PRICE_USDC',
|
|
1163
1156
|
'JINN_OPERATOR_DONATION_ENABLED',
|