@jinn-network/client 0.1.8 → 0.1.9-canary.023faefb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +2 -2
- package/README.md +6 -0
- package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
- package/deployments/deployment-stolas-l2-baseSepolia-fast.json +23 -3
- package/deployments/deployment-task-coordinator-router-v3-baseSepolia-fast.json +34 -6
- package/dist/adapters/mech/adapter.d.ts +31 -1
- package/dist/adapters/mech/adapter.js +126 -53
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +174 -13
- package/dist/adapters/mech/contracts.js +99 -49
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/safe-revert.d.ts +4 -0
- package/dist/adapters/mech/safe-revert.js +5 -1
- package/dist/adapters/mech/safe-revert.js.map +1 -1
- package/dist/adapters/mech/safe.js +77 -1
- package/dist/adapters/mech/safe.js.map +1 -1
- package/dist/adapters/mech/types.d.ts +5 -130
- package/dist/adapters/mech/types.js +9 -65
- package/dist/adapters/mech/types.js.map +1 -1
- package/dist/adapters/mech/verdict-code.js +1 -1
- package/dist/adapters/mech/verdict-code.js.map +1 -1
- package/dist/api/bootstrap-endpoint.d.ts +19 -3
- package/dist/api/bootstrap-endpoint.js +4 -0
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- package/dist/api/discovery-endpoint.d.ts +1 -0
- package/dist/api/discovery-endpoint.js +24 -0
- package/dist/api/discovery-endpoint.js.map +1 -1
- package/dist/api/fleet-build.d.ts +1 -7
- package/dist/api/fleet-build.js +0 -7
- package/dist/api/fleet-build.js.map +1 -1
- package/dist/api/gather-status.d.ts +26 -17
- package/dist/api/gather-status.js +62 -520
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/harness-auth-status-endpoint.d.ts +21 -0
- package/dist/api/harness-auth-status-endpoint.js +17 -0
- package/dist/api/harness-auth-status-endpoint.js.map +1 -0
- package/dist/api/launcher-endpoints.js +6 -1
- package/dist/api/launcher-endpoints.js.map +1 -1
- package/dist/api/launcher-status.d.ts +2 -0
- package/dist/api/launcher-status.js.map +1 -1
- package/dist/api/launcher-tasks.d.ts +47 -0
- package/dist/api/launcher-tasks.js +88 -3
- package/dist/api/launcher-tasks.js.map +1 -1
- package/dist/api/loop-completion-build.d.ts +79 -0
- package/dist/api/loop-completion-build.js +154 -0
- package/dist/api/loop-completion-build.js.map +1 -0
- package/dist/api/operator-artifacts-endpoint.js +1 -1
- package/dist/api/operator-artifacts-endpoint.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +2 -1
- package/dist/api/portfolio-v0-build.js +5 -7
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/prediction-v1-build.d.ts +2 -2
- package/dist/api/prediction-v1-build.js +5 -7
- package/dist/api/prediction-v1-build.js.map +1 -1
- package/dist/api/rewards-build.d.ts +8 -1
- package/dist/api/rewards-build.js +32 -4
- package/dist/api/rewards-build.js.map +1 -1
- package/dist/api/rewards-endpoint.d.ts +12 -0
- package/dist/api/rewards-endpoint.js +46 -0
- package/dist/api/rewards-endpoint.js.map +1 -0
- package/dist/api/server.d.ts +6 -16
- package/dist/api/server.js +29 -26
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +45 -0
- package/dist/api/setup-endpoints.js +271 -52
- package/dist/api/setup-endpoints.js.map +1 -1
- package/dist/api/solvernets-endpoints.js +4 -1
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +71 -94
- package/dist/api/status-build.js +11 -77
- package/dist/api/status-build.js.map +1 -1
- package/dist/api/status-rollup-build.d.ts +0 -4
- package/dist/api/status-rollup-build.js +0 -4
- package/dist/api/status-rollup-build.js.map +1 -1
- package/dist/api/stop-hook.d.ts +1 -1
- package/dist/api/stop-hook.js +1 -1
- package/dist/api/stop-hook.js.map +1 -1
- package/dist/api/task-run-routing.d.ts +1 -1
- package/dist/api/task-runs-build.d.ts +2 -2
- package/dist/api/task-runs-build.js +5 -7
- package/dist/api/task-runs-build.js.map +1 -1
- package/dist/bin/jinn-distil-mcp.js +813 -0
- package/dist/bin/jinn-layer.js +12568 -0
- package/dist/build-info.json +4 -4
- package/dist/build-meta.json +1 -1
- package/dist/captures/distil-export.d.ts +54 -0
- package/dist/captures/distil-export.js +135 -0
- package/dist/captures/distil-export.js.map +1 -0
- package/dist/captures/ingest.d.ts +21 -0
- package/dist/captures/ingest.js +144 -0
- package/dist/captures/ingest.js.map +1 -0
- package/dist/captures/live-publisher.d.ts +9 -0
- package/dist/captures/live-publisher.js +5 -3
- package/dist/captures/live-publisher.js.map +1 -1
- package/dist/captures/publish.d.ts +15 -0
- package/dist/captures/publish.js +17 -7
- package/dist/captures/publish.js.map +1 -1
- package/dist/cli/commands/codedigest-revert-check.js +6 -2
- package/dist/cli/commands/codedigest-revert-check.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.js +36 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/eval.d.ts +87 -0
- package/dist/cli/commands/eval.js +481 -0
- package/dist/cli/commands/eval.js.map +1 -0
- package/dist/cli/commands/rewards.d.ts +2 -0
- package/dist/cli/commands/rewards.js +39 -10
- package/dist/cli/commands/rewards.js.map +1 -1
- package/dist/cli/commands/solver-nets.js +68 -0
- package/dist/cli/commands/solver-nets.js.map +1 -1
- package/dist/cli/commands/status.js +0 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/update.js +8 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/version.js +4 -0
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/execution-context.js +2 -1
- package/dist/cli/execution-context.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/introspection-context.js +0 -3
- package/dist/cli/introspection-context.js.map +1 -1
- package/dist/config.d.ts +158 -541
- package/dist/config.js +190 -197
- package/dist/config.js.map +1 -1
- package/dist/contracts/abis.d.ts +100 -0
- package/dist/contracts/abis.js +58 -0
- package/dist/contracts/abis.js.map +1 -0
- package/dist/contracts/addresses.d.ts +36 -0
- package/dist/contracts/addresses.js +60 -0
- package/dist/contracts/addresses.js.map +1 -0
- package/dist/corpus/acquire.d.ts +7 -6
- package/dist/corpus/acquire.js +10 -10
- package/dist/corpus/acquire.js.map +1 -1
- package/dist/corpus/fetch-artifact.d.ts +21 -0
- package/dist/corpus/fetch-artifact.js +33 -0
- package/dist/corpus/fetch-artifact.js.map +1 -0
- package/dist/corpus/index.d.ts +2 -2
- package/dist/corpus/onchain-query.d.ts +0 -1
- package/dist/corpus/onchain-query.js +2 -5
- package/dist/corpus/onchain-query.js.map +1 -1
- package/dist/corpus/route-resolver.d.ts +3 -3
- package/dist/corpus/route-resolver.js +3 -3
- package/dist/daemon/ai-units-gate.d.ts +6 -6
- package/dist/daemon/ai-units-gate.js +11 -10
- package/dist/daemon/ai-units-gate.js.map +1 -1
- package/dist/daemon/balance-topup-loop.js +27 -9
- package/dist/daemon/balance-topup-loop.js.map +1 -1
- package/dist/daemon/checkpoint-loop.js +2 -2
- package/dist/daemon/creator.d.ts +1 -0
- package/dist/daemon/creator.js +39 -25
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +15 -10
- package/dist/daemon/daemon.js +95 -41
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/delivery-watcher.d.ts +9 -0
- package/dist/daemon/delivery-watcher.js +24 -1
- package/dist/daemon/delivery-watcher.js.map +1 -1
- package/dist/daemon/eviction-loop.d.ts +7 -0
- package/dist/daemon/eviction-loop.js +19 -3
- package/dist/daemon/eviction-loop.js.map +1 -1
- package/dist/daemon/join-applier.d.ts +35 -0
- package/dist/daemon/join-applier.js +49 -0
- package/dist/daemon/join-applier.js.map +1 -0
- package/dist/daemon/loop-heartbeat.d.ts +89 -0
- package/dist/daemon/loop-heartbeat.js +75 -0
- package/dist/daemon/loop-heartbeat.js.map +1 -0
- package/dist/{api/peers.js → daemon/peer-sync.js} +3 -1
- package/dist/daemon/peer-sync.js.map +1 -0
- package/dist/daemon/reward-claim-loop.js +28 -10
- package/dist/daemon/reward-claim-loop.js.map +1 -1
- package/dist/daemon/skip-log-dedup.d.ts +1 -1
- package/dist/daemon/skip-log-dedup.js +3 -0
- package/dist/daemon/skip-log-dedup.js.map +1 -1
- package/dist/daemon/spend-cap-gate.d.ts +0 -6
- package/dist/daemon/spend-cap-gate.js +1 -8
- package/dist/daemon/spend-cap-gate.js.map +1 -1
- package/dist/daemon/watchdog-loop.d.ts +84 -0
- package/dist/daemon/watchdog-loop.js +91 -0
- package/dist/daemon/watchdog-loop.js.map +1 -0
- package/dist/dashboard/assets/index-B_5Cb-ZH.js +161 -0
- package/dist/dashboard/assets/index-D7rvJRNa.css +1 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/discovery/http.d.ts +17 -0
- package/dist/discovery/http.js +378 -26
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.js +174 -10
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +149 -0
- package/dist/discovery/types.js +40 -0
- package/dist/discovery/types.js.map +1 -1
- package/dist/discovery/with-fallback.js +24 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap-run.d.ts +25 -0
- package/dist/earning/bootstrap-run.js +315 -0
- package/dist/earning/bootstrap-run.js.map +1 -0
- package/dist/earning/bootstrap.d.ts +31 -11
- package/dist/earning/bootstrap.js +123 -212
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +2 -232
- package/dist/earning/contracts.js +16 -205
- package/dist/earning/contracts.js.map +1 -1
- package/dist/earning/faucet-topup-store.d.ts +41 -0
- package/dist/earning/faucet-topup-store.js +89 -0
- package/dist/earning/faucet-topup-store.js.map +1 -0
- package/dist/earning/faucet.d.ts +1 -1
- package/dist/earning/faucet.js +2 -2
- package/dist/earning/faucet.js.map +1 -1
- package/dist/earning/safe-adapter.js +12 -45
- package/dist/earning/safe-adapter.js.map +1 -1
- package/dist/earning/steps/context.d.ts +42 -0
- package/dist/earning/steps/context.js +4 -0
- package/dist/earning/steps/context.js.map +1 -0
- package/dist/earning/steps/fleet-identity-register.d.ts +4 -0
- package/dist/earning/steps/fleet-identity-register.js +65 -0
- package/dist/earning/steps/fleet-identity-register.js.map +1 -0
- package/dist/earning/steps/fleet-safe-deploy.d.ts +4 -0
- package/dist/earning/steps/fleet-safe-deploy.js +62 -0
- package/dist/earning/steps/fleet-safe-deploy.js.map +1 -0
- package/dist/earning/steps/fleet-safe-predict.d.ts +4 -0
- package/dist/earning/steps/fleet-safe-predict.js +18 -0
- package/dist/earning/steps/fleet-safe-predict.js.map +1 -0
- package/dist/earning/steps/receipt-parsing.d.ts +12 -0
- package/dist/earning/steps/receipt-parsing.js +71 -0
- package/dist/earning/steps/receipt-parsing.js.map +1 -0
- package/dist/earning/stolas-claim.js +8 -8
- package/dist/earning/stolas-claim.js.map +1 -1
- package/dist/earning/{jinn-rewards.d.ts → stolas-staking.d.ts} +4 -8
- package/dist/earning/{jinn-rewards.js → stolas-staking.js} +6 -10
- package/dist/earning/stolas-staking.js.map +1 -0
- package/dist/earning/testnet-setup-migration.d.ts +1 -0
- package/dist/earning/testnet-setup-migration.js +7 -2
- package/dist/earning/testnet-setup-migration.js.map +1 -1
- package/dist/earning/types.d.ts +1 -1
- package/dist/earning/types.js +1 -1
- package/dist/earning/types.js.map +1 -1
- package/dist/earning/viem-clients.d.ts +3 -19
- package/dist/earning/viem-clients.js +4 -31
- package/dist/earning/viem-clients.js.map +1 -1
- package/dist/erc8004/addresses.d.ts +6 -5
- package/dist/erc8004/addresses.js +7 -5
- package/dist/erc8004/addresses.js.map +1 -1
- package/dist/erc8004/identity.d.ts +12 -1
- package/dist/erc8004/identity.js +31 -0
- package/dist/erc8004/identity.js.map +1 -1
- package/dist/erc8004/index.d.ts +1 -1
- package/dist/erc8004/index.js +1 -1
- package/dist/erc8004/index.js.map +1 -1
- package/dist/eval/capability-slate.d.ts +54 -0
- package/dist/eval/capability-slate.js +116 -0
- package/dist/eval/capability-slate.js.map +1 -0
- package/dist/eval/capability-stats.d.ts +39 -0
- package/dist/eval/capability-stats.js +123 -0
- package/dist/eval/capability-stats.js.map +1 -0
- package/dist/eval/contested-band.d.ts +18 -0
- package/dist/eval/contested-band.js +19 -0
- package/dist/eval/contested-band.js.map +1 -0
- package/dist/eval/corpus-index.d.ts +21 -0
- package/dist/eval/corpus-index.js +55 -0
- package/dist/eval/corpus-index.js.map +1 -0
- package/dist/eval/disjointness.d.ts +26 -0
- package/dist/eval/disjointness.js +67 -0
- package/dist/eval/disjointness.js.map +1 -0
- package/dist/eval/eval-harness-run.d.ts +63 -0
- package/dist/eval/eval-harness-run.js +123 -0
- package/dist/eval/eval-harness-run.js.map +1 -0
- package/dist/eval/mcnemar-power.d.ts +14 -0
- package/dist/eval/mcnemar-power.js +40 -0
- package/dist/eval/mcnemar-power.js.map +1 -0
- package/dist/eval/orchestrator.d.ts +224 -0
- package/dist/eval/orchestrator.js +250 -0
- package/dist/eval/orchestrator.js.map +1 -0
- package/dist/eval/paired.d.ts +68 -0
- package/dist/eval/paired.js +93 -0
- package/dist/eval/paired.js.map +1 -0
- package/dist/eval/resolve-slate-tasks.d.ts +35 -0
- package/dist/eval/resolve-slate-tasks.js +56 -0
- package/dist/eval/resolve-slate-tasks.js.map +1 -0
- package/dist/eval/screen-discovery.d.ts +22 -0
- package/dist/eval/screen-discovery.js +71 -0
- package/dist/eval/screen-discovery.js.map +1 -0
- package/dist/eval/screen-progress.d.ts +41 -0
- package/dist/eval/screen-progress.js +60 -0
- package/dist/eval/screen-progress.js.map +1 -0
- package/dist/eval/screen-runner.d.ts +30 -0
- package/dist/eval/screen-runner.js +289 -0
- package/dist/eval/screen-runner.js.map +1 -0
- package/dist/eval/screen.d.ts +107 -0
- package/dist/eval/screen.js +159 -0
- package/dist/eval/screen.js.map +1 -0
- package/dist/eval/slope.d.ts +29 -0
- package/dist/eval/slope.js +46 -0
- package/dist/eval/slope.js.map +1 -0
- package/dist/eval/train-sequence.d.ts +35 -0
- package/dist/eval/train-sequence.js +59 -0
- package/dist/eval/train-sequence.js.map +1 -0
- package/dist/eval/wilson.d.ts +45 -0
- package/dist/eval/wilson.js +48 -0
- package/dist/eval/wilson.js.map +1 -0
- package/dist/events/types.d.ts +1 -1
- package/dist/events/types.js +1 -1
- package/dist/events/types.js.map +1 -1
- package/dist/harnesses/auth-source.d.ts +51 -0
- package/dist/harnesses/auth-source.js +155 -0
- package/dist/harnesses/auth-source.js.map +1 -0
- package/dist/harnesses/engine/canonical-json.js +5 -3
- package/dist/harnesses/engine/canonical-json.js.map +1 -1
- package/dist/harnesses/engine/engine.d.ts +34 -1
- package/dist/harnesses/engine/engine.js +91 -11
- package/dist/harnesses/engine/engine.js.map +1 -1
- package/dist/harnesses/engine/packaging.js +5 -5
- package/dist/harnesses/engine/packaging.js.map +1 -1
- package/dist/harnesses/engine/persistence.d.ts +19 -61
- package/dist/harnesses/engine/persistence.js +28 -0
- package/dist/harnesses/engine/persistence.js.map +1 -1
- package/dist/harnesses/impls/_evaluator-base.d.ts +48 -0
- package/dist/harnesses/impls/_evaluator-base.js +35 -0
- package/dist/harnesses/impls/_evaluator-base.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +1 -1
- package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js +1 -1
- package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/index.d.ts +2 -3
- package/dist/harnesses/impls/claude-mcp-prediction/index.js +29 -99
- package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js +4 -21
- package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.d.ts +2 -0
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js +30 -79
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js +4 -19
- package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +2 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -1
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.d.ts +39 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js +62 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server.d.ts +40 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js +44 -0
- package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.d.ts +56 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js +79 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js.map +1 -0
- package/dist/harnesses/impls/hermes-agent/adapter.d.ts +2 -0
- package/dist/harnesses/impls/hermes-agent/adapter.js +8 -5
- package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +1 -0
- package/dist/harnesses/impls/hermes-agent/bootstrap.js +6 -1
- package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/harness.d.ts +25 -3
- package/dist/harnesses/impls/hermes-agent/harness.js +89 -5
- package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
- package/dist/harnesses/impls/index.d.ts +2 -0
- package/dist/harnesses/impls/index.js +10 -1
- package/dist/harnesses/impls/index.js.map +1 -1
- package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.d.ts +34 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js +111 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js.map +1 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.d.ts +24 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js +19 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js.map +1 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/harness.d.ts +64 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/harness.js +125 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/harness.js.map +1 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/repro.d.ts +32 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/repro.js +73 -0
- package/dist/harnesses/impls/jinn-repo-evaluator/repro.js.map +1 -0
- package/dist/harnesses/impls/learner/adapters/claude-code.js +5 -0
- package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
- package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +11 -1
- package/dist/harnesses/impls/learner/adapters/codex-code.js +130 -15
- package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
- package/dist/harnesses/impls/learner/harness.d.ts +29 -1
- package/dist/harnesses/impls/learner/harness.js +85 -1
- package/dist/harnesses/impls/learner/harness.js.map +1 -1
- package/dist/harnesses/impls/learner/harvest.d.ts +2 -0
- package/dist/harnesses/impls/learner/harvest.js +51 -1
- package/dist/harnesses/impls/learner/harvest.js.map +1 -1
- package/dist/harnesses/impls/learner/plugin-path.js +1 -0
- package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.d.ts +5 -15
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.js +10 -29
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -1
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.d.ts +5 -15
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +10 -23
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
- package/dist/harnesses/impls/prediction-v0-evaluator/index.d.ts +5 -15
- package/dist/harnesses/impls/prediction-v0-evaluator/index.js +10 -25
- package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -1
- package/dist/harnesses/impls/stub.d.ts +2 -2
- package/dist/harnesses/impls/stub.js +2 -2
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +8 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +3 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +2 -2
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +3 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
- package/dist/harnesses/readiness-registry.d.ts +16 -0
- package/dist/harnesses/readiness-registry.js +28 -6
- package/dist/harnesses/readiness-registry.js.map +1 -1
- package/dist/harnesses/types.d.ts +26 -0
- package/dist/learner/revert-decision.d.ts +16 -1
- package/dist/learner/revert-decision.js +38 -18
- package/dist/learner/revert-decision.js.map +1 -1
- package/dist/learner/revert-stats.d.ts +14 -0
- package/dist/learner/revert-stats.js +42 -0
- package/dist/learner/revert-stats.js.map +1 -1
- package/dist/learner/verification-gate.d.ts +53 -0
- package/dist/learner/verification-gate.js +80 -0
- package/dist/learner/verification-gate.js.map +1 -0
- package/dist/local-provider-url.d.ts +3 -0
- package/dist/local-provider-url.js +28 -0
- package/dist/local-provider-url.js.map +1 -0
- package/dist/main.js +188 -566
- package/dist/main.js.map +1 -1
- package/dist/mcp/acquire-artifact.d.ts +3 -3
- package/dist/mcp/acquire-artifact.js +3 -3
- package/dist/mcp/operator-server.js +1 -1
- package/dist/mcp/operator-server.js.map +1 -1
- package/dist/mcp/server.js +5 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/monitoring/net-liveness.d.ts +143 -0
- package/dist/monitoring/net-liveness.js +301 -0
- package/dist/monitoring/net-liveness.js.map +1 -0
- package/dist/observability/emit-event.d.ts +1 -1
- package/dist/observability/emit-event.js +0 -4
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/observability/progress.d.ts +11 -0
- package/dist/observability/progress.js +16 -0
- package/dist/observability/progress.js.map +1 -0
- package/dist/pilot/cost.d.ts +19 -0
- package/dist/pilot/cost.js +31 -0
- package/dist/pilot/cost.js.map +1 -0
- package/dist/pilot/instance.d.ts +20 -0
- package/dist/pilot/instance.js +19 -0
- package/dist/pilot/instance.js.map +1 -0
- package/dist/pilot/repo.d.ts +31 -0
- package/dist/pilot/repo.js +42 -0
- package/dist/pilot/repo.js.map +1 -0
- package/dist/pilot/solve.d.ts +22 -0
- package/dist/pilot/solve.js +37 -0
- package/dist/pilot/solve.js.map +1 -0
- package/dist/pilot/tally.d.ts +35 -0
- package/dist/pilot/tally.js +61 -0
- package/dist/pilot/tally.js.map +1 -0
- package/dist/plugins/learner/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/learner/.codex-plugin/plugin.json +1 -1
- package/dist/plugins/learner/hooks/session-start +30 -1
- package/dist/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
- package/dist/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
- package/dist/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
- package/dist/plugins/local-trace-distiller/.mcp.json +8 -0
- package/dist/plugins/local-trace-distiller/README.md +27 -0
- package/dist/plugins/local-trace-distiller/jinn.plugin.json +36 -0
- package/dist/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
- package/dist/preflight/deployment-readiness.d.ts +127 -0
- package/dist/preflight/deployment-readiness.js +308 -0
- package/dist/preflight/deployment-readiness.js.map +1 -0
- package/dist/preflight/pidfile-liveness.d.ts +7 -1
- package/dist/preflight/pidfile-liveness.js +14 -0
- package/dist/preflight/pidfile-liveness.js.map +1 -1
- package/dist/preflight/rpc-network.d.ts +10 -3
- package/dist/preflight/rpc-network.js +46 -13
- package/dist/preflight/rpc-network.js.map +1 -1
- package/dist/preflight/stable-cwd.d.ts +29 -0
- package/dist/preflight/stable-cwd.js +98 -0
- package/dist/preflight/stable-cwd.js.map +1 -0
- package/dist/rpc/transport.d.ts +43 -5
- package/dist/rpc/transport.js +131 -30
- package/dist/rpc/transport.js.map +1 -1
- package/dist/scripts/swe-rebench-v2-seed-pool.json +2 -1
- package/dist/solver-nets/registry.d.ts +19 -0
- package/dist/solver-nets/registry.js +95 -66
- package/dist/solver-nets/registry.js.map +1 -1
- package/dist/solver-types/_jinn-repo-pool.d.ts +27 -0
- package/dist/solver-types/_jinn-repo-pool.js +27 -0
- package/dist/solver-types/_jinn-repo-pool.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-held-out-slate.d.ts +76 -0
- package/dist/solver-types/_swe-rebench-v2-held-out-slate.js +156 -0
- package/dist/solver-types/_swe-rebench-v2-held-out-slate.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-pool-recovery.d.ts +81 -0
- package/dist/solver-types/_swe-rebench-v2-pool-recovery.js +116 -0
- package/dist/solver-types/_swe-rebench-v2-pool-recovery.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-state.d.ts +9 -0
- package/dist/solver-types/_swe-rebench-v2-state.js +14 -0
- package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +30 -0
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +40 -0
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
- package/dist/solver-types/index.js +2 -0
- package/dist/solver-types/index.js.map +1 -1
- package/dist/solver-types/jinn-repo-admit.d.ts +17 -0
- package/dist/solver-types/jinn-repo-admit.js +16 -0
- package/dist/solver-types/jinn-repo-admit.js.map +1 -0
- package/dist/solver-types/jinn-repo-auto.d.ts +60 -0
- package/dist/solver-types/jinn-repo-auto.js +163 -0
- package/dist/solver-types/jinn-repo-auto.js.map +1 -0
- package/dist/solver-types/jinn-repo-definition.d.ts +15 -0
- package/dist/solver-types/jinn-repo-definition.js +34 -0
- package/dist/solver-types/jinn-repo-definition.js.map +1 -0
- package/dist/solver-types/jinn-repo-extract.d.ts +16 -0
- package/dist/solver-types/jinn-repo-extract.js +32 -0
- package/dist/solver-types/jinn-repo-extract.js.map +1 -0
- package/dist/solver-types/jinn-repo.d.ts +21 -0
- package/dist/solver-types/jinn-repo.js +23 -0
- package/dist/solver-types/jinn-repo.js.map +1 -0
- package/dist/solver-types/learner-loop-test.js +1 -1
- package/dist/solver-types/learner-loop-test.js.map +1 -1
- package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json +20 -0
- package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.json +19 -0
- package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.screening-report.json +628 -0
- package/dist/solver-types/solver-type.d.ts +8 -0
- package/dist/solver-types/swe-rebench-v2.d.ts +2 -0
- package/dist/solver-types/swe-rebench-v2.js +115 -10
- package/dist/solver-types/swe-rebench-v2.js.map +1 -1
- package/dist/solvernets/launched-record-dispatcher.d.ts +5 -0
- package/dist/solvernets/launched-record-dispatcher.js +14 -1
- package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
- package/dist/solvernets/registry-client-erc8004.js +29 -37
- package/dist/solvernets/registry-client-erc8004.js.map +1 -1
- package/dist/solvernets/registry-client.d.ts +6 -0
- package/dist/solvernets/store.d.ts +1 -1
- package/dist/solvernets/store.js +8 -3
- package/dist/solvernets/store.js.map +1 -1
- package/dist/spend/ai-units-config.d.ts +10 -0
- package/dist/spend/ai-units-config.js +7 -1
- package/dist/spend/ai-units-config.js.map +1 -1
- package/dist/spend/ai-units.d.ts +51 -0
- package/dist/spend/ai-units.js +73 -0
- package/dist/spend/ai-units.js.map +1 -1
- package/dist/spend/credential.d.ts +2 -2
- package/dist/spend/credential.js +9 -3
- package/dist/spend/credential.js.map +1 -1
- package/dist/spend/record.js +12 -5
- package/dist/spend/record.js.map +1 -1
- package/dist/spend/spend-cap.d.ts +10 -0
- package/dist/spend/spend-cap.js +13 -0
- package/dist/spend/spend-cap.js.map +1 -0
- package/dist/spend/usage.js +39 -3
- package/dist/spend/usage.js.map +1 -1
- package/dist/store/store.d.ts +106 -5
- package/dist/store/store.js +194 -8
- package/dist/store/store.js.map +1 -1
- package/dist/trajectory/emit.d.ts +6 -0
- package/dist/trajectory/emit.js +9 -1
- package/dist/trajectory/emit.js.map +1 -1
- package/dist/trajectory/harness-bundle-schema.d.ts +1 -1
- package/dist/trajectory/harness-bundle-schema.js +1 -1
- package/dist/trajectory/harness-bundle-schema.js.map +1 -1
- package/dist/trajectory/processors/identity-scrub.js +22 -3
- package/dist/trajectory/processors/identity-scrub.js.map +1 -1
- package/dist/trajectory/schema.d.ts +1 -1
- package/dist/trajectory/schema.js +1 -1
- package/dist/trajectory/schema.js.map +1 -1
- package/dist/trajectory/scrub/build.d.ts +46 -0
- package/dist/trajectory/scrub/build.js +76 -0
- package/dist/trajectory/scrub/build.js.map +1 -0
- package/dist/trajectory/scrub/emit-scrub.d.ts +41 -0
- package/dist/trajectory/scrub/emit-scrub.js +88 -0
- package/dist/trajectory/scrub/emit-scrub.js.map +1 -0
- package/dist/trajectory/scrub/key-policy.d.ts +20 -0
- package/dist/trajectory/scrub/key-policy.js +43 -0
- package/dist/trajectory/scrub/key-policy.js.map +1 -0
- package/dist/trajectory/scrub/layer2.d.ts +23 -0
- package/dist/trajectory/scrub/layer2.js +33 -0
- package/dist/trajectory/scrub/layer2.js.map +1 -0
- package/dist/trajectory/scrub/ml-pii-stage.d.ts +24 -0
- package/dist/trajectory/scrub/ml-pii-stage.js +43 -0
- package/dist/trajectory/scrub/ml-pii-stage.js.map +1 -0
- package/dist/trajectory/scrub/openredaction-stage.d.ts +178 -0
- package/dist/trajectory/scrub/openredaction-stage.js +269 -0
- package/dist/trajectory/scrub/openredaction-stage.js.map +1 -0
- package/dist/trajectory/scrub/pii-build.d.ts +31 -0
- package/dist/trajectory/scrub/pii-build.js +64 -0
- package/dist/trajectory/scrub/pii-build.js.map +1 -0
- package/dist/trajectory/scrub/pipeline.d.ts +37 -0
- package/dist/trajectory/scrub/pipeline.js +83 -0
- package/dist/trajectory/scrub/pipeline.js.map +1 -0
- package/dist/trajectory/scrub/plain-patterns-stage.d.ts +31 -0
- package/dist/trajectory/scrub/plain-patterns-stage.js +85 -0
- package/dist/trajectory/scrub/plain-patterns-stage.js.map +1 -0
- package/dist/trajectory/scrub/secretlint-stage.d.ts +35 -0
- package/dist/trajectory/scrub/secretlint-stage.js +250 -0
- package/dist/trajectory/scrub/secretlint-stage.js.map +1 -0
- package/dist/trajectory/scrub/transformers-detector.d.ts +35 -0
- package/dist/trajectory/scrub/transformers-detector.js +68 -0
- package/dist/trajectory/scrub/transformers-detector.js.map +1 -0
- package/dist/trajectory/scrub/types.d.ts +25 -0
- package/dist/trajectory/scrub/types.js +2 -0
- package/dist/trajectory/scrub/types.js.map +1 -0
- package/dist/trajectory/transcript-parsers/types.d.ts +1 -1
- package/dist/trajectory/transcript-parsers/types.js +1 -1
- package/dist/trajectory/transcript-parsers/types.js.map +1 -1
- package/dist/trajectory/transcript-watcher.d.ts +26 -0
- package/dist/trajectory/transcript-watcher.js +33 -0
- package/dist/trajectory/transcript-watcher.js.map +1 -1
- package/dist/tx-retry.d.ts +12 -0
- package/dist/tx-retry.js +41 -12
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/envelope.d.ts +1 -1
- package/dist/types/envelope.js +1 -1
- package/dist/types/envelope.js.map +1 -1
- package/dist/types/payloads/index.d.ts +1 -1
- package/dist/types/payloads/index.js +7 -1
- package/dist/types/payloads/index.js.map +1 -1
- package/dist/types/payloads/portfolio-v0.d.ts +1 -1
- package/dist/types/payloads/portfolio-v0.js +1 -1
- package/dist/types/payloads/portfolio-v0.js.map +1 -1
- package/dist/types/payloads/prediction-apy-v0.d.ts +1 -1
- package/dist/types/payloads/prediction-apy-v0.js +1 -1
- package/dist/types/payloads/prediction-apy-v0.js.map +1 -1
- package/dist/types/payloads/prediction-v0.d.ts +1 -1
- package/dist/types/payloads/prediction-v0.js +1 -1
- package/dist/types/payloads/prediction-v0.js.map +1 -1
- package/dist/types/portfolio.d.ts +1 -1
- package/dist/types/portfolio.js +1 -1
- package/dist/types/portfolio.js.map +1 -1
- package/dist/types/prediction-apy.d.ts +1 -1
- package/dist/types/prediction-apy.js +1 -1
- package/dist/types/prediction-apy.js.map +1 -1
- package/dist/types/prediction.d.ts +1 -1
- package/dist/types/prediction.js +1 -1
- package/dist/types/prediction.js.map +1 -1
- package/dist/types/session-provenance.d.ts +1 -1
- package/dist/types/session-provenance.js +1 -1
- package/dist/types/session-provenance.js.map +1 -1
- package/dist/types/skill-artifact.d.ts +442 -0
- package/dist/types/skill-artifact.js +137 -0
- package/dist/types/skill-artifact.js.map +1 -0
- package/dist/types/task-document.d.ts +315 -1
- package/dist/types/task-document.js +9 -1
- package/dist/types/task-document.js.map +1 -1
- package/dist/types/task-run-read-model.d.ts +21 -0
- package/dist/types/task-run-read-model.js +2 -0
- package/dist/types/task-run-read-model.js.map +1 -0
- package/dist/types/task-run.d.ts +75 -0
- package/dist/types/task-run.js +2 -0
- package/dist/types/task-run.js.map +1 -0
- package/dist/types/task.d.ts +29 -1
- package/dist/types/task.js +1 -1
- package/dist/types/task.js.map +1 -1
- package/dist/types/window.d.ts +1 -1
- package/dist/types/window.js +1 -1
- package/dist/types/window.js.map +1 -1
- package/dist/util/redact-rpc-urls.d.ts +1 -1
- package/dist/util/redact-rpc-urls.js +57 -2
- package/dist/util/redact-rpc-urls.js.map +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +3 -2
- package/dist/vendor/@jinn-network/sdk/dist/contracts.js +49 -0
- package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.d.ts +44 -0
- package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.js +25 -0
- package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.d.ts +38 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.js +22 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +109 -2
- package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +26 -2
- package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.d.ts +4 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.js +2 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.d.ts +65 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.js +123 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +2 -2
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.d.ts +1 -1
- package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +1 -1
- package/dist/vendor/@jinn-network/sdk/package.json +9 -1
- package/docker-compose.yml +3 -2
- package/package.json +43 -28
- package/plugins/jinn-repo-runtime/.claude-plugin/plugin.json +5 -0
- package/plugins/jinn-repo-runtime/.codex-plugin/plugin.json +39 -0
- package/plugins/jinn-repo-runtime/README.md +27 -0
- package/plugins/jinn-repo-runtime/hooks/hooks.json +16 -0
- package/plugins/jinn-repo-runtime/hooks/session-start +73 -0
- package/plugins/jinn-repo-runtime/jinn.plugin.json +11 -0
- package/plugins/jinn-repo-runtime/skills/task/SKILL.md +92 -0
- package/plugins/learner/.claude-plugin/plugin.json +1 -1
- package/plugins/learner/.codex-plugin/plugin.json +1 -1
- package/plugins/learner/hooks/session-start +30 -1
- package/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
- package/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
- package/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
- package/plugins/local-trace-distiller/.mcp.json +8 -0
- package/plugins/local-trace-distiller/README.md +27 -0
- package/plugins/local-trace-distiller/jinn.plugin.json +36 -0
- package/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
- package/plugins/swe-rebench-v2-runtime/hooks/hooks.json +16 -0
- package/plugins/swe-rebench-v2-runtime/hooks/session-start +74 -0
- package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +0 -55
- package/deployments/deployment-jinn-mvi-l1-sepolia.json +0 -55
- package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +0 -13
- package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +0 -15
- package/dist/api/peers.js.map +0 -1
- package/dist/daemon/jinn-claim-loop-canonical.d.ts +0 -207
- package/dist/daemon/jinn-claim-loop-canonical.js +0 -296
- package/dist/daemon/jinn-claim-loop-canonical.js.map +0 -1
- package/dist/daemon/jinn-claim-loop-mock.d.ts +0 -61
- package/dist/daemon/jinn-claim-loop-mock.js +0 -122
- package/dist/daemon/jinn-claim-loop-mock.js.map +0 -1
- package/dist/daemon/jinn-claim-loop-wiring.d.ts +0 -33
- package/dist/daemon/jinn-claim-loop-wiring.js +0 -40
- package/dist/daemon/jinn-claim-loop-wiring.js.map +0 -1
- package/dist/daemon/jinn-claim-loop.d.ts +0 -130
- package/dist/daemon/jinn-claim-loop.js +0 -328
- package/dist/daemon/jinn-claim-loop.js.map +0 -1
- package/dist/dashboard/assets/index-CzKxvMcU.css +0 -32
- package/dist/dashboard/assets/index-yVemxHot.js +0 -351
- package/dist/earning/jinn-rewards.js.map +0 -1
- package/dist/scripts/donation-consumption-acceptance.d.ts +0 -85
- package/dist/scripts/donation-consumption-acceptance.js +0 -1382
- package/dist/scripts/donation-consumption-acceptance.js.map +0 -1
- package/dist/x402/acquire.d.ts +0 -17
- package/dist/x402/acquire.js +0 -49
- package/dist/x402/acquire.js.map +0 -1
- package/dist/x402/facilitator.d.ts +0 -11
- package/dist/x402/facilitator.js +0 -52
- package/dist/x402/facilitator.js.map +0 -1
- package/dist/x402/handler.d.ts +0 -27
- package/dist/x402/handler.js +0 -236
- package/dist/x402/handler.js.map +0 -1
- /package/dist/{api/peers.d.ts → daemon/peer-sync.d.ts} +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Harness } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Tilde-abbreviate an absolute path for operator display when it sits under the
|
|
4
|
+
* real home dir; otherwise return it unchanged. Used by harness `getAuthSource`
|
|
5
|
+
* implementations so the dashboard shows `~/.hermes/.env` rather than a full
|
|
6
|
+
* `/Users/...` path.
|
|
7
|
+
*/
|
|
8
|
+
export declare function displayPath(absolutePath: string): string;
|
|
9
|
+
export type HarnessAuthSource = {
|
|
10
|
+
sourceKind: 'file';
|
|
11
|
+
sourcePath: string;
|
|
12
|
+
absolutePath: string;
|
|
13
|
+
envKey: string;
|
|
14
|
+
docAnchor: string;
|
|
15
|
+
/**
|
|
16
|
+
* When true the credential file is structured (e.g. codex `auth.json`)
|
|
17
|
+
* rather than a flat `KEY=value` dotenv. The resolver then reports
|
|
18
|
+
* `loaded` from file existence alone and masks the suffix to null — it
|
|
19
|
+
* never parses a key line out of the structured body.
|
|
20
|
+
*/
|
|
21
|
+
credentialIsJson?: boolean;
|
|
22
|
+
} | {
|
|
23
|
+
sourceKind: 'env';
|
|
24
|
+
envKey: string;
|
|
25
|
+
docAnchor: string;
|
|
26
|
+
} | {
|
|
27
|
+
sourceKind: 'session';
|
|
28
|
+
docAnchor: string;
|
|
29
|
+
};
|
|
30
|
+
export interface HarnessAuthStatusEntry {
|
|
31
|
+
harnessName: string;
|
|
32
|
+
sourceKind: 'file' | 'env' | 'session' | 'none';
|
|
33
|
+
sourcePath?: string;
|
|
34
|
+
envKey?: string;
|
|
35
|
+
keySuffix: string | null;
|
|
36
|
+
lastModified: string | null;
|
|
37
|
+
state: 'loaded' | 'missing' | 'unknown';
|
|
38
|
+
docAnchor?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface HarnessAuthStatusResponse {
|
|
41
|
+
harnesses: HarnessAuthStatusEntry[];
|
|
42
|
+
}
|
|
43
|
+
export interface ResolveOptions {
|
|
44
|
+
/** Env bag for env-kind sources. Defaults to process.env. */
|
|
45
|
+
env?: NodeJS.ProcessEnv;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Resolve one harness's safe auth status. Iteration-safe: any error collapses
|
|
49
|
+
* to a session-shaped `unknown` entry rather than throwing.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveHarnessAuthStatus(harness: Harness, opts?: ResolveOptions): Promise<HarnessAuthStatusEntry>;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared resolver for the operator dashboard's "Harness auth status" panel (#564).
|
|
3
|
+
*
|
|
4
|
+
* A harness declares WHERE its credential lives via `getAuthSource()`. This
|
|
5
|
+
* helper owns the unsafe part: stat the file for mtime, read the credential,
|
|
6
|
+
* keep ONLY the last-4 suffix, discard the full value. It NEVER returns full
|
|
7
|
+
* key bytes. See docs/runbooks/rotating-harness-keys.md.
|
|
8
|
+
*/
|
|
9
|
+
import { stat, readFile } from 'node:fs/promises';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
/**
|
|
12
|
+
* Tilde-abbreviate an absolute path for operator display when it sits under the
|
|
13
|
+
* real home dir; otherwise return it unchanged. Used by harness `getAuthSource`
|
|
14
|
+
* implementations so the dashboard shows `~/.hermes/.env` rather than a full
|
|
15
|
+
* `/Users/...` path.
|
|
16
|
+
*/
|
|
17
|
+
export function displayPath(absolutePath) {
|
|
18
|
+
const home = homedir();
|
|
19
|
+
return absolutePath.startsWith(home) ? absolutePath.replace(home, '~') : absolutePath;
|
|
20
|
+
}
|
|
21
|
+
const MIN_SUFFIX_LEN = 8;
|
|
22
|
+
/** Last-4 suffix, or null when the value is too short / empty to safely show. */
|
|
23
|
+
function safeSuffix(value) {
|
|
24
|
+
if (value.length < MIN_SUFFIX_LEN)
|
|
25
|
+
return null;
|
|
26
|
+
return value.slice(-4);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Extract the value of a single `KEY=value` line from a dotenv-style file body.
|
|
30
|
+
* Matches the named key at the start of a line only — a value that merely
|
|
31
|
+
* mentions the key name elsewhere is ignored. Strips surrounding quotes.
|
|
32
|
+
*/
|
|
33
|
+
function readEnvValueFromFile(body, envKey) {
|
|
34
|
+
for (const rawLine of body.split(/\r?\n/)) {
|
|
35
|
+
const line = rawLine.trimStart();
|
|
36
|
+
if (!line.startsWith(`${envKey}=`))
|
|
37
|
+
continue;
|
|
38
|
+
let value = line.slice(envKey.length + 1).trim();
|
|
39
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
40
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
41
|
+
value = value.slice(1, -1);
|
|
42
|
+
}
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Resolve one harness's safe auth status. Iteration-safe: any error collapses
|
|
49
|
+
* to a session-shaped `unknown` entry rather than throwing.
|
|
50
|
+
*/
|
|
51
|
+
export async function resolveHarnessAuthStatus(harness, opts = {}) {
|
|
52
|
+
if (!harness.getAuthSource) {
|
|
53
|
+
return {
|
|
54
|
+
harnessName: harness.name,
|
|
55
|
+
sourceKind: 'none',
|
|
56
|
+
keySuffix: null,
|
|
57
|
+
lastModified: null,
|
|
58
|
+
state: 'unknown',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
let source;
|
|
62
|
+
try {
|
|
63
|
+
source = await harness.getAuthSource();
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return {
|
|
67
|
+
harnessName: harness.name,
|
|
68
|
+
sourceKind: 'session',
|
|
69
|
+
keySuffix: null,
|
|
70
|
+
lastModified: null,
|
|
71
|
+
state: 'unknown',
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (source.sourceKind === 'session') {
|
|
75
|
+
return {
|
|
76
|
+
harnessName: harness.name,
|
|
77
|
+
sourceKind: 'session',
|
|
78
|
+
keySuffix: null,
|
|
79
|
+
lastModified: null,
|
|
80
|
+
state: 'unknown',
|
|
81
|
+
docAnchor: source.docAnchor,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (source.sourceKind === 'env') {
|
|
85
|
+
const env = opts.env ?? process.env;
|
|
86
|
+
const value = env[source.envKey]?.trim() ?? '';
|
|
87
|
+
return {
|
|
88
|
+
harnessName: harness.name,
|
|
89
|
+
sourceKind: 'env',
|
|
90
|
+
envKey: source.envKey,
|
|
91
|
+
keySuffix: safeSuffix(value),
|
|
92
|
+
lastModified: null,
|
|
93
|
+
state: value.length > 0 ? 'loaded' : 'missing',
|
|
94
|
+
docAnchor: source.docAnchor,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// file-kind
|
|
98
|
+
let mtime = null;
|
|
99
|
+
let body;
|
|
100
|
+
try {
|
|
101
|
+
const st = await stat(source.absolutePath);
|
|
102
|
+
mtime = st.mtime.toISOString();
|
|
103
|
+
body = await readFile(source.absolutePath, 'utf8');
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return {
|
|
107
|
+
harnessName: harness.name,
|
|
108
|
+
sourceKind: 'file',
|
|
109
|
+
sourcePath: source.sourcePath,
|
|
110
|
+
envKey: source.envKey,
|
|
111
|
+
keySuffix: null,
|
|
112
|
+
lastModified: null,
|
|
113
|
+
state: 'missing',
|
|
114
|
+
docAnchor: source.docAnchor,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// Structured credential files (e.g. codex auth.json): report `loaded` from
|
|
118
|
+
// existence + mtime, but never parse a key out — suffix stays masked.
|
|
119
|
+
if (source.credentialIsJson) {
|
|
120
|
+
return {
|
|
121
|
+
harnessName: harness.name,
|
|
122
|
+
sourceKind: 'file',
|
|
123
|
+
sourcePath: source.sourcePath,
|
|
124
|
+
envKey: source.envKey,
|
|
125
|
+
keySuffix: null,
|
|
126
|
+
lastModified: mtime,
|
|
127
|
+
state: 'loaded',
|
|
128
|
+
docAnchor: source.docAnchor,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const value = readEnvValueFromFile(body, source.envKey)?.trim() ?? '';
|
|
132
|
+
if (value.length === 0) {
|
|
133
|
+
return {
|
|
134
|
+
harnessName: harness.name,
|
|
135
|
+
sourceKind: 'file',
|
|
136
|
+
sourcePath: source.sourcePath,
|
|
137
|
+
envKey: source.envKey,
|
|
138
|
+
keySuffix: null,
|
|
139
|
+
lastModified: null,
|
|
140
|
+
state: 'missing',
|
|
141
|
+
docAnchor: source.docAnchor,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
harnessName: harness.name,
|
|
146
|
+
sourceKind: 'file',
|
|
147
|
+
sourcePath: source.sourcePath,
|
|
148
|
+
envKey: source.envKey,
|
|
149
|
+
keySuffix: safeSuffix(value),
|
|
150
|
+
lastModified: mtime,
|
|
151
|
+
state: 'loaded',
|
|
152
|
+
docAnchor: source.docAnchor,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=auth-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-source.js","sourceRoot":"","sources":["../../src/harnesses/auth-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,9 +22,11 @@
|
|
|
22
22
|
* Used for manifest signing: produce a deterministic byte string that two
|
|
23
23
|
* independent parties can reproduce from the same object graph.
|
|
24
24
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
// canonicalize v3 is ESM-only (no CJS entry); the client is `"type": "module"`
|
|
26
|
+
// so a native ESM default import is the correct interop (replaces the v2-era
|
|
27
|
+
// createRequire shim). v3 is packaging-only vs v2 — its RFC 8785 output is
|
|
28
|
+
// byte-identical, so existing content hashes / manifest signatures are stable.
|
|
29
|
+
import canonicalize from 'canonicalize';
|
|
28
30
|
/**
|
|
29
31
|
* Recursively replace NaN / ±Infinity with null so that canonicalize does not
|
|
30
32
|
* throw — matching the JSON.stringify behaviour that the rest of the codebase
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../../src/harnesses/engine/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,
|
|
1
|
+
{"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../../src/harnesses/engine/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC;;;;;GAKG;AACH,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,mEAAmE;QACnE,qEAAqE;QACrE,sEAAsE;QACtE,WAAW;QACX,MAAM,MAAM,GAAI,KAAoC,CAAC,MAAM,CAAC;QAC5D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,wEAAwE;QACxE,uEAAuE;QACvE,kCAAkC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -16,6 +16,7 @@ import type { Harness, HarnessContext, RuntimePlugin } from '../types.js';
|
|
|
16
16
|
import type { IdentityPublisher, ReputationRegistryClient, ResolvedAgent } from '../../erc8004/index.js';
|
|
17
17
|
import type { Task } from '../../types/task.js';
|
|
18
18
|
import { TrajectoryCollector } from '../../trajectory/index.js';
|
|
19
|
+
import type { ScrubPipeline } from '../../trajectory/scrub/pipeline.js';
|
|
19
20
|
import type { SolverNetManifestV1 } from '../../vendor/@jinn-network/sdk/dist/solvernets/index.js';
|
|
20
21
|
import { type FreezeViolation } from '../../daemon/freeze-fence.js';
|
|
21
22
|
export declare class NotImplementedError extends Error {
|
|
@@ -70,6 +71,10 @@ export interface JoinedSolverNetsView {
|
|
|
70
71
|
} | undefined;
|
|
71
72
|
/** Enumerate all joined manifest CIDs (used for digest-based filtering). */
|
|
72
73
|
manifestCids(): string[];
|
|
74
|
+
/** Add/replace one joined entry live (used by the hot-apply join applier, #1037). */
|
|
75
|
+
set(manifestCid: string, entry: {
|
|
76
|
+
roles: Array<'solver' | 'evaluator'>;
|
|
77
|
+
}): void;
|
|
73
78
|
}
|
|
74
79
|
/**
|
|
75
80
|
* Build a `JoinedSolverNetsView` from the raw operator-config block.
|
|
@@ -82,6 +87,17 @@ export declare function joinedSolverNetsViewFromConfig(joined: Record<string, {
|
|
|
82
87
|
manifestCid: string;
|
|
83
88
|
roles: Array<'solver' | 'evaluator'>;
|
|
84
89
|
}> | undefined): JoinedSolverNetsView | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* Mutable `JoinedSolverNetsView` for the running daemon. Unlike
|
|
92
|
+
* `joinedSolverNetsViewFromConfig` (boot snapshot), the applier
|
|
93
|
+
* (`daemon/join-applier.ts`, #1037) keeps a handle and calls `set()` when a
|
|
94
|
+
* join is hot-applied, so the engine's per-task eligibility check sees the new
|
|
95
|
+
* cid on its next call without a restart.
|
|
96
|
+
*/
|
|
97
|
+
export declare function createMutableJoinedSolverNetsView(initial: Record<string, {
|
|
98
|
+
manifestCid: string;
|
|
99
|
+
roles: Array<'solver' | 'evaluator'>;
|
|
100
|
+
}> | undefined): JoinedSolverNetsView;
|
|
85
101
|
/**
|
|
86
102
|
* Resolves a launched SolverNet manifest by IPFS CID.
|
|
87
103
|
*
|
|
@@ -140,6 +156,12 @@ export interface TaskEngineOptions {
|
|
|
140
156
|
*/
|
|
141
157
|
implRegistry?: ImplRegistry;
|
|
142
158
|
solverNetRegistry?: SolverNetRegistryLike;
|
|
159
|
+
/**
|
|
160
|
+
* Seller-side scrub pipeline applied to trajectory spans at emit time. When
|
|
161
|
+
* absent, the engine builds the default (openredaction + secretlint); supply
|
|
162
|
+
* one to add the ML PII detector.
|
|
163
|
+
*/
|
|
164
|
+
scrubPipeline?: ScrubPipeline;
|
|
143
165
|
/**
|
|
144
166
|
* Per-launch operator eligibility filter (Task 28 of
|
|
145
167
|
* `spec/2026-05-05-solvernet-creation-and-launch.md`).
|
|
@@ -287,6 +309,7 @@ export declare class TaskEngine {
|
|
|
287
309
|
protected readonly deliveryDeps: TaskEngineOptions['deliveryDeps'];
|
|
288
310
|
protected readonly implRegistry: TaskEngineOptions['implRegistry'];
|
|
289
311
|
protected readonly solverNetRegistry: TaskEngineOptions['solverNetRegistry'];
|
|
312
|
+
protected readonly scrubPipeline: ScrubPipeline;
|
|
290
313
|
protected readonly joinedSolverNets: TaskEngineOptions['joinedSolverNets'];
|
|
291
314
|
protected readonly manifestResolver: TaskEngineOptions['manifestResolver'];
|
|
292
315
|
protected readonly identityPublisher: TaskEngineOptions['identityPublisher'];
|
|
@@ -362,7 +385,8 @@ export declare class TaskEngine {
|
|
|
362
385
|
}>;
|
|
363
386
|
/**
|
|
364
387
|
* Recover all in-flight tasks from persisted state.
|
|
365
|
-
*
|
|
388
|
+
* Started at daemon startup; runs concurrently with the daemon loops
|
|
389
|
+
* (#1422 — startup must not block on a recovered impl re-execution).
|
|
366
390
|
* Returns a per-task report for each task attempted.
|
|
367
391
|
*/
|
|
368
392
|
recoverInFlight(): Promise<RecoveryReport[]>;
|
|
@@ -576,6 +600,15 @@ export declare class TaskEngine {
|
|
|
576
600
|
* TCAttemptAlreadyFinalized, …). We mark the row RACE_LOST and emit a
|
|
577
601
|
* `kind=race_lost` activity event so operators can audit prunes
|
|
578
602
|
* without inflating the FAILED counter (#896).
|
|
603
|
+
* - A transport-transient error (e.g. `AllRpcsFailedError` — every provider
|
|
604
|
+
* in the L2 fallback chain failed at once) on a task whose delivery window
|
|
605
|
+
* is still open: leave the row in its current in-flight state so the next
|
|
606
|
+
* tick re-drives it once the RPCs recover, and emit a `tick_error` (warn)
|
|
607
|
+
* event instead of inflating the FAILED counter. Without this the daemon
|
|
608
|
+
* stamped the row FAILED, dropping it from `getInFlight()` permanently, so
|
|
609
|
+
* L2 work went silent until a manual restart (#912). Past-window transient
|
|
610
|
+
* errors still terminalize to avoid churning on work that can no longer
|
|
611
|
+
* settle.
|
|
579
612
|
* - Everything else: existing markFailed behaviour. When invoked from
|
|
580
613
|
* recovery, `contextLabel === 'recovery'` so the failure_reason
|
|
581
614
|
* carries the `recovery:` prefix the original code path used.
|
|
@@ -18,14 +18,17 @@ import { assembleAndSignEnvelope, } from './envelope-assembly.js';
|
|
|
18
18
|
import { deliverAndClaim, } from './delivery.js';
|
|
19
19
|
import { SafeInnerRevertError, isNonRecoverableInnerRevert, formatDecodedRevert, } from '../../adapters/mech/safe-revert.js';
|
|
20
20
|
import { emitEvent } from '../../observability/emit-event.js';
|
|
21
|
+
import { isRecoverableTransactionError } from '../../tx-retry.js';
|
|
21
22
|
import { SkippableError } from '../types.js';
|
|
22
23
|
import { submitEvaluatorFeedback, codeDigestSha256ToBytes32, encodeExecutionPayload, encodeExecutionPayloadV2, modeStringToFlag, } from '../../erc8004/index.js';
|
|
23
24
|
import { TrajectoryCollector, emitTrajectory } from '../../trajectory/index.js';
|
|
25
|
+
import { buildScrubPipeline } from '../../trajectory/scrub/build.js';
|
|
24
26
|
import { uploadToIpfs } from '../../adapters/mech/ipfs.js';
|
|
25
27
|
import { VerdictCode } from '../../adapters/mech/verdict-code.js';
|
|
26
28
|
import { buildInfo } from '../../build-info.js';
|
|
27
29
|
import { getSolverNetContract } from '../../vendor/@jinn-network/sdk/dist/solvernets/index.js';
|
|
28
30
|
import { runHarnessWithFreezeFence, } from '../../daemon/freeze-fence.js';
|
|
31
|
+
import { recordLoopTick } from '../../daemon/loop-heartbeat.js';
|
|
29
32
|
import { harnessStateDirName } from '../names.js';
|
|
30
33
|
import { recordTaskCost } from '../../spend/record.js';
|
|
31
34
|
// ── Sentinel error ────────────────────────────────────────────────────────────
|
|
@@ -61,6 +64,25 @@ export function joinedSolverNetsViewFromConfig(joined) {
|
|
|
61
64
|
return {
|
|
62
65
|
get: (cid) => map.get(cid),
|
|
63
66
|
manifestCids: () => [...map.keys()],
|
|
67
|
+
set: (cid, entry) => { map.set(cid, entry); },
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Mutable `JoinedSolverNetsView` for the running daemon. Unlike
|
|
72
|
+
* `joinedSolverNetsViewFromConfig` (boot snapshot), the applier
|
|
73
|
+
* (`daemon/join-applier.ts`, #1037) keeps a handle and calls `set()` when a
|
|
74
|
+
* join is hot-applied, so the engine's per-task eligibility check sees the new
|
|
75
|
+
* cid on its next call without a restart.
|
|
76
|
+
*/
|
|
77
|
+
export function createMutableJoinedSolverNetsView(initial) {
|
|
78
|
+
const map = new Map();
|
|
79
|
+
for (const [key, entry] of Object.entries(initial ?? {})) {
|
|
80
|
+
map.set(entry.manifestCid ?? key, { roles: entry.roles });
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
get: (cid) => map.get(cid),
|
|
84
|
+
manifestCids: () => [...map.keys()],
|
|
85
|
+
set: (cid, entry) => { map.set(cid, entry); },
|
|
64
86
|
};
|
|
65
87
|
}
|
|
66
88
|
// ── TaskEngine ─────────────────────────────────────────────────────────
|
|
@@ -72,6 +94,7 @@ export class TaskEngine {
|
|
|
72
94
|
deliveryDeps;
|
|
73
95
|
implRegistry;
|
|
74
96
|
solverNetRegistry;
|
|
97
|
+
scrubPipeline;
|
|
75
98
|
joinedSolverNets;
|
|
76
99
|
manifestResolver;
|
|
77
100
|
identityPublisher;
|
|
@@ -124,6 +147,7 @@ export class TaskEngine {
|
|
|
124
147
|
this.deliveryDeps = opts.deliveryDeps;
|
|
125
148
|
this.implRegistry = opts.implRegistry;
|
|
126
149
|
this.solverNetRegistry = opts.solverNetRegistry;
|
|
150
|
+
this.scrubPipeline = opts.scrubPipeline ?? buildScrubPipeline();
|
|
127
151
|
this.joinedSolverNets = opts.joinedSolverNets;
|
|
128
152
|
this.manifestResolver = opts.manifestResolver;
|
|
129
153
|
this.identityPublisher = opts.identityPublisher;
|
|
@@ -180,12 +204,25 @@ export class TaskEngine {
|
|
|
180
204
|
}
|
|
181
205
|
/**
|
|
182
206
|
* Recover all in-flight tasks from persisted state.
|
|
183
|
-
*
|
|
207
|
+
* Started at daemon startup; runs concurrently with the daemon loops
|
|
208
|
+
* (#1422 — startup must not block on a recovered impl re-execution).
|
|
184
209
|
* Returns a per-task report for each task attempted.
|
|
185
210
|
*/
|
|
186
211
|
async recoverInFlight() {
|
|
187
212
|
const inflight = this.persistence.getInFlight();
|
|
188
|
-
const results = await Promise.allSettled(
|
|
213
|
+
const results = await Promise.allSettled(
|
|
214
|
+
// #1422: recovery runs concurrently with the tick/watcher loops, so
|
|
215
|
+
// each task must hold the same in-flight guard `scheduleProcess` uses —
|
|
216
|
+
// otherwise a tick fired mid-recovery double-drives the task's impl.
|
|
217
|
+
inflight.map((task) => {
|
|
218
|
+
if (this.processingRequestIds.has(task.requestId)) {
|
|
219
|
+
return Promise.resolve();
|
|
220
|
+
}
|
|
221
|
+
this.processingRequestIds.add(task.requestId);
|
|
222
|
+
return this._recoverOne(task).finally(() => {
|
|
223
|
+
this.processingRequestIds.delete(task.requestId);
|
|
224
|
+
});
|
|
225
|
+
}));
|
|
189
226
|
const reports = results.map((result, i) => {
|
|
190
227
|
const requestId = inflight[i].requestId;
|
|
191
228
|
if (result.status === 'fulfilled') {
|
|
@@ -281,6 +318,7 @@ export class TaskEngine {
|
|
|
281
318
|
catch (err) {
|
|
282
319
|
console.error('[harness-engine] tick loop error (continuing):', err instanceof Error ? err.message : err);
|
|
283
320
|
}
|
|
321
|
+
recordLoopTick(this.store, 'engine-tick'); // #1043 loop watchdog
|
|
284
322
|
if (this.stopped)
|
|
285
323
|
break;
|
|
286
324
|
await Promise.race([
|
|
@@ -761,7 +799,17 @@ export class TaskEngine {
|
|
|
761
799
|
throw new NotImplementedError('runImpl');
|
|
762
800
|
}
|
|
763
801
|
const runtimePlugins = solverNet?.runtimePlugins ?? [];
|
|
764
|
-
|
|
802
|
+
// #1035: merge harness self-attributed plugins (e.g. claude-code-learner)
|
|
803
|
+
// into the envelope carrier so they appear in executor.plugins. This is a
|
|
804
|
+
// SEPARATE array from `runtimePlugins`: the latter still feeds
|
|
805
|
+
// ctx.runtimePlugins / ctx.solverPluginRoots (which the harness uses to
|
|
806
|
+
// LOAD solver plugins), and the learner plugin is already loaded by the
|
|
807
|
+
// harness itself via its own plugin root — adding it there would double-load.
|
|
808
|
+
const attributedPlugins = [
|
|
809
|
+
...runtimePlugins,
|
|
810
|
+
...(impl.attributionPlugins?.() ?? []),
|
|
811
|
+
];
|
|
812
|
+
this.runtimePluginsByRequest.set(task.requestId, attributedPlugins);
|
|
765
813
|
const workingDir = task.workingDir ?? join(this.paths.workingDirRoot, task.requestId);
|
|
766
814
|
const kindSeg = solverType.replace(/[.:]/g, '_');
|
|
767
815
|
const implStateDir = task.implStateDir ?? (kindSeg
|
|
@@ -846,7 +894,7 @@ export class TaskEngine {
|
|
|
846
894
|
informationalClaim: skippedOutput.informational ?? null,
|
|
847
895
|
solutionOutputsJson: JSON.stringify(skippedOutput),
|
|
848
896
|
implName: impl.name,
|
|
849
|
-
runtimePluginsJson: JSON.stringify(
|
|
897
|
+
runtimePluginsJson: JSON.stringify(attributedPlugins),
|
|
850
898
|
});
|
|
851
899
|
console.log(`[harness-engine] ${task.requestId} RUNNING → POST_SNAPSHOT via impl=${impl.name} (skipped)`);
|
|
852
900
|
return;
|
|
@@ -890,7 +938,7 @@ export class TaskEngine {
|
|
|
890
938
|
informationalClaim: output.informational ?? null,
|
|
891
939
|
solutionOutputsJson: JSON.stringify(output),
|
|
892
940
|
implName: impl.name,
|
|
893
|
-
runtimePluginsJson: JSON.stringify(
|
|
941
|
+
runtimePluginsJson: JSON.stringify(attributedPlugins),
|
|
894
942
|
});
|
|
895
943
|
}
|
|
896
944
|
finally {
|
|
@@ -981,6 +1029,7 @@ export class TaskEngine {
|
|
|
981
1029
|
signerAddress: account.address,
|
|
982
1030
|
ipfsRegistryUrl: this.envelopeDeps.ipfsRegistryUrl,
|
|
983
1031
|
scrub: packagingDepsWithReq.donation?.scrub,
|
|
1032
|
+
scrubPipeline: this.scrubPipeline,
|
|
984
1033
|
});
|
|
985
1034
|
const sources = [];
|
|
986
1035
|
if (packagingDepsWithReq.donation?.enabled) {
|
|
@@ -1488,10 +1537,7 @@ export class TaskEngine {
|
|
|
1488
1537
|
case 'UNRESOLVED':
|
|
1489
1538
|
return VerdictCode.Unresolved;
|
|
1490
1539
|
default:
|
|
1491
|
-
|
|
1492
|
-
// Return Invalid(3) — not Pass(1). Pass must come from an explicit PASS/SCORED verdict.
|
|
1493
|
-
console.warn(`[harness-engine] verdictCodeForTask: unrecognized gatingClaim.verdict (got=${String(raw)}); defaulting to Invalid(3) — should never happen, indicates the evaluator harness didn't set gatingClaim.verdict before submission`);
|
|
1494
|
-
return VerdictCode.Invalid;
|
|
1540
|
+
throw new Error(`[harness-engine] verdictCodeForTask: missing or unrecognized gatingClaim.verdict (got=${String(raw)}); refusing to claim Invalid(3) on-chain without an explicit evaluator verdict`);
|
|
1495
1541
|
}
|
|
1496
1542
|
}
|
|
1497
1543
|
async _maybePostEvaluatorFeedback(task) {
|
|
@@ -1630,6 +1676,15 @@ export class TaskEngine {
|
|
|
1630
1676
|
* TCAttemptAlreadyFinalized, …). We mark the row RACE_LOST and emit a
|
|
1631
1677
|
* `kind=race_lost` activity event so operators can audit prunes
|
|
1632
1678
|
* without inflating the FAILED counter (#896).
|
|
1679
|
+
* - A transport-transient error (e.g. `AllRpcsFailedError` — every provider
|
|
1680
|
+
* in the L2 fallback chain failed at once) on a task whose delivery window
|
|
1681
|
+
* is still open: leave the row in its current in-flight state so the next
|
|
1682
|
+
* tick re-drives it once the RPCs recover, and emit a `tick_error` (warn)
|
|
1683
|
+
* event instead of inflating the FAILED counter. Without this the daemon
|
|
1684
|
+
* stamped the row FAILED, dropping it from `getInFlight()` permanently, so
|
|
1685
|
+
* L2 work went silent until a manual restart (#912). Past-window transient
|
|
1686
|
+
* errors still terminalize to avoid churning on work that can no longer
|
|
1687
|
+
* settle.
|
|
1633
1688
|
* - Everything else: existing markFailed behaviour. When invoked from
|
|
1634
1689
|
* recovery, `contextLabel === 'recovery'` so the failure_reason
|
|
1635
1690
|
* carries the `recovery:` prefix the original code path used.
|
|
@@ -1652,6 +1707,24 @@ export class TaskEngine {
|
|
|
1652
1707
|
return 'race_lost';
|
|
1653
1708
|
}
|
|
1654
1709
|
const reason = err instanceof Error ? err.message : String(err);
|
|
1710
|
+
// A transport-transient failure (all RPC providers in the fallback chain
|
|
1711
|
+
// blipped at once, 429s, timeouts, …) is not the task's fault and is not
|
|
1712
|
+
// permanent. Leave the row in its in-flight state — do NOT call
|
|
1713
|
+
// markFailed, which would drop it from getInFlight() forever (#912) — so
|
|
1714
|
+
// the engine-tick loop re-drives it once the RPCs recover. The tick loop
|
|
1715
|
+
// IS the retry; there is no per-task attempt counter. Skip this only once
|
|
1716
|
+
// the delivery window has closed, so we never churn on work that can no
|
|
1717
|
+
// longer settle on-chain.
|
|
1718
|
+
if (task.windowEndTs > Date.now() && isRecoverableTransactionError(err)) {
|
|
1719
|
+
emitEvent(this.store, {
|
|
1720
|
+
kind: 'tick_error',
|
|
1721
|
+
requestId: task.requestId,
|
|
1722
|
+
solverType: task.solverType ?? undefined,
|
|
1723
|
+
outcome: 'warn',
|
|
1724
|
+
detail: `transient RPC failure in ${contextLabel}; left ${task.state} for retry: ${reason}`,
|
|
1725
|
+
}, 'harness-engine');
|
|
1726
|
+
return 'transient';
|
|
1727
|
+
}
|
|
1655
1728
|
const stamped = contextLabel === 'recovery' ? `recovery: ${reason}` : reason;
|
|
1656
1729
|
this.persistence.markFailed(task.requestId, stamped);
|
|
1657
1730
|
return 'failed';
|
|
@@ -1695,8 +1768,15 @@ export class TaskEngine {
|
|
|
1695
1768
|
if (current && current.state === task.state) {
|
|
1696
1769
|
const classification = this._classifyAndMarkTerminal(task, err, 'recovery');
|
|
1697
1770
|
const reason = err instanceof Error ? err.message : String(err);
|
|
1698
|
-
|
|
1699
|
-
|
|
1771
|
+
// 'transient' leaves the row in-flight (not terminal); the next tick
|
|
1772
|
+
// re-drives it once the RPCs recover (#912). Log it at warn so the
|
|
1773
|
+
// stall is visible without firing the error-level alerting that a
|
|
1774
|
+
// genuine failure does.
|
|
1775
|
+
const { log, verb } = {
|
|
1776
|
+
race_lost: { log: console.log, verb: 'pruned' },
|
|
1777
|
+
transient: { log: console.warn, verb: 'deferred (transient RPC)' },
|
|
1778
|
+
failed: { log: console.error, verb: 'failed' },
|
|
1779
|
+
}[classification];
|
|
1700
1780
|
log(`[harness-engine] resume ${verb} for ${task.requestId}: ${reason}`);
|
|
1701
1781
|
}
|
|
1702
1782
|
throw err;
|