@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/main.js
CHANGED
|
@@ -43,8 +43,10 @@ import { buildEnvelope, emitEnvelope } from './errors/envelope.js';
|
|
|
43
43
|
import { clearBootstrapError, persistBootstrapError, } from './errors/persisted-bootstrap-error.js';
|
|
44
44
|
import { emitStructured } from './events/emitter.js';
|
|
45
45
|
import { applyPidfileLivenessGate } from './preflight/pidfile-liveness.js';
|
|
46
|
+
import { applyDeploymentReadinessGate } from './preflight/deployment-readiness.js';
|
|
47
|
+
import { detectAuthContext } from './preflight/claude-auth.js';
|
|
46
48
|
import { FleetBootstrapper, recoverEvictedService as recoverEvictedServiceFn } from './earning/bootstrap.js';
|
|
47
|
-
import {
|
|
49
|
+
import { applyChainGasOverrides, getChainConfig } from './earning/contracts.js';
|
|
48
50
|
import { runLegacyAgentIdMigration } from './earning/migrate-agent-id.js';
|
|
49
51
|
import { FleetStateStore } from './earning/store.js';
|
|
50
52
|
import { isOperationalServiceStep, } from './earning/types.js';
|
|
@@ -55,12 +57,12 @@ import { Daemon } from './daemon/daemon.js';
|
|
|
55
57
|
import { buildSpendCapConfig } from './spend/daemon-config.js';
|
|
56
58
|
import { buildAiUnitsConfig } from './spend/ai-units-config.js';
|
|
57
59
|
import { REFERENCE_CEILING } from './spend/ai-units.js';
|
|
58
|
-
import {
|
|
59
|
-
import { createJinnPublicClient, createJinnWalletClient, createJinnL1PublicClient, createJinnL1WalletClient } from './earning/viem-clients.js';
|
|
60
|
+
import { createJinnPublicClient, createJinnWalletClient } from './earning/viem-clients.js';
|
|
60
61
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
61
62
|
import { getAddress } from 'viem';
|
|
62
63
|
import { DEFAULT_DISABLED_HARNESSES, DEFAULT_HARNESS, HarnessRegistry, } from './harnesses/engine/registry.js';
|
|
63
|
-
import {
|
|
64
|
+
import { createMutableJoinedSolverNetsView } from './harnesses/engine/engine.js';
|
|
65
|
+
import { createJoinApplier } from './daemon/join-applier.js';
|
|
64
66
|
import { buildHarnesses } from './harnesses/impls/index.js';
|
|
65
67
|
import { loadExternalImpl } from './harnesses/external-impls/index.js';
|
|
66
68
|
import { CLAUDE_CODE_HARNESS, CODEX_HARNESS, HERMES_AGENT_HARNESS, harnessStateDirName } from './harnesses/names.js';
|
|
@@ -78,6 +80,8 @@ import { CredentialScrubProcessor } from './trajectory/processors/credential-scr
|
|
|
78
80
|
import { TranscriptContentScrubProcessor } from './trajectory/processors/transcript-content-scrub.js';
|
|
79
81
|
import { IdentityScrubProcessor } from './trajectory/processors/identity-scrub.js';
|
|
80
82
|
import { PathScrubProcessor } from './trajectory/processors/path-scrub.js';
|
|
83
|
+
import { buildScrubPipeline } from './trajectory/scrub/build.js';
|
|
84
|
+
import { maybeBuildPiiDetector } from './trajectory/scrub/pii-build.js';
|
|
81
85
|
import { SqliteExporterProcessor } from './trajectory/processors/sqlite-exporter.js';
|
|
82
86
|
import { ClaudeCodeJsonlParser } from './trajectory/transcript-parsers/claude-code-jsonl.js';
|
|
83
87
|
import { CodexSessionParser } from './trajectory/transcript-parsers/codex-session.js';
|
|
@@ -161,6 +165,11 @@ let activeClaudePath = config.claudePath ?? 'claude';
|
|
|
161
165
|
const selectClaudePath = (claudePath) => {
|
|
162
166
|
activeClaudePath = claudePath;
|
|
163
167
|
config.claudePath = claudePath;
|
|
168
|
+
// Harmless no-op when the embedded agent is disabled
|
|
169
|
+
// (`embeddedAgentEnabled` is false at this point): the agent surface
|
|
170
|
+
// that consumes this path isn't mounted, so the update has nothing to
|
|
171
|
+
// propagate to. Called unconditionally to keep the path in sync
|
|
172
|
+
// whenever the agent IS enabled.
|
|
164
173
|
updateAgentClaudePath(claudePath);
|
|
165
174
|
};
|
|
166
175
|
const NETWORK_CHAIN = config.network === 'testnet' ? 'base-sepolia' : 'base';
|
|
@@ -173,33 +182,8 @@ const CHAIN_CONFIG = applyChainGasOverrides(getChainConfig(NETWORK_CHAIN, {
|
|
|
173
182
|
minEoaGasWei: config.minEoaGasWei,
|
|
174
183
|
minSafeEthWei: config.minSafeEthWei,
|
|
175
184
|
});
|
|
176
|
-
const MESSENGER_MODE_EXPLICIT = process.env['JINN_MESSENGER_MODE'] !== undefined ||
|
|
177
|
-
configFileHasTopLevelKey(CONFIG_PATH, 'jinnMessengerMode');
|
|
178
|
-
const JINN_MVI_CONFIG = loadJinnMviConfig({
|
|
179
|
-
l1ArtifactPath: config.jinnMviL1DeploymentPath ??
|
|
180
|
-
(config.network === 'testnet' ? DEFAULT_TESTNET_ARTIFACTS.jinnMviL1 : undefined),
|
|
181
|
-
l2ArtifactPath: config.jinnMviL2DeploymentPath ??
|
|
182
|
-
(config.network === 'testnet' ? DEFAULT_TESTNET_ARTIFACTS.jinnMviL2 : undefined),
|
|
183
|
-
distributorAddress: config.jinnDistributorAddress,
|
|
184
|
-
messengerAddress: config.jinnMessengerAddress,
|
|
185
|
-
claimEmitterAddress: config.jinnClaimEmitterAddress,
|
|
186
|
-
messengerMode: MESSENGER_MODE_EXPLICIT ? config.jinnMessengerMode : undefined,
|
|
187
|
-
});
|
|
188
|
-
const JINN_CLAIM_MESSENGER_MODE = JINN_MVI_CONFIG.messengerMode ?? config.jinnMessengerMode;
|
|
189
185
|
const MARKETPLACE_ADDRESS = CHAIN_CONFIG.mechMarketplace;
|
|
190
186
|
const ROUTER_ADDRESS = (CHAIN_CONFIG.jinnRouter ?? '0xfFa7118A3D820cd4E820010837D65FAfF463181B');
|
|
191
|
-
function configFileHasTopLevelKey(configPath, key) {
|
|
192
|
-
const filePath = configPath ?? join(process.env['HOME'] ?? '', '.jinn-client', 'config.json');
|
|
193
|
-
if (!filePath || !existsSync(filePath))
|
|
194
|
-
return false;
|
|
195
|
-
try {
|
|
196
|
-
const raw = JSON.parse(readFileSync(filePath, 'utf8'));
|
|
197
|
-
return !!raw && typeof raw === 'object' && Object.prototype.hasOwnProperty.call(raw, key);
|
|
198
|
-
}
|
|
199
|
-
catch {
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
187
|
class EnsurePendingCaptureProcessor {
|
|
204
188
|
captures;
|
|
205
189
|
constructor(captures) {
|
|
@@ -700,10 +684,6 @@ export async function main() {
|
|
|
700
684
|
// fail-loud on chain-id mismatch against the head provider.
|
|
701
685
|
await probeFallbackChain(config.rpcUrls, config.network, 'L2');
|
|
702
686
|
console.error(summarizeFallbackChain('L2', config.rpcUrls));
|
|
703
|
-
if (config.jinnClaimLoopEnabled && config.ethereumRpcUrls) {
|
|
704
|
-
await probeFallbackChain(config.ethereumRpcUrls, config.network, 'L1');
|
|
705
|
-
console.error(summarizeFallbackChain('L1', config.ethereumRpcUrls));
|
|
706
|
-
}
|
|
707
687
|
const portPreflight = await checkApiPortAvailable(config.apiPort);
|
|
708
688
|
if (!portPreflight.ok) {
|
|
709
689
|
emitEnvelope({
|
|
@@ -858,6 +838,13 @@ export async function main() {
|
|
|
858
838
|
// builder-artifacts. Holder ref lets the routes register eagerly and
|
|
859
839
|
// start returning real data the moment main.ts assigns holder.current.
|
|
860
840
|
const discoveryApiHolder = { current: undefined };
|
|
841
|
+
// #1037: same eager-register / late-populate pattern for the join applier.
|
|
842
|
+
// The join endpoint registers eagerly inside startApiServer; the applier is
|
|
843
|
+
// built only after the latest join-consuming subsystem (the engine view,
|
|
844
|
+
// wired in the Daemon ctor). The endpoint tolerates an empty holder in the
|
|
845
|
+
// gap between server-start and populate by falling back to
|
|
846
|
+
// restartRequired:true.
|
|
847
|
+
const joinApplierHolder = { current: undefined };
|
|
861
848
|
// hjex.6: retry signal for the bootstrap halt-and-resume loop.
|
|
862
849
|
// When a SetupBootstrapHalted is caught (fatal non-funding error or funding
|
|
863
850
|
// timeout), main() waits on this promise instead of returning, so the setup
|
|
@@ -964,6 +951,7 @@ export async function main() {
|
|
|
964
951
|
rpcUrl: config.rpcUrl,
|
|
965
952
|
defaultRpcUrl: CHAIN_CONFIG.rpcUrl,
|
|
966
953
|
joinedSolverNets: config.joinedSolverNets,
|
|
954
|
+
onboardingComplete: config.onboardingComplete,
|
|
967
955
|
}),
|
|
968
956
|
},
|
|
969
957
|
// SolverNet catalog. Stubbed to the bundled `prediction` net for v1.
|
|
@@ -1080,6 +1068,10 @@ export async function main() {
|
|
|
1080
1068
|
// targetServices DOES need to flow through so the faucet drips enough
|
|
1081
1069
|
// ETH to cover ALL services for the operator's chosen targetServices.
|
|
1082
1070
|
targetServices: config.targetServices,
|
|
1071
|
+
// Issue #560: batched daily-cap top-up knobs — single source of truth
|
|
1072
|
+
// in JinnConfig, surfaced to the SPA via GET /v1/setup/drip/quota.
|
|
1073
|
+
faucetDailyTopupCap: config.faucetDailyTopupCap,
|
|
1074
|
+
faucetTopupCooldownMs: config.faucetTopupCooldownMs,
|
|
1083
1075
|
claudePath: activeClaudePath,
|
|
1084
1076
|
getClaudePath: () => activeClaudePath,
|
|
1085
1077
|
configPath: CONFIG_PATH ?? DEFAULT_CONFIG_PATH,
|
|
@@ -1111,16 +1103,21 @@ export async function main() {
|
|
|
1111
1103
|
resolve();
|
|
1112
1104
|
});
|
|
1113
1105
|
},
|
|
1106
|
+
// #1037: hot-apply a join to the running daemon. Populated after the
|
|
1107
|
+
// join-consuming subsystems are built (see joinApplierHolder). Empty
|
|
1108
|
+
// until then → the endpoint returns restartRequired:true.
|
|
1109
|
+
joinApplier: joinApplierHolder,
|
|
1110
|
+
// #983: mutate the in-memory config so GET /v1/bootstrap reflects the
|
|
1111
|
+
// completion flag live (the endpoint persists to disk; this keeps the
|
|
1112
|
+
// configReader's in-memory read consistent — same pattern as the
|
|
1113
|
+
// join-applier's config write). Cast: JinnConfig has the optional field.
|
|
1114
|
+
markOnboardingComplete: () => {
|
|
1115
|
+
config.onboardingComplete = true;
|
|
1116
|
+
},
|
|
1114
1117
|
},
|
|
1115
1118
|
status: {
|
|
1116
1119
|
earningDir: config.earningDir,
|
|
1117
1120
|
rpcUrl: config.rpcUrl,
|
|
1118
|
-
// tJINN identity comes from the bundled JINN MVI L1 artifact
|
|
1119
|
-
// (`JINN_MVI_CONFIG`) — one source of truth. The Sepolia RPC endpoint
|
|
1120
|
-
// is read from `config.ethereumRpcUrl` via the threaded `config`.
|
|
1121
|
-
tjinnTokenAddress: JINN_MVI_CONFIG.jinn,
|
|
1122
|
-
tjinnChainId: JINN_MVI_CONFIG.l1ChainId,
|
|
1123
|
-
tjinnDistributorAddress: JINN_MVI_CONFIG.distributor,
|
|
1124
1121
|
network: config.network,
|
|
1125
1122
|
pollIntervalMs: config.pollIntervalMs,
|
|
1126
1123
|
masterEthDailyEstimateWei: config.masterEthDailyEstimateWei,
|
|
@@ -1132,6 +1129,10 @@ export async function main() {
|
|
|
1132
1129
|
engine: config.engine,
|
|
1133
1130
|
config,
|
|
1134
1131
|
configPath: CONFIG_PATH ?? DEFAULT_CONFIG_PATH,
|
|
1132
|
+
passwordRotation: {
|
|
1133
|
+
source: passwordResolution.source,
|
|
1134
|
+
filePath: passwordResolution.filePath,
|
|
1135
|
+
},
|
|
1135
1136
|
},
|
|
1136
1137
|
// Launcher mode (Tasks 6 + 7). Deps are resolved lazily because the
|
|
1137
1138
|
// generator and Safe address are constructed after bootstrap, after
|
|
@@ -1547,6 +1548,28 @@ export async function main() {
|
|
|
1547
1548
|
// the panel's next refetch. Before this, the routes 404'd forever and
|
|
1548
1549
|
// the /build page rendered "Discovery unavailable" permanently.
|
|
1549
1550
|
discoveryApiHolder.current = sharedDiscoveryApi;
|
|
1551
|
+
// #1037: the live task-discovery descriptor. Always present with a mutable
|
|
1552
|
+
// `solverNetManifestCids` array (`taskDiscoveryManifestCids` is a fresh
|
|
1553
|
+
// `.map` result, safe to push onto). The join applier holds this same object
|
|
1554
|
+
// reference and pushes a newly-joined cid onto it live.
|
|
1555
|
+
const taskDiscovery = {
|
|
1556
|
+
discoveryApi: sharedDiscoveryApi,
|
|
1557
|
+
solverNetManifestCids: taskDiscoveryManifestCids,
|
|
1558
|
+
// No explicit `onchainFromBlock` by default — let `MechAdapter`'s
|
|
1559
|
+
// `DEFAULT_TASK_DISCOVERY_FROM_BLOCK` per-chain default flow through.
|
|
1560
|
+
// Hardcoding here shadowed the adapter's default and re-introduced the
|
|
1561
|
+
// ghost-task floor every release; removing the shadow makes `adapter.ts`
|
|
1562
|
+
// the single source of truth. See gh #300. An operator MAY opt in to a
|
|
1563
|
+
// recent floor via `taskDiscoveryOnchainFromBlock` to bound the canonical
|
|
1564
|
+
// getLogs scan (which otherwise parses a large history on the main thread
|
|
1565
|
+
// and can stall the loop) and lean on the indexer DiscoveryAPI.
|
|
1566
|
+
...(config.taskDiscoveryOnchainFromBlock !== undefined
|
|
1567
|
+
? { onchainFromBlock: config.taskDiscoveryOnchainFromBlock }
|
|
1568
|
+
: {}),
|
|
1569
|
+
...(config.taskDiscoveryAllowedTaskIds?.length
|
|
1570
|
+
? { allowedTaskIds: config.taskDiscoveryAllowedTaskIds }
|
|
1571
|
+
: {}),
|
|
1572
|
+
};
|
|
1550
1573
|
const adapter = new MechAdapter({
|
|
1551
1574
|
rpcUrl: config.rpcUrls,
|
|
1552
1575
|
mechMarketplaceAddress: MARKETPLACE_ADDRESS,
|
|
@@ -1560,27 +1583,7 @@ export async function main() {
|
|
|
1560
1583
|
chainId: config.network === 'testnet' ? 84532 : 8453,
|
|
1561
1584
|
routerClaimDeliveryVariant: CHAIN_CONFIG.routerClaimDeliveryVersion,
|
|
1562
1585
|
evictionRecovery,
|
|
1563
|
-
taskDiscovery
|
|
1564
|
-
? {
|
|
1565
|
-
discoveryApi: sharedDiscoveryApi,
|
|
1566
|
-
solverNetManifestCids: taskDiscoveryManifestCids,
|
|
1567
|
-
// No explicit `onchainFromBlock` by default — let `MechAdapter`'s
|
|
1568
|
-
// `DEFAULT_TASK_DISCOVERY_FROM_BLOCK` per-chain default flow
|
|
1569
|
-
// through. Hardcoding here shadowed the adapter's default and
|
|
1570
|
-
// re-introduced the ghost-task floor every release; removing the
|
|
1571
|
-
// shadow makes `adapter.ts` the single source of truth. See gh
|
|
1572
|
-
// #300. An operator MAY opt in to a recent floor via
|
|
1573
|
-
// `taskDiscoveryOnchainFromBlock` to bound the canonical getLogs
|
|
1574
|
-
// scan (which otherwise parses a large history on the main thread
|
|
1575
|
-
// and can stall the loop) and lean on the indexer DiscoveryAPI.
|
|
1576
|
-
...(config.taskDiscoveryOnchainFromBlock !== undefined
|
|
1577
|
-
? { onchainFromBlock: config.taskDiscoveryOnchainFromBlock }
|
|
1578
|
-
: {}),
|
|
1579
|
-
...(config.taskDiscoveryAllowedTaskIds?.length
|
|
1580
|
-
? { allowedTaskIds: config.taskDiscoveryAllowedTaskIds }
|
|
1581
|
-
: {}),
|
|
1582
|
-
}
|
|
1583
|
-
: undefined,
|
|
1586
|
+
taskDiscovery,
|
|
1584
1587
|
}, sharedStore);
|
|
1585
1588
|
// ── TaskEngine wiring ─────────────────────────────────────────────────
|
|
1586
1589
|
// Build agent viem clients (same creds as MechAdapter uses internally).
|
|
@@ -1588,57 +1591,7 @@ export async function main() {
|
|
|
1588
1591
|
const agentChain = config.network === 'testnet'
|
|
1589
1592
|
? viemChains.baseSepolia
|
|
1590
1593
|
: viemChains.base;
|
|
1591
|
-
const l1Chain = config.jinnL1Network === 'sepolia' ? viemChains.sepolia : viemChains.mainnet;
|
|
1592
|
-
const agentChainContracts = agentChain.contracts;
|
|
1593
|
-
const optimismPortalAddress = agentChainContracts?.portal?.[l1Chain.id]?.address;
|
|
1594
|
-
const disputeGameFactoryAddress = agentChainContracts?.disputeGameFactory?.[l1Chain.id]?.address;
|
|
1595
|
-
const l2ProofClient = config.l2ProofRpcUrls
|
|
1596
|
-
? createJinnPublicClient(config.l2ProofRpcUrls, NETWORK_CHAIN)
|
|
1597
|
-
: undefined;
|
|
1598
1594
|
const agentClients = createClients(config.rpcUrls, agentPrivateKey, agentChain);
|
|
1599
|
-
// ── L1 (Sepolia / Ethereum mainnet) clients for cross-chain JINN claim loop ──
|
|
1600
|
-
// Uses the agent EOA because MockMessenger.owner is the agent on testnet.
|
|
1601
|
-
// Same key as L2; only the chain differs.
|
|
1602
|
-
const shouldWireJinnClaimL1 = shouldWireJinnClaimL1Signer({
|
|
1603
|
-
enabled: config.jinnClaimLoopEnabled,
|
|
1604
|
-
intervalMs: config.jinnClaimLoopIntervalMs,
|
|
1605
|
-
submissionMode: config.jinnClaimSubmissionMode,
|
|
1606
|
-
distributorAddress: JINN_MVI_CONFIG.distributor,
|
|
1607
|
-
ethereumRpcUrl: config.ethereumRpcUrl,
|
|
1608
|
-
});
|
|
1609
|
-
const l1ClientsForJinnClaim = shouldWireJinnClaimL1 && config.ethereumRpcUrls
|
|
1610
|
-
? {
|
|
1611
|
-
public: createJinnL1PublicClient(config.ethereumRpcUrls, config.jinnL1Network),
|
|
1612
|
-
wallet: createJinnL1WalletClient(config.ethereumRpcUrls, config.jinnL1Network, privateKeyToAccount(agentPrivateKey)),
|
|
1613
|
-
}
|
|
1614
|
-
: undefined;
|
|
1615
|
-
const jinnClaimLoopConfig = buildJinnClaimLoopConfig({
|
|
1616
|
-
enabled: config.jinnClaimLoopEnabled,
|
|
1617
|
-
intervalMs: config.jinnClaimLoopIntervalMs,
|
|
1618
|
-
submissionMode: config.jinnClaimSubmissionMode,
|
|
1619
|
-
messengerMode: JINN_CLAIM_MESSENGER_MODE,
|
|
1620
|
-
mvi: JINN_MVI_CONFIG,
|
|
1621
|
-
l2Client: agentClients.publicClient,
|
|
1622
|
-
l2ProofClient,
|
|
1623
|
-
l2Wallet: agentClients.walletClient,
|
|
1624
|
-
l1Clients: l1ClientsForJinnClaim,
|
|
1625
|
-
store: earningStore,
|
|
1626
|
-
chain: NETWORK_CHAIN,
|
|
1627
|
-
optimismPortalAddress,
|
|
1628
|
-
disputeGameFactoryAddress,
|
|
1629
|
-
});
|
|
1630
|
-
if (jinnClaimLoopConfig) {
|
|
1631
|
-
console.log(`[main] JinnClaimLoop: enabled (submission=${config.jinnClaimSubmissionMode}, ` +
|
|
1632
|
-
`mode=${JINN_CLAIM_MESSENGER_MODE}, ` +
|
|
1633
|
-
`interval=${config.jinnClaimLoopIntervalMs}ms, distributor=${JINN_MVI_CONFIG.distributor}, ` +
|
|
1634
|
-
`emitter=${JINN_MVI_CONFIG.claimEmitter})`);
|
|
1635
|
-
}
|
|
1636
|
-
else if (!config.jinnClaimLoopEnabled) {
|
|
1637
|
-
console.log('[main] JinnClaimLoop: disabled (jinnClaimLoopEnabled=false)');
|
|
1638
|
-
}
|
|
1639
|
-
else {
|
|
1640
|
-
console.log(`[main] JinnClaimLoop: disabled (missing claim-loop artifacts, interval disabled, or L1 submit wiring)`);
|
|
1641
|
-
}
|
|
1642
1595
|
// ── Harness registry ─────────────────────────────────────────────────────────
|
|
1643
1596
|
const solverNetRegistry = await loadSolverNets(config);
|
|
1644
1597
|
for (const net of solverNetRegistry.list()) {
|
|
@@ -1729,6 +1682,7 @@ export async function main() {
|
|
|
1729
1682
|
hermesPath: config.hermesPath,
|
|
1730
1683
|
hermesModel: config.hermesModel,
|
|
1731
1684
|
hermesProvider: config.hermesProvider,
|
|
1685
|
+
hermesBaseUrl: config.hermesBaseUrl,
|
|
1732
1686
|
hermesDoctorTimeoutMs: config.hermesDoctorTimeoutMs,
|
|
1733
1687
|
codexPath: config.codexPath,
|
|
1734
1688
|
codexDoctorTimeoutMs: config.codexDoctorTimeoutMs,
|
|
@@ -1762,6 +1716,13 @@ export async function main() {
|
|
|
1762
1716
|
// is no longer needed and would throw on Hono's locked matcher.
|
|
1763
1717
|
harnessReadinessRegistryHolder.current = harnessReadinessRegistry;
|
|
1764
1718
|
console.log('[main] HarnessReadinessRegistry started; /v1/harnesses/readiness routes active.');
|
|
1719
|
+
// #1037: always construct the engine eligibility view (mutable) so a
|
|
1720
|
+
// hot-applied join can inject its cid live. Previously this was wired only
|
|
1721
|
+
// when config.joinedSolverNets was truthy; a zero-join daemon then ran the
|
|
1722
|
+
// legacy solverType gate. With an always-present empty view, a zero-join
|
|
1723
|
+
// daemon rejects cid-bearing tasks (its discovery cid set is empty so it
|
|
1724
|
+
// discovers none) and still passes legacy no-cid tasks. See plan §behaviour-change.
|
|
1725
|
+
const joinedSolverNetsView = createMutableJoinedSolverNetsView(config.joinedSolverNets);
|
|
1765
1726
|
// ── Engine deps ───────────────────────────────────────────────────────────────
|
|
1766
1727
|
// Packaging deps: artifacts are always written to served_artifacts
|
|
1767
1728
|
// (operator-local SQLite). In public-testnet donation mode, scrubbed artifact
|
|
@@ -1848,6 +1809,14 @@ export async function main() {
|
|
|
1848
1809
|
else {
|
|
1849
1810
|
console.log('[main] IdentityPublisher: disabled (no agent_id on active service — re-run bootstrap to mint the operator agent NFT)');
|
|
1850
1811
|
}
|
|
1812
|
+
// ── Seller-side scrub pipeline (publish-time) ─────────────────────────────
|
|
1813
|
+
// One pipeline shared by the task engine and the live capture publisher so
|
|
1814
|
+
// every published trajectory passes through the same maintained scrub stack
|
|
1815
|
+
// (structural key policy → openredaction → secretlint/entropy → optional ML
|
|
1816
|
+
// PII). The OTLP receiver above runs best-effort ingest-time scrubbers; this
|
|
1817
|
+
// is the authoritative final gate before a trajectory becomes public/sellable.
|
|
1818
|
+
const sellerPiiDetector = await maybeBuildPiiDetector(config.captures.piiDetection);
|
|
1819
|
+
const sellerScrubPipeline = buildScrubPipeline(sellerPiiDetector ? { piiDetector: sellerPiiDetector } : {});
|
|
1851
1820
|
const liveCapturePublisher = createLiveCapturePublisher({
|
|
1852
1821
|
store: sharedStore,
|
|
1853
1822
|
captures: capturesStore,
|
|
@@ -1860,6 +1829,7 @@ export async function main() {
|
|
|
1860
1829
|
clientGitSha: buildInfo.clientGitSha,
|
|
1861
1830
|
identityPublisher,
|
|
1862
1831
|
harnessMode: config.harness.mode,
|
|
1832
|
+
scrubPipeline: sellerScrubPipeline,
|
|
1863
1833
|
});
|
|
1864
1834
|
capturePublishRef.current = liveCapturePublisher.publishCapture;
|
|
1865
1835
|
// ── Reputation feedback hook (jinn-mono-yg4) ──────────────────────────────
|
|
@@ -2070,6 +2040,7 @@ export async function main() {
|
|
|
2070
2040
|
agentEoa: agentEoaAddress,
|
|
2071
2041
|
safeAddress,
|
|
2072
2042
|
agentPrivateKey,
|
|
2043
|
+
ipfsGatewayUrl: config.ipfsGatewayUrl,
|
|
2073
2044
|
...(sharedDiscoveryApi ? { discoveryApi: sharedDiscoveryApi } : {}),
|
|
2074
2045
|
},
|
|
2075
2046
|
logger: {
|
|
@@ -2174,12 +2145,6 @@ export async function main() {
|
|
|
2174
2145
|
status: {
|
|
2175
2146
|
earningDir: config.earningDir,
|
|
2176
2147
|
rpcUrl: config.rpcUrl,
|
|
2177
|
-
// tJINN identity comes from the bundled JINN MVI L1 artifact
|
|
2178
|
-
// (`JINN_MVI_CONFIG`) — one source of truth. The Sepolia RPC endpoint
|
|
2179
|
-
// is read from `config.ethereumRpcUrl` via the threaded `config`.
|
|
2180
|
-
tjinnTokenAddress: JINN_MVI_CONFIG.jinn,
|
|
2181
|
-
tjinnChainId: JINN_MVI_CONFIG.l1ChainId,
|
|
2182
|
-
tjinnDistributorAddress: JINN_MVI_CONFIG.distributor,
|
|
2183
2148
|
// stOLAS L2 distributor — mirrors `CHAIN_CONFIG.distributorAddress`
|
|
2184
2149
|
// used to gate the EvictionLoop (issue #651). Threaded through so the
|
|
2185
2150
|
// SPA's autoRestake predicate keys off the same on-chain artifact as
|
|
@@ -2196,6 +2161,10 @@ export async function main() {
|
|
|
2196
2161
|
engine: config.engine,
|
|
2197
2162
|
config,
|
|
2198
2163
|
configPath: CONFIG_PATH ?? DEFAULT_CONFIG_PATH,
|
|
2164
|
+
passwordRotation: {
|
|
2165
|
+
source: passwordResolution.source,
|
|
2166
|
+
filePath: passwordResolution.filePath,
|
|
2167
|
+
},
|
|
2199
2168
|
spendCaps: spendCap?.caps,
|
|
2200
2169
|
aiUnits,
|
|
2201
2170
|
},
|
|
@@ -2209,7 +2178,6 @@ export async function main() {
|
|
|
2209
2178
|
distributorAddress: CHAIN_CONFIG.distributorAddress,
|
|
2210
2179
|
}
|
|
2211
2180
|
: undefined,
|
|
2212
|
-
jinnClaim: jinnClaimLoopConfig,
|
|
2213
2181
|
restorationEngine: {
|
|
2214
2182
|
paths: {
|
|
2215
2183
|
workingDirRoot: config.engine.workingDirRoot,
|
|
@@ -2226,9 +2194,8 @@ export async function main() {
|
|
|
2226
2194
|
// doesn't match a joined entry (plus a role gate). Absent when the
|
|
2227
2195
|
// operator hasn't joined any nets yet — the engine then falls back to
|
|
2228
2196
|
// the legacy solverType-keyed gate.
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
: {}),
|
|
2197
|
+
// #1037: always wire the (mutable) view so a hot-applied join is live.
|
|
2198
|
+
joinedSolverNets: joinedSolverNetsView,
|
|
2232
2199
|
// Spec §14: task validation resolves manifest → contract → schemas.
|
|
2233
2200
|
// Threaded only when the SolverNet registry client was constructed
|
|
2234
2201
|
// (testnet branch above). The engine treats absence as "schema
|
|
@@ -2240,6 +2207,9 @@ export async function main() {
|
|
|
2240
2207
|
reputationFeedback,
|
|
2241
2208
|
operatorConfig,
|
|
2242
2209
|
harnessMode: config.harness.mode,
|
|
2210
|
+
// Share the one maintained scrub pipeline (incl. optional ML PII) so task
|
|
2211
|
+
// trajectories and captures are scrubbed by the same stack before publish.
|
|
2212
|
+
scrubPipeline: sellerScrubPipeline,
|
|
2243
2213
|
},
|
|
2244
2214
|
balanceTopup: config.balanceTopupIntervalMs > 0
|
|
2245
2215
|
? {
|
|
@@ -2262,6 +2232,7 @@ export async function main() {
|
|
|
2262
2232
|
CHAIN_CONFIG.distributorAddress
|
|
2263
2233
|
? {
|
|
2264
2234
|
intervalMs: config.evictionCheckIntervalMs,
|
|
2235
|
+
reStakeThrottleMs: config.checkpointIntervalMs,
|
|
2265
2236
|
store: earningStore,
|
|
2266
2237
|
chain: NETWORK_CHAIN,
|
|
2267
2238
|
readContract: (opts) => publicClient.readContract(opts),
|
|
@@ -2309,13 +2280,47 @@ export async function main() {
|
|
|
2309
2280
|
},
|
|
2310
2281
|
}
|
|
2311
2282
|
: undefined,
|
|
2283
|
+
// #1043 loop watchdog. Always constructed in production so a stale loop is
|
|
2284
|
+
// detected + surfaced; the process-exit recovery is flag-gated (default
|
|
2285
|
+
// OFF) by config.watchdogAutoRestart.
|
|
2286
|
+
watchdog: { autoRestart: config.watchdogAutoRestart },
|
|
2287
|
+
});
|
|
2288
|
+
// #1037: populate the join applier now that all four join-consuming
|
|
2289
|
+
// subsystems exist — the live task-discovery descriptor (`taskDiscovery`),
|
|
2290
|
+
// the mutable engine view (`joinedSolverNetsView`), the readiness registry,
|
|
2291
|
+
// and the SolverNet registry. The join endpoint registered eagerly at
|
|
2292
|
+
// server-start; before this point it returns restartRequired:true.
|
|
2293
|
+
joinApplierHolder.current = createJoinApplier({
|
|
2294
|
+
taskDiscovery,
|
|
2295
|
+
view: joinedSolverNetsView,
|
|
2296
|
+
readiness: harnessReadinessRegistry,
|
|
2297
|
+
registry: solverNetRegistry,
|
|
2298
|
+
config,
|
|
2312
2299
|
});
|
|
2300
|
+
if (config.watchdogAutoRestart) {
|
|
2301
|
+
console.log('[watchdog] auto-restart ENABLED (stale loop → non-zero exit)');
|
|
2302
|
+
}
|
|
2313
2303
|
// Write pidfile so `jinn stop` can find us. First, refuse the run if another
|
|
2314
2304
|
// daemon already owns this earning directory — see issue #649. The gate
|
|
2315
2305
|
// handles all three branches (refuse-and-exit, unlink-stale-and-continue,
|
|
2316
2306
|
// proceed); the writeFileSync below MUST stay outside the helper so the
|
|
2317
2307
|
// "// DO NOT add store mutations above this line — see #649" invariant is
|
|
2318
2308
|
// visible right here at the call site.
|
|
2309
|
+
// Deployment-readiness gate (#958). In a deployment context (JINN_STATE_DIR
|
|
2310
|
+
// set or a container/compose auth context) this fails loud and exits when a
|
|
2311
|
+
// hard check fails (writable-volume, state-on-volume, agent-cli-non-root).
|
|
2312
|
+
// Outside a deployment context it only logs advisories — a plain local
|
|
2313
|
+
// `jinn run` is NEVER newly gated here. Runs before the pidfile gate so an
|
|
2314
|
+
// unfit environment refuses before we touch the pidfile.
|
|
2315
|
+
await applyDeploymentReadinessGate({
|
|
2316
|
+
stateDir: config.stateDir,
|
|
2317
|
+
earningDir: config.earningDir,
|
|
2318
|
+
runtimeMode: config.runtimeMode,
|
|
2319
|
+
}, {
|
|
2320
|
+
env: process.env,
|
|
2321
|
+
getuid: typeof process.getuid === 'function' ? process.getuid.bind(process) : undefined,
|
|
2322
|
+
detectAuthContext,
|
|
2323
|
+
});
|
|
2319
2324
|
const pidPath = join(config.earningDir, 'daemon.pid');
|
|
2320
2325
|
applyPidfileLivenessGate(pidPath);
|
|
2321
2326
|
writeFileSyncMain(pidPath, String(process.pid) + '\n', 'utf-8');
|