@jinn-network/client 0.1.2 → 0.1.3-canary.24b69ea4
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/CHANGELOG.md +20 -0
- package/CONTRIBUTING.md +9 -2
- package/README.md +67 -47
- package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +36 -0
- package/deployments/deployment-jinn-mvi-l1-sepolia.json +36 -0
- package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +12 -0
- package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
- package/deployments/deployment-stolas-l2-baseSepolia-fast.json +1 -1
- package/deployments/deployment-task-coordinator-router-v3-baseSepolia-fast.json +38 -0
- package/dist/adapters/adapter.d.ts +19 -8
- package/dist/adapters/local/adapter.d.ts +10 -9
- package/dist/adapters/local/adapter.js +52 -79
- package/dist/adapters/local/adapter.js.map +1 -1
- package/dist/adapters/mech/adapter.d.ts +37 -15
- package/dist/adapters/mech/adapter.js +557 -364
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +80 -20
- package/dist/adapters/mech/contracts.js +372 -100
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/ipfs.d.ts +66 -12
- package/dist/adapters/mech/ipfs.js +165 -30
- package/dist/adapters/mech/ipfs.js.map +1 -1
- package/dist/adapters/mech/safe-revert.d.ts +40 -0
- package/dist/adapters/mech/safe-revert.js +261 -0
- package/dist/adapters/mech/safe-revert.js.map +1 -0
- package/dist/adapters/mech/safe.js +48 -22
- package/dist/adapters/mech/safe.js.map +1 -1
- package/dist/adapters/mech/task-subgraph.d.ts +23 -0
- package/dist/adapters/mech/task-subgraph.js +157 -0
- package/dist/adapters/mech/task-subgraph.js.map +1 -0
- package/dist/adapters/mech/types.d.ts +256 -84
- package/dist/adapters/mech/types.js +125 -50
- package/dist/adapters/mech/types.js.map +1 -1
- package/dist/agent/agent-ws.d.ts +57 -0
- package/dist/agent/agent-ws.js +301 -0
- package/dist/agent/agent-ws.js.map +1 -0
- package/dist/agent/auto-mode-detect.d.ts +6 -0
- package/dist/agent/auto-mode-detect.js +44 -0
- package/dist/agent/auto-mode-detect.js.map +1 -0
- package/dist/agent/operator-claude.d.ts +22 -0
- package/dist/agent/operator-claude.js +176 -0
- package/dist/agent/operator-claude.js.map +1 -0
- package/dist/api/admin-endpoint.d.ts +12 -0
- package/dist/api/admin-endpoint.js +71 -0
- package/dist/api/admin-endpoint.js.map +1 -0
- package/dist/api/agent-binding-endpoint.d.ts +26 -0
- package/dist/api/agent-binding-endpoint.js +28 -0
- package/dist/api/agent-binding-endpoint.js.map +1 -0
- package/dist/api/bootstrap-endpoint.d.ts +25 -0
- package/dist/api/bootstrap-endpoint.js +104 -0
- package/dist/api/bootstrap-endpoint.js.map +1 -0
- package/dist/api/captures.d.ts +22 -0
- package/dist/api/captures.js +88 -0
- package/dist/api/captures.js.map +1 -0
- package/dist/api/events-endpoint.d.ts +9 -0
- package/dist/api/events-endpoint.js +46 -0
- package/dist/api/events-endpoint.js.map +1 -0
- package/dist/api/fleet-build.d.ts +1 -1
- package/dist/api/fleet-build.js +17 -8
- package/dist/api/fleet-build.js.map +1 -1
- package/dist/api/gather-status.d.ts +16 -1
- package/dist/api/gather-status.js +194 -3
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/handshake.d.ts +17 -0
- package/dist/api/handshake.js +28 -0
- package/dist/api/handshake.js.map +1 -0
- package/dist/api/harness-status-endpoint.d.ts +20 -0
- package/dist/api/harness-status-endpoint.js +13 -0
- package/dist/api/harness-status-endpoint.js.map +1 -0
- package/dist/api/history-build.d.ts +2 -2
- package/dist/api/history-build.js +3 -3
- package/dist/api/history-build.js.map +1 -1
- package/dist/api/launcher-endpoints.d.ts +43 -0
- package/dist/api/launcher-endpoints.js +50 -0
- package/dist/api/launcher-endpoints.js.map +1 -0
- package/dist/api/launcher-status.d.ts +93 -0
- package/dist/api/launcher-status.js +84 -0
- package/dist/api/launcher-status.js.map +1 -0
- package/dist/api/launcher-tasks.d.ts +76 -0
- package/dist/api/launcher-tasks.js +127 -0
- package/dist/api/launcher-tasks.js.map +1 -0
- package/dist/api/leaderboard-api.d.ts +20 -0
- package/dist/api/leaderboard-api.js +18 -0
- package/dist/api/leaderboard-api.js.map +1 -0
- package/dist/api/operator-artifacts-endpoint.d.ts +19 -0
- package/dist/api/operator-artifacts-endpoint.js +271 -0
- package/dist/api/operator-artifacts-endpoint.js.map +1 -0
- package/dist/api/peers.js +21 -6
- package/dist/api/peers.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +16 -10
- package/dist/api/portfolio-v0-build.js +36 -31
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/portfolio-v0-doctor.js +1 -1
- package/dist/api/portfolio-v0-doctor.js.map +1 -1
- package/dist/api/prediction-v1-build.d.ts +65 -0
- package/dist/api/prediction-v1-build.js +73 -0
- package/dist/api/prediction-v1-build.js.map +1 -0
- package/dist/api/rewards-build.js +3 -8
- package/dist/api/rewards-build.js.map +1 -1
- package/dist/api/server.d.ts +106 -1
- package/dist/api/server.js +396 -17
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +62 -0
- package/dist/api/setup-endpoints.js +752 -0
- package/dist/api/setup-endpoints.js.map +1 -0
- package/dist/api/solvernets-catalog-build.d.ts +47 -0
- package/dist/api/solvernets-catalog-build.js +19 -0
- package/dist/api/solvernets-catalog-build.js.map +1 -0
- package/dist/api/solvernets-endpoint.d.ts +15 -0
- package/dist/api/solvernets-endpoint.js +5 -0
- package/dist/api/solvernets-endpoint.js.map +1 -0
- package/dist/api/solvernets-endpoints.d.ts +104 -0
- package/dist/api/solvernets-endpoints.js +1121 -0
- package/dist/api/solvernets-endpoints.js.map +1 -0
- package/dist/api/status-build.d.ts +26 -2
- package/dist/api/status-build.js +46 -9
- package/dist/api/status-build.js.map +1 -1
- package/dist/api/status-rollup-build.d.ts +46 -1
- package/dist/api/status-rollup-build.js +174 -8
- package/dist/api/status-rollup-build.js.map +1 -1
- package/dist/api/stop-hook.d.ts +36 -0
- package/dist/api/stop-hook.js +77 -0
- package/dist/api/stop-hook.js.map +1 -0
- package/dist/api/task-runs-build.d.ts +27 -0
- package/dist/api/task-runs-build.js +46 -0
- package/dist/api/task-runs-build.js.map +1 -0
- package/dist/api/ui-token.d.ts +5 -0
- package/dist/api/ui-token.js +36 -0
- package/dist/api/ui-token.js.map +1 -0
- package/dist/bin/jinn-stop-hook.d.ts +9 -0
- package/dist/bin/jinn-stop-hook.js +52 -0
- package/dist/bin/jinn-stop-hook.js.map +1 -0
- package/dist/build-info.d.ts +32 -0
- package/dist/build-info.js +69 -0
- package/dist/build-info.js.map +1 -0
- package/dist/build-info.json +6 -0
- package/dist/build-meta.json +1 -1
- package/dist/captures/dedup.d.ts +27 -0
- package/dist/captures/dedup.js +48 -0
- package/dist/captures/dedup.js.map +1 -0
- package/dist/captures/index.d.ts +4 -0
- package/dist/captures/index.js +5 -0
- package/dist/captures/index.js.map +1 -0
- package/dist/captures/live-publisher.d.ts +33 -0
- package/dist/captures/live-publisher.js +101 -0
- package/dist/captures/live-publisher.js.map +1 -0
- package/dist/captures/publish.d.ts +83 -0
- package/dist/captures/publish.js +212 -0
- package/dist/captures/publish.js.map +1 -0
- package/dist/captures/rate-limit.d.ts +39 -0
- package/dist/captures/rate-limit.js +79 -0
- package/dist/captures/rate-limit.js.map +1 -0
- package/dist/cli/command.d.ts +9 -0
- package/dist/cli/commands/auth.js +6 -3
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/balance.d.ts +7 -0
- package/dist/cli/commands/balance.js +38 -32
- package/dist/cli/commands/balance.js.map +1 -1
- package/dist/cli/commands/bootstrap.d.ts +13 -1
- package/dist/cli/commands/bootstrap.js +150 -133
- package/dist/cli/commands/bootstrap.js.map +1 -1
- package/dist/cli/commands/capture.d.ts +33 -0
- package/dist/cli/commands/capture.js +345 -0
- package/dist/cli/commands/capture.js.map +1 -0
- package/dist/cli/commands/checkpoint.d.ts +85 -0
- package/dist/cli/commands/checkpoint.js +75 -0
- package/dist/cli/commands/checkpoint.js.map +1 -0
- package/dist/cli/commands/claim-rewards.js +14 -2
- package/dist/cli/commands/claim-rewards.js.map +1 -1
- package/dist/cli/commands/conformance.d.ts +12 -0
- package/dist/cli/commands/conformance.js +140 -0
- package/dist/cli/commands/conformance.js.map +1 -0
- package/dist/cli/commands/create.d.ts +22 -0
- package/dist/cli/commands/create.js +226 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +49 -1
- package/dist/cli/commands/doctor.js +162 -134
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/fleet-scale.d.ts +19 -1
- package/dist/cli/commands/fleet-scale.js +378 -361
- package/dist/cli/commands/fleet-scale.js.map +1 -1
- package/dist/cli/commands/fleet.d.ts +7 -0
- package/dist/cli/commands/fleet.js +39 -33
- package/dist/cli/commands/fleet.js.map +1 -1
- package/dist/cli/commands/fund-requirements.d.ts +14 -1
- package/dist/cli/commands/fund-requirements.js +182 -174
- package/dist/cli/commands/fund-requirements.js.map +1 -1
- package/dist/cli/commands/harnesses.d.ts +38 -0
- package/dist/cli/commands/harnesses.js +376 -0
- package/dist/cli/commands/harnesses.js.map +1 -0
- package/dist/cli/commands/history.d.ts +10 -1
- package/dist/cli/commands/history.js +68 -59
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/init.js +4 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/integrations.d.ts +13 -0
- package/dist/cli/commands/integrations.js +1010 -0
- package/dist/cli/commands/integrations.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +6 -1
- package/dist/cli/commands/logs.js +77 -70
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/migrate-agent-id.d.ts +26 -0
- package/dist/cli/commands/migrate-agent-id.js +164 -0
- package/dist/cli/commands/migrate-agent-id.js.map +1 -0
- package/dist/cli/commands/prediction-scoreboard.d.ts +10 -0
- package/dist/cli/commands/prediction-scoreboard.js +136 -0
- package/dist/cli/commands/prediction-scoreboard.js.map +1 -0
- package/dist/cli/commands/quickstart.d.ts +51 -1
- package/dist/cli/commands/quickstart.js +514 -296
- package/dist/cli/commands/quickstart.js.map +1 -1
- package/dist/cli/commands/rewards.d.ts +7 -0
- package/dist/cli/commands/rewards.js +46 -40
- package/dist/cli/commands/rewards.js.map +1 -1
- package/dist/cli/commands/run.d.ts +14 -1
- package/dist/cli/commands/run.js +243 -91
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/solver-nets.js +231 -0
- package/dist/cli/commands/solver-nets.js.map +1 -0
- package/dist/cli/commands/solver-plugins.d.ts +9 -0
- package/dist/cli/commands/solver-plugins.js +186 -0
- package/dist/cli/commands/solver-plugins.js.map +1 -0
- package/dist/cli/commands/status.d.ts +13 -0
- package/dist/cli/commands/status.js +105 -34
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/stop.js +87 -14
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/commands/tasks.js +405 -0
- package/dist/cli/commands/tasks.js.map +1 -0
- package/dist/cli/commands/ui.d.ts +3 -0
- package/dist/cli/commands/ui.js +45 -0
- package/dist/cli/commands/ui.js.map +1 -0
- package/dist/cli/commands/update.d.ts +12 -0
- package/dist/cli/commands/update.js +321 -91
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/version.js +3 -2
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/withdraw.d.ts +21 -1
- package/dist/cli/commands/withdraw.js +175 -159
- package/dist/cli/commands/withdraw.js.map +1 -1
- package/dist/cli/deployment-digest.js +0 -5
- package/dist/cli/deployment-digest.js.map +1 -1
- package/dist/cli/execution-context.d.ts +1 -1
- package/dist/cli/execution-context.js +4 -4
- package/dist/cli/execution-context.js.map +1 -1
- package/dist/cli/help.js +8 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +28 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/introspection-context.js +0 -1
- package/dist/cli/introspection-context.js.map +1 -1
- package/dist/cli/open-browser.d.ts +1 -0
- package/dist/cli/open-browser.js +18 -0
- package/dist/cli/open-browser.js.map +1 -0
- package/dist/cli/password.d.ts +3 -3
- package/dist/cli/password.js +6 -6
- package/dist/cli/password.js.map +1 -1
- package/dist/cli/task-native-readiness.d.ts +27 -0
- package/dist/cli/task-native-readiness.js +170 -0
- package/dist/cli/task-native-readiness.js.map +1 -0
- package/dist/config.d.ts +1897 -60
- package/dist/config.js +602 -33
- package/dist/config.js.map +1 -1
- package/dist/conformance/checks/artifacts.d.ts +37 -0
- package/dist/conformance/checks/artifacts.js +110 -0
- package/dist/conformance/checks/artifacts.js.map +1 -0
- package/dist/conformance/checks/envelope-schema.d.ts +17 -0
- package/dist/conformance/checks/envelope-schema.js +36 -0
- package/dist/conformance/checks/envelope-schema.js.map +1 -0
- package/dist/conformance/checks/hash-signature.d.ts +26 -0
- package/dist/conformance/checks/hash-signature.js +70 -0
- package/dist/conformance/checks/hash-signature.js.map +1 -0
- package/dist/conformance/checks/payload.d.ts +19 -0
- package/dist/conformance/checks/payload.js +52 -0
- package/dist/conformance/checks/payload.js.map +1 -0
- package/dist/conformance/checks/secret-scrub.d.ts +33 -0
- package/dist/conformance/checks/secret-scrub.js +118 -0
- package/dist/conformance/checks/secret-scrub.js.map +1 -0
- package/dist/conformance/checks/source-runtime.d.ts +43 -0
- package/dist/conformance/checks/source-runtime.js +68 -0
- package/dist/conformance/checks/source-runtime.js.map +1 -0
- package/dist/conformance/checks/source-static.d.ts +61 -0
- package/dist/conformance/checks/source-static.js +311 -0
- package/dist/conformance/checks/source-static.js.map +1 -0
- package/dist/conformance/checks/trajectory-chain.d.ts +18 -0
- package/dist/conformance/checks/trajectory-chain.js +51 -0
- package/dist/conformance/checks/trajectory-chain.js.map +1 -0
- package/dist/conformance/checks/trajectory-profile.d.ts +17 -0
- package/dist/conformance/checks/trajectory-profile.js +51 -0
- package/dist/conformance/checks/trajectory-profile.js.map +1 -0
- package/dist/conformance/checks/trajectory-schema.d.ts +20 -0
- package/dist/conformance/checks/trajectory-schema.js +40 -0
- package/dist/conformance/checks/trajectory-schema.js.map +1 -0
- package/dist/conformance/checks/verdict.d.ts +44 -0
- package/dist/conformance/checks/verdict.js +122 -0
- package/dist/conformance/checks/verdict.js.map +1 -0
- package/dist/conformance/harness.d.ts +32 -0
- package/dist/conformance/harness.js +227 -0
- package/dist/conformance/harness.js.map +1 -0
- package/dist/conformance/types.d.ts +88 -0
- package/dist/conformance/types.js +31 -0
- package/dist/conformance/types.js.map +1 -0
- package/dist/corpus/acquire.d.ts +42 -0
- package/dist/corpus/acquire.js +213 -0
- package/dist/corpus/acquire.js.map +1 -0
- package/dist/corpus/cache.d.ts +14 -0
- package/dist/corpus/cache.js +18 -0
- package/dist/corpus/cache.js.map +1 -0
- package/dist/corpus/envelope-projection.d.ts +12 -0
- package/dist/corpus/envelope-projection.js +110 -0
- package/dist/corpus/envelope-projection.js.map +1 -0
- package/dist/corpus/fetch.d.ts +9 -0
- package/dist/corpus/fetch.js +24 -0
- package/dist/corpus/fetch.js.map +1 -0
- package/dist/corpus/index.d.ts +19 -0
- package/dist/corpus/index.js +87 -0
- package/dist/corpus/index.js.map +1 -0
- package/dist/corpus/prediction-brier-scoreboard-report.d.ts +17 -0
- package/dist/corpus/prediction-brier-scoreboard-report.js +148 -0
- package/dist/corpus/prediction-brier-scoreboard-report.js.map +1 -0
- package/dist/corpus/prediction-brier-scoreboard.d.ts +56 -0
- package/dist/corpus/prediction-brier-scoreboard.js +269 -0
- package/dist/corpus/prediction-brier-scoreboard.js.map +1 -0
- package/dist/corpus/prediction-scoreable-verdicts.d.ts +4 -0
- package/dist/corpus/prediction-scoreable-verdicts.js +23 -0
- package/dist/corpus/prediction-scoreable-verdicts.js.map +1 -0
- package/dist/corpus/query.d.ts +17 -0
- package/dist/corpus/query.js +113 -0
- package/dist/corpus/query.js.map +1 -0
- package/dist/corpus/route-resolver.d.ts +16 -0
- package/dist/corpus/route-resolver.js +20 -0
- package/dist/corpus/route-resolver.js.map +1 -0
- package/dist/corpus/types.d.ts +151 -0
- package/dist/corpus/types.js +50 -0
- package/dist/corpus/types.js.map +1 -0
- package/dist/daemon/balance-topup-loop.js +2 -1
- package/dist/daemon/balance-topup-loop.js.map +1 -1
- package/dist/daemon/creator.d.ts +7 -7
- package/dist/daemon/creator.js +11 -14
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +83 -31
- package/dist/daemon/daemon.js +206 -67
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/delivery-watcher.js +50 -4
- package/dist/daemon/delivery-watcher.js.map +1 -1
- package/dist/daemon/freeze-fence.d.ts +42 -0
- package/dist/daemon/freeze-fence.js +71 -0
- package/dist/daemon/freeze-fence.js.map +1 -0
- package/dist/daemon/jinn-claim-loop-canonical.d.ts +207 -0
- package/dist/daemon/jinn-claim-loop-canonical.js +296 -0
- package/dist/daemon/jinn-claim-loop-canonical.js.map +1 -0
- package/dist/daemon/jinn-claim-loop-mock.d.ts +61 -0
- package/dist/daemon/jinn-claim-loop-mock.js +122 -0
- package/dist/daemon/jinn-claim-loop-mock.js.map +1 -0
- package/dist/daemon/jinn-claim-loop.d.ts +123 -0
- package/dist/daemon/jinn-claim-loop.js +256 -0
- package/dist/daemon/jinn-claim-loop.js.map +1 -0
- package/dist/daemon/reward-claim-loop.d.ts +2 -0
- package/dist/daemon/reward-claim-loop.js +32 -27
- package/dist/daemon/reward-claim-loop.js.map +1 -1
- package/dist/dashboard/assets/index-DBPsa50k.js +76 -0
- package/dist/dashboard/assets/index-D_NMfDfV.css +32 -0
- package/dist/dashboard/index.html +18 -74
- package/dist/earning/agent-wallet-binding.d.ts +133 -0
- package/dist/earning/agent-wallet-binding.js +202 -0
- package/dist/earning/agent-wallet-binding.js.map +1 -0
- package/dist/earning/bootstrap.d.ts +88 -1
- package/dist/earning/bootstrap.js +409 -56
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +328 -6
- package/dist/earning/contracts.js +295 -14
- package/dist/earning/contracts.js.map +1 -1
- package/dist/earning/evidence-simhash.d.ts +1 -1
- package/dist/earning/faucet.d.ts +31 -0
- package/dist/earning/faucet.js +37 -0
- package/dist/earning/faucet.js.map +1 -1
- package/dist/earning/funding-plan.d.ts +89 -0
- package/dist/earning/funding-plan.js +202 -0
- package/dist/earning/funding-plan.js.map +1 -0
- package/dist/earning/migrate-agent-id.d.ts +129 -0
- package/dist/earning/migrate-agent-id.js +256 -0
- package/dist/earning/migrate-agent-id.js.map +1 -0
- package/dist/earning/orphan-sweep.d.ts +14 -0
- package/dist/earning/orphan-sweep.js +63 -2
- package/dist/earning/orphan-sweep.js.map +1 -1
- package/dist/earning/reconcile.d.ts +2 -0
- package/dist/earning/reconcile.js +30 -0
- package/dist/earning/reconcile.js.map +1 -1
- package/dist/earning/safe-adapter.js +45 -3
- package/dist/earning/safe-adapter.js.map +1 -1
- package/dist/earning/stolas-claim.d.ts +86 -6
- package/dist/earning/stolas-claim.js +123 -9
- package/dist/earning/stolas-claim.js.map +1 -1
- package/dist/earning/store.d.ts +47 -0
- package/dist/earning/store.js +113 -1
- package/dist/earning/store.js.map +1 -1
- package/dist/earning/testnet-setup-migration.d.ts +32 -0
- package/dist/earning/testnet-setup-migration.js +214 -0
- package/dist/earning/testnet-setup-migration.js.map +1 -0
- package/dist/earning/types.d.ts +57 -9
- package/dist/earning/types.js +51 -2
- package/dist/earning/types.js.map +1 -1
- package/dist/earning/viem-clients.d.ts +20 -0
- package/dist/earning/viem-clients.js +32 -1
- package/dist/earning/viem-clients.js.map +1 -1
- package/dist/erc8004/abis.d.ts +423 -0
- package/dist/erc8004/abis.js +265 -0
- package/dist/erc8004/abis.js.map +1 -0
- package/dist/erc8004/addresses.d.ts +40 -0
- package/dist/erc8004/addresses.js +64 -0
- package/dist/erc8004/addresses.js.map +1 -0
- package/dist/erc8004/identity.d.ts +273 -0
- package/dist/erc8004/identity.js +405 -0
- package/dist/erc8004/identity.js.map +1 -0
- package/dist/erc8004/index.d.ts +13 -0
- package/dist/erc8004/index.js +20 -0
- package/dist/erc8004/index.js.map +1 -0
- package/dist/erc8004/reputation.d.ts +349 -0
- package/dist/erc8004/reputation.js +464 -0
- package/dist/erc8004/reputation.js.map +1 -0
- package/dist/erc8004/subgraph.d.ts +46 -0
- package/dist/erc8004/subgraph.js +37 -0
- package/dist/erc8004/subgraph.js.map +1 -0
- package/dist/erc8004/validation.d.ts +145 -0
- package/dist/erc8004/validation.js +219 -0
- package/dist/erc8004/validation.js.map +1 -0
- package/dist/errors/persisted-bootstrap-error.d.ts +4 -0
- package/dist/errors/persisted-bootstrap-error.js +50 -0
- package/dist/errors/persisted-bootstrap-error.js.map +1 -0
- package/dist/events/emitter.d.ts +12 -0
- package/dist/events/emitter.js +23 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/ring-buffer.d.ts +25 -0
- package/dist/events/ring-buffer.js +46 -0
- package/dist/events/ring-buffer.js.map +1 -0
- package/dist/events/types.d.ts +42 -0
- package/dist/events/types.js +28 -0
- package/dist/events/types.js.map +1 -0
- package/dist/harnesses/capability/index.d.ts +82 -0
- package/dist/harnesses/capability/index.js +12 -0
- package/dist/harnesses/capability/index.js.map +1 -0
- package/dist/harnesses/capability/scoped-rpc.d.ts +12 -0
- package/dist/harnesses/capability/scoped-rpc.js +34 -0
- package/dist/harnesses/capability/scoped-rpc.js.map +1 -0
- package/dist/harnesses/capability/scoped-secrets.d.ts +8 -0
- package/dist/harnesses/capability/scoped-secrets.js +10 -0
- package/dist/harnesses/capability/scoped-secrets.js.map +1 -0
- package/dist/harnesses/capability/scoped-signer.d.ts +46 -0
- package/dist/harnesses/capability/scoped-signer.js +73 -0
- package/dist/harnesses/capability/scoped-signer.js.map +1 -0
- package/dist/harnesses/engine/artifact-scrub.d.ts +12 -0
- package/dist/harnesses/engine/artifact-scrub.js +104 -0
- package/dist/harnesses/engine/artifact-scrub.js.map +1 -0
- package/dist/harnesses/engine/canonical-json.d.ts +1 -0
- package/dist/harnesses/engine/canonical-json.js +66 -0
- package/dist/harnesses/engine/canonical-json.js.map +1 -0
- package/dist/harnesses/engine/delivery.d.ts +58 -0
- package/dist/harnesses/engine/delivery.js +67 -0
- package/dist/harnesses/engine/delivery.js.map +1 -0
- package/dist/harnesses/engine/engine.d.ts +519 -0
- package/dist/harnesses/engine/engine.js +1588 -0
- package/dist/harnesses/engine/engine.js.map +1 -0
- package/dist/harnesses/engine/envelope-assembly.d.ts +73 -0
- package/dist/harnesses/engine/envelope-assembly.js +60 -0
- package/dist/harnesses/engine/envelope-assembly.js.map +1 -0
- package/dist/harnesses/engine/packaging.d.ts +99 -0
- package/dist/harnesses/engine/packaging.js +424 -0
- package/dist/harnesses/engine/packaging.js.map +1 -0
- package/dist/harnesses/engine/persistence.d.ts +198 -0
- package/dist/harnesses/engine/persistence.js +443 -0
- package/dist/harnesses/engine/persistence.js.map +1 -0
- package/dist/harnesses/engine/recovery.d.ts +22 -0
- package/dist/harnesses/engine/recovery.js +24 -0
- package/dist/harnesses/engine/recovery.js.map +1 -0
- package/dist/harnesses/engine/registry.d.ts +55 -0
- package/dist/harnesses/engine/registry.js +66 -0
- package/dist/harnesses/engine/registry.js.map +1 -0
- package/dist/harnesses/engine/signing.d.ts +30 -0
- package/dist/harnesses/engine/signing.js +39 -0
- package/dist/harnesses/engine/signing.js.map +1 -0
- package/dist/harnesses/engine/state.d.ts +42 -0
- package/dist/harnesses/engine/state.js +87 -0
- package/dist/harnesses/engine/state.js.map +1 -0
- package/dist/harnesses/engine/validate-manifest.d.ts +23 -0
- package/dist/harnesses/engine/validate-manifest.js +63 -0
- package/dist/harnesses/engine/validate-manifest.js.map +1 -0
- package/dist/harnesses/engine/verification-stub.d.ts +18 -0
- package/dist/harnesses/engine/verification-stub.js +18 -0
- package/dist/harnesses/engine/verification-stub.js.map +1 -0
- package/dist/harnesses/external-impls/index.d.ts +3 -0
- package/dist/harnesses/external-impls/index.js +2 -0
- package/dist/harnesses/external-impls/index.js.map +1 -0
- package/dist/harnesses/external-impls/loader.d.ts +50 -0
- package/dist/harnesses/external-impls/loader.js +139 -0
- package/dist/harnesses/external-impls/loader.js.map +1 -0
- package/dist/harnesses/external-impls/package-hash.d.ts +26 -0
- package/dist/harnesses/external-impls/package-hash.js +102 -0
- package/dist/harnesses/external-impls/package-hash.js.map +1 -0
- package/dist/harnesses/external-impls/types.d.ts +42 -0
- package/dist/harnesses/external-impls/types.js +10 -0
- package/dist/harnesses/external-impls/types.js.map +1 -0
- package/dist/harnesses/freeze.d.ts +34 -0
- package/dist/harnesses/freeze.js +60 -0
- package/dist/harnesses/freeze.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.d.ts +57 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.js +239 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/codex-code.d.ts +31 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/codex-code.js +257 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/codex-code.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/codex-workspace.d.ts +21 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/codex-workspace.js +193 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/codex-workspace.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/harness.d.ts +22 -0
- package/dist/harnesses/impls/claude-code-learner/harness.js +62 -0
- package/dist/harnesses/impls/claude-code-learner/harness.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/harvest.d.ts +20 -0
- package/dist/harnesses/impls/claude-code-learner/harvest.js +510 -0
- package/dist/harnesses/impls/claude-code-learner/harvest.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/index.d.ts +18 -0
- package/dist/harnesses/impls/claude-code-learner/index.js +15 -0
- package/dist/harnesses/impls/claude-code-learner/index.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/plugin-path.d.ts +14 -0
- package/dist/harnesses/impls/claude-code-learner/plugin-path.js +30 -0
- package/dist/harnesses/impls/claude-code-learner/plugin-path.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.d.ts +50 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.js +192 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.d.ts +22 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.js +35 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/types.d.ts +114 -0
- package/dist/harnesses/impls/claude-code-learner/types.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/api-wallet.d.ts +64 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/index.d.ts +106 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/index.js +723 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/index.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/safety-rails.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +104 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/session-orchestrator.js +264 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction/index.d.ts +44 -0
- package/dist/harnesses/impls/claude-mcp-prediction/index.js +250 -0
- package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js +135 -0
- package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction/prompt.d.ts +8 -0
- package/dist/harnesses/impls/claude-mcp-prediction/prompt.js +54 -0
- package/dist/harnesses/impls/claude-mcp-prediction/prompt.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.d.ts +43 -0
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +21 -0
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction/types.d.ts +84 -0
- package/dist/harnesses/impls/claude-mcp-prediction/types.js +6 -0
- package/dist/harnesses/impls/claude-mcp-prediction/types.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.d.ts +36 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js +241 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js +136 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.d.ts +7 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.js +46 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +37 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +19 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/types.d.ts +64 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/types.js +6 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/types.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.d.ts +84 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.js +206 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.js.map +1 -0
- package/dist/harnesses/impls/evaluation-context.d.ts +23 -0
- package/dist/harnesses/impls/evaluation-context.js +25 -0
- package/dist/harnesses/impls/evaluation-context.js.map +1 -0
- package/dist/harnesses/impls/index.d.ts +84 -0
- package/dist/harnesses/impls/index.js +136 -0
- package/dist/harnesses/impls/index.js.map +1 -0
- package/dist/harnesses/impls/legacy-claude/index.d.ts +66 -0
- package/dist/harnesses/impls/legacy-claude/index.js +168 -0
- package/dist/harnesses/impls/legacy-claude/index.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +68 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/canonical-metrics.js +117 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/consistency.d.ts +78 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/consistency.js +274 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +23 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/eligibility.js +49 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/integrity.d.ts +25 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/integrity.js +44 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/spec.d.ts +17 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/spec.js +43 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.d.ts +44 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.js +569 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/score.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/types.d.ts +34 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/types.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-baseline/index.d.ts +42 -0
- package/dist/harnesses/impls/prediction-apy-v0-baseline/index.js +114 -0
- package/dist/harnesses/impls/prediction-apy-v0-baseline/index.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-baseline/strategy.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-baseline/types.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +6 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.js +11 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.d.ts +42 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +346 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +16 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.js +22 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/score.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/types.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-baseline/index.d.ts +33 -0
- package/dist/harnesses/impls/prediction-v0-baseline/index.js +109 -0
- package/dist/harnesses/impls/prediction-v0-baseline/index.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-baseline/strategy.d.ts +8 -0
- package/dist/harnesses/impls/prediction-v0-baseline/strategy.js +41 -0
- package/dist/harnesses/impls/prediction-v0-baseline/strategy.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-baseline/types.d.ts +7 -0
- package/dist/harnesses/impls/prediction-v0-baseline/types.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/canonical-metrics.d.ts +20 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/availability.d.ts +9 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/eligibility.d.ts +3 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.d.ts +15 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.js +111 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/spec.d.ts +5 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/index.d.ts +36 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/index.js +342 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/score.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/types.js +2 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/types.js.map +1 -0
- package/dist/harnesses/impls/prediction-v1-baseline/index.d.ts +31 -0
- package/dist/harnesses/impls/prediction-v1-baseline/index.js +79 -0
- package/dist/harnesses/impls/prediction-v1-baseline/index.js.map +1 -0
- package/dist/harnesses/impls/prediction-v1-evaluator/index.d.ts +32 -0
- package/dist/harnesses/impls/prediction-v1-evaluator/index.js +219 -0
- package/dist/harnesses/impls/prediction-v1-evaluator/index.js.map +1 -0
- package/dist/harnesses/impls/session-derived-evaluator/index.d.ts +4 -0
- package/dist/harnesses/impls/session-derived-evaluator/index.js +5 -0
- package/dist/harnesses/impls/session-derived-evaluator/index.js.map +1 -0
- package/dist/harnesses/impls/session-derived-evaluator/llm-judge.d.ts +16 -0
- package/dist/harnesses/impls/session-derived-evaluator/llm-judge.js +16 -0
- package/dist/harnesses/impls/session-derived-evaluator/llm-judge.js.map +1 -0
- package/dist/harnesses/impls/session-derived-evaluator/signals.d.ts +13 -0
- package/dist/harnesses/impls/session-derived-evaluator/signals.js +15 -0
- package/dist/harnesses/impls/session-derived-evaluator/signals.js.map +1 -0
- package/dist/harnesses/impls/session-derived-evaluator/structural-similarity.d.ts +7 -0
- package/dist/harnesses/impls/session-derived-evaluator/structural-similarity.js +28 -0
- package/dist/harnesses/impls/session-derived-evaluator/structural-similarity.js.map +1 -0
- package/dist/harnesses/impls/session-derived-evaluator/test-suite-rerun.d.ts +15 -0
- package/dist/harnesses/impls/session-derived-evaluator/test-suite-rerun.js +17 -0
- package/dist/harnesses/impls/session-derived-evaluator/test-suite-rerun.js.map +1 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.d.ts +20 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +107 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.d.ts +74 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +288 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +33 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +96 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +61 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +42 -0
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -0
- package/dist/harnesses/manifest/index.d.ts +3 -0
- package/dist/harnesses/manifest/index.js +3 -0
- package/dist/harnesses/manifest/index.js.map +1 -0
- package/dist/harnesses/manifest/load.d.ts +7 -0
- package/dist/harnesses/manifest/load.js +49 -0
- package/dist/harnesses/manifest/load.js.map +1 -0
- package/dist/harnesses/manifest/types.d.ts +75 -0
- package/dist/harnesses/manifest/types.js +8 -0
- package/dist/harnesses/manifest/types.js.map +1 -0
- package/dist/harnesses/manifest/verify.d.ts +15 -0
- package/dist/harnesses/manifest/verify.js +53 -0
- package/dist/harnesses/manifest/verify.js.map +1 -0
- package/dist/harnesses/mode-state.d.ts +7 -0
- package/dist/harnesses/mode-state.js +43 -0
- package/dist/harnesses/mode-state.js.map +1 -0
- package/dist/harnesses/names.d.ts +6 -0
- package/dist/harnesses/names.js +24 -0
- package/dist/harnesses/names.js.map +1 -0
- package/dist/harnesses/types.d.ts +276 -0
- package/dist/harnesses/types.js +28 -0
- package/dist/harnesses/types.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/main.d.ts +17 -2
- package/dist/main.js +1593 -147
- package/dist/main.js.map +1 -1
- package/dist/mcp/acquire-artifact.d.ts +41 -0
- package/dist/mcp/acquire-artifact.js +168 -0
- package/dist/mcp/acquire-artifact.js.map +1 -0
- package/dist/mcp/operator-server.d.ts +21 -4
- package/dist/mcp/operator-server.js +505 -30
- package/dist/mcp/operator-server.js.map +1 -1
- package/dist/mcp/search-records.d.ts +94 -0
- package/dist/mcp/search-records.js +396 -0
- package/dist/mcp/search-records.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -4
- package/dist/mcp/server.js +240 -61
- package/dist/mcp/server.js.map +1 -1
- package/dist/observability/emit-event.d.ts +2 -2
- package/dist/observability/emit-event.js +2 -2
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/operator-errors.d.ts +14 -0
- package/dist/operator-errors.js +39 -10
- package/dist/operator-errors.js.map +1 -1
- package/dist/plugins/digest.d.ts +1 -0
- package/dist/plugins/digest.js +28 -0
- package/dist/plugins/digest.js.map +1 -0
- package/dist/plugins/index.d.ts +6 -0
- package/dist/plugins/index.js +6 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/manifest.d.ts +7 -0
- package/dist/plugins/manifest.js +22 -0
- package/dist/plugins/manifest.js.map +1 -0
- package/dist/plugins/registry.d.ts +9 -0
- package/dist/plugins/registry.js +24 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/resolvers.d.ts +2 -0
- package/dist/plugins/resolvers.js +126 -0
- package/dist/plugins/resolvers.js.map +1 -0
- package/dist/plugins/types.d.ts +35 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/validator.d.ts +3 -0
- package/dist/plugins/validator.js +50 -0
- package/dist/plugins/validator.js.map +1 -0
- package/dist/preflight/claude-auth.d.ts +14 -12
- package/dist/preflight/claude-auth.js +23 -37
- package/dist/preflight/claude-auth.js.map +1 -1
- package/dist/preflight/claude-required.d.ts +8 -0
- package/dist/preflight/claude-required.js +17 -0
- package/dist/preflight/claude-required.js.map +1 -0
- package/dist/runner/claude.d.ts +3 -3
- package/dist/runner/claude.js +62 -26
- package/dist/runner/claude.js.map +1 -1
- package/dist/runner/runner.d.ts +29 -2
- package/dist/runner/simple.d.ts +2 -2
- package/dist/runner/simple.js +2 -2
- package/dist/runner/simple.js.map +1 -1
- package/dist/scripts/donation-consumption-acceptance.d.ts +71 -0
- package/dist/scripts/donation-consumption-acceptance.js +1117 -0
- package/dist/scripts/donation-consumption-acceptance.js.map +1 -0
- package/dist/scripts/fix-node-pty.mjs +113 -0
- package/dist/setup/claude-code-install.d.ts +19 -0
- package/dist/setup/claude-code-install.js +51 -0
- package/dist/setup/claude-code-install.js.map +1 -0
- package/dist/setup-mode.d.ts +34 -0
- package/dist/setup-mode.js +49 -0
- package/dist/setup-mode.js.map +1 -0
- package/dist/solver-nets/contracts.d.ts +2 -0
- package/dist/solver-nets/contracts.js +2 -0
- package/dist/solver-nets/contracts.js.map +1 -0
- package/dist/solver-nets/prediction-operator-ux.d.ts +112 -0
- package/dist/solver-nets/prediction-operator-ux.js +463 -0
- package/dist/solver-nets/prediction-operator-ux.js.map +1 -0
- package/dist/solver-nets/registry.d.ts +64 -0
- package/dist/solver-nets/registry.js +218 -0
- package/dist/solver-nets/registry.js.map +1 -0
- package/dist/solver-types/_session-derived-distill.d.ts +28 -0
- package/dist/solver-types/_session-derived-distill.js +52 -0
- package/dist/solver-types/_session-derived-distill.js.map +1 -0
- package/dist/solver-types/_session-derived-pool.d.ts +10 -0
- package/dist/solver-types/_session-derived-pool.js +27 -0
- package/dist/solver-types/_session-derived-pool.js.map +1 -0
- package/dist/solver-types/_session-derived-state.d.ts +17 -0
- package/dist/solver-types/_session-derived-state.js +25 -0
- package/dist/solver-types/_session-derived-state.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-aggregate.d.ts +31 -0
- package/dist/solver-types/_swe-rebench-v2-aggregate.js +49 -0
- package/dist/solver-types/_swe-rebench-v2-aggregate.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-escrow.d.ts +27 -0
- package/dist/solver-types/_swe-rebench-v2-escrow.js +26 -0
- package/dist/solver-types/_swe-rebench-v2-escrow.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-pool.d.ts +51 -0
- package/dist/solver-types/_swe-rebench-v2-pool.js +72 -0
- package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -0
- package/dist/solver-types/_swe-rebench-v2-state.d.ts +24 -0
- package/dist/solver-types/_swe-rebench-v2-state.js +54 -0
- package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -0
- package/dist/solver-types/constants.d.ts +5 -0
- package/dist/solver-types/constants.js +6 -0
- package/dist/solver-types/constants.js.map +1 -0
- package/dist/solver-types/index.d.ts +10 -0
- package/dist/solver-types/index.js +32 -0
- package/dist/solver-types/index.js.map +1 -0
- package/dist/solver-types/learner-loop-test.d.ts +2 -0
- package/dist/solver-types/learner-loop-test.js +39 -0
- package/dist/solver-types/learner-loop-test.js.map +1 -0
- package/dist/solver-types/portfolio-v0.d.ts +2 -0
- package/dist/solver-types/portfolio-v0.js +13 -0
- package/dist/solver-types/portfolio-v0.js.map +1 -0
- package/dist/solver-types/prediction-apy-v0-auto.d.ts +27 -0
- package/dist/solver-types/prediction-apy-v0-auto.js +109 -0
- package/dist/solver-types/prediction-apy-v0-auto.js.map +1 -0
- package/dist/solver-types/prediction-apy-v0-template.d.ts +8 -0
- package/dist/solver-types/prediction-apy-v0-template.js +22 -0
- package/dist/solver-types/prediction-apy-v0-template.js.map +1 -0
- package/dist/solver-types/prediction-apy-v0.d.ts +3 -0
- package/dist/solver-types/prediction-apy-v0.js +25 -0
- package/dist/solver-types/prediction-apy-v0.js.map +1 -0
- package/dist/solver-types/prediction-v0-auto.d.ts +69 -0
- package/dist/solver-types/prediction-v0-auto.js +146 -0
- package/dist/solver-types/prediction-v0-auto.js.map +1 -0
- package/dist/solver-types/prediction-v0-template.d.ts +70 -0
- package/dist/solver-types/prediction-v0-template.js +145 -0
- package/dist/solver-types/prediction-v0-template.js.map +1 -0
- package/dist/solver-types/prediction-v0.d.ts +13 -0
- package/dist/solver-types/prediction-v0.js +31 -0
- package/dist/solver-types/prediction-v0.js.map +1 -0
- package/dist/solver-types/prediction-v1-auto.d.ts +122 -0
- package/dist/solver-types/prediction-v1-auto.js +366 -0
- package/dist/solver-types/prediction-v1-auto.js.map +1 -0
- package/dist/solver-types/prediction-v1.d.ts +11 -0
- package/dist/solver-types/prediction-v1.js +27 -0
- package/dist/solver-types/prediction-v1.js.map +1 -0
- package/dist/solver-types/session-derived.d.ts +2 -0
- package/dist/solver-types/session-derived.js +24 -0
- package/dist/solver-types/session-derived.js.map +1 -0
- package/dist/solver-types/solver-type.d.ts +53 -0
- package/dist/solver-types/solver-type.js +6 -0
- package/dist/solver-types/solver-type.js.map +1 -0
- package/dist/solver-types/swe-rebench-v2-auto.d.ts +38 -0
- package/dist/solver-types/swe-rebench-v2-auto.js +56 -0
- package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -0
- package/dist/solver-types/swe-rebench-v2.d.ts +69 -0
- package/dist/solver-types/swe-rebench-v2.js +356 -0
- package/dist/solver-types/swe-rebench-v2.js.map +1 -0
- package/dist/solvernets/daemon-init.d.ts +291 -0
- package/dist/solvernets/daemon-init.js +431 -0
- package/dist/solvernets/daemon-init.js.map +1 -0
- package/dist/solvernets/launch-state-machine.d.ts +165 -0
- package/dist/solvernets/launch-state-machine.js +406 -0
- package/dist/solvernets/launch-state-machine.js.map +1 -0
- package/dist/solvernets/launched-record-dispatcher.d.ts +55 -0
- package/dist/solvernets/launched-record-dispatcher.js +169 -0
- package/dist/solvernets/launched-record-dispatcher.js.map +1 -0
- package/dist/solvernets/lifecycle-transitions.d.ts +183 -0
- package/dist/solvernets/lifecycle-transitions.js +386 -0
- package/dist/solvernets/lifecycle-transitions.js.map +1 -0
- package/dist/solvernets/manifest.d.ts +120 -0
- package/dist/solvernets/manifest.js +166 -0
- package/dist/solvernets/manifest.js.map +1 -0
- package/dist/solvernets/most-recent-wins.d.ts +77 -0
- package/dist/solvernets/most-recent-wins.js +82 -0
- package/dist/solvernets/most-recent-wins.js.map +1 -0
- package/dist/solvernets/registry-client-erc8004.d.ts +239 -0
- package/dist/solvernets/registry-client-erc8004.js +382 -0
- package/dist/solvernets/registry-client-erc8004.js.map +1 -0
- package/dist/solvernets/registry-client.d.ts +121 -0
- package/dist/solvernets/registry-client.js +19 -0
- package/dist/solvernets/registry-client.js.map +1 -0
- package/dist/solvernets/store.d.ts +298 -0
- package/dist/solvernets/store.js +271 -0
- package/dist/solvernets/store.js.map +1 -0
- package/dist/store/captures.d.ts +85 -0
- package/dist/store/captures.js +167 -0
- package/dist/store/captures.js.map +1 -0
- package/dist/store/store.d.ts +235 -21
- package/dist/store/store.js +1000 -46
- package/dist/store/store.js.map +1 -1
- package/dist/tasks/posting-service.d.ts +25 -0
- package/dist/tasks/posting-service.js +149 -0
- package/dist/tasks/posting-service.js.map +1 -0
- package/dist/tasks/signing.d.ts +4 -0
- package/dist/tasks/signing.js +18 -0
- package/dist/tasks/signing.js.map +1 -0
- package/dist/tasks/sources.d.ts +46 -0
- package/dist/tasks/sources.js +45 -0
- package/dist/tasks/sources.js.map +1 -0
- package/dist/templates/harnesses/alternative-harness/README.md.tmpl +44 -0
- package/dist/templates/harnesses/alternative-harness/gitignore.tmpl +3 -0
- package/dist/templates/harnesses/alternative-harness/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/harnesses/alternative-harness/package.json.tmpl +26 -0
- package/dist/templates/harnesses/alternative-harness/src/coordinator.ts.tmpl +50 -0
- package/dist/templates/harnesses/alternative-harness/src/harness.ts.tmpl +31 -0
- package/dist/templates/harnesses/alternative-harness/src/index.ts.tmpl +44 -0
- package/dist/templates/harnesses/alternative-harness/src/mock-harness.ts.tmpl +41 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/execute.ts.tmpl +33 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/improve.ts.tmpl +31 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/memory.ts.tmpl +31 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/orient.ts.tmpl +21 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/plan.ts.tmpl +25 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
- package/dist/templates/harnesses/alternative-harness/test/coordinator.test.ts.tmpl +53 -0
- package/dist/templates/harnesses/alternative-harness/test/unit.test.ts.tmpl +55 -0
- package/dist/templates/harnesses/alternative-harness/tsconfig.json.tmpl +16 -0
- package/dist/templates/harnesses/evaluator/README.md.tmpl +36 -0
- package/dist/templates/harnesses/evaluator/gitignore.tmpl +3 -0
- package/dist/templates/harnesses/evaluator/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/harnesses/evaluator/package.json.tmpl +26 -0
- package/dist/templates/harnesses/evaluator/src/index.ts.tmpl +35 -0
- package/dist/templates/harnesses/evaluator/test/unit.test.ts.tmpl +49 -0
- package/dist/templates/harnesses/evaluator/tsconfig.json.tmpl +16 -0
- package/dist/templates/harnesses/forecaster/README.md.tmpl +25 -0
- package/dist/templates/harnesses/forecaster/gitignore.tmpl +5 -0
- package/dist/templates/harnesses/forecaster/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/harnesses/forecaster/package.json.tmpl +26 -0
- package/dist/templates/harnesses/forecaster/src/index.ts.tmpl +33 -0
- package/dist/templates/harnesses/forecaster/test/unit.test.ts.tmpl +42 -0
- package/dist/templates/harnesses/forecaster/tsconfig.json.tmpl +16 -0
- package/dist/trajectory/collector.d.ts +59 -0
- package/dist/trajectory/collector.js +164 -0
- package/dist/trajectory/collector.js.map +1 -0
- package/dist/trajectory/emit.d.ts +29 -0
- package/dist/trajectory/emit.js +81 -0
- package/dist/trajectory/emit.js.map +1 -0
- package/dist/trajectory/harness-bundle-rules/aider.d.ts +13 -0
- package/dist/trajectory/harness-bundle-rules/aider.js +26 -0
- package/dist/trajectory/harness-bundle-rules/aider.js.map +1 -0
- package/dist/trajectory/harness-bundle-rules/claude-code.d.ts +16 -0
- package/dist/trajectory/harness-bundle-rules/claude-code.js +71 -0
- package/dist/trajectory/harness-bundle-rules/claude-code.js.map +1 -0
- package/dist/trajectory/harness-bundle-rules/codex.d.ts +13 -0
- package/dist/trajectory/harness-bundle-rules/codex.js +96 -0
- package/dist/trajectory/harness-bundle-rules/codex.js.map +1 -0
- package/dist/trajectory/harness-bundle-rules/continue.d.ts +10 -0
- package/dist/trajectory/harness-bundle-rules/continue.js +43 -0
- package/dist/trajectory/harness-bundle-rules/continue.js.map +1 -0
- package/dist/trajectory/harness-bundle-rules/cursor.d.ts +20 -0
- package/dist/trajectory/harness-bundle-rules/cursor.js +55 -0
- package/dist/trajectory/harness-bundle-rules/cursor.js.map +1 -0
- package/dist/trajectory/harness-bundle-rules/gemini-cli.d.ts +15 -0
- package/dist/trajectory/harness-bundle-rules/gemini-cli.js +112 -0
- package/dist/trajectory/harness-bundle-rules/gemini-cli.js.map +1 -0
- package/dist/trajectory/harness-bundle-rules/types.d.ts +25 -0
- package/dist/trajectory/harness-bundle-rules/types.js +15 -0
- package/dist/trajectory/harness-bundle-rules/types.js.map +1 -0
- package/dist/trajectory/harness-bundle-schema.d.ts +74 -0
- package/dist/trajectory/harness-bundle-schema.js +34 -0
- package/dist/trajectory/harness-bundle-schema.js.map +1 -0
- package/dist/trajectory/harness-bundle.d.ts +73 -0
- package/dist/trajectory/harness-bundle.js +128 -0
- package/dist/trajectory/harness-bundle.js.map +1 -0
- package/dist/trajectory/hash-chain.d.ts +18 -0
- package/dist/trajectory/hash-chain.js +23 -0
- package/dist/trajectory/hash-chain.js.map +1 -0
- package/dist/trajectory/index.d.ts +28 -0
- package/dist/trajectory/index.js +28 -0
- package/dist/trajectory/index.js.map +1 -0
- package/dist/trajectory/llm-proxy-spans.d.ts +14 -0
- package/dist/trajectory/llm-proxy-spans.js +51 -0
- package/dist/trajectory/llm-proxy-spans.js.map +1 -0
- package/dist/trajectory/llm-proxy.d.ts +32 -0
- package/dist/trajectory/llm-proxy.js +97 -0
- package/dist/trajectory/llm-proxy.js.map +1 -0
- package/dist/trajectory/processors/credential-scrub.d.ts +11 -0
- package/dist/trajectory/processors/credential-scrub.js +40 -0
- package/dist/trajectory/processors/credential-scrub.js.map +1 -0
- package/dist/trajectory/processors/identity-scrub.d.ts +18 -0
- package/dist/trajectory/processors/identity-scrub.js +43 -0
- package/dist/trajectory/processors/identity-scrub.js.map +1 -0
- package/dist/trajectory/processors/manifest-builder.d.ts +18 -0
- package/dist/trajectory/processors/manifest-builder.js +26 -0
- package/dist/trajectory/processors/manifest-builder.js.map +1 -0
- package/dist/trajectory/processors/path-scrub.d.ts +15 -0
- package/dist/trajectory/processors/path-scrub.js +52 -0
- package/dist/trajectory/processors/path-scrub.js.map +1 -0
- package/dist/trajectory/processors/sentinel.d.ts +16 -0
- package/dist/trajectory/processors/sentinel.js +17 -0
- package/dist/trajectory/processors/sentinel.js.map +1 -0
- package/dist/trajectory/processors/sqlite-exporter.d.ts +32 -0
- package/dist/trajectory/processors/sqlite-exporter.js +48 -0
- package/dist/trajectory/processors/sqlite-exporter.js.map +1 -0
- package/dist/trajectory/processors/transcript-content-scrub.d.ts +9 -0
- package/dist/trajectory/processors/transcript-content-scrub.js +58 -0
- package/dist/trajectory/processors/transcript-content-scrub.js.map +1 -0
- package/dist/trajectory/receiver.d.ts +37 -0
- package/dist/trajectory/receiver.js +584 -0
- package/dist/trajectory/receiver.js.map +1 -0
- package/dist/trajectory/schema.d.ts +102 -14
- package/dist/trajectory/schema.js +29 -0
- package/dist/trajectory/schema.js.map +1 -1
- package/dist/trajectory/secret-scrub.d.ts +32 -0
- package/dist/trajectory/secret-scrub.js +51 -0
- package/dist/trajectory/secret-scrub.js.map +1 -0
- package/dist/trajectory/span-profile.d.ts +27 -0
- package/dist/trajectory/span-profile.js +51 -0
- package/dist/trajectory/span-profile.js.map +1 -0
- package/dist/trajectory/synthetic-span-builder.d.ts +50 -0
- package/dist/trajectory/synthetic-span-builder.js +115 -0
- package/dist/trajectory/synthetic-span-builder.js.map +1 -0
- package/dist/trajectory/transcript-parsers/aider-history.d.ts +42 -0
- package/dist/trajectory/transcript-parsers/aider-history.js +182 -0
- package/dist/trajectory/transcript-parsers/aider-history.js.map +1 -0
- package/dist/trajectory/transcript-parsers/claude-code-jsonl.d.ts +37 -0
- package/dist/trajectory/transcript-parsers/claude-code-jsonl.js +143 -0
- package/dist/trajectory/transcript-parsers/claude-code-jsonl.js.map +1 -0
- package/dist/trajectory/transcript-parsers/codex-session.d.ts +36 -0
- package/dist/trajectory/transcript-parsers/codex-session.js +135 -0
- package/dist/trajectory/transcript-parsers/codex-session.js.map +1 -0
- package/dist/trajectory/transcript-parsers/continue-devdata.d.ts +41 -0
- package/dist/trajectory/transcript-parsers/continue-devdata.js +191 -0
- package/dist/trajectory/transcript-parsers/continue-devdata.js.map +1 -0
- package/dist/trajectory/transcript-parsers/cursor-sqlite.d.ts +38 -0
- package/dist/trajectory/transcript-parsers/cursor-sqlite.js +119 -0
- package/dist/trajectory/transcript-parsers/cursor-sqlite.js.map +1 -0
- package/dist/trajectory/transcript-parsers/gemini-session.d.ts +35 -0
- package/dist/trajectory/transcript-parsers/gemini-session.js +138 -0
- package/dist/trajectory/transcript-parsers/gemini-session.js.map +1 -0
- package/dist/trajectory/transcript-parsers/types.d.ts +101 -0
- package/dist/trajectory/transcript-parsers/types.js +33 -0
- package/dist/trajectory/transcript-parsers/types.js.map +1 -0
- package/dist/trajectory/transcript-watcher.d.ts +62 -0
- package/dist/trajectory/transcript-watcher.js +157 -0
- package/dist/trajectory/transcript-watcher.js.map +1 -0
- package/dist/trajectory/wrappers/http.d.ts +37 -0
- package/dist/trajectory/wrappers/http.js +85 -0
- package/dist/trajectory/wrappers/http.js.map +1 -0
- package/dist/trajectory/wrappers/mcp.d.ts +17 -0
- package/dist/trajectory/wrappers/mcp.js +58 -0
- package/dist/trajectory/wrappers/mcp.js.map +1 -0
- package/dist/trajectory/wrappers/subprocess.d.ts +32 -0
- package/dist/trajectory/wrappers/subprocess.js +70 -0
- package/dist/trajectory/wrappers/subprocess.js.map +1 -0
- package/dist/tx-retry.js +90 -9
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/envelope.d.ts +2742 -0
- package/dist/types/envelope.js +149 -0
- package/dist/types/envelope.js.map +1 -0
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.js +4 -4
- package/dist/types/index.js.map +1 -1
- package/dist/types/payloads/index.d.ts +12 -0
- package/dist/types/payloads/index.js +62 -0
- package/dist/types/payloads/index.js.map +1 -0
- package/dist/types/payloads/portfolio-v0.d.ts +481 -0
- package/dist/types/payloads/portfolio-v0.js +94 -0
- package/dist/types/payloads/portfolio-v0.js.map +1 -0
- package/dist/types/payloads/prediction-apy-v0.d.ts +231 -0
- package/dist/types/payloads/prediction-apy-v0.js +63 -0
- package/dist/types/payloads/prediction-apy-v0.js.map +1 -0
- package/dist/types/payloads/prediction-v0.d.ts +262 -0
- package/dist/types/payloads/prediction-v0.js +73 -0
- package/dist/types/payloads/prediction-v0.js.map +1 -0
- package/dist/types/payloads/prediction-v1.d.ts +2 -0
- package/dist/types/payloads/prediction-v1.js +2 -0
- package/dist/types/payloads/prediction-v1.js.map +1 -0
- package/dist/types/portfolio.d.ts +31 -698
- package/dist/types/portfolio.js +20 -110
- package/dist/types/portfolio.js.map +1 -1
- package/dist/types/prediction-apy.d.ts +26 -366
- package/dist/types/prediction-apy.js +12 -68
- package/dist/types/prediction-apy.js.map +1 -1
- package/dist/types/prediction-v1.d.ts +2 -0
- package/dist/types/prediction-v1.js +2 -0
- package/dist/types/prediction-v1.js.map +1 -0
- package/dist/types/prediction.d.ts +546 -382
- package/dist/types/prediction.js +16 -87
- package/dist/types/prediction.js.map +1 -1
- package/dist/types/session-provenance.d.ts +71 -0
- package/dist/types/session-provenance.js +19 -0
- package/dist/types/session-provenance.js.map +1 -0
- package/dist/types/task-document.d.ts +1121 -0
- package/dist/types/task-document.js +99 -0
- package/dist/types/task-document.js.map +1 -0
- package/dist/types/task.d.ts +805 -0
- package/dist/types/task.js +88 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/window.d.ts +12 -0
- package/dist/types/window.js +6 -0
- package/dist/types/window.js.map +1 -0
- package/dist/util/path-safety.d.ts +21 -0
- package/dist/util/path-safety.js +28 -0
- package/dist/util/path-safety.js.map +1 -0
- package/dist/util/redact-rpc-urls.d.ts +5 -0
- package/dist/util/redact-rpc-urls.js +9 -0
- package/dist/util/redact-rpc-urls.js.map +1 -0
- package/dist/vendor/@jinn-network/sdk/README.md +89 -0
- package/dist/vendor/@jinn-network/sdk/dist/capabilities.d.ts +52 -0
- package/dist/vendor/@jinn-network/sdk/dist/capabilities.js +1 -0
- package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +120 -0
- package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +39 -0
- package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +145 -0
- package/dist/vendor/@jinn-network/sdk/dist/contracts.js +317 -0
- package/dist/vendor/@jinn-network/sdk/dist/harness.d.ts +120 -0
- package/dist/vendor/@jinn-network/sdk/dist/harness.js +31 -0
- package/dist/vendor/@jinn-network/sdk/dist/index.d.ts +4 -0
- package/dist/vendor/@jinn-network/sdk/dist/index.js +7 -0
- package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +32 -0
- package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +131 -0
- package/dist/vendor/@jinn-network/sdk/dist/manifest.d.ts +69 -0
- package/dist/vendor/@jinn-network/sdk/dist/manifest.js +3 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +223 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +64 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +359 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +60 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +110 -0
- package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +58 -0
- package/dist/vendor/@jinn-network/sdk/dist/plugins.d.ts +36 -0
- package/dist/vendor/@jinn-network/sdk/dist/plugins.js +54 -0
- package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +870 -0
- package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +80 -0
- package/dist/vendor/@jinn-network/sdk/dist/session-derived/distill-prompt-v1.d.ts +2 -0
- package/dist/vendor/@jinn-network/sdk/dist/session-derived/distill-prompt-v1.js +10 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/index.d.ts +6 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/index.js +8 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +559 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +126 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/prediction-v1.d.ts +6 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/prediction-v1.js +3 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +4 -0
- package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +2 -0
- package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.d.ts +66 -0
- package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +44 -0
- package/dist/vendor/@jinn-network/sdk/dist/types.d.ts +116 -0
- package/dist/vendor/@jinn-network/sdk/dist/types.js +21 -0
- package/dist/vendor/@jinn-network/sdk/package.json +43 -0
- package/dist/venues/hyperliquid/account-value.d.ts +1 -1
- package/dist/venues/hyperliquid/account-value.js +1 -1
- package/dist/venues/polymarket/client.d.ts +77 -0
- package/dist/venues/polymarket/client.js +309 -0
- package/dist/venues/polymarket/client.js.map +1 -0
- package/dist/withdraw/run-withdraw-plan.js +0 -2
- package/dist/withdraw/run-withdraw-plan.js.map +1 -1
- package/dist/x402/acquire.d.ts +14 -3
- package/dist/x402/acquire.js +28 -11
- package/dist/x402/acquire.js.map +1 -1
- package/dist/x402/handler.d.ts +15 -3
- package/dist/x402/handler.js +189 -24
- package/dist/x402/handler.js.map +1 -1
- package/package.json +60 -15
- package/plugins/claude-code-learner/.claude-plugin/plugin.json +9 -0
- package/plugins/claude-code-learner/.codex-plugin/plugin.json +39 -0
- package/plugins/claude-code-learner/AGENTS.md +40 -0
- package/plugins/claude-code-learner/CLAUDE.md +33 -0
- package/plugins/claude-code-learner/README.md +59 -0
- package/plugins/claude-code-learner/hooks/hooks.json +16 -0
- package/plugins/claude-code-learner/hooks/session-start +38 -0
- package/plugins/claude-code-learner/skills/learn/SKILL.md +412 -0
- package/plugins/claude-code-learner/skills/learn/analyst-prompt.md +68 -0
- package/plugins/claude-code-learner/skills/learn/consolidator-prompt.md +94 -0
- package/plugins/claude-code-learner/skills/learn/explorer-prompt.md +53 -0
- package/plugins/claude-code-learner/skills/learn/planner-prompt.md +87 -0
- package/plugins/claude-code-learner/skills/learn/promoter-prompt.md +113 -0
- package/plugins/claude-code-learner/skills/learn/step-worker-prompt.md +47 -0
- package/plugins/claude-code-learner/skills/learn/strategist-prompt.md +85 -0
- package/plugins/jinn-prediction-plugin/.claude-plugin/plugin.json +19 -0
- package/plugins/jinn-prediction-plugin/.mcp.json +8 -0
- package/plugins/jinn-prediction-plugin/GEMINI.md +7 -0
- package/plugins/jinn-prediction-plugin/gemini-extension.json +13 -0
- package/plugins/jinn-prediction-plugin/jinn.plugin.json +26 -0
- package/plugins/jinn-prediction-plugin/mcp/polymarket-server.mjs +322 -0
- package/plugins/jinn-prediction-plugin/schemas/prediction-v0-solution.schema.json +12 -0
- package/plugins/jinn-prediction-plugin/schemas/prediction-v0-task.schema.json +25 -0
- package/plugins/jinn-prediction-plugin/schemas/prediction-v0-verdict.schema.json +11 -0
- package/plugins/jinn-prediction-plugin/schemas/prediction-v1-solution.schema.json +34 -0
- package/plugins/jinn-prediction-plugin/schemas/prediction-v1-task.schema.json +118 -0
- package/plugins/jinn-prediction-plugin/schemas/prediction-v1-verdict.schema.json +84 -0
- package/plugins/jinn-prediction-plugin/skills/base-rate-forecasting/SKILL.md +3 -0
- package/plugins/jinn-prediction-plugin/skills/calibration/SKILL.md +3 -0
- package/plugins/jinn-prediction-plugin/skills/common-biases/SKILL.md +3 -0
- package/plugins/jinn-prediction-plugin/skills/polymarket-task-handling/SKILL.md +5 -0
- package/plugins/jinn-prediction-plugin/skills/prediction-corpus-retrieval/SKILL.md +35 -0
- package/plugins/network-tools/.claude-plugin/plugin.json +12 -0
- package/plugins/network-tools/.codex-plugin/plugin.json +39 -0
- package/plugins/network-tools/.mcp.json +11 -0
- package/plugins/network-tools/jinn.plugin.json +29 -0
- package/plugins/network-tools/mcp/jinn-client-server.mjs +110 -0
- package/plugins/swe-rebench-v2-runtime/.claude-plugin/plugin.json +5 -0
- package/plugins/swe-rebench-v2-runtime/.codex-plugin/plugin.json +39 -0
- package/plugins/swe-rebench-v2-runtime/README.md +11 -0
- package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +12 -0
- package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +25 -0
- package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +64 -0
- package/skills/jinn-operator/SKILL.md +120 -101
- package/templates/harnesses/alternative-harness/README.md.tmpl +44 -0
- package/templates/harnesses/alternative-harness/gitignore.tmpl +3 -0
- package/templates/harnesses/alternative-harness/jinn.manifest.json.tmpl +22 -0
- package/templates/harnesses/alternative-harness/package.json.tmpl +26 -0
- package/templates/harnesses/alternative-harness/src/coordinator.ts.tmpl +50 -0
- package/templates/harnesses/alternative-harness/src/harness.ts.tmpl +31 -0
- package/templates/harnesses/alternative-harness/src/index.ts.tmpl +44 -0
- package/templates/harnesses/alternative-harness/src/mock-harness.ts.tmpl +41 -0
- package/templates/harnesses/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
- package/templates/harnesses/alternative-harness/src/phases/execute.ts.tmpl +33 -0
- package/templates/harnesses/alternative-harness/src/phases/improve.ts.tmpl +31 -0
- package/templates/harnesses/alternative-harness/src/phases/memory.ts.tmpl +31 -0
- package/templates/harnesses/alternative-harness/src/phases/orient.ts.tmpl +21 -0
- package/templates/harnesses/alternative-harness/src/phases/plan.ts.tmpl +25 -0
- package/templates/harnesses/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
- package/templates/harnesses/alternative-harness/test/coordinator.test.ts.tmpl +53 -0
- package/templates/harnesses/alternative-harness/test/unit.test.ts.tmpl +55 -0
- package/templates/harnesses/alternative-harness/tsconfig.json.tmpl +16 -0
- package/templates/harnesses/evaluator/README.md.tmpl +36 -0
- package/templates/harnesses/evaluator/gitignore.tmpl +3 -0
- package/templates/harnesses/evaluator/jinn.manifest.json.tmpl +22 -0
- package/templates/harnesses/evaluator/package.json.tmpl +26 -0
- package/templates/harnesses/evaluator/src/index.ts.tmpl +35 -0
- package/templates/harnesses/evaluator/test/unit.test.ts.tmpl +49 -0
- package/templates/harnesses/evaluator/tsconfig.json.tmpl +16 -0
- package/templates/harnesses/forecaster/README.md.tmpl +25 -0
- package/templates/harnesses/forecaster/gitignore.tmpl +5 -0
- package/templates/harnesses/forecaster/jinn.manifest.json.tmpl +22 -0
- package/templates/harnesses/forecaster/package.json.tmpl +26 -0
- package/templates/harnesses/forecaster/src/index.ts.tmpl +33 -0
- package/templates/harnesses/forecaster/test/unit.test.ts.tmpl +42 -0
- package/templates/harnesses/forecaster/tsconfig.json.tmpl +16 -0
- package/dist/adapters/claim-registry/abi.d.ts +0 -127
- package/dist/adapters/claim-registry/abi.js +0 -93
- package/dist/adapters/claim-registry/abi.js.map +0 -1
- package/dist/adapters/claim-registry/client.d.ts +0 -89
- package/dist/adapters/claim-registry/client.js +0 -205
- package/dist/adapters/claim-registry/client.js.map +0 -1
- package/dist/adapters/mech/claim-policy.d.ts +0 -40
- package/dist/adapters/mech/claim-policy.js +0 -104
- package/dist/adapters/mech/claim-policy.js.map +0 -1
- package/dist/bin/jinn-mcp.d.ts +0 -2
- package/dist/bin/jinn-mcp.js +0 -10
- package/dist/bin/jinn-mcp.js.map +0 -1
- package/dist/cli/commands/intents.d.ts +0 -17
- package/dist/cli/commands/intents.js +0 -489
- package/dist/cli/commands/intents.js.map +0 -1
- package/dist/cli/commands/plugin-install.js +0 -803
- package/dist/cli/commands/plugin-install.js.map +0 -1
- package/dist/cli/commands/submit-intent.js +0 -245
- package/dist/cli/commands/submit-intent.js.map +0 -1
- package/dist/cli/intent-registry-access.d.ts +0 -62
- package/dist/cli/intent-registry-access.js +0 -165
- package/dist/cli/intent-registry-access.js.map +0 -1
- package/dist/discovery/registry.d.ts +0 -97
- package/dist/discovery/registry.js +0 -177
- package/dist/discovery/registry.js.map +0 -1
- package/dist/discovery/subgraph.d.ts +0 -37
- package/dist/discovery/subgraph.js +0 -87
- package/dist/discovery/subgraph.js.map +0 -1
- package/dist/intents/kinds/constants.d.ts +0 -5
- package/dist/intents/kinds/constants.js +0 -6
- package/dist/intents/kinds/constants.js.map +0 -1
- package/dist/intents/kinds/index.d.ts +0 -28
- package/dist/intents/kinds/index.js +0 -50
- package/dist/intents/kinds/index.js.map +0 -1
- package/dist/intents/kinds/portfolio-v0.d.ts +0 -2
- package/dist/intents/kinds/portfolio-v0.js +0 -13
- package/dist/intents/kinds/portfolio-v0.js.map +0 -1
- package/dist/intents/kinds/prediction-apy-v0.d.ts +0 -3
- package/dist/intents/kinds/prediction-apy-v0.js +0 -21
- package/dist/intents/kinds/prediction-apy-v0.js.map +0 -1
- package/dist/intents/kinds/prediction-v0.d.ts +0 -3
- package/dist/intents/kinds/prediction-v0.js +0 -32
- package/dist/intents/kinds/prediction-v0.js.map +0 -1
- package/dist/intents/kinds/spec-kind.d.ts +0 -38
- package/dist/intents/kinds/spec-kind.js +0 -6
- package/dist/intents/kinds/spec-kind.js.map +0 -1
- package/dist/intents/posting-service.d.ts +0 -26
- package/dist/intents/posting-service.js +0 -218
- package/dist/intents/posting-service.js.map +0 -1
- package/dist/intents/prediction-apy-v0-auto.d.ts +0 -11
- package/dist/intents/prediction-apy-v0-auto.js +0 -46
- package/dist/intents/prediction-apy-v0-auto.js.map +0 -1
- package/dist/intents/prediction-apy-v0-template.d.ts +0 -8
- package/dist/intents/prediction-apy-v0-template.js +0 -22
- package/dist/intents/prediction-apy-v0-template.js.map +0 -1
- package/dist/intents/prediction-v0-auto.d.ts +0 -53
- package/dist/intents/prediction-v0-auto.js +0 -84
- package/dist/intents/prediction-v0-auto.js.map +0 -1
- package/dist/intents/prediction-v0-template.d.ts +0 -70
- package/dist/intents/prediction-v0-template.js +0 -145
- package/dist/intents/prediction-v0-template.js.map +0 -1
- package/dist/intents/sources.d.ts +0 -39
- package/dist/intents/sources.js +0 -42
- package/dist/intents/sources.js.map +0 -1
- package/dist/restorer/engine/canonical-json.d.ts +0 -18
- package/dist/restorer/engine/canonical-json.js +0 -59
- package/dist/restorer/engine/canonical-json.js.map +0 -1
- package/dist/restorer/engine/claim.d.ts +0 -69
- package/dist/restorer/engine/claim.js +0 -104
- package/dist/restorer/engine/claim.js.map +0 -1
- package/dist/restorer/engine/delivery.d.ts +0 -52
- package/dist/restorer/engine/delivery.js +0 -63
- package/dist/restorer/engine/delivery.js.map +0 -1
- package/dist/restorer/engine/engine.d.ts +0 -213
- package/dist/restorer/engine/engine.js +0 -769
- package/dist/restorer/engine/engine.js.map +0 -1
- package/dist/restorer/engine/manifest-assembly.d.ts +0 -67
- package/dist/restorer/engine/manifest-assembly.js +0 -79
- package/dist/restorer/engine/manifest-assembly.js.map +0 -1
- package/dist/restorer/engine/packaging.d.ts +0 -87
- package/dist/restorer/engine/packaging.js +0 -350
- package/dist/restorer/engine/packaging.js.map +0 -1
- package/dist/restorer/engine/persistence.d.ts +0 -170
- package/dist/restorer/engine/persistence.js +0 -381
- package/dist/restorer/engine/persistence.js.map +0 -1
- package/dist/restorer/engine/recovery.d.ts +0 -22
- package/dist/restorer/engine/recovery.js +0 -24
- package/dist/restorer/engine/recovery.js.map +0 -1
- package/dist/restorer/engine/registry.d.ts +0 -62
- package/dist/restorer/engine/registry.js +0 -73
- package/dist/restorer/engine/registry.js.map +0 -1
- package/dist/restorer/engine/signing.d.ts +0 -30
- package/dist/restorer/engine/signing.js +0 -39
- package/dist/restorer/engine/signing.js.map +0 -1
- package/dist/restorer/engine/state.d.ts +0 -42
- package/dist/restorer/engine/state.js +0 -87
- package/dist/restorer/engine/state.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.d.ts +0 -64
- package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +0 -104
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +0 -721
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +0 -97
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +0 -226
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +0 -44
- package/dist/restorer/impls/claude-mcp-prediction/index.js +0 -239
- package/dist/restorer/impls/claude-mcp-prediction/index.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js +0 -135
- package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/prompt.d.ts +0 -8
- package/dist/restorer/impls/claude-mcp-prediction/prompt.js +0 -54
- package/dist/restorer/impls/claude-mcp-prediction/prompt.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.d.ts +0 -36
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js +0 -137
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/types.d.ts +0 -84
- package/dist/restorer/impls/claude-mcp-prediction/types.js +0 -6
- package/dist/restorer/impls/claude-mcp-prediction/types.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.d.ts +0 -34
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.js +0 -233
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js +0 -136
- package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.d.ts +0 -7
- package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js +0 -46
- package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +0 -27
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js +0 -128
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/types.d.ts +0 -64
- package/dist/restorer/impls/claude-mcp-prediction-apy/types.js +0 -6
- package/dist/restorer/impls/claude-mcp-prediction-apy/types.js.map +0 -1
- package/dist/restorer/impls/evaluation-context.d.ts +0 -16
- package/dist/restorer/impls/evaluation-context.js +0 -18
- package/dist/restorer/impls/evaluation-context.js.map +0 -1
- package/dist/restorer/impls/index.d.ts +0 -46
- package/dist/restorer/impls/index.js +0 -88
- package/dist/restorer/impls/index.js.map +0 -1
- package/dist/restorer/impls/legacy-claude/index.d.ts +0 -52
- package/dist/restorer/impls/legacy-claude/index.js +0 -140
- package/dist/restorer/impls/legacy-claude/index.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +0 -68
- package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js +0 -117
- package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.d.ts +0 -78
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js +0 -274
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +0 -23
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js +0 -49
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.d.ts +0 -25
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js +0 -44
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.d.ts +0 -17
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js +0 -43
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +0 -44
- package/dist/restorer/impls/portfolio-v0-evaluator/index.js +0 -440
- package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/types.d.ts +0 -34
- package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +0 -40
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +0 -107
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/types.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +0 -6
- package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js +0 -11
- package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +0 -42
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +0 -208
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +0 -7
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +0 -29
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +0 -31
- package/dist/restorer/impls/prediction-v0-baseline/index.js +0 -100
- package/dist/restorer/impls/prediction-v0-baseline/index.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-baseline/strategy.d.ts +0 -8
- package/dist/restorer/impls/prediction-v0-baseline/strategy.js +0 -41
- package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +0 -7
- package/dist/restorer/impls/prediction-v0-baseline/types.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.d.ts +0 -20
- package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.d.ts +0 -9
- package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.d.ts +0 -3
- package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +0 -13
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js +0 -111
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.d.ts +0 -5
- package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +0 -36
- package/dist/restorer/impls/prediction-v0-evaluator/index.js +0 -234
- package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +0 -1
- package/dist/restorer/types.d.ts +0 -194
- package/dist/restorer/types.js +0 -28
- package/dist/restorer/types.js.map +0 -1
- package/dist/types/desired-state.d.ts +0 -94
- package/dist/types/desired-state.js +0 -36
- package/dist/types/desired-state.js.map +0 -1
- /package/dist/cli/commands/{plugin-install.d.ts → solver-nets.d.ts} +0 -0
- /package/dist/cli/commands/{submit-intent.d.ts → tasks.d.ts} +0 -0
- /package/dist/{restorer/impls/prediction-apy-v0-baseline → harnesses/impls/claude-code-learner}/types.js +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/api-wallet.js +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/mcp-tools.js +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/safety-rails.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/safety-rails.js +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/mcp-tools.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/mcp-tools.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/availability.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/availability.js +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/score.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/score.js +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/types.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/strategy.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/strategy.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/types.d.ts +0 -0
- /package/dist/{restorer/impls/prediction-apy-v0-evaluator → harnesses/impls/prediction-apy-v0-baseline}/types.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/score.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/score.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/types.d.ts +0 -0
- /package/dist/{restorer/impls/prediction-v0-baseline → harnesses/impls/prediction-apy-v0-evaluator}/types.js +0 -0
- /package/dist/{restorer/impls/prediction-v0-evaluator → harnesses/impls/prediction-v0-baseline}/types.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/canonical-metrics.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/availability.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/eligibility.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/spec.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/score.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/score.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/types.d.ts +0 -0
|
@@ -0,0 +1,1121 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { getSolverNetContract, } from '../vendor/@jinn-network/sdk/dist/solvernets/index.js';
|
|
4
|
+
import { DraftSolverNetRecordSchema, LaunchedSolverNetRecordSchema, } from '../solvernets/store.js';
|
|
5
|
+
import { signManifest, } from '../solvernets/manifest.js';
|
|
6
|
+
import { resolveContractFromSolverNetId } from '../solvernets/launched-record-dispatcher.js';
|
|
7
|
+
// ── Draft CRUD validation schemas ──────────────────────────────────────────
|
|
8
|
+
// Zod schema for the editable subset of a draft. Mirrors
|
|
9
|
+
// `DraftSolverNetRecordSchema` from the store but drops the
|
|
10
|
+
// store-managed fields (`schemaVersion`, `draftId`, `createdAt`,
|
|
11
|
+
// `updatedAt`, `completedSteps` is editable by the UI).
|
|
12
|
+
//
|
|
13
|
+
// All fields are optional — POST with `{}` produces an empty draft, PATCH
|
|
14
|
+
// of a single field updates only that field. Wrong types → Zod fails fast,
|
|
15
|
+
// the route returns 400 with a structured error.
|
|
16
|
+
const DraftEditableSchema = z
|
|
17
|
+
.object({
|
|
18
|
+
templateContractId: z.string().optional(),
|
|
19
|
+
templateContractVersion: z.string().optional(),
|
|
20
|
+
name: z.string().optional(),
|
|
21
|
+
description: z.string().optional(),
|
|
22
|
+
generatorConfig: z.record(z.string(), z.unknown()).optional(),
|
|
23
|
+
solutionPriceWei: z.string().optional(),
|
|
24
|
+
verdictPriceWei: z.string().optional(),
|
|
25
|
+
openRoles: z.array(z.enum(['solver', 'evaluator'])).optional(),
|
|
26
|
+
completedSteps: z
|
|
27
|
+
.array(z.enum(['define', 'reviewContract', 'configureGenerator', 'configurePricing']))
|
|
28
|
+
.optional(),
|
|
29
|
+
})
|
|
30
|
+
.strict();
|
|
31
|
+
// Fields the API explicitly forbids in a request body. Surfaced here so the
|
|
32
|
+
// 400 message can name them rather than relying on `.strict()`'s generic
|
|
33
|
+
// "Unrecognized key" wording (which doesn't tell the SPA *why* a field is
|
|
34
|
+
// rejected — these are immutable, not just unknown).
|
|
35
|
+
const IMMUTABLE_FIELDS = ['draftId', 'createdAt', 'updatedAt', 'schemaVersion'];
|
|
36
|
+
function rejectImmutableFields(body) {
|
|
37
|
+
if (typeof body !== 'object' || body === null)
|
|
38
|
+
return null;
|
|
39
|
+
for (const f of IMMUTABLE_FIELDS) {
|
|
40
|
+
if (f in body) {
|
|
41
|
+
return { error: `\`${f}\` is immutable and cannot be set via the API`, field: f };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
function applyEditable(current, patch, now) {
|
|
47
|
+
const next = { ...current, updatedAt: now };
|
|
48
|
+
// Only assign keys that are explicitly present in the patch object so that
|
|
49
|
+
// PATCH `{ name: 'x' }` doesn't clear `description` etc. The Zod schema's
|
|
50
|
+
// `.optional()` would let `undefined` slip through, hence the explicit
|
|
51
|
+
// `key in patch` check below.
|
|
52
|
+
if ('templateContractId' in patch)
|
|
53
|
+
next.templateContractId = patch.templateContractId;
|
|
54
|
+
if ('templateContractVersion' in patch)
|
|
55
|
+
next.templateContractVersion = patch.templateContractVersion;
|
|
56
|
+
if ('name' in patch)
|
|
57
|
+
next.name = patch.name;
|
|
58
|
+
if ('description' in patch)
|
|
59
|
+
next.description = patch.description;
|
|
60
|
+
if ('generatorConfig' in patch)
|
|
61
|
+
next.generatorConfig = patch.generatorConfig;
|
|
62
|
+
if ('solutionPriceWei' in patch)
|
|
63
|
+
next.solutionPriceWei = patch.solutionPriceWei;
|
|
64
|
+
if ('verdictPriceWei' in patch)
|
|
65
|
+
next.verdictPriceWei = patch.verdictPriceWei;
|
|
66
|
+
if ('openRoles' in patch)
|
|
67
|
+
next.openRoles = patch.openRoles;
|
|
68
|
+
if ('completedSteps' in patch && patch.completedSteps !== undefined) {
|
|
69
|
+
next.completedSteps = patch.completedSteps;
|
|
70
|
+
}
|
|
71
|
+
return next;
|
|
72
|
+
}
|
|
73
|
+
// ── Catalog query-string schemas (Task 15) ──────────────────────────────────
|
|
74
|
+
/**
|
|
75
|
+
* Status filter shared by `/launched` (owned-list) and `/registry`
|
|
76
|
+
* (global-list). The owned-list also accepts `launching`/`failed` because
|
|
77
|
+
* those are local-only states that never make it to the registry; the
|
|
78
|
+
* registry list is restricted to lifecycle-broadcast states.
|
|
79
|
+
*/
|
|
80
|
+
const OwnedStatusFilterSchema = z.enum([
|
|
81
|
+
'launching',
|
|
82
|
+
'launched',
|
|
83
|
+
'paused',
|
|
84
|
+
'retired',
|
|
85
|
+
'failed',
|
|
86
|
+
]);
|
|
87
|
+
const RegistryStatusFilterSchema = z.enum(['launched', 'paused', 'retired']);
|
|
88
|
+
/**
|
|
89
|
+
* Loose CIDv0 / CIDv1 sniff. We are not validating the full multihash —
|
|
90
|
+
* that is the registry client's job — but rejecting trivial garbage here
|
|
91
|
+
* (slashes from path traversal, hyphens, empty strings) keeps the IPFS
|
|
92
|
+
* round-trip away from obvious attacks. CIDv0 = `Qm` + base58btc; CIDv1 in
|
|
93
|
+
* the dag-pb codec we use here is base32-lower and starts with `bafy`.
|
|
94
|
+
*
|
|
95
|
+
* We accept any sufficiently-long alphanumeric tail without enforcing the
|
|
96
|
+
* exact alphabet — the registry client's hash check against the on-chain
|
|
97
|
+
* advertised hash is the canonical gate; this regex only filters obviously
|
|
98
|
+
* non-CID inputs.
|
|
99
|
+
*/
|
|
100
|
+
// CIDv0 (Qm-base58) or CIDv1 (any multicodec — multibase prefix `b` is
|
|
101
|
+
// base32 lowercase alphanumeric). Earlier this regex anchored to `bafy`,
|
|
102
|
+
// the dag-pb codec prefix; the IPFS adapter actually pins manifests as
|
|
103
|
+
// raw bytes (codec `raw`), producing `bafkrei...`. See jinn-mono-wkzp.
|
|
104
|
+
// Loose by design — the registry client does the canonical decode. This only
|
|
105
|
+
// blocks obviously invalid/path-like input before an IPFS round-trip.
|
|
106
|
+
const CID_SHAPE_REGEX = /^(Qm[A-Za-z0-9]{10,}|b[A-Za-z0-9]{10,})$/u;
|
|
107
|
+
// ── Lifecycle / generator-config validation schemas ─────────────────────────
|
|
108
|
+
const LifecycleBodySchema = z
|
|
109
|
+
.object({
|
|
110
|
+
target: z.enum(['paused', 'launched', 'retired']),
|
|
111
|
+
})
|
|
112
|
+
.strict();
|
|
113
|
+
/**
|
|
114
|
+
* Zod schema mirroring `PredictionV1GeneratorRuntimeConfig` from
|
|
115
|
+
* `solver-types/prediction-v1-auto.ts`. Kept narrow on purpose: only fields
|
|
116
|
+
* the operator can hot-apply are accepted. Static-config fields (agent
|
|
117
|
+
* identity, transport URLs) live in the daemon's static-config block and
|
|
118
|
+
* are never mutated through this endpoint.
|
|
119
|
+
*
|
|
120
|
+
* `.strict()` rejects unknown keys so a typo in the SPA surfaces as 400
|
|
121
|
+
* rather than silently dropping the field.
|
|
122
|
+
*/
|
|
123
|
+
const PredictionV1GeneratorConfigPatchSchema = z
|
|
124
|
+
.object({
|
|
125
|
+
cadenceMs: z.number().int().nonnegative().optional(),
|
|
126
|
+
maxNewRoundsPerPoll: z.number().int().nonnegative().optional(),
|
|
127
|
+
maxNewRoundsPerDay: z.number().int().nonnegative().optional(),
|
|
128
|
+
maxOpenRounds: z.number().int().nonnegative().optional(),
|
|
129
|
+
submissionWindowMs: z.number().int().nonnegative().optional(),
|
|
130
|
+
allowlistConditionIds: z.array(z.string()).optional(),
|
|
131
|
+
blocklistConditionIds: z.array(z.string()).optional(),
|
|
132
|
+
minTimeToResolutionHours: z.number().nonnegative().optional(),
|
|
133
|
+
maxTimeToResolutionHours: z.number().nonnegative().optional(),
|
|
134
|
+
minLiquidityUsd: z.string().optional(),
|
|
135
|
+
minVolume24hUsd: z.string().optional(),
|
|
136
|
+
maxYesSpread: z.string().optional(),
|
|
137
|
+
maxOrderbookAgeSeconds: z.number().int().nonnegative().optional(),
|
|
138
|
+
})
|
|
139
|
+
.strict();
|
|
140
|
+
const SweRebenchV2GeneratorConfigPatchSchema = z
|
|
141
|
+
.object({
|
|
142
|
+
N_target_successes: z.number().int().positive().optional(),
|
|
143
|
+
N_max_postings_per_task: z.number().int().positive().optional(),
|
|
144
|
+
cooldown_ms: z.number().int().nonnegative().optional(),
|
|
145
|
+
claimPolicy: z
|
|
146
|
+
.object({
|
|
147
|
+
maxClaims: z.number().int().positive().max(65_535).optional(),
|
|
148
|
+
maxClaimsPerOperator: z.number().int().positive().max(65_535).optional(),
|
|
149
|
+
claimLeaseTtlSeconds: z.number().int().positive().optional(),
|
|
150
|
+
})
|
|
151
|
+
.strict()
|
|
152
|
+
.optional(),
|
|
153
|
+
})
|
|
154
|
+
.strict()
|
|
155
|
+
.superRefine((value, ctx) => {
|
|
156
|
+
if (value.N_target_successes !== undefined &&
|
|
157
|
+
value.N_max_postings_per_task !== undefined &&
|
|
158
|
+
value.N_max_postings_per_task < value.N_target_successes) {
|
|
159
|
+
ctx.addIssue({
|
|
160
|
+
code: z.ZodIssueCode.custom,
|
|
161
|
+
path: ['N_max_postings_per_task'],
|
|
162
|
+
message: 'must be >= N_target_successes',
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
if (value.claimPolicy?.maxClaims !== undefined &&
|
|
166
|
+
value.claimPolicy.maxClaimsPerOperator !== undefined &&
|
|
167
|
+
value.claimPolicy.maxClaimsPerOperator > value.claimPolicy.maxClaims) {
|
|
168
|
+
ctx.addIssue({
|
|
169
|
+
code: z.ZodIssueCode.custom,
|
|
170
|
+
path: ['claimPolicy', 'maxClaimsPerOperator'],
|
|
171
|
+
message: 'must be <= claimPolicy.maxClaims',
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
function isRecordForContract(record, id, version) {
|
|
176
|
+
const contract = resolveContractFromSolverNetId(record.solverNetId);
|
|
177
|
+
return contract?.id === id && contract.version === version;
|
|
178
|
+
}
|
|
179
|
+
function defaultSweRebenchV2ClaimPolicy() {
|
|
180
|
+
const defaults = getSolverNetContract({
|
|
181
|
+
id: 'swe-rebench-v2',
|
|
182
|
+
version: 'v1',
|
|
183
|
+
})?.claimPolicyDefaults;
|
|
184
|
+
return {
|
|
185
|
+
maxClaims: defaults?.maxClaims ?? 50,
|
|
186
|
+
maxClaimsPerOperator: defaults?.maxClaimsPerOperator ?? 5,
|
|
187
|
+
claimLeaseTtlSeconds: defaults?.claimLeaseTtlSeconds ?? 60 * 60,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
function mergeGeneratorConfigPatchForRecord(record, patch) {
|
|
191
|
+
const nextConfig = {
|
|
192
|
+
...(record.generatorConfig ?? {}),
|
|
193
|
+
...patch,
|
|
194
|
+
};
|
|
195
|
+
if (isRecordForContract(record, 'swe-rebench-v2', 'v1') &&
|
|
196
|
+
typeof patch.claimPolicy === 'object' &&
|
|
197
|
+
patch.claimPolicy !== null) {
|
|
198
|
+
const existingPolicy = typeof record.generatorConfig?.claimPolicy === 'object' &&
|
|
199
|
+
record.generatorConfig.claimPolicy !== null
|
|
200
|
+
? record.generatorConfig.claimPolicy
|
|
201
|
+
: {};
|
|
202
|
+
nextConfig.claimPolicy = {
|
|
203
|
+
...existingPolicy,
|
|
204
|
+
...patch.claimPolicy,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
return nextConfig;
|
|
208
|
+
}
|
|
209
|
+
function validateSweRebenchV2EffectiveConfig(record, config) {
|
|
210
|
+
if (!isRecordForContract(record, 'swe-rebench-v2', 'v1'))
|
|
211
|
+
return undefined;
|
|
212
|
+
const defaults = defaultSweRebenchV2ClaimPolicy();
|
|
213
|
+
const rawPolicy = typeof config.claimPolicy === 'object' && config.claimPolicy !== null
|
|
214
|
+
? config.claimPolicy
|
|
215
|
+
: {};
|
|
216
|
+
const maxClaims = typeof rawPolicy.maxClaims === 'number'
|
|
217
|
+
? rawPolicy.maxClaims
|
|
218
|
+
: defaults.maxClaims;
|
|
219
|
+
const maxClaimsPerOperator = typeof rawPolicy.maxClaimsPerOperator === 'number'
|
|
220
|
+
? rawPolicy.maxClaimsPerOperator
|
|
221
|
+
: defaults.maxClaimsPerOperator;
|
|
222
|
+
if (maxClaimsPerOperator > maxClaims) {
|
|
223
|
+
return 'claimPolicy.maxClaimsPerOperator must be <= claimPolicy.maxClaims';
|
|
224
|
+
}
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
function parseGeneratorConfigPatchForRecord(record, raw) {
|
|
228
|
+
if (isRecordForContract(record, 'swe-rebench-v2', 'v1')) {
|
|
229
|
+
return SweRebenchV2GeneratorConfigPatchSchema.safeParse(raw);
|
|
230
|
+
}
|
|
231
|
+
return PredictionV1GeneratorConfigPatchSchema.safeParse(raw);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Inspect a draft to determine whether it is launchable. The launch endpoint
|
|
235
|
+
* uses this gate (and the gate alone) to decide whether to proceed; field-
|
|
236
|
+
* shape validation has already happened on every PATCH.
|
|
237
|
+
*/
|
|
238
|
+
function checkDraftCompleteness(draft) {
|
|
239
|
+
const missing = [];
|
|
240
|
+
if (!draft.name || draft.name.trim().length === 0)
|
|
241
|
+
missing.push('name');
|
|
242
|
+
if (draft.description === undefined || draft.description === null)
|
|
243
|
+
missing.push('description');
|
|
244
|
+
if (!draft.templateContractId)
|
|
245
|
+
missing.push('templateContractId');
|
|
246
|
+
if (!draft.templateContractVersion)
|
|
247
|
+
missing.push('templateContractVersion');
|
|
248
|
+
if (!draft.solutionPriceWei)
|
|
249
|
+
missing.push('solutionPriceWei');
|
|
250
|
+
if (!draft.verdictPriceWei)
|
|
251
|
+
missing.push('verdictPriceWei');
|
|
252
|
+
if (!draft.openRoles || draft.openRoles.length === 0)
|
|
253
|
+
missing.push('openRoles');
|
|
254
|
+
return { ok: missing.length === 0, missingFields: missing };
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Build an `UnsignedSolverNetManifestV1` from a launchable draft + the
|
|
258
|
+
* configured launcher identity + the SDK contract template. Caller signs
|
|
259
|
+
* the result and hands it to `LaunchAction.launch`.
|
|
260
|
+
*
|
|
261
|
+
* `solverNetId` is derived from the launcher agentId + a stable suffix
|
|
262
|
+
* derived from the draftId so re-launching the same draft would collide
|
|
263
|
+
* (idempotency) — but because we delete drafts post-launch, in practice each
|
|
264
|
+
* draft launches once and the id is unique.
|
|
265
|
+
*/
|
|
266
|
+
function buildUnsignedManifest(args) {
|
|
267
|
+
const { draft, launcher, network, now } = args;
|
|
268
|
+
const contract = getSolverNetContract({
|
|
269
|
+
id: draft.templateContractId,
|
|
270
|
+
version: draft.templateContractVersion,
|
|
271
|
+
});
|
|
272
|
+
if (!contract) {
|
|
273
|
+
return {
|
|
274
|
+
ok: false,
|
|
275
|
+
error: `unknown contract template ${draft.templateContractId}.${draft.templateContractVersion}`,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
// Stable solverNetId: launcher agentId + draftId tail. Draft ids are uuid-
|
|
279
|
+
// based so this gives uniqueness across launchers and within a launcher.
|
|
280
|
+
const draftTail = draft.draftId.replace(/^draft_/, '').slice(0, 8);
|
|
281
|
+
const solverNetId = `${launcher.agentId}_${contract.id}-${contract.version}_${draftTail}`;
|
|
282
|
+
const nowIso = now().toISOString();
|
|
283
|
+
const manifest = {
|
|
284
|
+
schemaVersion: 'solvernet.manifest.v1',
|
|
285
|
+
solverNetId,
|
|
286
|
+
network,
|
|
287
|
+
name: draft.name,
|
|
288
|
+
description: draft.description ?? '',
|
|
289
|
+
launcher: {
|
|
290
|
+
safeAddress: launcher.safeAddress,
|
|
291
|
+
agentEoa: launcher.agentEoa,
|
|
292
|
+
agentId: launcher.agentId,
|
|
293
|
+
},
|
|
294
|
+
contract: {
|
|
295
|
+
id: contract.id,
|
|
296
|
+
version: contract.version,
|
|
297
|
+
schemas: {
|
|
298
|
+
task: contract.schemas.task.json,
|
|
299
|
+
solution: contract.schemas.solution.json,
|
|
300
|
+
verdict: contract.schemas.verdict.json,
|
|
301
|
+
},
|
|
302
|
+
claimPolicyDefaults: contract.claimPolicyDefaults,
|
|
303
|
+
credentialRequirements: contract.credentialRequirements,
|
|
304
|
+
// Copy the readonly `inputs` arrays so the manifest's mutable-array
|
|
305
|
+
// schema accepts them. Functional content is identical.
|
|
306
|
+
evaluationFunction: {
|
|
307
|
+
...contract.evaluationFunction,
|
|
308
|
+
inputs: [...contract.evaluationFunction.inputs],
|
|
309
|
+
},
|
|
310
|
+
aggregationFunction: {
|
|
311
|
+
...contract.aggregationFunction,
|
|
312
|
+
inputs: [...contract.aggregationFunction.inputs],
|
|
313
|
+
},
|
|
314
|
+
},
|
|
315
|
+
solutionPriceWei: draft.solutionPriceWei,
|
|
316
|
+
verdictPriceWei: draft.verdictPriceWei,
|
|
317
|
+
openRoles: draft.openRoles,
|
|
318
|
+
createdAt: draft.createdAt,
|
|
319
|
+
launchedAt: nowIso,
|
|
320
|
+
};
|
|
321
|
+
return { ok: true, manifest };
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Project a (record, manifest) pair into the catalog-row summary shape
|
|
325
|
+
* shared with `SolverNetRegistryClient.listLaunched`.
|
|
326
|
+
*
|
|
327
|
+
* The lifecycle fields (`status`, `statusUpdatedAt`, `anchorBlock`) come
|
|
328
|
+
* from the local `LaunchedSolverNetRecord` because the daemon owns the
|
|
329
|
+
* authoritative view of what it has launched — we do *not* want to pay
|
|
330
|
+
* an extra subgraph round-trip to re-derive lifecycle state when the
|
|
331
|
+
* record already has it. The remaining fields (name, contract, prices,
|
|
332
|
+
* openRoles, launcher) come from the manifest body.
|
|
333
|
+
*
|
|
334
|
+
* `status` widens to the registry's three-value enum: launching/failed
|
|
335
|
+
* are local-only and never present on a record that has a manifest cached,
|
|
336
|
+
* but we coerce them defensively to `launched`/`retired` respectively to
|
|
337
|
+
* keep the projection total. Callers should gate on `record.status`
|
|
338
|
+
* being one of {launched, paused, retired} before deciding to display.
|
|
339
|
+
*/
|
|
340
|
+
function summarizeLaunchedRecord(record, manifest) {
|
|
341
|
+
const status = record.status === 'paused'
|
|
342
|
+
? 'paused'
|
|
343
|
+
: record.status === 'retired'
|
|
344
|
+
? 'retired'
|
|
345
|
+
: 'launched';
|
|
346
|
+
return {
|
|
347
|
+
manifestCid: record.manifestCid,
|
|
348
|
+
solverNetId: manifest.solverNetId,
|
|
349
|
+
name: manifest.name,
|
|
350
|
+
network: manifest.network,
|
|
351
|
+
launcherAgentId: manifest.launcher.agentId,
|
|
352
|
+
launcherSafeAddress: manifest.launcher.safeAddress,
|
|
353
|
+
status,
|
|
354
|
+
statusUpdatedAt: record.statusUpdatedAt,
|
|
355
|
+
contractId: manifest.contract.id,
|
|
356
|
+
contractVersion: manifest.contract.version,
|
|
357
|
+
solutionPriceWei: manifest.solutionPriceWei,
|
|
358
|
+
verdictPriceWei: manifest.verdictPriceWei,
|
|
359
|
+
openRoles: manifest.openRoles,
|
|
360
|
+
anchorBlock: record.registry.metadataBlockNumber ?? 0,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Look up a manifest summary for a record, using only the registry
|
|
365
|
+
* client's in-process cache. Returns `undefined` on cache miss or when
|
|
366
|
+
* the registry client is not wired — callers (the launched-list /
|
|
367
|
+
* launched-get endpoints) treat `undefined` as "no summary available"
|
|
368
|
+
* and fall back to displaying record-only fields.
|
|
369
|
+
*
|
|
370
|
+
* Cache-only by design: the launched-list endpoint runs on every SPA
|
|
371
|
+
* poll, and an IPFS round-trip per row would dominate latency. For
|
|
372
|
+
* SolverNets the daemon launched itself, the cache is warm by
|
|
373
|
+
* construction (the launch path populates it).
|
|
374
|
+
*/
|
|
375
|
+
async function tryGetSummary(record, registry) {
|
|
376
|
+
if (!registry)
|
|
377
|
+
return undefined;
|
|
378
|
+
try {
|
|
379
|
+
const manifest = await registry.getManifestFromCache({
|
|
380
|
+
manifestCid: record.manifestCid,
|
|
381
|
+
});
|
|
382
|
+
if (manifest === null)
|
|
383
|
+
return undefined;
|
|
384
|
+
return summarizeLaunchedRecord(record, manifest);
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
// Defensive — the cache lookup is supposed to be infallible, but a
|
|
388
|
+
// future async-backed cache could throw (storage error). We surface
|
|
389
|
+
// an undefined summary rather than failing the entire list response.
|
|
390
|
+
return undefined;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
// ── Implementation ──────────────────────────────────────────────────────────
|
|
394
|
+
export function registerSolverNetsEndpoints(app, deps) {
|
|
395
|
+
// jinn-mono-hqz0: deps may be a Proxy whose `store` property only resolves
|
|
396
|
+
// after the SolverNet subsystem finishes post-bootstrap init. We bind a
|
|
397
|
+
// Proxy-backed `store` so each method call dereferences the live value
|
|
398
|
+
// at invocation time — destructuring would capture the initial undefined.
|
|
399
|
+
const store = new Proxy({}, {
|
|
400
|
+
get(_t, prop) {
|
|
401
|
+
const live = deps.store;
|
|
402
|
+
if (!live) {
|
|
403
|
+
throw new Error('SolverNet store not initialised; subsystem still booting');
|
|
404
|
+
}
|
|
405
|
+
const value = live[prop];
|
|
406
|
+
return typeof value === 'function' ? value.bind(live) : value;
|
|
407
|
+
},
|
|
408
|
+
});
|
|
409
|
+
// POST /v1/solvernets/drafts — create a new draft.
|
|
410
|
+
app.post('/v1/solvernets/drafts', async (c) => {
|
|
411
|
+
// Body is optional. An empty body (or a request with no body at all)
|
|
412
|
+
// produces a fully-empty draft — the SPA fills it in via subsequent
|
|
413
|
+
// PATCH calls as the operator walks the wizard.
|
|
414
|
+
let raw = {};
|
|
415
|
+
const text = await c.req.text();
|
|
416
|
+
if (text.length > 0) {
|
|
417
|
+
try {
|
|
418
|
+
raw = JSON.parse(text);
|
|
419
|
+
}
|
|
420
|
+
catch {
|
|
421
|
+
return c.json({ error: 'invalid_body', message: 'expected JSON body' }, 400);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
const immutable = rejectImmutableFields(raw);
|
|
425
|
+
if (immutable) {
|
|
426
|
+
return c.json({ error: 'invalid_body', message: immutable.error }, 400);
|
|
427
|
+
}
|
|
428
|
+
const parsed = DraftEditableSchema.safeParse(raw);
|
|
429
|
+
if (!parsed.success) {
|
|
430
|
+
return c.json({
|
|
431
|
+
error: 'invalid_body',
|
|
432
|
+
message: parsed.error.issues
|
|
433
|
+
.map((i) => `${i.path.join('.') || '<body>'}: ${i.message}`)
|
|
434
|
+
.join('; '),
|
|
435
|
+
}, 400);
|
|
436
|
+
}
|
|
437
|
+
const now = new Date().toISOString();
|
|
438
|
+
const draft = {
|
|
439
|
+
schemaVersion: 'solvernet.draft.v1',
|
|
440
|
+
draftId: `draft_${randomUUID()}`,
|
|
441
|
+
completedSteps: parsed.data.completedSteps ?? [],
|
|
442
|
+
createdAt: now,
|
|
443
|
+
updatedAt: now,
|
|
444
|
+
...(parsed.data.templateContractId !== undefined && {
|
|
445
|
+
templateContractId: parsed.data.templateContractId,
|
|
446
|
+
}),
|
|
447
|
+
...(parsed.data.templateContractVersion !== undefined && {
|
|
448
|
+
templateContractVersion: parsed.data.templateContractVersion,
|
|
449
|
+
}),
|
|
450
|
+
...(parsed.data.name !== undefined && { name: parsed.data.name }),
|
|
451
|
+
...(parsed.data.description !== undefined && {
|
|
452
|
+
description: parsed.data.description,
|
|
453
|
+
}),
|
|
454
|
+
...(parsed.data.generatorConfig !== undefined && {
|
|
455
|
+
generatorConfig: parsed.data.generatorConfig,
|
|
456
|
+
}),
|
|
457
|
+
...(parsed.data.solutionPriceWei !== undefined && {
|
|
458
|
+
solutionPriceWei: parsed.data.solutionPriceWei,
|
|
459
|
+
}),
|
|
460
|
+
...(parsed.data.verdictPriceWei !== undefined && {
|
|
461
|
+
verdictPriceWei: parsed.data.verdictPriceWei,
|
|
462
|
+
}),
|
|
463
|
+
...(parsed.data.openRoles !== undefined && {
|
|
464
|
+
openRoles: parsed.data.openRoles,
|
|
465
|
+
}),
|
|
466
|
+
};
|
|
467
|
+
// Defensive parse: ensures the constructed shape still satisfies the
|
|
468
|
+
// store's schema. If a future schema field becomes required and we
|
|
469
|
+
// forget to populate it, we want a 500 here rather than a corrupt
|
|
470
|
+
// file on disk.
|
|
471
|
+
const validated = DraftSolverNetRecordSchema.safeParse(draft);
|
|
472
|
+
if (!validated.success) {
|
|
473
|
+
return c.json({
|
|
474
|
+
error: 'internal_error',
|
|
475
|
+
message: `failed to construct draft: ${validated.error.issues.map((i) => i.message).join('; ')}`,
|
|
476
|
+
}, 500);
|
|
477
|
+
}
|
|
478
|
+
try {
|
|
479
|
+
await store.writeDraft(validated.data);
|
|
480
|
+
}
|
|
481
|
+
catch (err) {
|
|
482
|
+
return c.json({
|
|
483
|
+
error: 'store_write_failed',
|
|
484
|
+
message: err instanceof Error ? err.message : String(err),
|
|
485
|
+
}, 500);
|
|
486
|
+
}
|
|
487
|
+
return c.json(validated.data);
|
|
488
|
+
});
|
|
489
|
+
// GET /v1/solvernets/drafts — list all owned drafts.
|
|
490
|
+
app.get('/v1/solvernets/drafts', async (c) => {
|
|
491
|
+
let drafts;
|
|
492
|
+
try {
|
|
493
|
+
drafts = await store.listDrafts();
|
|
494
|
+
}
|
|
495
|
+
catch (err) {
|
|
496
|
+
return c.json({
|
|
497
|
+
error: 'store_read_failed',
|
|
498
|
+
message: err instanceof Error ? err.message : String(err),
|
|
499
|
+
}, 500);
|
|
500
|
+
}
|
|
501
|
+
return c.json({ drafts });
|
|
502
|
+
});
|
|
503
|
+
// GET /v1/solvernets/drafts/:id — load a single draft.
|
|
504
|
+
app.get('/v1/solvernets/drafts/:id', async (c) => {
|
|
505
|
+
const id = c.req.param('id');
|
|
506
|
+
if (!id) {
|
|
507
|
+
return c.json({ error: 'invalid_invocation', message: 'missing draft id' }, 400);
|
|
508
|
+
}
|
|
509
|
+
let draft;
|
|
510
|
+
try {
|
|
511
|
+
draft = await store.loadDraft(id);
|
|
512
|
+
}
|
|
513
|
+
catch (err) {
|
|
514
|
+
return c.json({
|
|
515
|
+
error: 'store_read_failed',
|
|
516
|
+
message: err instanceof Error ? err.message : String(err),
|
|
517
|
+
}, 500);
|
|
518
|
+
}
|
|
519
|
+
if (!draft) {
|
|
520
|
+
return c.json({ error: 'draft_not_found', message: `Unknown draft: ${id}` }, 404);
|
|
521
|
+
}
|
|
522
|
+
return c.json(draft);
|
|
523
|
+
});
|
|
524
|
+
// PATCH /v1/solvernets/drafts/:id — update a draft.
|
|
525
|
+
app.patch('/v1/solvernets/drafts/:id', async (c) => {
|
|
526
|
+
const id = c.req.param('id');
|
|
527
|
+
if (!id) {
|
|
528
|
+
return c.json({ error: 'invalid_invocation', message: 'missing draft id' }, 400);
|
|
529
|
+
}
|
|
530
|
+
let raw;
|
|
531
|
+
try {
|
|
532
|
+
raw = await c.req.json();
|
|
533
|
+
}
|
|
534
|
+
catch {
|
|
535
|
+
return c.json({ error: 'invalid_body', message: 'expected JSON body' }, 400);
|
|
536
|
+
}
|
|
537
|
+
const immutable = rejectImmutableFields(raw);
|
|
538
|
+
if (immutable) {
|
|
539
|
+
return c.json({ error: 'invalid_body', message: immutable.error }, 400);
|
|
540
|
+
}
|
|
541
|
+
const parsed = DraftEditableSchema.safeParse(raw);
|
|
542
|
+
if (!parsed.success) {
|
|
543
|
+
return c.json({
|
|
544
|
+
error: 'invalid_body',
|
|
545
|
+
message: parsed.error.issues
|
|
546
|
+
.map((i) => `${i.path.join('.') || '<body>'}: ${i.message}`)
|
|
547
|
+
.join('; '),
|
|
548
|
+
}, 400);
|
|
549
|
+
}
|
|
550
|
+
let existing;
|
|
551
|
+
try {
|
|
552
|
+
existing = await store.loadDraft(id);
|
|
553
|
+
}
|
|
554
|
+
catch (err) {
|
|
555
|
+
return c.json({
|
|
556
|
+
error: 'store_read_failed',
|
|
557
|
+
message: err instanceof Error ? err.message : String(err),
|
|
558
|
+
}, 500);
|
|
559
|
+
}
|
|
560
|
+
if (!existing) {
|
|
561
|
+
return c.json({ error: 'draft_not_found', message: `Unknown draft: ${id}` }, 404);
|
|
562
|
+
}
|
|
563
|
+
const next = applyEditable(existing, parsed.data, new Date().toISOString());
|
|
564
|
+
const validated = DraftSolverNetRecordSchema.safeParse(next);
|
|
565
|
+
if (!validated.success) {
|
|
566
|
+
return c.json({
|
|
567
|
+
error: 'invalid_body',
|
|
568
|
+
message: validated.error.issues
|
|
569
|
+
.map((i) => `${i.path.join('.') || '<body>'}: ${i.message}`)
|
|
570
|
+
.join('; '),
|
|
571
|
+
}, 400);
|
|
572
|
+
}
|
|
573
|
+
try {
|
|
574
|
+
await store.writeDraft(validated.data);
|
|
575
|
+
}
|
|
576
|
+
catch (err) {
|
|
577
|
+
return c.json({
|
|
578
|
+
error: 'store_write_failed',
|
|
579
|
+
message: err instanceof Error ? err.message : String(err),
|
|
580
|
+
}, 500);
|
|
581
|
+
}
|
|
582
|
+
return c.json(validated.data);
|
|
583
|
+
});
|
|
584
|
+
// DELETE /v1/solvernets/drafts/:id — delete a draft.
|
|
585
|
+
app.delete('/v1/solvernets/drafts/:id', async (c) => {
|
|
586
|
+
const id = c.req.param('id');
|
|
587
|
+
if (!id) {
|
|
588
|
+
return c.json({ error: 'invalid_invocation', message: 'missing draft id' }, 400);
|
|
589
|
+
}
|
|
590
|
+
// Surface 404 for unknown ids rather than silent-success. The SPA can
|
|
591
|
+
// distinguish "I deleted the only copy" from "this id was never there"
|
|
592
|
+
// — useful for stale-tab detection.
|
|
593
|
+
let existing;
|
|
594
|
+
try {
|
|
595
|
+
existing = await store.loadDraft(id);
|
|
596
|
+
}
|
|
597
|
+
catch (err) {
|
|
598
|
+
return c.json({
|
|
599
|
+
error: 'store_read_failed',
|
|
600
|
+
message: err instanceof Error ? err.message : String(err),
|
|
601
|
+
}, 500);
|
|
602
|
+
}
|
|
603
|
+
if (!existing) {
|
|
604
|
+
return c.json({ error: 'draft_not_found', message: `Unknown draft: ${id}` }, 404);
|
|
605
|
+
}
|
|
606
|
+
try {
|
|
607
|
+
await store.deleteDraft(id);
|
|
608
|
+
}
|
|
609
|
+
catch (err) {
|
|
610
|
+
return c.json({
|
|
611
|
+
error: 'store_write_failed',
|
|
612
|
+
message: err instanceof Error ? err.message : String(err),
|
|
613
|
+
}, 500);
|
|
614
|
+
}
|
|
615
|
+
return c.json({ ok: true });
|
|
616
|
+
});
|
|
617
|
+
// ── Task 14 routes ────────────────────────────────────────────────────────
|
|
618
|
+
// POST /v1/solvernets/drafts/:id/launch — kick off the launch state machine.
|
|
619
|
+
//
|
|
620
|
+
// Behaviour: validate completeness, build + sign the manifest, fire
|
|
621
|
+
// `launchAction.launch(...)` in the background, and return 202 with a
|
|
622
|
+
// poll URL. The state machine pins to IPFS, writes the initial record,
|
|
623
|
+
// broadcasts setMetadata, awaits confirmation, and spawns the generator
|
|
624
|
+
// — all asynchronously. The SPA polls `GET /v1/solvernets/launched/:id`
|
|
625
|
+
// to track progress (`launchProgress.phase` reflects which phase the
|
|
626
|
+
// machine is currently in).
|
|
627
|
+
app.post('/v1/solvernets/drafts/:id/launch', async (c) => {
|
|
628
|
+
const id = c.req.param('id');
|
|
629
|
+
if (!id) {
|
|
630
|
+
return c.json({ error: 'invalid_invocation', message: 'missing draft id' }, 400);
|
|
631
|
+
}
|
|
632
|
+
if (!deps.launch) {
|
|
633
|
+
return c.json({
|
|
634
|
+
error: 'launch_unavailable',
|
|
635
|
+
message: 'launch routes are not configured; the daemon is missing launch dependencies',
|
|
636
|
+
}, 503);
|
|
637
|
+
}
|
|
638
|
+
const launchDeps = deps.launch;
|
|
639
|
+
let draft;
|
|
640
|
+
try {
|
|
641
|
+
draft = await store.loadDraft(id);
|
|
642
|
+
}
|
|
643
|
+
catch (err) {
|
|
644
|
+
return c.json({
|
|
645
|
+
error: 'store_read_failed',
|
|
646
|
+
message: err instanceof Error ? err.message : String(err),
|
|
647
|
+
}, 500);
|
|
648
|
+
}
|
|
649
|
+
if (!draft) {
|
|
650
|
+
return c.json({ error: 'draft_not_found', message: `Unknown draft: ${id}` }, 404);
|
|
651
|
+
}
|
|
652
|
+
const completeness = checkDraftCompleteness(draft);
|
|
653
|
+
if (!completeness.ok) {
|
|
654
|
+
return c.json({
|
|
655
|
+
error: 'draft_incomplete',
|
|
656
|
+
message: `draft is missing required fields: ${completeness.missingFields.join(', ')}`,
|
|
657
|
+
missingFields: completeness.missingFields,
|
|
658
|
+
}, 400);
|
|
659
|
+
}
|
|
660
|
+
const built = buildUnsignedManifest({
|
|
661
|
+
draft,
|
|
662
|
+
launcher: launchDeps.launcher,
|
|
663
|
+
network: launchDeps.network,
|
|
664
|
+
now: launchDeps.now ?? (() => new Date()),
|
|
665
|
+
});
|
|
666
|
+
if (!built.ok) {
|
|
667
|
+
return c.json({ error: 'invalid_template', message: built.error }, 400);
|
|
668
|
+
}
|
|
669
|
+
let manifest;
|
|
670
|
+
try {
|
|
671
|
+
manifest = await signManifest(built.manifest, launchDeps.signer.agentEoaPrivateKey);
|
|
672
|
+
}
|
|
673
|
+
catch (err) {
|
|
674
|
+
return c.json({
|
|
675
|
+
error: 'manifest_sign_failed',
|
|
676
|
+
message: err instanceof Error ? err.message : String(err),
|
|
677
|
+
}, 500);
|
|
678
|
+
}
|
|
679
|
+
// Idempotency: if a record with this solverNetId already exists, return
|
|
680
|
+
// it instead of starting a second launch. The state machine itself is
|
|
681
|
+
// also idempotent (launch() routes to resume() for existing records),
|
|
682
|
+
// but short-circuiting here avoids a redundant signManifest round.
|
|
683
|
+
const existing = await store.loadRecord(manifest.solverNetId);
|
|
684
|
+
if (existing) {
|
|
685
|
+
return c.json({
|
|
686
|
+
solverNetId: manifest.solverNetId,
|
|
687
|
+
status: existing.status,
|
|
688
|
+
pollUrl: `/v1/solvernets/launched/${manifest.solverNetId}`,
|
|
689
|
+
}, 202);
|
|
690
|
+
}
|
|
691
|
+
// Fire-and-forget: the launch state machine pins, writes the record,
|
|
692
|
+
// broadcasts, awaits confirmation, and spawns the generator. We do not
|
|
693
|
+
// await it here — production launches can take 30+ seconds (IPFS pin +
|
|
694
|
+
// tx confirmation) and the SPA tracks progress via `launchProgress`.
|
|
695
|
+
void launchDeps.launchAction
|
|
696
|
+
.launch({
|
|
697
|
+
manifest,
|
|
698
|
+
signer: launchDeps.signer,
|
|
699
|
+
// jinn-mono-jnr1: forward the wizard's per-record runtime config so
|
|
700
|
+
// the launched record persists it; otherwise the generator falls
|
|
701
|
+
// back to DEFAULTS (cadence 6h etc.) regardless of what the
|
|
702
|
+
// operator picked in the Create flow.
|
|
703
|
+
generatorConfig: draft.generatorConfig,
|
|
704
|
+
})
|
|
705
|
+
.catch((err) => {
|
|
706
|
+
// The state machine has already persisted the failure to disk
|
|
707
|
+
// (`launchProgress.txError`); we just log so the daemon operator
|
|
708
|
+
// sees the failure in stderr without crashing the process.
|
|
709
|
+
// eslint-disable-next-line no-console
|
|
710
|
+
console.error(`[solvernets] background launch ${manifest.solverNetId} failed:`, err);
|
|
711
|
+
});
|
|
712
|
+
// Briefly wait for the initial record to land on disk so the SPA's
|
|
713
|
+
// first poll always finds a record. The launch action's first persisted
|
|
714
|
+
// checkpoint is after the IPFS upload — typically <100ms with mocked
|
|
715
|
+
// ipfs (tests) or a few seconds in production. If it does not show up
|
|
716
|
+
// within the timeout we return 202 anyway; the SPA's poll will reveal
|
|
717
|
+
// the failure.
|
|
718
|
+
const POLL_BUDGET_MS = 5_000;
|
|
719
|
+
const POLL_INTERVAL_MS = 25;
|
|
720
|
+
const start = Date.now();
|
|
721
|
+
let initialRecord = null;
|
|
722
|
+
while (Date.now() - start < POLL_BUDGET_MS) {
|
|
723
|
+
initialRecord = await store.loadRecord(manifest.solverNetId);
|
|
724
|
+
if (initialRecord)
|
|
725
|
+
break;
|
|
726
|
+
await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
|
|
727
|
+
}
|
|
728
|
+
return c.json({
|
|
729
|
+
solverNetId: manifest.solverNetId,
|
|
730
|
+
status: initialRecord?.status ?? 'launching',
|
|
731
|
+
pollUrl: `/v1/solvernets/launched/${manifest.solverNetId}`,
|
|
732
|
+
}, 202);
|
|
733
|
+
});
|
|
734
|
+
// GET /v1/solvernets/launched/:id — read the current launched record.
|
|
735
|
+
//
|
|
736
|
+
// Prefers the in-memory recordRef (lifecycle / launch state machines
|
|
737
|
+
// mutate it synchronously after each disk write) and falls back to disk.
|
|
738
|
+
// Either source is up-to-date because both are written before the
|
|
739
|
+
// operation returns.
|
|
740
|
+
//
|
|
741
|
+
// Response shape: the persisted record fields + an optional
|
|
742
|
+
// `summary?: SolverNetManifestSummary` derived from the registry
|
|
743
|
+
// client's in-process manifest cache. Cache miss → `summary` is
|
|
744
|
+
// omitted. The summary is the only place catalog-y identity (name,
|
|
745
|
+
// contract id/version, prices, openRoles) appears on this surface;
|
|
746
|
+
// the SPA falls back to bare record fields when it is missing.
|
|
747
|
+
app.get('/v1/solvernets/launched/:id', async (c) => {
|
|
748
|
+
const id = c.req.param('id');
|
|
749
|
+
if (!id) {
|
|
750
|
+
return c.json({ error: 'invalid_invocation', message: 'missing record id' }, 400);
|
|
751
|
+
}
|
|
752
|
+
// Prefer in-memory ref when available (lifecycle / launch updates land
|
|
753
|
+
// there first via mutation).
|
|
754
|
+
if (deps.launch) {
|
|
755
|
+
const entry = deps.launch.pendingGenerators.current.find((g) => g.recordRef.current.solverNetId === id);
|
|
756
|
+
if (entry) {
|
|
757
|
+
const summary = await tryGetSummary(entry.recordRef.current, deps.registry);
|
|
758
|
+
return c.json({
|
|
759
|
+
...entry.recordRef.current,
|
|
760
|
+
...(summary !== undefined ? { summary } : {}),
|
|
761
|
+
});
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
let record;
|
|
765
|
+
try {
|
|
766
|
+
record = await store.loadRecord(id);
|
|
767
|
+
}
|
|
768
|
+
catch (err) {
|
|
769
|
+
return c.json({
|
|
770
|
+
error: 'store_read_failed',
|
|
771
|
+
message: err instanceof Error ? err.message : String(err),
|
|
772
|
+
}, 500);
|
|
773
|
+
}
|
|
774
|
+
if (!record) {
|
|
775
|
+
return c.json({ error: 'record_not_found', message: `Unknown record: ${id}` }, 404);
|
|
776
|
+
}
|
|
777
|
+
const summary = await tryGetSummary(record, deps.registry);
|
|
778
|
+
return c.json({
|
|
779
|
+
...record,
|
|
780
|
+
...(summary !== undefined ? { summary } : {}),
|
|
781
|
+
});
|
|
782
|
+
});
|
|
783
|
+
// PATCH /v1/solvernets/launched/:id/lifecycle — pause / resume / retire.
|
|
784
|
+
//
|
|
785
|
+
// Blocking: the lifecycle transition is one tx + one receipt, typically
|
|
786
|
+
// 5-30 seconds. We await completion and return the updated record so the
|
|
787
|
+
// SPA can re-render in a single round-trip.
|
|
788
|
+
app.patch('/v1/solvernets/launched/:id/lifecycle', async (c) => {
|
|
789
|
+
const id = c.req.param('id');
|
|
790
|
+
if (!id) {
|
|
791
|
+
return c.json({ error: 'invalid_invocation', message: 'missing record id' }, 400);
|
|
792
|
+
}
|
|
793
|
+
if (!deps.launch) {
|
|
794
|
+
return c.json({
|
|
795
|
+
error: 'launch_unavailable',
|
|
796
|
+
message: 'lifecycle routes are not configured',
|
|
797
|
+
}, 503);
|
|
798
|
+
}
|
|
799
|
+
const launchDeps = deps.launch;
|
|
800
|
+
let raw;
|
|
801
|
+
try {
|
|
802
|
+
raw = await c.req.json();
|
|
803
|
+
}
|
|
804
|
+
catch {
|
|
805
|
+
return c.json({ error: 'invalid_body', message: 'expected JSON body' }, 400);
|
|
806
|
+
}
|
|
807
|
+
const parsed = LifecycleBodySchema.safeParse(raw);
|
|
808
|
+
if (!parsed.success) {
|
|
809
|
+
return c.json({
|
|
810
|
+
error: 'invalid_body',
|
|
811
|
+
message: parsed.error.issues
|
|
812
|
+
.map((i) => `${i.path.join('.') || '<body>'}: ${i.message}`)
|
|
813
|
+
.join('; '),
|
|
814
|
+
}, 400);
|
|
815
|
+
}
|
|
816
|
+
const target = parsed.data.target;
|
|
817
|
+
let record;
|
|
818
|
+
try {
|
|
819
|
+
record = await store.loadRecord(id);
|
|
820
|
+
}
|
|
821
|
+
catch (err) {
|
|
822
|
+
return c.json({
|
|
823
|
+
error: 'store_read_failed',
|
|
824
|
+
message: err instanceof Error ? err.message : String(err),
|
|
825
|
+
}, 500);
|
|
826
|
+
}
|
|
827
|
+
if (!record) {
|
|
828
|
+
return c.json({ error: 'record_not_found', message: `Unknown record: ${id}` }, 404);
|
|
829
|
+
}
|
|
830
|
+
// Terminal-state guard at the API edge so the caller gets a typed error
|
|
831
|
+
// before we even touch the state machine. The state machine also
|
|
832
|
+
// rejects (it is the source of truth) but surfacing it here gives a
|
|
833
|
+
// stable error code.
|
|
834
|
+
if (record.status === 'retired' && target !== 'retired') {
|
|
835
|
+
return c.json({
|
|
836
|
+
error: 'lifecycle_terminal',
|
|
837
|
+
message: `SolverNet ${id} is retired; transitions are no-ops`,
|
|
838
|
+
}, 400);
|
|
839
|
+
}
|
|
840
|
+
// Idempotent no-op: caller's view matches current state, no work to do.
|
|
841
|
+
if (record.status === target && record.lifecycleProgress === undefined) {
|
|
842
|
+
return c.json(record);
|
|
843
|
+
}
|
|
844
|
+
let updated;
|
|
845
|
+
try {
|
|
846
|
+
updated = await launchDeps.lifecycleTransition.transition(record, target);
|
|
847
|
+
}
|
|
848
|
+
catch (err) {
|
|
849
|
+
return c.json({
|
|
850
|
+
error: 'lifecycle_failed',
|
|
851
|
+
message: err instanceof Error ? err.message : String(err),
|
|
852
|
+
}, 500);
|
|
853
|
+
}
|
|
854
|
+
// Mutate the in-memory recordRef so subsequent reads (and the next
|
|
855
|
+
// generator tick) see the new status without waiting for a disk reload.
|
|
856
|
+
const entry = launchDeps.pendingGenerators.current.find((g) => g.recordRef.current.solverNetId === id);
|
|
857
|
+
if (entry) {
|
|
858
|
+
entry.recordRef.current = updated;
|
|
859
|
+
}
|
|
860
|
+
return c.json(updated);
|
|
861
|
+
});
|
|
862
|
+
// PATCH /v1/solvernets/launched/:id/generator-config — hot-apply config.
|
|
863
|
+
//
|
|
864
|
+
// Updates the persisted record's `generatorConfig` AND mutates the live
|
|
865
|
+
// `configRef.current` for any pendingGenerators entry. The next generator
|
|
866
|
+
// tick reads the new cadence/allowlist/caps via the ref.
|
|
867
|
+
app.patch('/v1/solvernets/launched/:id/generator-config', async (c) => {
|
|
868
|
+
const id = c.req.param('id');
|
|
869
|
+
if (!id) {
|
|
870
|
+
return c.json({ error: 'invalid_invocation', message: 'missing record id' }, 400);
|
|
871
|
+
}
|
|
872
|
+
if (!deps.launch) {
|
|
873
|
+
return c.json({
|
|
874
|
+
error: 'launch_unavailable',
|
|
875
|
+
message: 'generator-config routes are not configured',
|
|
876
|
+
}, 503);
|
|
877
|
+
}
|
|
878
|
+
const launchDeps = deps.launch;
|
|
879
|
+
let raw;
|
|
880
|
+
try {
|
|
881
|
+
raw = await c.req.json();
|
|
882
|
+
}
|
|
883
|
+
catch {
|
|
884
|
+
return c.json({ error: 'invalid_body', message: 'expected JSON body' }, 400);
|
|
885
|
+
}
|
|
886
|
+
let record;
|
|
887
|
+
try {
|
|
888
|
+
record = await store.loadRecord(id);
|
|
889
|
+
}
|
|
890
|
+
catch (err) {
|
|
891
|
+
return c.json({
|
|
892
|
+
error: 'store_read_failed',
|
|
893
|
+
message: err instanceof Error ? err.message : String(err),
|
|
894
|
+
}, 500);
|
|
895
|
+
}
|
|
896
|
+
if (!record) {
|
|
897
|
+
return c.json({ error: 'record_not_found', message: `Unknown record: ${id}` }, 404);
|
|
898
|
+
}
|
|
899
|
+
const parsed = parseGeneratorConfigPatchForRecord(record, raw);
|
|
900
|
+
if (!parsed.success) {
|
|
901
|
+
return c.json({
|
|
902
|
+
error: 'invalid_body',
|
|
903
|
+
message: parsed.error.issues
|
|
904
|
+
.map((i) => `${i.path.join('.') || '<body>'}: ${i.message}`)
|
|
905
|
+
.join('; '),
|
|
906
|
+
}, 400);
|
|
907
|
+
}
|
|
908
|
+
// Patch semantics: merge the provided fields over the existing config.
|
|
909
|
+
// Operators editing one field shouldn't have to re-send the rest.
|
|
910
|
+
const nextConfig = mergeGeneratorConfigPatchForRecord(record, parsed.data);
|
|
911
|
+
const effectiveConfigError = validateSweRebenchV2EffectiveConfig(record, nextConfig);
|
|
912
|
+
if (effectiveConfigError) {
|
|
913
|
+
return c.json({
|
|
914
|
+
error: 'invalid_body',
|
|
915
|
+
message: effectiveConfigError,
|
|
916
|
+
}, 400);
|
|
917
|
+
}
|
|
918
|
+
// Persist on disk. The store schema treats generatorConfig as an opaque
|
|
919
|
+
// record; we widen the strongly-typed runtime config back to that shape
|
|
920
|
+
// for storage.
|
|
921
|
+
const updatedRecord = {
|
|
922
|
+
...record,
|
|
923
|
+
generatorConfig: nextConfig,
|
|
924
|
+
};
|
|
925
|
+
const validated = LaunchedSolverNetRecordSchema.safeParse(updatedRecord);
|
|
926
|
+
if (!validated.success) {
|
|
927
|
+
return c.json({
|
|
928
|
+
error: 'invalid_record',
|
|
929
|
+
message: `failed to construct updated record: ${validated.error.issues.map((i) => i.message).join('; ')}`,
|
|
930
|
+
}, 500);
|
|
931
|
+
}
|
|
932
|
+
try {
|
|
933
|
+
await store.writeRecord(validated.data);
|
|
934
|
+
}
|
|
935
|
+
catch (err) {
|
|
936
|
+
return c.json({
|
|
937
|
+
error: 'store_write_failed',
|
|
938
|
+
message: err instanceof Error ? err.message : String(err),
|
|
939
|
+
}, 500);
|
|
940
|
+
}
|
|
941
|
+
// Hot-apply: mutate the live configRef + recordRef in place so the next
|
|
942
|
+
// generator tick sees the new config without waiting for a disk reload.
|
|
943
|
+
// It is valid for there to be no pendingGenerators entry (e.g. the
|
|
944
|
+
// record is paused / retired and the generator is not running) — the
|
|
945
|
+
// disk write above is enough; the next time the daemon spawns the
|
|
946
|
+
// generator (next launched-status flip) it will seed configRef from
|
|
947
|
+
// the persisted record.
|
|
948
|
+
const entry = launchDeps.pendingGenerators.current.find((g) => g.recordRef.current.solverNetId === id);
|
|
949
|
+
if (entry) {
|
|
950
|
+
entry.configRef.current = nextConfig;
|
|
951
|
+
entry.recordRef.current = validated.data;
|
|
952
|
+
}
|
|
953
|
+
return c.json(nextConfig);
|
|
954
|
+
});
|
|
955
|
+
// ── Task 15 routes ────────────────────────────────────────────────────────
|
|
956
|
+
// GET /v1/solvernets/launched — list owned launched records (= what this
|
|
957
|
+
// daemon launched). The registry catalog (below) is the global view; this
|
|
958
|
+
// is the local mirror — exactly the rows the daemon is responsible for
|
|
959
|
+
// running generators for.
|
|
960
|
+
//
|
|
961
|
+
// Optional `?status=<launching|launched|paused|retired|failed>` filter
|
|
962
|
+
// narrows the list. Without the filter, all records (including retired)
|
|
963
|
+
// are returned — the SPA decides what to show. This shape lets the SPA
|
|
964
|
+
// render a unified "your SolverNets" tab without N round-trips.
|
|
965
|
+
//
|
|
966
|
+
// Each row also carries an optional `summary?: SolverNetManifestSummary`
|
|
967
|
+
// populated from the registry client's in-process manifest cache —
|
|
968
|
+
// populated for every SolverNet this daemon launched (the launch path
|
|
969
|
+
// primes the cache), `undefined` for the pre-cache window during a
|
|
970
|
+
// launch in flight. Cache-only on purpose: list responses run on every
|
|
971
|
+
// SPA poll, and an IPFS round-trip per row would dominate latency.
|
|
972
|
+
app.get('/v1/solvernets/launched', async (c) => {
|
|
973
|
+
const statusQuery = c.req.query('status');
|
|
974
|
+
let statusFilter;
|
|
975
|
+
if (statusQuery !== undefined) {
|
|
976
|
+
const parsed = OwnedStatusFilterSchema.safeParse(statusQuery);
|
|
977
|
+
if (!parsed.success) {
|
|
978
|
+
return c.json({
|
|
979
|
+
error: 'invalid_query',
|
|
980
|
+
message: `unknown status filter: ${statusQuery}`,
|
|
981
|
+
}, 400);
|
|
982
|
+
}
|
|
983
|
+
statusFilter = parsed.data;
|
|
984
|
+
}
|
|
985
|
+
let records;
|
|
986
|
+
try {
|
|
987
|
+
records = await store.loadOwnedRecords();
|
|
988
|
+
}
|
|
989
|
+
catch (err) {
|
|
990
|
+
return c.json({
|
|
991
|
+
error: 'store_read_failed',
|
|
992
|
+
message: err instanceof Error ? err.message : String(err),
|
|
993
|
+
}, 500);
|
|
994
|
+
}
|
|
995
|
+
if (statusFilter !== undefined) {
|
|
996
|
+
records = records.filter((r) => r.status === statusFilter);
|
|
997
|
+
}
|
|
998
|
+
// Enrich each record with its manifest summary from the cache, when
|
|
999
|
+
// available. We `Promise.all` the lookups so a future async-backed
|
|
1000
|
+
// cache (e.g. SQLite) would not serialize per row, even though the
|
|
1001
|
+
// day-1 implementation is a synchronous Map read.
|
|
1002
|
+
const enriched = await Promise.all(records.map(async (record) => {
|
|
1003
|
+
const summary = await tryGetSummary(record, deps.registry);
|
|
1004
|
+
return summary !== undefined ? { ...record, summary } : record;
|
|
1005
|
+
}));
|
|
1006
|
+
return c.json({ records: enriched });
|
|
1007
|
+
});
|
|
1008
|
+
// GET /v1/solvernets/registry — list global launched SolverNets from the
|
|
1009
|
+
// catalog cache (populated by the daemon's registry-catalog refresh loop
|
|
1010
|
+
// wired in `daemon-init.ts`).
|
|
1011
|
+
//
|
|
1012
|
+
// Behaviour:
|
|
1013
|
+
// - Default filter is `launched + paused`; retired entries are excluded
|
|
1014
|
+
// unless the caller explicitly asks for `?status=retired`. This matches
|
|
1015
|
+
// the join-flow's "useful surface" — operators picking a SolverNet to
|
|
1016
|
+
// join shouldn't have to scroll past tombstoned ones.
|
|
1017
|
+
// - `?refresh=1` forces a refresh before reading the snapshot. The SPA
|
|
1018
|
+
// uses this on user-initiated reload; the auto-tick keeps the cache
|
|
1019
|
+
// warm in the background.
|
|
1020
|
+
// - Cache metadata (`lastRefreshedAt`, `lastError`) is always returned
|
|
1021
|
+
// so the SPA can render a "stale" indicator and surface errors.
|
|
1022
|
+
app.get('/v1/solvernets/registry', async (c) => {
|
|
1023
|
+
if (!deps.catalog) {
|
|
1024
|
+
return c.json({
|
|
1025
|
+
error: 'registry_unavailable',
|
|
1026
|
+
message: 'registry catalog cache is not configured',
|
|
1027
|
+
}, 503);
|
|
1028
|
+
}
|
|
1029
|
+
const catalog = deps.catalog;
|
|
1030
|
+
const statusQuery = c.req.query('status');
|
|
1031
|
+
let statusFilter;
|
|
1032
|
+
if (statusQuery !== undefined) {
|
|
1033
|
+
const parsed = RegistryStatusFilterSchema.safeParse(statusQuery);
|
|
1034
|
+
if (!parsed.success) {
|
|
1035
|
+
return c.json({
|
|
1036
|
+
error: 'invalid_query',
|
|
1037
|
+
message: `unknown status filter: ${statusQuery}`,
|
|
1038
|
+
}, 400);
|
|
1039
|
+
}
|
|
1040
|
+
statusFilter = [parsed.data];
|
|
1041
|
+
}
|
|
1042
|
+
else {
|
|
1043
|
+
// Default: launched + paused. Retired is excluded from the default
|
|
1044
|
+
// surface — operators see those only via explicit ?status=retired.
|
|
1045
|
+
statusFilter = ['launched', 'paused'];
|
|
1046
|
+
}
|
|
1047
|
+
if (c.req.query('refresh') === '1') {
|
|
1048
|
+
// Force a refresh before reading the snapshot. The cache itself
|
|
1049
|
+
// suppresses errors — they land in `lastError` which we surface in
|
|
1050
|
+
// the response, so the SPA can show "couldn't refresh, here's the
|
|
1051
|
+
// last cached snapshot" rather than a blank page.
|
|
1052
|
+
await catalog.refresh();
|
|
1053
|
+
}
|
|
1054
|
+
const snapshot = catalog.getCatalog();
|
|
1055
|
+
const summaries = snapshot.filter((s) => statusFilter.includes(s.status));
|
|
1056
|
+
const lastRefreshedAt = catalog.lastRefreshedAt();
|
|
1057
|
+
const lastError = catalog.lastError();
|
|
1058
|
+
return c.json({
|
|
1059
|
+
summaries,
|
|
1060
|
+
lastRefreshedAt: lastRefreshedAt === null ? null : lastRefreshedAt.toISOString(),
|
|
1061
|
+
lastError: lastError === null
|
|
1062
|
+
? null
|
|
1063
|
+
: { message: lastError.message, at: lastError.at.toISOString() },
|
|
1064
|
+
});
|
|
1065
|
+
});
|
|
1066
|
+
// GET /v1/solvernets/registry/:cid — fetch a specific manifest from the
|
|
1067
|
+
// registry, with its current lifecycle status.
|
|
1068
|
+
//
|
|
1069
|
+
// The registry client validates the manifest's canonical hash against the
|
|
1070
|
+
// on-chain advertised hash; if it throws (missing IPFS body, schema
|
|
1071
|
+
// mismatch, hash mismatch), we surface 404 — the manifest is "not found"
|
|
1072
|
+
// from a useful-surface perspective regardless of which leg failed. The
|
|
1073
|
+
// exact failure reason is in the response message for debugging.
|
|
1074
|
+
//
|
|
1075
|
+
// CID validation here is intentionally loose: we reject obvious garbage
|
|
1076
|
+
// (path-traversal, decimals, empty) so we never round-trip them to IPFS,
|
|
1077
|
+
// but the registry client does the canonical check.
|
|
1078
|
+
app.get('/v1/solvernets/registry/:cid', async (c) => {
|
|
1079
|
+
if (!deps.registry) {
|
|
1080
|
+
return c.json({
|
|
1081
|
+
error: 'registry_unavailable',
|
|
1082
|
+
message: 'registry client is not configured',
|
|
1083
|
+
}, 503);
|
|
1084
|
+
}
|
|
1085
|
+
const registry = deps.registry;
|
|
1086
|
+
const cid = c.req.param('cid');
|
|
1087
|
+
if (!cid || !CID_SHAPE_REGEX.test(cid)) {
|
|
1088
|
+
return c.json({
|
|
1089
|
+
error: 'invalid_cid',
|
|
1090
|
+
message: `cid does not look like a CID: ${cid ?? '<empty>'}`,
|
|
1091
|
+
}, 400);
|
|
1092
|
+
}
|
|
1093
|
+
let manifest;
|
|
1094
|
+
try {
|
|
1095
|
+
manifest = await registry.getManifest({ manifestCid: cid });
|
|
1096
|
+
}
|
|
1097
|
+
catch (err) {
|
|
1098
|
+
return c.json({
|
|
1099
|
+
error: 'manifest_not_found',
|
|
1100
|
+
message: err instanceof Error ? err.message : String(err),
|
|
1101
|
+
}, 404);
|
|
1102
|
+
}
|
|
1103
|
+
let lifecycle;
|
|
1104
|
+
try {
|
|
1105
|
+
lifecycle = await registry.getLifecycleStatus({ manifestCid: cid });
|
|
1106
|
+
}
|
|
1107
|
+
catch (err) {
|
|
1108
|
+
// The manifest body exists on IPFS but no lifecycle events were found
|
|
1109
|
+
// on chain — surface as 404 with the real reason in the message.
|
|
1110
|
+
// This is genuinely unusual (the launcher must have setMetadata'd the
|
|
1111
|
+
// initial cid for the manifest to be discoverable at all), but it can
|
|
1112
|
+
// happen during the brief window between IPFS pin and on-chain confirm.
|
|
1113
|
+
return c.json({
|
|
1114
|
+
error: 'manifest_not_found',
|
|
1115
|
+
message: err instanceof Error ? err.message : String(err),
|
|
1116
|
+
}, 404);
|
|
1117
|
+
}
|
|
1118
|
+
return c.json({ manifest, lifecycle });
|
|
1119
|
+
});
|
|
1120
|
+
}
|
|
1121
|
+
//# sourceMappingURL=solvernets-endpoints.js.map
|