@jinn-network/client 0.1.2 → 0.1.3-canary.2d6b2676
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 +8 -2
- package/README.md +68 -42
- 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/dist/adapters/adapter.d.ts +7 -7
- package/dist/adapters/claim-registry/client.d.ts +9 -0
- package/dist/adapters/claim-registry/client.js +22 -2
- package/dist/adapters/claim-registry/client.js.map +1 -1
- package/dist/adapters/local/adapter.d.ts +4 -4
- package/dist/adapters/local/adapter.js +10 -10
- package/dist/adapters/local/adapter.js.map +1 -1
- package/dist/adapters/mech/adapter.d.ts +8 -6
- package/dist/adapters/mech/adapter.js +159 -95
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +8 -6
- package/dist/adapters/mech/contracts.js +119 -15
- 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 +39 -0
- package/dist/adapters/mech/safe-revert.js +130 -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/types.d.ts +8 -0
- package/dist/adapters/mech/types.js.map +1 -1
- package/dist/agent/agent-ws.d.ts +55 -0
- package/dist/agent/agent-ws.js +288 -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 +130 -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/bootstrap-endpoint.d.ts +16 -0
- package/dist/api/bootstrap-endpoint.js +78 -0
- package/dist/api/bootstrap-endpoint.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.js +6 -2
- 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/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/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/rewards-build.js +3 -8
- package/dist/api/rewards-build.js.map +1 -1
- package/dist/api/server.d.ts +55 -1
- package/dist/api/server.js +243 -17
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +34 -0
- package/dist/api/setup-endpoints.js +188 -0
- package/dist/api/setup-endpoints.js.map +1 -0
- package/dist/api/status-build.d.ts +10 -2
- package/dist/api/status-build.js +44 -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 +168 -5
- package/dist/api/status-rollup-build.js.map +1 -1
- 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/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/cli/command.d.ts +9 -0
- 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 -132
- package/dist/cli/commands/bootstrap.js.map +1 -1
- 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 +34 -1
- package/dist/cli/commands/doctor.js +138 -123
- 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 +379 -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 +183 -174
- package/dist/cli/commands/fund-requirements.js.map +1 -1
- package/dist/cli/commands/harnesses.d.ts +18 -0
- package/dist/cli/commands/harnesses.js +208 -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/{plugin-install.js → integrations.js} +240 -33
- 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 +165 -0
- package/dist/cli/commands/migrate-agent-id.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 +233 -91
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/solver-nets.js +207 -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 +184 -0
- package/dist/cli/commands/solver-plugins.js.map +1 -0
- package/dist/cli/commands/status.d.ts +10 -0
- package/dist/cli/commands/status.js +97 -34
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/tasks.js +365 -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 +5 -0
- package/dist/cli/commands/update.js +110 -105
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/version.js +3 -1
- 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/execution-context.d.ts +1 -1
- package/dist/cli/execution-context.js +4 -3
- 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 +24 -6
- package/dist/cli/index.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/config.d.ts +1232 -53
- package/dist/config.js +558 -24
- 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 +37 -0
- package/dist/corpus/acquire.js +155 -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/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 +16 -0
- package/dist/corpus/index.js +78 -0
- package/dist/corpus/index.js.map +1 -0
- package/dist/corpus/query.d.ts +17 -0
- package/dist/corpus/query.js +108 -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 +108 -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 +5 -5
- package/dist/daemon/creator.js +8 -11
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +84 -29
- package/dist/daemon/daemon.js +181 -63
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/delivery-watcher.js +34 -4
- package/dist/daemon/delivery-watcher.js.map +1 -1
- 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-Bxlk5qpa.js +68 -0
- package/dist/dashboard/assets/index-DQ3u_vP5.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 +64 -0
- package/dist/earning/bootstrap.js +325 -32
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +323 -0
- package/dist/earning/contracts.js +276 -0
- package/dist/earning/contracts.js.map +1 -1
- package/dist/earning/evidence-simhash.d.ts +1 -1
- package/dist/earning/funding-plan.d.ts +90 -0
- package/dist/earning/funding-plan.js +203 -0
- package/dist/earning/funding-plan.js.map +1 -0
- package/dist/earning/migrate-agent-id.d.ts +130 -0
- package/dist/earning/migrate-agent-id.js +257 -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/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 +39 -0
- package/dist/earning/store.js +72 -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 +53 -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 +381 -0
- package/dist/erc8004/abis.js +238 -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 +202 -0
- package/dist/erc8004/identity.js +305 -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/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/{restorer → harnesses}/engine/claim.d.ts +7 -7
- package/dist/{restorer → harnesses}/engine/claim.js +14 -7
- package/dist/harnesses/engine/claim.js.map +1 -0
- package/dist/{restorer → harnesses}/engine/delivery.d.ts +3 -1
- package/dist/{restorer → harnesses}/engine/delivery.js +8 -8
- package/dist/harnesses/engine/delivery.js.map +1 -0
- package/dist/harnesses/engine/engine.d.ts +341 -0
- package/dist/harnesses/engine/engine.js +1203 -0
- package/dist/harnesses/engine/engine.js.map +1 -0
- package/dist/harnesses/engine/envelope-assembly.d.ts +72 -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 +87 -0
- package/dist/{restorer → harnesses}/engine/packaging.js +83 -57
- package/dist/harnesses/engine/packaging.js.map +1 -0
- package/dist/harnesses/engine/persistence.d.ts +172 -0
- package/dist/{restorer → harnesses}/engine/persistence.js +78 -71
- package/dist/harnesses/engine/persistence.js.map +1 -0
- package/dist/harnesses/engine/recovery.d.ts +22 -0
- package/dist/{restorer → harnesses}/engine/recovery.js +5 -5
- package/dist/harnesses/engine/recovery.js.map +1 -0
- package/dist/harnesses/engine/registry.d.ts +53 -0
- package/dist/harnesses/engine/registry.js +62 -0
- package/dist/harnesses/engine/registry.js.map +1 -0
- package/dist/{restorer → harnesses}/engine/signing.d.ts +1 -1
- package/dist/{restorer → harnesses}/engine/signing.js +1 -1
- package/dist/harnesses/engine/signing.js.map +1 -0
- package/dist/{restorer → harnesses}/engine/state.d.ts +8 -8
- package/dist/{restorer → harnesses}/engine/state.js +23 -23
- 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 +49 -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/impls/claude-code-learner/adapters/claude-code.d.ts +38 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.js +159 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.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 +44 -0
- package/dist/harnesses/impls/claude-code-learner/harness.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/harvest.d.ts +19 -0
- package/dist/harnesses/impls/claude-code-learner/harvest.js +146 -0
- package/dist/harnesses/impls/claude-code-learner/harvest.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/index.d.ts +14 -0
- package/dist/harnesses/impls/claude-code-learner/index.js +13 -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 +19 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.js +111 -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 +102 -0
- package/dist/harnesses/impls/claude-code-learner/types.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/api-wallet.d.ts +1 -1
- package/dist/harnesses/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/index.d.ts +16 -14
- package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/index.js +62 -61
- 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/{restorer → harnesses}/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +7 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/session-orchestrator.js +38 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/index.d.ts +11 -11
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/index.js +26 -16
- package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/mcp-tools.js +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/prompt.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/prompt.js +5 -5
- package/dist/harnesses/impls/claude-mcp-prediction/prompt.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/session-orchestrator.d.ts +9 -2
- 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/{restorer → harnesses}/impls/claude-mcp-prediction/types.d.ts +3 -3
- 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/{restorer → harnesses}/impls/claude-mcp-prediction-apy/index.js +22 -15
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/mcp-tools.js +1 -1
- 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/{restorer → harnesses}/impls/claude-mcp-prediction-apy/prompt.js +5 -5
- package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +10 -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/{restorer → harnesses}/impls/claude-mcp-prediction-apy/types.d.ts +1 -1
- 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/{restorer/impls/claude-mcp-prediction/session-orchestrator.js → harnesses/impls/claude-mcp-shared/single-session-orchestrator.js} +85 -16
- 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 +74 -0
- package/dist/{restorer → harnesses}/impls/index.js +32 -7
- package/dist/harnesses/impls/index.js.map +1 -0
- package/dist/harnesses/impls/legacy-claude/index.d.ts +66 -0
- package/dist/{restorer → harnesses}/impls/legacy-claude/index.js +47 -19
- package/dist/harnesses/impls/legacy-claude/index.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/canonical-metrics.js +2 -2
- 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/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/consistency.d.ts +1 -1
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/consistency.js +1 -1
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/eligibility.js +2 -2
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/integrity.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/integrity.js +2 -2
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/spec.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/spec.js +2 -2
- 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/{restorer → harnesses}/impls/portfolio-v0-evaluator/index.js +217 -88
- 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/{restorer → harnesses}/impls/portfolio-v0-evaluator/types.d.ts +1 -1
- package/dist/harnesses/impls/portfolio-v0-evaluator/types.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/index.d.ts +10 -8
- package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/index.js +15 -8
- 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/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/index.d.ts +9 -9
- 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/{restorer → harnesses}/impls/prediction-v0-baseline/index.js +25 -16
- package/dist/harnesses/impls/prediction-v0-baseline/index.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-baseline/strategy.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/prediction-v0-baseline/strategy.js +2 -2
- 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/{restorer → harnesses}/impls/prediction-v0-evaluator/canonical-metrics.d.ts +2 -2
- package/dist/harnesses/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/eligibility.d.ts +1 -1
- 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/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/integrity.js +12 -12
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/spec.d.ts +2 -2
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/index.d.ts +10 -10
- 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/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/types.d.ts +263 -0
- package/dist/{restorer → harnesses}/types.js +3 -3
- package/dist/harnesses/types.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/main.d.ts +5 -2
- package/dist/main.js +793 -96
- package/dist/main.js.map +1 -1
- package/dist/mcp/acquire-artifact.d.ts +39 -0
- package/dist/mcp/acquire-artifact.js +163 -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-artifacts.d.ts +31 -0
- package/dist/mcp/search-artifacts.js +40 -0
- package/dist/mcp/search-artifacts.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -4
- package/dist/mcp/server.js +110 -64
- 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.js +4 -5
- 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 +87 -0
- package/dist/plugins/resolvers.js.map +1 -0
- package/dist/plugins/types.d.ts +39 -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 +44 -0
- package/dist/plugins/validator.js.map +1 -0
- package/dist/preflight/claude-auth.d.ts +11 -11
- package/dist/preflight/claude-auth.js +18 -32
- package/dist/preflight/claude-auth.js.map +1 -1
- 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/fix-node-pty.mjs +62 -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/registry.d.ts +33 -0
- package/dist/solver-nets/registry.js +66 -0
- package/dist/solver-nets/registry.js.map +1 -0
- package/dist/solver-types/constants.js.map +1 -0
- package/dist/solver-types/index.d.ts +38 -0
- package/dist/solver-types/index.js +57 -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 +21 -0
- package/dist/solver-types/prediction-apy-v0-auto.js +80 -0
- package/dist/solver-types/prediction-apy-v0-auto.js.map +1 -0
- package/dist/{intents → solver-types}/prediction-apy-v0-template.d.ts +2 -2
- package/dist/{intents → solver-types}/prediction-apy-v0-template.js +2 -2
- 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/{intents → solver-types}/prediction-v0-auto.d.ts +17 -7
- package/dist/{intents → solver-types}/prediction-v0-auto.js +41 -8
- package/dist/solver-types/prediction-v0-auto.js.map +1 -0
- package/dist/{intents → solver-types}/prediction-v0-template.d.ts +9 -9
- package/dist/{intents → solver-types}/prediction-v0-template.js +10 -10
- package/dist/solver-types/prediction-v0-template.js.map +1 -0
- package/dist/solver-types/prediction-v0.d.ts +3 -0
- package/dist/{intents/kinds → solver-types}/prediction-v0.js +11 -6
- package/dist/solver-types/prediction-v0.js.map +1 -0
- package/dist/solver-types/solver-type.d.ts +55 -0
- package/dist/solver-types/solver-type.js +6 -0
- package/dist/solver-types/solver-type.js.map +1 -0
- package/dist/store/store.d.ts +97 -21
- package/dist/store/store.js +228 -45
- package/dist/store/store.js.map +1 -1
- package/dist/tasks/posting-service.d.ts +22 -0
- package/dist/tasks/posting-service.js +143 -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 +42 -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 +49 -0
- package/dist/trajectory/collector.js +86 -0
- package/dist/trajectory/collector.js.map +1 -0
- package/dist/trajectory/emit.d.ts +27 -0
- package/dist/trajectory/emit.js +40 -0
- package/dist/trajectory/emit.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 +22 -0
- package/dist/trajectory/index.js +23 -0
- package/dist/trajectory/index.js.map +1 -0
- package/dist/trajectory/schema.d.ts +14 -14
- 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/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 +23 -9
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/envelope.d.ts +1619 -0
- package/dist/types/envelope.js +121 -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 +11 -0
- package/dist/types/payloads/index.js +46 -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/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.d.ts +40 -416
- package/dist/types/prediction.js +9 -83
- package/dist/types/prediction.js.map +1 -1
- package/dist/types/task-document.d.ts +498 -0
- package/dist/types/task-document.js +69 -0
- package/dist/types/task-document.js.map +1 -0
- package/dist/types/task.d.ts +455 -0
- package/dist/types/task.js +58 -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/venues/hyperliquid/account-value.d.ts +1 -1
- package/dist/venues/hyperliquid/account-value.js +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 +67 -24
- package/dist/x402/handler.js.map +1 -1
- package/package.json +38 -13
- package/plugins/claude-code-learner/.claude-plugin/plugin.json +9 -0
- package/plugins/claude-code-learner/AGENTS.md +30 -0
- package/plugins/claude-code-learner/CLAUDE.md +31 -0
- package/plugins/claude-code-learner/README.md +58 -0
- package/plugins/claude-code-learner/agents/analyst.md +69 -0
- package/plugins/claude-code-learner/agents/consolidator.md +95 -0
- package/plugins/claude-code-learner/agents/explorer.md +54 -0
- package/plugins/claude-code-learner/agents/planner.md +88 -0
- package/plugins/claude-code-learner/agents/promoter.md +114 -0
- package/plugins/claude-code-learner/agents/step-worker.md +48 -0
- package/plugins/claude-code-learner/agents/strategist.md +86 -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/coordinator/SKILL.md +111 -0
- package/plugins/claude-code-learner/skills/debrief/SKILL.md +63 -0
- package/plugins/claude-code-learner/skills/execute/SKILL.md +87 -0
- package/plugins/claude-code-learner/skills/improve/SKILL.md +53 -0
- package/plugins/claude-code-learner/skills/memory-consolidation/SKILL.md +49 -0
- package/plugins/claude-code-learner/skills/orient/SKILL.md +71 -0
- package/plugins/claude-code-learner/skills/plan/SKILL.md +50 -0
- package/plugins/claude-code-learner/skills/strategize/SKILL.md +53 -0
- package/plugins/jinn-prediction-plugin/.claude-plugin/plugin.json +89 -0
- package/plugins/jinn-prediction-plugin/mcp/polymarket-server.mjs +2 -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/skills/base-rate-forecasting/SKILL.md +3 -0
- package/plugins/jinn-prediction-plugin/skills/calibration/SKILL.md +3 -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/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.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.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.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.js.map +0 -1
- package/dist/intents/prediction-v0-auto.js.map +0 -1
- 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.js.map +0 -1
- 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.map +0 -1
- package/dist/restorer/engine/persistence.d.ts +0 -170
- package/dist/restorer/engine/persistence.js.map +0 -1
- package/dist/restorer/engine/recovery.d.ts +0 -22
- 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.js.map +0 -1
- package/dist/restorer/engine/state.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +0 -1
- 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.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/index.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/prompt.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.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.map +0 -1
- package/dist/restorer/impls/legacy-claude/index.d.ts +0 -52
- package/dist/restorer/impls/legacy-claude/index.js.map +0 -1
- 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.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +0 -1
- 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.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +0 -1
- 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.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.map +0 -1
- 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.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +0 -1
- 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.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +0 -1
- 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.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.d.ts +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
- /package/dist/{intents/kinds → solver-types}/constants.d.ts +0 -0
- /package/dist/{intents/kinds → solver-types}/constants.js +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability handles passed to a {@link Harness} via
|
|
3
|
+
* {@link HarnessContext}. The daemon mints these per-call and
|
|
4
|
+
* enforces the impl's manifest allow-list before delegating to the
|
|
5
|
+
* underlying signer / RPC client.
|
|
6
|
+
*
|
|
7
|
+
* Spec: `spec/2026-05-executor-trust-boundary.md` §3.
|
|
8
|
+
*/
|
|
9
|
+
import type { Address, Hex } from 'viem';
|
|
10
|
+
/**
|
|
11
|
+
* EIP-712 typed-data signing payload. Mirrors viem's signTypedData
|
|
12
|
+
* input but with `account` removed — the daemon binds the signer to
|
|
13
|
+
* its master EOA before delegation.
|
|
14
|
+
*/
|
|
15
|
+
export interface SignTypedDataArgs {
|
|
16
|
+
domain: {
|
|
17
|
+
name?: string;
|
|
18
|
+
version?: string;
|
|
19
|
+
chainId?: number;
|
|
20
|
+
verifyingContract?: Address;
|
|
21
|
+
};
|
|
22
|
+
types: Record<string, Array<{
|
|
23
|
+
name: string;
|
|
24
|
+
type: string;
|
|
25
|
+
}>>;
|
|
26
|
+
primaryType: string;
|
|
27
|
+
message: Record<string, unknown>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Allow-listed transaction shape. Each call's `(chainId, to, selector)`
|
|
31
|
+
* triple must match the impl's manifest capability allow-list; the
|
|
32
|
+
* daemon refuses calls outside the list.
|
|
33
|
+
*/
|
|
34
|
+
export interface SendAllowedCallArgs {
|
|
35
|
+
to: Address;
|
|
36
|
+
data: Hex;
|
|
37
|
+
value?: bigint;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Scoped signer — an impl never sees a raw private key. The daemon
|
|
41
|
+
* issues this handle per `run()` call, validates each request against
|
|
42
|
+
* the manifest allow-list, and discards it on return.
|
|
43
|
+
*/
|
|
44
|
+
export interface ScopedSigner {
|
|
45
|
+
/** EOA address the daemon will sign as. Read-only. */
|
|
46
|
+
readonly address: Address;
|
|
47
|
+
/** Sign EIP-712 typed data for an allow-listed domain. */
|
|
48
|
+
signTypedData(args: SignTypedDataArgs): Promise<Hex>;
|
|
49
|
+
/** Send a tx whose (chainId, to, selector) is on the impl allow-list. */
|
|
50
|
+
sendAllowedCall(call: SendAllowedCallArgs): Promise<Hex>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Scoped RPC — read-only subset of viem's PublicClient interface.
|
|
54
|
+
* The daemon enforces method allow-list, rate limiting, and chain
|
|
55
|
+
* filtering per `spec/2026-05-executor-trust-boundary.md` §3.3.
|
|
56
|
+
*/
|
|
57
|
+
export interface ScopedRpc {
|
|
58
|
+
readContract(args: {
|
|
59
|
+
address: Address;
|
|
60
|
+
abi: readonly unknown[];
|
|
61
|
+
functionName: string;
|
|
62
|
+
args?: readonly unknown[];
|
|
63
|
+
}): Promise<unknown>;
|
|
64
|
+
getBlockNumber(): Promise<bigint>;
|
|
65
|
+
getBalance(args: {
|
|
66
|
+
address: Address;
|
|
67
|
+
}): Promise<bigint>;
|
|
68
|
+
getCode(args: {
|
|
69
|
+
address: Address;
|
|
70
|
+
}): Promise<Hex | undefined>;
|
|
71
|
+
getChainId(): Promise<number>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Per-impl secret bag. Populated by the impl's own `onEnable` flow
|
|
75
|
+
* and persisted under `implStateDir/<impl>/secrets/`. Read-only.
|
|
76
|
+
*/
|
|
77
|
+
export type ScopedSecrets = Readonly<Record<string, string>>;
|
|
78
|
+
export { createScopedSigner } from './scoped-signer.js';
|
|
79
|
+
export type { CapabilityAllowEntry, CreateScopedSignerArgs, TypedDataAllowEntry, } from './scoped-signer.js';
|
|
80
|
+
export { createScopedRpc } from './scoped-rpc.js';
|
|
81
|
+
export type { CreateScopedRpcArgs } from './scoped-rpc.js';
|
|
82
|
+
export { freezeSecrets } from './scoped-secrets.js';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability handles passed to a {@link Harness} via
|
|
3
|
+
* {@link HarnessContext}. The daemon mints these per-call and
|
|
4
|
+
* enforces the impl's manifest allow-list before delegating to the
|
|
5
|
+
* underlying signer / RPC client.
|
|
6
|
+
*
|
|
7
|
+
* Spec: `spec/2026-05-executor-trust-boundary.md` §3.
|
|
8
|
+
*/
|
|
9
|
+
export { createScopedSigner } from './scoped-signer.js';
|
|
10
|
+
export { createScopedRpc } from './scoped-rpc.js';
|
|
11
|
+
export { freezeSecrets } from './scoped-secrets.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/harnesses/capability/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoped RPC constructor — wraps an upstream public RPC client and
|
|
3
|
+
* enforces a chain-id allow-list before delegating.
|
|
4
|
+
*/
|
|
5
|
+
import type { ScopedRpc } from './index.js';
|
|
6
|
+
export interface CreateScopedRpcArgs {
|
|
7
|
+
/** A viem PublicClient (or compatible read-only RPC) the daemon owns. */
|
|
8
|
+
upstream: ScopedRpc;
|
|
9
|
+
/** Chain ids this impl is allowed to read. Empty array = none. */
|
|
10
|
+
chainIdAllowList: readonly number[];
|
|
11
|
+
}
|
|
12
|
+
export declare function createScopedRpc({ upstream, chainIdAllowList, }: CreateScopedRpcArgs): ScopedRpc;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoped RPC constructor — wraps an upstream public RPC client and
|
|
3
|
+
* enforces a chain-id allow-list before delegating.
|
|
4
|
+
*/
|
|
5
|
+
export function createScopedRpc({ upstream, chainIdAllowList, }) {
|
|
6
|
+
async function ensureChainAllowed() {
|
|
7
|
+
const chainId = await upstream.getChainId();
|
|
8
|
+
if (!chainIdAllowList.includes(chainId)) {
|
|
9
|
+
throw new Error(`chain ${chainId} not in allow-list ${JSON.stringify(chainIdAllowList)}`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
async readContract(args) {
|
|
14
|
+
await ensureChainAllowed();
|
|
15
|
+
return upstream.readContract(args);
|
|
16
|
+
},
|
|
17
|
+
async getBlockNumber() {
|
|
18
|
+
await ensureChainAllowed();
|
|
19
|
+
return upstream.getBlockNumber();
|
|
20
|
+
},
|
|
21
|
+
async getBalance(args) {
|
|
22
|
+
await ensureChainAllowed();
|
|
23
|
+
return upstream.getBalance(args);
|
|
24
|
+
},
|
|
25
|
+
async getCode(args) {
|
|
26
|
+
await ensureChainAllowed();
|
|
27
|
+
return upstream.getCode(args);
|
|
28
|
+
},
|
|
29
|
+
async getChainId() {
|
|
30
|
+
return upstream.getChainId();
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=scoped-rpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-rpc.js","sourceRoot":"","sources":["../../../src/harnesses/capability/scoped-rpc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,gBAAgB,GACI;IACpB,KAAK,UAAU,kBAAkB;QAC/B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,SAAS,OAAO,sBAAsB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,YAAY,CAAC,IAAI;YACrB,MAAM,kBAAkB,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,cAAc;YAClB,MAAM,kBAAkB,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,IAAI;YACnB,MAAM,kBAAkB,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,kBAAkB,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,CAAC,UAAU;YACd,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoped secrets helper — produces a read-only view over a secrets
|
|
3
|
+
* bag. The daemon stores the underlying map and re-issues a fresh
|
|
4
|
+
* frozen view per `run()` call so revoked secrets stop reaching impls
|
|
5
|
+
* promptly.
|
|
6
|
+
*/
|
|
7
|
+
import type { ScopedSecrets } from './index.js';
|
|
8
|
+
export declare function freezeSecrets(source: Record<string, string>): ScopedSecrets;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoped secrets helper — produces a read-only view over a secrets
|
|
3
|
+
* bag. The daemon stores the underlying map and re-issues a fresh
|
|
4
|
+
* frozen view per `run()` call so revoked secrets stop reaching impls
|
|
5
|
+
* promptly.
|
|
6
|
+
*/
|
|
7
|
+
export function freezeSecrets(source) {
|
|
8
|
+
return Object.freeze({ ...source });
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=scoped-secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-secrets.js","sourceRoot":"","sources":["../../../src/harnesses/capability/scoped-secrets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,aAAa,CAAC,MAA8B;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoped signer constructor — Phase 1 implementation. The (chainId,
|
|
3
|
+
* to, selector) allow-list is enforced before `sendAllowedCall`
|
|
4
|
+
* delegates, and the EIP-712 domain allow-list is enforced before
|
|
5
|
+
* `signTypedData` delegates. Actual transaction signing is wired in a
|
|
6
|
+
* follow-up plan (the daemon plan that owns the wallet); the typed-data
|
|
7
|
+
* delegation hits the master account immediately.
|
|
8
|
+
*
|
|
9
|
+
* Spec: `spec/2026-05-executor-trust-boundary.md` §3.
|
|
10
|
+
*/
|
|
11
|
+
import type { Account, Address, Hex } from 'viem';
|
|
12
|
+
import type { ScopedSigner } from './index.js';
|
|
13
|
+
export interface CapabilityAllowEntry {
|
|
14
|
+
chainId: number;
|
|
15
|
+
to: Address;
|
|
16
|
+
/** Lower-case 4-byte selector with `0x` prefix (e.g. `0xdeadbeef`). */
|
|
17
|
+
selector: Hex;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* EIP-712 typed-data domain allow-list entry. See
|
|
21
|
+
* `client/src/harnesses/manifest/types.ts:TypedDataAllowEntry` and
|
|
22
|
+
* the manifest-schema field `capabilities.signer.typedDataDomains`.
|
|
23
|
+
*
|
|
24
|
+
* - `chainId` MUST match exactly.
|
|
25
|
+
* - `verifyingContract` / `name` / `version` match only when set on
|
|
26
|
+
* the entry; an unset field on the entry means "any value".
|
|
27
|
+
*/
|
|
28
|
+
export interface TypedDataAllowEntry {
|
|
29
|
+
chainId: number;
|
|
30
|
+
name?: string;
|
|
31
|
+
version?: string;
|
|
32
|
+
verifyingContract?: Address;
|
|
33
|
+
}
|
|
34
|
+
export interface CreateScopedSignerArgs {
|
|
35
|
+
account: Account;
|
|
36
|
+
allowList: readonly CapabilityAllowEntry[];
|
|
37
|
+
/**
|
|
38
|
+
* Domain allow-list for `signTypedData`. The daemon refuses any
|
|
39
|
+
* `signTypedData` call whose domain does not match an entry here.
|
|
40
|
+
* Default-deny: an empty array means EVERY `signTypedData` call
|
|
41
|
+
* throws (matches the "no typedDataDomains in the manifest" case).
|
|
42
|
+
*/
|
|
43
|
+
typedDataAllowList: readonly TypedDataAllowEntry[];
|
|
44
|
+
chainId: number;
|
|
45
|
+
}
|
|
46
|
+
export declare function createScopedSigner({ account, allowList, typedDataAllowList, chainId, }: CreateScopedSignerArgs): ScopedSigner;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoped signer constructor — Phase 1 implementation. The (chainId,
|
|
3
|
+
* to, selector) allow-list is enforced before `sendAllowedCall`
|
|
4
|
+
* delegates, and the EIP-712 domain allow-list is enforced before
|
|
5
|
+
* `signTypedData` delegates. Actual transaction signing is wired in a
|
|
6
|
+
* follow-up plan (the daemon plan that owns the wallet); the typed-data
|
|
7
|
+
* delegation hits the master account immediately.
|
|
8
|
+
*
|
|
9
|
+
* Spec: `spec/2026-05-executor-trust-boundary.md` §3.
|
|
10
|
+
*/
|
|
11
|
+
function eqLowerOrUndef(a, b) {
|
|
12
|
+
if (a === undefined || b === undefined)
|
|
13
|
+
return false;
|
|
14
|
+
return a.toLowerCase() === b.toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
function matchesEntry(entry, domain) {
|
|
17
|
+
if (domain.chainId !== entry.chainId)
|
|
18
|
+
return false;
|
|
19
|
+
if (entry.verifyingContract !== undefined) {
|
|
20
|
+
if (!domain.verifyingContract)
|
|
21
|
+
return false;
|
|
22
|
+
if (!eqLowerOrUndef(entry.verifyingContract, domain.verifyingContract)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (entry.name !== undefined) {
|
|
27
|
+
if (domain.name !== entry.name)
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
if (entry.version !== undefined) {
|
|
31
|
+
if (domain.version !== entry.version)
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
export function createScopedSigner({ account, allowList, typedDataAllowList, chainId, }) {
|
|
37
|
+
return {
|
|
38
|
+
get address() {
|
|
39
|
+
return account.address;
|
|
40
|
+
},
|
|
41
|
+
async signTypedData(args) {
|
|
42
|
+
// Default-deny: empty allow-list refuses everything. Operators
|
|
43
|
+
// who need typed-data signing MUST declare a
|
|
44
|
+
// `capabilities.signer.typedDataDomains` entry on the manifest.
|
|
45
|
+
// Finding 3.
|
|
46
|
+
const allowed = typedDataAllowList.some((entry) => matchesEntry(entry, args.domain));
|
|
47
|
+
if (!allowed) {
|
|
48
|
+
throw new Error(`signTypedData domain not in allow-list (chainId=${args.domain.chainId ?? 'unspecified'}, ` +
|
|
49
|
+
`verifyingContract=${args.domain.verifyingContract ?? 'unspecified'})`);
|
|
50
|
+
}
|
|
51
|
+
if (typeof account.signTypedData !== 'function') {
|
|
52
|
+
throw new Error('master account does not support signTypedData');
|
|
53
|
+
}
|
|
54
|
+
return account.signTypedData(args);
|
|
55
|
+
},
|
|
56
|
+
async sendAllowedCall(call) {
|
|
57
|
+
const selector = call.data.slice(0, 10).toLowerCase();
|
|
58
|
+
const entry = allowList.find((e) => e.chainId === chainId &&
|
|
59
|
+
e.to.toLowerCase() === call.to.toLowerCase() &&
|
|
60
|
+
e.selector.toLowerCase() === selector);
|
|
61
|
+
if (!entry) {
|
|
62
|
+
const haveContract = allowList.some((e) => e.chainId === chainId && e.to.toLowerCase() === call.to.toLowerCase());
|
|
63
|
+
if (!haveContract) {
|
|
64
|
+
throw new Error(`to ${call.to} not in allow-list for chain ${chainId}`);
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`selector ${selector} not in allow-list for ${call.to} on chain ${chainId}`);
|
|
67
|
+
}
|
|
68
|
+
// Phase 1: shape only — actual signing is wired in the daemon plan.
|
|
69
|
+
throw new Error('sendAllowedCall is allow-list-validated but signing is wired in the daemon plan');
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=scoped-signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-signer.js","sourceRoot":"","sources":["../../../src/harnesses/capability/scoped-signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function canonicalJson(value: unknown): string;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical JSON serialisation — RFC 8785 JCS.
|
|
3
|
+
*
|
|
4
|
+
* Uses the `canonicalize` npm package (≈30 LOC, zero deps) so third-party
|
|
5
|
+
* verifiers can reproduce our signing input with any standard JCS library.
|
|
6
|
+
*
|
|
7
|
+
* Rules per RFC 8785:
|
|
8
|
+
* - Object keys sorted lexicographically by UTF-16 code-unit order.
|
|
9
|
+
* - No insignificant whitespace.
|
|
10
|
+
* - I-JSON number formatting per ECMAScript `Number.prototype.toString(10)`
|
|
11
|
+
* (integer-preferred; scientific notation when |x| ≥ 1e21 or |x| < 5e-7;
|
|
12
|
+
* -0 serialises as 0).
|
|
13
|
+
* - String escape rules per JSON spec (control chars as \\uXXXX; only ", \
|
|
14
|
+
* and control chars must be escaped).
|
|
15
|
+
* - `undefined` values in objects are dropped (matches JSON.stringify).
|
|
16
|
+
* - `NaN` / `Infinity` serialise to `null` (matches JSON.stringify).
|
|
17
|
+
*
|
|
18
|
+
* BigInt is **not** supported — JCS is a canonicalization of standard JSON,
|
|
19
|
+
* which has no BigInt type. Callers must convert BigInt to string or number
|
|
20
|
+
* before calling. Passing BigInt throws.
|
|
21
|
+
*
|
|
22
|
+
* Used for manifest signing: produce a deterministic byte string that two
|
|
23
|
+
* independent parties can reproduce from the same object graph.
|
|
24
|
+
*/
|
|
25
|
+
import { createRequire } from 'node:module';
|
|
26
|
+
const require = createRequire(import.meta.url);
|
|
27
|
+
const canonicalize = require('canonicalize');
|
|
28
|
+
/**
|
|
29
|
+
* Recursively replace NaN / ±Infinity with null so that canonicalize does not
|
|
30
|
+
* throw — matching the JSON.stringify behaviour that the rest of the codebase
|
|
31
|
+
* expects. BigInt is intentionally left unhandled so that canonicalize throws
|
|
32
|
+
* a clear error when a caller passes one.
|
|
33
|
+
*/
|
|
34
|
+
function coerceNonFinite(value) {
|
|
35
|
+
if (typeof value === 'number' && !isFinite(value))
|
|
36
|
+
return null;
|
|
37
|
+
if (Array.isArray(value))
|
|
38
|
+
return value.map(coerceNonFinite);
|
|
39
|
+
if (value !== null && typeof value === 'object') {
|
|
40
|
+
// Preserve toJSON() — canonicalize would otherwise call it itself;
|
|
41
|
+
// by pre-processing we must not strip it. Invoke it here and recurse
|
|
42
|
+
// on its return value so NaN/Infinity inside toJSON results are still
|
|
43
|
+
// coerced.
|
|
44
|
+
const toJson = value.toJSON;
|
|
45
|
+
if (typeof toJson === 'function') {
|
|
46
|
+
return coerceNonFinite(toJson.call(value));
|
|
47
|
+
}
|
|
48
|
+
const out = {};
|
|
49
|
+
for (const [k, v] of Object.entries(value))
|
|
50
|
+
out[k] = coerceNonFinite(v);
|
|
51
|
+
return out;
|
|
52
|
+
}
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
export function canonicalJson(value) {
|
|
56
|
+
const coerced = coerceNonFinite(value);
|
|
57
|
+
const result = canonicalize(coerced);
|
|
58
|
+
if (result === undefined) {
|
|
59
|
+
// canonicalize returns undefined for top-level undefined input (matches
|
|
60
|
+
// JSON.stringify). Match Jinn's previous behaviour: emit "null" so the
|
|
61
|
+
// return type is always a string.
|
|
62
|
+
return 'null';
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=canonical-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../../src/harnesses/engine/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAA2C,CAAC;AAEvF;;;;;GAKG;AACH,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,mEAAmE;QACnE,qEAAqE;QACrE,sEAAsE;QACtE,WAAW;QACX,MAAM,MAAM,GAAI,KAAoC,CAAC,MAAM,CAAC;QAC5D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,wEAAwE;QACxE,uEAAuE;QACvE,kCAAkC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Two-layer claim orchestration for the
|
|
2
|
+
* Two-layer claim orchestration for the harness engine.
|
|
3
3
|
*
|
|
4
4
|
* §6.1, §9.1, §9.2 of spec/2026-04-17-portfolio-v0-design.md
|
|
5
5
|
*
|
|
@@ -29,8 +29,8 @@ export interface MarketplaceClaimer {
|
|
|
29
29
|
claimRequest(requestId: string): Promise<void>;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
* Parameters describing a single
|
|
33
|
-
* Extracted from
|
|
32
|
+
* Parameters describing a single task's timing window.
|
|
33
|
+
* Extracted from PersistedTaskRun for testability (no DB dependency).
|
|
34
34
|
*/
|
|
35
35
|
export interface ClaimWindow {
|
|
36
36
|
requestId: string;
|
|
@@ -43,15 +43,15 @@ export interface ClaimResult {
|
|
|
43
43
|
registryClaimWasFresh: boolean;
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
* Execute the two-layer claim for a single
|
|
46
|
+
* Execute the two-layer claim for a single task.
|
|
47
47
|
*
|
|
48
48
|
* // Claim ordering: ClaimRegistry FIRST (cheap coordination lock), marketplace SECOND.
|
|
49
49
|
* // Spec §6.1 lists them in opposite order but doesn't enforce sequencing — registry-first
|
|
50
|
-
* // is preferred because: (a) ClaimRegistry revert is fast and signals "another
|
|
50
|
+
* // is preferred because: (a) ClaimRegistry revert is fast and signals "another harness
|
|
51
51
|
* // is on it" cleanly; (b) marketplace claim is more expensive (Safe tx + actual gas);
|
|
52
52
|
* // (c) we release ClaimRegistry on marketplace failure to avoid leaking a stale claim.
|
|
53
53
|
*
|
|
54
|
-
* @param claimWindow - Timing data for the
|
|
54
|
+
* @param claimWindow - Timing data for the task (requestId, windowStartTs).
|
|
55
55
|
* @param registryClient - ClaimRegistryClient for the deployed ClaimRegistry contract.
|
|
56
56
|
* @param marketplaceClaimer - Adapter whose claimRequest() performs the marketplace claim.
|
|
57
57
|
* @returns ClaimResult on success.
|
|
@@ -59,7 +59,7 @@ export interface ClaimResult {
|
|
|
59
59
|
*/
|
|
60
60
|
export declare function executeTwoLayerClaim(claimWindow: ClaimWindow, registryClient: ClaimRegistryClient, marketplaceClaimer: MarketplaceClaimer): Promise<ClaimResult>;
|
|
61
61
|
/**
|
|
62
|
-
* Release the ClaimRegistry claim for an
|
|
62
|
+
* Release the ClaimRegistry claim for an task that was CLAIMED but whose
|
|
63
63
|
* work window has not yet started (windowStartTs not reached).
|
|
64
64
|
*
|
|
65
65
|
* Used during graceful engine shutdown. No-op if we don't hold the claim.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Two-layer claim orchestration for the
|
|
2
|
+
* Two-layer claim orchestration for the harness engine.
|
|
3
3
|
*
|
|
4
4
|
* §6.1, §9.1, §9.2 of spec/2026-04-17-portfolio-v0-design.md
|
|
5
5
|
*
|
|
@@ -22,15 +22,15 @@
|
|
|
22
22
|
*/
|
|
23
23
|
// ── Two-layer claim ───────────────────────────────────────────────────────────
|
|
24
24
|
/**
|
|
25
|
-
* Execute the two-layer claim for a single
|
|
25
|
+
* Execute the two-layer claim for a single task.
|
|
26
26
|
*
|
|
27
27
|
* // Claim ordering: ClaimRegistry FIRST (cheap coordination lock), marketplace SECOND.
|
|
28
28
|
* // Spec §6.1 lists them in opposite order but doesn't enforce sequencing — registry-first
|
|
29
|
-
* // is preferred because: (a) ClaimRegistry revert is fast and signals "another
|
|
29
|
+
* // is preferred because: (a) ClaimRegistry revert is fast and signals "another harness
|
|
30
30
|
* // is on it" cleanly; (b) marketplace claim is more expensive (Safe tx + actual gas);
|
|
31
31
|
* // (c) we release ClaimRegistry on marketplace failure to avoid leaking a stale claim.
|
|
32
32
|
*
|
|
33
|
-
* @param claimWindow - Timing data for the
|
|
33
|
+
* @param claimWindow - Timing data for the task (requestId, windowStartTs).
|
|
34
34
|
* @param registryClient - ClaimRegistryClient for the deployed ClaimRegistry contract.
|
|
35
35
|
* @param marketplaceClaimer - Adapter whose claimRequest() performs the marketplace claim.
|
|
36
36
|
* @returns ClaimResult on success.
|
|
@@ -45,7 +45,14 @@ export async function executeTwoLayerClaim(claimWindow, registryClient, marketpl
|
|
|
45
45
|
if (!alreadyClaimed) {
|
|
46
46
|
const result = await registryClient.claimJob(requestIdHex);
|
|
47
47
|
if (!result.claimed) {
|
|
48
|
-
|
|
48
|
+
const detail = result.reason === 'lost-race' && result.competitor
|
|
49
|
+
? `lost claim race to ${result.competitor}`
|
|
50
|
+
: result.reason === 'lost-race'
|
|
51
|
+
? 'lost claim race to another operator'
|
|
52
|
+
: result.reason === 'ineligible'
|
|
53
|
+
? 'eligibility checker rejected'
|
|
54
|
+
: `tx reverted${result.reason ? ` (${result.reason})` : ''}`;
|
|
55
|
+
throw new Error(`[claim-orchestration] ClaimRegistry claim failed for ${claimWindow.requestId} — ${detail}`);
|
|
49
56
|
}
|
|
50
57
|
registryClaimWasFresh = true;
|
|
51
58
|
}
|
|
@@ -61,7 +68,7 @@ export async function executeTwoLayerClaim(claimWindow, registryClient, marketpl
|
|
|
61
68
|
// (only if we placed it fresh; pre-existing claims are not ours to release here)
|
|
62
69
|
// TODO(v0 trade-off): on the resume path (weAlreadyClaimed = true, registryClaimWasFresh = false)
|
|
63
70
|
// we do NOT release the ClaimRegistry claim here. Releasing on a transient marketplace failure
|
|
64
|
-
// would forfeit our coordination lock and let a competing
|
|
71
|
+
// would forfeit our coordination lock and let a competing harness take it. The downside is that
|
|
65
72
|
// on a *persistent* failure the claim sits locked until TTL expiry (owner-configured per-deployment).
|
|
66
73
|
// Distinguishing transient vs. permanent failures is non-trivial; for v0 we accept the TTL wait.
|
|
67
74
|
// Future: inspect the marketplace error type and release only on permanent failures.
|
|
@@ -81,7 +88,7 @@ export async function executeTwoLayerClaim(claimWindow, registryClient, marketpl
|
|
|
81
88
|
}
|
|
82
89
|
// ── Graceful release ──────────────────────────────────────────────────────────
|
|
83
90
|
/**
|
|
84
|
-
* Release the ClaimRegistry claim for an
|
|
91
|
+
* Release the ClaimRegistry claim for an task that was CLAIMED but whose
|
|
85
92
|
* work window has not yet started (windowStartTs not reached).
|
|
86
93
|
*
|
|
87
94
|
* Used during graceful engine shutdown. No-op if we don't hold the claim.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../../src/harnesses/engine/claim.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Harness engine — mech delivery + JinnRouter.claimDelivery.
|
|
3
3
|
*
|
|
4
4
|
* §6.1 DELIVERING phase.
|
|
5
5
|
*
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* is the keccak256 hash of the signed manifest (from manifest assembly).
|
|
11
11
|
*/
|
|
12
12
|
import type { Hex, PublicClient, WalletClient, Address } from 'viem';
|
|
13
|
+
import type { EvictionRecoveryConfig } from '../../adapters/mech/types.js';
|
|
13
14
|
export interface DeliveryDeps {
|
|
14
15
|
publicClient: PublicClient;
|
|
15
16
|
walletClient: WalletClient;
|
|
@@ -18,6 +19,7 @@ export interface DeliveryDeps {
|
|
|
18
19
|
routerAddress: Address;
|
|
19
20
|
/** v1 or v2 claimDelivery encoding — matches chain config */
|
|
20
21
|
claimDeliveryVariant: 'v1' | 'v2';
|
|
22
|
+
evictionRecovery?: EvictionRecoveryConfig;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* Callback invoked after deliverToMarketplace lands on-chain but BEFORE
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Harness engine — mech delivery + JinnRouter.claimDelivery.
|
|
3
3
|
*
|
|
4
4
|
* §6.1 DELIVERING phase.
|
|
5
5
|
*
|
|
@@ -34,16 +34,16 @@ export async function deliverAndClaim(requestId, manifestCid, evidenceHash, deps
|
|
|
34
34
|
let deliveryTxHash;
|
|
35
35
|
if (preExistingDeliveryTxHash) {
|
|
36
36
|
// Recovery path: deliverToMarketplace already landed on a previous run.
|
|
37
|
-
console.log(`[
|
|
37
|
+
console.log(`[harness-engine] deliverToMarketplace already done (recovery), tx=${preExistingDeliveryTxHash}`);
|
|
38
38
|
deliveryTxHash = preExistingDeliveryTxHash;
|
|
39
39
|
}
|
|
40
40
|
else {
|
|
41
41
|
// 1. Convert manifest CID to 32-byte digest for on-chain delivery data
|
|
42
42
|
const deliveryDigest = cidToDigestHex(manifestCid);
|
|
43
43
|
// 2. deliverToMarketplace via Safe
|
|
44
|
-
console.log(`[
|
|
45
|
-
deliveryTxHash = await callDeliverToMarketplace(deps.publicClient, deps.walletClient, deps.safeAddress, deps.mechContractAddress, [requestId], [deliveryDigest]);
|
|
46
|
-
console.log(`[
|
|
44
|
+
console.log(`[harness-engine] deliverToMarketplace requestId=${requestId}`);
|
|
45
|
+
deliveryTxHash = await callDeliverToMarketplace(deps.publicClient, deps.walletClient, deps.safeAddress, deps.mechContractAddress, [requestId], [deliveryDigest], deps.evictionRecovery);
|
|
46
|
+
console.log(`[harness-engine] deliverToMarketplace tx=${deliveryTxHash}`);
|
|
47
47
|
// Persist the tx hash before proceeding to claimDelivery. If the process
|
|
48
48
|
// crashes between here and the COMPLETE transition, recovery will read this
|
|
49
49
|
// hash and skip the deliver step.
|
|
@@ -52,12 +52,12 @@ export async function deliverAndClaim(requestId, manifestCid, evidenceHash, deps
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
// 3. claimDelivery on JinnRouter
|
|
55
|
-
console.log(`[
|
|
55
|
+
console.log(`[harness-engine] claimDelivery requestId=${requestId}`);
|
|
56
56
|
const claimTxHash = await claimDelivery(deps.publicClient, deps.walletClient, deps.safeAddress, deps.routerAddress, requestId, {
|
|
57
57
|
variant: deps.claimDeliveryVariant,
|
|
58
58
|
evidenceHash: deps.claimDeliveryVariant === 'v2' ? evidenceHash : undefined,
|
|
59
|
-
});
|
|
60
|
-
console.log(`[
|
|
59
|
+
}, deps.evictionRecovery);
|
|
60
|
+
console.log(`[harness-engine] claimDelivery tx=${claimTxHash}`);
|
|
61
61
|
return { deliveryTxHash, claimTxHash };
|
|
62
62
|
}
|
|
63
63
|
//# sourceMappingURL=delivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../src/harnesses/engine/delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EACL,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,wBAAwB,EACxB,aAAa,GACd,MAAM,kCAAkC,CAAC;AA8B1C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAc,EACd,WAAmB,EACnB,YAAiB,EACjB,IAAkB,EAClB,yBAA+B,EAC/B,kBAAuC;IAEvC,IAAI,cAAmB,CAAC;IAExB,IAAI,yBAAyB,EAAE,CAAC;QAC9B,wEAAwE;QACxE,OAAO,CAAC,GAAG,CAAC,qEAAqE,yBAAyB,EAAE,CAAC,CAAC;QAC9G,cAAc,GAAG,yBAAyB,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,uEAAuE;QACvE,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAEnD,mCAAmC;QACnC,OAAO,CAAC,GAAG,CAAC,mDAAmD,SAAS,EAAE,CAAC,CAAC;QAC5E,cAAc,GAAG,MAAM,wBAAwB,CAC7C,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,mBAAmB,EACxB,CAAC,SAAS,CAAC,EACX,CAAC,cAAc,CAAC,EAChB,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,4CAA4C,cAAc,EAAE,CAAC,CAAC;QAE1E,yEAAyE;QACzE,4EAA4E;QAC5E,kCAAkC;QAClC,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,OAAO,CAAC,GAAG,CAAC,4CAA4C,SAAS,EAAE,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,MAAM,aAAa,CACrC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,SAAS,EACT;QACE,OAAO,EAAE,IAAI,CAAC,oBAAoB;QAClC,YAAY,EAAE,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KAC5E,EACD,IAAI,CAAC,gBAAgB,CACtB,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;IAEhE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AACzC,CAAC"}
|