@jinn-network/client 0.1.2 → 0.1.3-canary.262e5cda
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 +38 -14
- 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 +2 -2
- 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 +2 -2
- package/dist/adapters/local/adapter.js +8 -8
- package/dist/adapters/local/adapter.js.map +1 -1
- package/dist/adapters/mech/adapter.d.ts +3 -4
- package/dist/adapters/mech/adapter.js +86 -50
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +6 -4
- package/dist/adapters/mech/contracts.js +118 -14
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/ipfs.d.ts +61 -6
- package/dist/adapters/mech/ipfs.js +159 -26
- 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 +47 -21
- 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 +5 -1
- 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/peers.js +20 -5
- package/dist/api/peers.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +6 -0
- package/dist/api/portfolio-v0-build.js +6 -1
- package/dist/api/portfolio-v0-build.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 +54 -0
- package/dist/api/server.js +239 -13
- 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 +9 -1
- 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 +36 -0
- package/dist/cli/commands/create.js +374 -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 +136 -121
- 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/history.d.ts +10 -1
- package/dist/cli/commands/history.js +66 -57
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/impls.d.ts +18 -0
- package/dist/cli/commands/impls.js +208 -0
- package/dist/cli/commands/impls.js.map +1 -0
- package/dist/cli/commands/init.js +4 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/intents.js +13 -9
- package/dist/cli/commands/intents.js.map +1 -1
- 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/plug-ins.d.ts +34 -0
- package/dist/cli/commands/plug-ins.js +282 -0
- package/dist/cli/commands/plug-ins.js.map +1 -0
- package/dist/cli/commands/plugin-install.d.ts +10 -0
- package/dist/cli/commands/plugin-install.js +226 -14
- package/dist/cli/commands/plugin-install.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 +232 -90
- package/dist/cli/commands/run.js.map +1 -1
- 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/submit-intent.js +33 -6
- package/dist/cli/commands/submit-intent.js.map +1 -1
- 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 +102 -97
- 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 +2 -1
- package/dist/cli/execution-context.js.map +1 -1
- package/dist/cli/help.js +7 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +18 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/intent-registry-access.d.ts +33 -1
- package/dist/cli/intent-registry-access.js +40 -2
- package/dist/cli/intent-registry-access.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 +5 -5
- package/dist/cli/password.js.map +1 -1
- package/dist/config.d.ts +883 -11
- package/dist/config.js +435 -4
- 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 +228 -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 +107 -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 +2 -2
- package/dist/daemon/creator.js +2 -2
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +70 -15
- package/dist/daemon/daemon.js +159 -41
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/delivery-watcher.js +31 -1
- 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/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/index.d.ts +1 -1
- package/dist/intents/kinds/index.d.ts +10 -0
- package/dist/intents/kinds/index.js +7 -0
- package/dist/intents/kinds/index.js.map +1 -1
- package/dist/intents/kinds/learner-loop-test.d.ts +2 -0
- package/dist/intents/kinds/learner-loop-test.js +39 -0
- package/dist/intents/kinds/learner-loop-test.js.map +1 -0
- package/dist/intents/kinds/prediction-apy-v0.js +5 -1
- package/dist/intents/kinds/prediction-apy-v0.js.map +1 -1
- package/dist/intents/kinds/prediction-v0.js +5 -0
- package/dist/intents/kinds/prediction-v0.js.map +1 -1
- package/dist/intents/kinds/spec-kind.d.ts +18 -1
- package/dist/intents/posting-service.d.ts +3 -5
- package/dist/intents/posting-service.js +16 -50
- package/dist/intents/posting-service.js.map +1 -1
- package/dist/intents/prediction-apy-v0-auto.d.ts +12 -2
- package/dist/intents/prediction-apy-v0-auto.js +27 -2
- package/dist/intents/prediction-apy-v0-auto.js.map +1 -1
- package/dist/intents/prediction-v0-auto.d.ts +14 -4
- package/dist/intents/prediction-v0-auto.js +29 -5
- package/dist/intents/prediction-v0-auto.js.map +1 -1
- package/dist/intents/signing.d.ts +13 -0
- package/dist/intents/signing.js +27 -0
- package/dist/intents/signing.js.map +1 -0
- package/dist/intents/sources.d.ts +12 -5
- package/dist/intents/sources.js +11 -11
- package/dist/intents/sources.js.map +1 -1
- package/dist/main.d.ts +5 -2
- package/dist/main.js +792 -66
- 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 +20 -3
- package/dist/mcp/operator-server.js +500 -25
- 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.js +103 -58
- package/dist/mcp/server.js.map +1 -1
- package/dist/observability/emit-event.d.ts +1 -1
- 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/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/restorer/capability/index.d.ts +82 -0
- package/dist/restorer/capability/index.js +12 -0
- package/dist/restorer/capability/index.js.map +1 -0
- package/dist/restorer/capability/scoped-rpc.d.ts +12 -0
- package/dist/restorer/capability/scoped-rpc.js +34 -0
- package/dist/restorer/capability/scoped-rpc.js.map +1 -0
- package/dist/restorer/capability/scoped-secrets.d.ts +8 -0
- package/dist/restorer/capability/scoped-secrets.js +10 -0
- package/dist/restorer/capability/scoped-secrets.js.map +1 -0
- package/dist/restorer/capability/scoped-signer.d.ts +46 -0
- package/dist/restorer/capability/scoped-signer.js +73 -0
- package/dist/restorer/capability/scoped-signer.js.map +1 -0
- package/dist/restorer/engine/canonical-json.d.ts +0 -17
- package/dist/restorer/engine/canonical-json.js +56 -49
- package/dist/restorer/engine/canonical-json.js.map +1 -1
- package/dist/restorer/engine/claim.js +8 -1
- package/dist/restorer/engine/claim.js.map +1 -1
- package/dist/restorer/engine/delivery.d.ts +2 -0
- package/dist/restorer/engine/delivery.js +2 -2
- package/dist/restorer/engine/delivery.js.map +1 -1
- package/dist/restorer/engine/engine.d.ts +143 -26
- package/dist/restorer/engine/engine.js +485 -104
- package/dist/restorer/engine/engine.js.map +1 -1
- package/dist/restorer/engine/envelope-assembly.d.ts +65 -0
- package/dist/restorer/engine/envelope-assembly.js +60 -0
- package/dist/restorer/engine/envelope-assembly.js.map +1 -0
- package/dist/restorer/engine/packaging.d.ts +30 -30
- package/dist/restorer/engine/packaging.js +73 -47
- package/dist/restorer/engine/packaging.js.map +1 -1
- package/dist/restorer/engine/persistence.d.ts +7 -7
- package/dist/restorer/engine/persistence.js +4 -4
- package/dist/restorer/engine/persistence.js.map +1 -1
- package/dist/restorer/engine/registry.d.ts +24 -13
- package/dist/restorer/engine/registry.js +16 -13
- package/dist/restorer/engine/registry.js.map +1 -1
- package/dist/restorer/engine/validate-manifest.d.ts +23 -0
- package/dist/restorer/engine/validate-manifest.js +49 -0
- package/dist/restorer/engine/validate-manifest.js.map +1 -0
- package/dist/restorer/engine/verification-stub.d.ts +18 -0
- package/dist/restorer/engine/verification-stub.js +18 -0
- package/dist/restorer/engine/verification-stub.js.map +1 -0
- package/dist/restorer/external-impls/index.d.ts +3 -0
- package/dist/restorer/external-impls/index.js +2 -0
- package/dist/restorer/external-impls/index.js.map +1 -0
- package/dist/restorer/external-impls/loader.d.ts +49 -0
- package/dist/restorer/external-impls/loader.js +138 -0
- package/dist/restorer/external-impls/loader.js.map +1 -0
- package/dist/restorer/external-impls/package-hash.d.ts +26 -0
- package/dist/restorer/external-impls/package-hash.js +102 -0
- package/dist/restorer/external-impls/package-hash.js.map +1 -0
- package/dist/restorer/external-impls/types.d.ts +42 -0
- package/dist/restorer/external-impls/types.js +10 -0
- package/dist/restorer/external-impls/types.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/adapters/claude-code.d.ts +38 -0
- package/dist/restorer/impls/claude-code-learner/adapters/claude-code.js +200 -0
- package/dist/restorer/impls/claude-code-learner/adapters/claude-code.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/harvest.d.ts +19 -0
- package/dist/restorer/impls/claude-code-learner/harvest.js +146 -0
- package/dist/restorer/impls/claude-code-learner/harvest.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/index.d.ts +15 -0
- package/dist/restorer/impls/claude-code-learner/index.js +14 -0
- package/dist/restorer/impls/claude-code-learner/index.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/mcp-config.d.ts +48 -0
- package/dist/restorer/impls/claude-code-learner/mcp-config.js +52 -0
- package/dist/restorer/impls/claude-code-learner/mcp-config.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/plugin-path.d.ts +14 -0
- package/dist/restorer/impls/claude-code-learner/plugin-path.js +30 -0
- package/dist/restorer/impls/claude-code-learner/plugin-path.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/restorer.d.ts +38 -0
- package/dist/restorer/impls/claude-code-learner/restorer.js +73 -0
- package/dist/restorer/impls/claude-code-learner/restorer.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/fake-plugin-outputs.d.ts +19 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/fake-plugin-outputs.js +111 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/fake-plugin-outputs.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/noop-adapter.d.ts +22 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/noop-adapter.js +35 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/noop-adapter.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/synthetic-session.d.ts +20 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/synthetic-session.js +34 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/synthetic-session.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/types.d.ts +99 -0
- package/dist/restorer/impls/claude-code-learner/types.js +2 -0
- package/dist/restorer/impls/claude-code-learner/types.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/wrapper.d.ts +49 -0
- package/dist/restorer/impls/claude-code-learner/wrapper.js +144 -0
- package/dist/restorer/impls/claude-code-learner/wrapper.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +2 -2
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +2 -2
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +7 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +38 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +2 -2
- package/dist/restorer/impls/claude-mcp-prediction/index.js +12 -2
- package/dist/restorer/impls/claude-mcp-prediction/index.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.d.ts +9 -2
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js +9 -125
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.d.ts +2 -2
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.js +9 -2
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +10 -0
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js +10 -119
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-shared/single-session-orchestrator.d.ts +84 -0
- package/dist/restorer/impls/claude-mcp-shared/single-session-orchestrator.js +206 -0
- package/dist/restorer/impls/claude-mcp-shared/single-session-orchestrator.js.map +1 -0
- package/dist/restorer/impls/evaluation-context.d.ts +11 -4
- package/dist/restorer/impls/evaluation-context.js +9 -2
- package/dist/restorer/impls/evaluation-context.js.map +1 -1
- package/dist/restorer/impls/index.d.ts +46 -1
- package/dist/restorer/impls/index.js +38 -0
- package/dist/restorer/impls/index.js.map +1 -1
- package/dist/restorer/impls/legacy-claude/index.d.ts +13 -1
- package/dist/restorer/impls/legacy-claude/index.js +2 -0
- package/dist/restorer/impls/legacy-claude/index.js.map +1 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +4 -4
- package/dist/restorer/impls/portfolio-v0-evaluator/index.js +184 -55
- package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +1 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +8 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +1 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +3 -3
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +153 -15
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +14 -5
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +16 -23
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -1
- package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +1 -1
- package/dist/restorer/impls/prediction-v0-baseline/index.js +16 -7
- package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +5 -3
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -1
- package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +2 -2
- package/dist/restorer/impls/prediction-v0-evaluator/index.js +175 -67
- package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -1
- package/dist/restorer/manifest/index.d.ts +3 -0
- package/dist/restorer/manifest/index.js +3 -0
- package/dist/restorer/manifest/index.js.map +1 -0
- package/dist/restorer/manifest/load.d.ts +7 -0
- package/dist/restorer/manifest/load.js +49 -0
- package/dist/restorer/manifest/load.js.map +1 -0
- package/dist/restorer/manifest/types.d.ts +75 -0
- package/dist/restorer/manifest/types.js +8 -0
- package/dist/restorer/manifest/types.js.map +1 -0
- package/dist/restorer/manifest/verify.d.ts +15 -0
- package/dist/restorer/manifest/verify.js +53 -0
- package/dist/restorer/manifest/verify.js.map +1 -0
- package/dist/restorer/plug-ins/index.d.ts +14 -0
- package/dist/restorer/plug-ins/index.js +11 -0
- package/dist/restorer/plug-ins/index.js.map +1 -0
- package/dist/restorer/plug-ins/loader.d.ts +27 -0
- package/dist/restorer/plug-ins/loader.js +101 -0
- package/dist/restorer/plug-ins/loader.js.map +1 -0
- package/dist/restorer/plug-ins/manifest.d.ts +7 -0
- package/dist/restorer/plug-ins/manifest.js +97 -0
- package/dist/restorer/plug-ins/manifest.js.map +1 -0
- package/dist/restorer/plug-ins/registry.d.ts +24 -0
- package/dist/restorer/plug-ins/registry.js +17 -0
- package/dist/restorer/plug-ins/registry.js.map +1 -0
- package/dist/restorer/plug-ins/serialise.d.ts +29 -0
- package/dist/restorer/plug-ins/serialise.js +29 -0
- package/dist/restorer/plug-ins/serialise.js.map +1 -0
- package/dist/restorer/plug-ins/types.d.ts +77 -0
- package/dist/restorer/plug-ins/types.js +10 -0
- package/dist/restorer/plug-ins/types.js.map +1 -0
- package/dist/restorer/types.d.ts +66 -11
- package/dist/restorer/types.js.map +1 -1
- package/dist/runner/claude.d.ts +3 -3
- package/dist/runner/claude.js +57 -21
- 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/store/store.d.ts +79 -3
- package/dist/store/store.js +189 -6
- package/dist/store/store.js.map +1 -1
- package/dist/templates/plug-in/hook/README.md.tmpl +24 -0
- package/dist/templates/plug-in/hook/gitignore.tmpl +3 -0
- package/dist/templates/plug-in/hook/hooks/event.sh.tmpl +15 -0
- package/dist/templates/plug-in/hook/jinn-plugin.json.tmpl +16 -0
- package/dist/templates/plug-in/hook/package.json.tmpl +14 -0
- package/dist/templates/plug-in/hook/test/manifest.test.ts.tmpl +21 -0
- package/dist/templates/plug-in/mcp-tool/README.md.tmpl +26 -0
- package/dist/templates/plug-in/mcp-tool/gitignore.tmpl +4 -0
- package/dist/templates/plug-in/mcp-tool/jinn-plugin.json.tmpl +16 -0
- package/dist/templates/plug-in/mcp-tool/package.json.tmpl +19 -0
- package/dist/templates/plug-in/mcp-tool/src/server.ts.tmpl +17 -0
- package/dist/templates/plug-in/mcp-tool/test/server.test.ts.tmpl +18 -0
- package/dist/templates/plug-in/memory-backend/README.md.tmpl +33 -0
- package/dist/templates/plug-in/memory-backend/gitignore.tmpl +4 -0
- package/dist/templates/plug-in/memory-backend/jinn-plugin.json.tmpl +16 -0
- package/dist/templates/plug-in/memory-backend/package.json.tmpl +19 -0
- package/dist/templates/plug-in/memory-backend/src/server.ts.tmpl +23 -0
- package/dist/templates/plug-in/memory-backend/test/server.test.ts.tmpl +17 -0
- package/dist/templates/plug-in/phase-agent-override/README.md.tmpl +30 -0
- package/dist/templates/plug-in/phase-agent-override/agents/agent.md.tmpl +26 -0
- package/dist/templates/plug-in/phase-agent-override/gitignore.tmpl +3 -0
- package/dist/templates/plug-in/phase-agent-override/jinn-plugin.json.tmpl +17 -0
- package/dist/templates/plug-in/phase-agent-override/package.json.tmpl +14 -0
- package/dist/templates/plug-in/phase-agent-override/test/manifest.test.ts.tmpl +24 -0
- package/dist/templates/plug-in/skill-bundle/.claude-plugin/plugin.json.tmpl +5 -0
- package/dist/templates/plug-in/skill-bundle/README.md.tmpl +28 -0
- package/dist/templates/plug-in/skill-bundle/gitignore.tmpl +3 -0
- package/dist/templates/plug-in/skill-bundle/jinn-plugin.json.tmpl +15 -0
- package/dist/templates/plug-in/skill-bundle/package.json.tmpl +14 -0
- package/dist/templates/plug-in/skill-bundle/skills/example/SKILL.md.tmpl +14 -0
- package/dist/templates/plug-in/skill-bundle/test/manifest.test.ts.tmpl +21 -0
- package/dist/templates/plug-in/topic-explorer/README.md.tmpl +24 -0
- package/dist/templates/plug-in/topic-explorer/agents/explorer.md.tmpl +26 -0
- package/dist/templates/plug-in/topic-explorer/gitignore.tmpl +3 -0
- package/dist/templates/plug-in/topic-explorer/jinn-plugin.json.tmpl +17 -0
- package/dist/templates/plug-in/topic-explorer/package.json.tmpl +14 -0
- package/dist/templates/plug-in/topic-explorer/test/manifest.test.ts.tmpl +22 -0
- package/dist/templates/restorer/alternative-harness/README.md.tmpl +44 -0
- package/dist/templates/restorer/alternative-harness/gitignore.tmpl +3 -0
- package/dist/templates/restorer/alternative-harness/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/restorer/alternative-harness/package.json.tmpl +26 -0
- package/dist/templates/restorer/alternative-harness/src/coordinator.ts.tmpl +50 -0
- package/dist/templates/restorer/alternative-harness/src/harness.ts.tmpl +31 -0
- package/dist/templates/restorer/alternative-harness/src/index.ts.tmpl +44 -0
- package/dist/templates/restorer/alternative-harness/src/mock-harness.ts.tmpl +41 -0
- package/dist/templates/restorer/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
- package/dist/templates/restorer/alternative-harness/src/phases/execute.ts.tmpl +33 -0
- package/dist/templates/restorer/alternative-harness/src/phases/improve.ts.tmpl +31 -0
- package/dist/templates/restorer/alternative-harness/src/phases/memory.ts.tmpl +31 -0
- package/dist/templates/restorer/alternative-harness/src/phases/orient.ts.tmpl +21 -0
- package/dist/templates/restorer/alternative-harness/src/phases/plan.ts.tmpl +25 -0
- package/dist/templates/restorer/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
- package/dist/templates/restorer/alternative-harness/test/coordinator.test.ts.tmpl +52 -0
- package/dist/templates/restorer/alternative-harness/test/unit.test.ts.tmpl +54 -0
- package/dist/templates/restorer/alternative-harness/tsconfig.json.tmpl +16 -0
- package/dist/templates/restorer/evaluator/README.md.tmpl +36 -0
- package/dist/templates/restorer/evaluator/gitignore.tmpl +3 -0
- package/dist/templates/restorer/evaluator/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/restorer/evaluator/package.json.tmpl +26 -0
- package/dist/templates/restorer/evaluator/src/index.ts.tmpl +35 -0
- package/dist/templates/restorer/evaluator/test/unit.test.ts.tmpl +48 -0
- package/dist/templates/restorer/evaluator/tsconfig.json.tmpl +16 -0
- package/dist/templates/restorer/forecaster/README.md.tmpl +25 -0
- package/dist/templates/restorer/forecaster/gitignore.tmpl +5 -0
- package/dist/templates/restorer/forecaster/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/restorer/forecaster/package.json.tmpl +26 -0
- package/dist/templates/restorer/forecaster/src/index.ts.tmpl +33 -0
- package/dist/templates/restorer/forecaster/test/unit.test.ts.tmpl +41 -0
- package/dist/templates/restorer/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/desired-state.d.ts +211 -21
- package/dist/types/desired-state.js +26 -15
- package/dist/types/desired-state.js.map +1 -1
- package/dist/types/envelope.d.ts +1473 -0
- package/dist/types/envelope.js +114 -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/intent.d.ts +276 -0
- package/dist/types/intent.js +74 -0
- package/dist/types/intent.js.map +1 -0
- 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 +23 -685
- package/dist/types/portfolio.js +16 -106
- package/dist/types/portfolio.js.map +1 -1
- package/dist/types/prediction-apy.d.ts +9 -344
- package/dist/types/prediction-apy.js +9 -65
- package/dist/types/prediction-apy.js.map +1 -1
- package/dist/types/prediction.d.ts +25 -396
- package/dist/types/prediction.js +5 -79
- package/dist/types/prediction.js.map +1 -1
- 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 +22 -0
- package/dist/util/path-safety.js +29 -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/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 +36 -11
- 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 +49 -0
- package/plugins/claude-code-learner/skills/coordinator/SKILL.md +131 -0
- package/plugins/claude-code-learner/skills/debrief/SKILL.md +71 -0
- package/plugins/claude-code-learner/skills/execute/SKILL.md +91 -0
- package/plugins/claude-code-learner/skills/improve/SKILL.md +57 -0
- package/plugins/claude-code-learner/skills/memory-consolidation/SKILL.md +57 -0
- package/plugins/claude-code-learner/skills/orient/SKILL.md +82 -0
- package/plugins/claude-code-learner/skills/plan/SKILL.md +54 -0
- package/plugins/claude-code-learner/skills/strategize/SKILL.md +63 -0
- package/skills/jinn-operator/SKILL.md +84 -35
- package/templates/plug-in/hook/README.md.tmpl +24 -0
- package/templates/plug-in/hook/gitignore.tmpl +3 -0
- package/templates/plug-in/hook/hooks/event.sh.tmpl +15 -0
- package/templates/plug-in/hook/jinn-plugin.json.tmpl +16 -0
- package/templates/plug-in/hook/package.json.tmpl +14 -0
- package/templates/plug-in/hook/test/manifest.test.ts.tmpl +21 -0
- package/templates/plug-in/mcp-tool/README.md.tmpl +26 -0
- package/templates/plug-in/mcp-tool/gitignore.tmpl +4 -0
- package/templates/plug-in/mcp-tool/jinn-plugin.json.tmpl +16 -0
- package/templates/plug-in/mcp-tool/package.json.tmpl +19 -0
- package/templates/plug-in/mcp-tool/src/server.ts.tmpl +17 -0
- package/templates/plug-in/mcp-tool/test/server.test.ts.tmpl +18 -0
- package/templates/plug-in/memory-backend/README.md.tmpl +33 -0
- package/templates/plug-in/memory-backend/gitignore.tmpl +4 -0
- package/templates/plug-in/memory-backend/jinn-plugin.json.tmpl +16 -0
- package/templates/plug-in/memory-backend/package.json.tmpl +19 -0
- package/templates/plug-in/memory-backend/src/server.ts.tmpl +23 -0
- package/templates/plug-in/memory-backend/test/server.test.ts.tmpl +17 -0
- package/templates/plug-in/phase-agent-override/README.md.tmpl +30 -0
- package/templates/plug-in/phase-agent-override/agents/agent.md.tmpl +26 -0
- package/templates/plug-in/phase-agent-override/gitignore.tmpl +3 -0
- package/templates/plug-in/phase-agent-override/jinn-plugin.json.tmpl +17 -0
- package/templates/plug-in/phase-agent-override/package.json.tmpl +14 -0
- package/templates/plug-in/phase-agent-override/test/manifest.test.ts.tmpl +24 -0
- package/templates/plug-in/skill-bundle/.claude-plugin/plugin.json.tmpl +5 -0
- package/templates/plug-in/skill-bundle/README.md.tmpl +28 -0
- package/templates/plug-in/skill-bundle/gitignore.tmpl +3 -0
- package/templates/plug-in/skill-bundle/jinn-plugin.json.tmpl +15 -0
- package/templates/plug-in/skill-bundle/package.json.tmpl +14 -0
- package/templates/plug-in/skill-bundle/skills/example/SKILL.md.tmpl +14 -0
- package/templates/plug-in/skill-bundle/test/manifest.test.ts.tmpl +21 -0
- package/templates/plug-in/topic-explorer/README.md.tmpl +24 -0
- package/templates/plug-in/topic-explorer/agents/explorer.md.tmpl +26 -0
- package/templates/plug-in/topic-explorer/gitignore.tmpl +3 -0
- package/templates/plug-in/topic-explorer/jinn-plugin.json.tmpl +17 -0
- package/templates/plug-in/topic-explorer/package.json.tmpl +14 -0
- package/templates/plug-in/topic-explorer/test/manifest.test.ts.tmpl +22 -0
- package/templates/restorer/alternative-harness/README.md.tmpl +44 -0
- package/templates/restorer/alternative-harness/gitignore.tmpl +3 -0
- package/templates/restorer/alternative-harness/jinn.manifest.json.tmpl +22 -0
- package/templates/restorer/alternative-harness/package.json.tmpl +26 -0
- package/templates/restorer/alternative-harness/src/coordinator.ts.tmpl +50 -0
- package/templates/restorer/alternative-harness/src/harness.ts.tmpl +31 -0
- package/templates/restorer/alternative-harness/src/index.ts.tmpl +44 -0
- package/templates/restorer/alternative-harness/src/mock-harness.ts.tmpl +41 -0
- package/templates/restorer/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
- package/templates/restorer/alternative-harness/src/phases/execute.ts.tmpl +33 -0
- package/templates/restorer/alternative-harness/src/phases/improve.ts.tmpl +31 -0
- package/templates/restorer/alternative-harness/src/phases/memory.ts.tmpl +31 -0
- package/templates/restorer/alternative-harness/src/phases/orient.ts.tmpl +21 -0
- package/templates/restorer/alternative-harness/src/phases/plan.ts.tmpl +25 -0
- package/templates/restorer/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
- package/templates/restorer/alternative-harness/test/coordinator.test.ts.tmpl +52 -0
- package/templates/restorer/alternative-harness/test/unit.test.ts.tmpl +54 -0
- package/templates/restorer/alternative-harness/tsconfig.json.tmpl +16 -0
- package/templates/restorer/evaluator/README.md.tmpl +36 -0
- package/templates/restorer/evaluator/gitignore.tmpl +3 -0
- package/templates/restorer/evaluator/jinn.manifest.json.tmpl +22 -0
- package/templates/restorer/evaluator/package.json.tmpl +26 -0
- package/templates/restorer/evaluator/src/index.ts.tmpl +35 -0
- package/templates/restorer/evaluator/test/unit.test.ts.tmpl +48 -0
- package/templates/restorer/evaluator/tsconfig.json.tmpl +16 -0
- package/templates/restorer/forecaster/README.md.tmpl +25 -0
- package/templates/restorer/forecaster/gitignore.tmpl +5 -0
- package/templates/restorer/forecaster/jinn.manifest.json.tmpl +22 -0
- package/templates/restorer/forecaster/package.json.tmpl +26 -0
- package/templates/restorer/forecaster/src/index.ts.tmpl +33 -0
- package/templates/restorer/forecaster/test/unit.test.ts.tmpl +41 -0
- package/templates/restorer/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/quickstart.js +0 -330
- package/dist/cli/commands/quickstart.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/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/cli/commands/{quickstart.d.ts → ui.d.ts} +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MockMessenger submission path for the cross-chain JINN claim loop.
|
|
3
|
+
*
|
|
4
|
+
* Used when `jinnMessengerMode === 'mock'` — primarily for testnet burn-in
|
|
5
|
+
* (Phase D / r5z) when canonical OP-Stack finality is impractical and CI.
|
|
6
|
+
* The daemon's wallet must be the MockMessenger's owner during burn-in;
|
|
7
|
+
* `setFixture` is `onlyOwner`.
|
|
8
|
+
*
|
|
9
|
+
* Flow:
|
|
10
|
+
* 1. Read the latest ClaimTicket event from the JinnClaimEmitter on L2.
|
|
11
|
+
* 2. Plant the matching fixture on the L1 MockMessenger via `setFixture`.
|
|
12
|
+
* 3. Submit `JinnDistributor.claim(abi.encode(claimId))`.
|
|
13
|
+
*
|
|
14
|
+
* The MockMessenger encodes the proof as `abi.encode(uint256 claimId)` —
|
|
15
|
+
* the messenger looks up the planted snapshot fixture and returns it. The
|
|
16
|
+
* distributor's per-service accumulator handles replay; resubmitting the
|
|
17
|
+
* same `proof` mints zero on the second call.
|
|
18
|
+
*/
|
|
19
|
+
import { type Address, type Hex, type PublicClient, type WalletClient } from 'viem';
|
|
20
|
+
import { CLAIM_TICKET_TOPIC0 } from '../earning/contracts.js';
|
|
21
|
+
export interface MockClaimSnapshot {
|
|
22
|
+
claimId: bigint;
|
|
23
|
+
serviceId: bigint;
|
|
24
|
+
verifiedCreations: bigint;
|
|
25
|
+
noveltyWeightedRestorationDeliveries: bigint;
|
|
26
|
+
evaluationDeliveryCount: bigint;
|
|
27
|
+
multisig: Address;
|
|
28
|
+
claimer: Address;
|
|
29
|
+
/** L2 transaction hash of the emitClaim. */
|
|
30
|
+
emitTxHash: Hex;
|
|
31
|
+
/** L2 block number containing emitClaim. */
|
|
32
|
+
emitBlockNumber: bigint;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Read the latest ClaimTicket emitted by `claimEmitter` for the given
|
|
36
|
+
* `serviceId`, optionally bounded to a recent block range. Returns null when
|
|
37
|
+
* no matching event exists.
|
|
38
|
+
*/
|
|
39
|
+
export declare function fetchLatestClaimTicket(l2Client: PublicClient, claimEmitter: Address, serviceId: bigint, options?: {
|
|
40
|
+
fromBlock?: bigint;
|
|
41
|
+
toBlock?: bigint | 'latest';
|
|
42
|
+
}): Promise<MockClaimSnapshot | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Plant a fixture on the L1 MockMessenger that mirrors the L2 ClaimTicket
|
|
45
|
+
* snapshot exactly. The daemon's L1 wallet must be the MockMessenger's
|
|
46
|
+
* owner. Returns the L1 tx hash.
|
|
47
|
+
*/
|
|
48
|
+
export declare function plantMockFixture(l1Client: PublicClient, l1Wallet: WalletClient, messenger: Address, snapshot: MockClaimSnapshot): Promise<Hex>;
|
|
49
|
+
/**
|
|
50
|
+
* Encode the MockMessenger proof: `abi.encode(uint256 claimId)`. The
|
|
51
|
+
* messenger looks up the previously planted fixture by claimId.
|
|
52
|
+
*/
|
|
53
|
+
export declare function encodeMockProof(claimId: bigint): Hex;
|
|
54
|
+
/**
|
|
55
|
+
* Submit `JinnDistributor.claim(proof)` on L1. Returns the L1 tx hash.
|
|
56
|
+
*
|
|
57
|
+
* Idempotent at the contract layer — the distributor's per-service
|
|
58
|
+
* accumulator clamps repeated submissions to zero mint.
|
|
59
|
+
*/
|
|
60
|
+
export declare function submitMockClaim(l1Client: PublicClient, l1Wallet: WalletClient, distributor: Address, claimId: bigint): Promise<Hex>;
|
|
61
|
+
export { CLAIM_TICKET_TOPIC0 };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MockMessenger submission path for the cross-chain JINN claim loop.
|
|
3
|
+
*
|
|
4
|
+
* Used when `jinnMessengerMode === 'mock'` — primarily for testnet burn-in
|
|
5
|
+
* (Phase D / r5z) when canonical OP-Stack finality is impractical and CI.
|
|
6
|
+
* The daemon's wallet must be the MockMessenger's owner during burn-in;
|
|
7
|
+
* `setFixture` is `onlyOwner`.
|
|
8
|
+
*
|
|
9
|
+
* Flow:
|
|
10
|
+
* 1. Read the latest ClaimTicket event from the JinnClaimEmitter on L2.
|
|
11
|
+
* 2. Plant the matching fixture on the L1 MockMessenger via `setFixture`.
|
|
12
|
+
* 3. Submit `JinnDistributor.claim(abi.encode(claimId))`.
|
|
13
|
+
*
|
|
14
|
+
* The MockMessenger encodes the proof as `abi.encode(uint256 claimId)` —
|
|
15
|
+
* the messenger looks up the planted snapshot fixture and returns it. The
|
|
16
|
+
* distributor's per-service accumulator handles replay; resubmitting the
|
|
17
|
+
* same `proof` mints zero on the second call.
|
|
18
|
+
*/
|
|
19
|
+
import { decodeEventLog, encodeAbiParameters, } from 'viem';
|
|
20
|
+
import { CLAIM_TICKET_TOPIC0, JINN_CLAIM_EMITTER_ABI, JINN_DISTRIBUTOR_ABI, MOCK_MESSENGER_ABI, } from '../earning/contracts.js';
|
|
21
|
+
/**
|
|
22
|
+
* Read the latest ClaimTicket emitted by `claimEmitter` for the given
|
|
23
|
+
* `serviceId`, optionally bounded to a recent block range. Returns null when
|
|
24
|
+
* no matching event exists.
|
|
25
|
+
*/
|
|
26
|
+
export async function fetchLatestClaimTicket(l2Client, claimEmitter, serviceId, options = {}) {
|
|
27
|
+
const fromBlock = options.fromBlock ?? 0n;
|
|
28
|
+
const toBlock = options.toBlock ?? 'latest';
|
|
29
|
+
const logs = await l2Client.getLogs({
|
|
30
|
+
address: claimEmitter,
|
|
31
|
+
event: JINN_CLAIM_EMITTER_ABI[0],
|
|
32
|
+
args: { serviceId },
|
|
33
|
+
fromBlock,
|
|
34
|
+
toBlock,
|
|
35
|
+
});
|
|
36
|
+
if (logs.length === 0)
|
|
37
|
+
return null;
|
|
38
|
+
// Sort by blockNumber, logIndex; the last one is the latest.
|
|
39
|
+
logs.sort((a, b) => {
|
|
40
|
+
const aBn = a.blockNumber ?? 0n;
|
|
41
|
+
const bBn = b.blockNumber ?? 0n;
|
|
42
|
+
if (aBn === bBn)
|
|
43
|
+
return (a.logIndex ?? 0) - (b.logIndex ?? 0);
|
|
44
|
+
return aBn < bBn ? -1 : 1;
|
|
45
|
+
});
|
|
46
|
+
const latest = logs[logs.length - 1];
|
|
47
|
+
const decoded = decodeEventLog({
|
|
48
|
+
abi: JINN_CLAIM_EMITTER_ABI,
|
|
49
|
+
data: latest.data,
|
|
50
|
+
topics: latest.topics,
|
|
51
|
+
eventName: 'ClaimTicket',
|
|
52
|
+
});
|
|
53
|
+
const args = decoded.args;
|
|
54
|
+
return {
|
|
55
|
+
claimId: args.claimId,
|
|
56
|
+
serviceId: args.serviceId,
|
|
57
|
+
verifiedCreations: args.verifiedCreations,
|
|
58
|
+
noveltyWeightedRestorationDeliveries: args.noveltyWeightedRestorationDeliveries,
|
|
59
|
+
evaluationDeliveryCount: args.evaluationDeliveryCount,
|
|
60
|
+
multisig: args.multisig,
|
|
61
|
+
claimer: args.claimer,
|
|
62
|
+
emitTxHash: latest.transactionHash ?? '0x',
|
|
63
|
+
emitBlockNumber: latest.blockNumber ?? 0n,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Plant a fixture on the L1 MockMessenger that mirrors the L2 ClaimTicket
|
|
68
|
+
* snapshot exactly. The daemon's L1 wallet must be the MockMessenger's
|
|
69
|
+
* owner. Returns the L1 tx hash.
|
|
70
|
+
*/
|
|
71
|
+
export async function plantMockFixture(l1Client, l1Wallet, messenger, snapshot) {
|
|
72
|
+
const account = l1Wallet.account;
|
|
73
|
+
if (!account)
|
|
74
|
+
throw new Error('L1 wallet has no account configured');
|
|
75
|
+
const { request } = await l1Client.simulateContract({
|
|
76
|
+
address: messenger,
|
|
77
|
+
abi: MOCK_MESSENGER_ABI,
|
|
78
|
+
functionName: 'setFixture',
|
|
79
|
+
args: [
|
|
80
|
+
snapshot.claimId,
|
|
81
|
+
{
|
|
82
|
+
serviceId: snapshot.serviceId,
|
|
83
|
+
verifiedCreations: snapshot.verifiedCreations,
|
|
84
|
+
noveltyWeightedRestorationDeliveries: snapshot.noveltyWeightedRestorationDeliveries,
|
|
85
|
+
evaluationDeliveryCount: snapshot.evaluationDeliveryCount,
|
|
86
|
+
multisig: snapshot.multisig,
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
account,
|
|
90
|
+
});
|
|
91
|
+
return l1Wallet.writeContract(request);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Encode the MockMessenger proof: `abi.encode(uint256 claimId)`. The
|
|
95
|
+
* messenger looks up the previously planted fixture by claimId.
|
|
96
|
+
*/
|
|
97
|
+
export function encodeMockProof(claimId) {
|
|
98
|
+
return encodeAbiParameters([{ type: 'uint256' }], [claimId]);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Submit `JinnDistributor.claim(proof)` on L1. Returns the L1 tx hash.
|
|
102
|
+
*
|
|
103
|
+
* Idempotent at the contract layer — the distributor's per-service
|
|
104
|
+
* accumulator clamps repeated submissions to zero mint.
|
|
105
|
+
*/
|
|
106
|
+
export async function submitMockClaim(l1Client, l1Wallet, distributor, claimId) {
|
|
107
|
+
const account = l1Wallet.account;
|
|
108
|
+
if (!account)
|
|
109
|
+
throw new Error('L1 wallet has no account configured');
|
|
110
|
+
const proof = encodeMockProof(claimId);
|
|
111
|
+
const { request } = await l1Client.simulateContract({
|
|
112
|
+
address: distributor,
|
|
113
|
+
abi: JINN_DISTRIBUTOR_ABI,
|
|
114
|
+
functionName: 'claim',
|
|
115
|
+
args: [proof],
|
|
116
|
+
account,
|
|
117
|
+
});
|
|
118
|
+
return l1Wallet.writeContract(request);
|
|
119
|
+
}
|
|
120
|
+
// Re-export for tests that want to assert on the topic0 directly.
|
|
121
|
+
export { CLAIM_TICKET_TOPIC0 };
|
|
122
|
+
//# sourceMappingURL=jinn-claim-loop-mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jinn-claim-loop-mock.js","sourceRoot":"","sources":["../../src/daemon/jinn-claim-loop-mock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-chain JINN claim loop (Phase B / jinn-mono-7x5).
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the two-tx flow that turns on-chain protocol work on L2 into
|
|
5
|
+
* JINN mints on L1:
|
|
6
|
+
*
|
|
7
|
+
* 1. Step A — emit on Base. Call `JinnClaimEmitter.emitClaim(serviceId)`
|
|
8
|
+
* on Base / Base Sepolia. The event records the three counters
|
|
9
|
+
* (`verifiedCreations`, `noveltyWeightedCounts`, `evaluationDeliveryCount`)
|
|
10
|
+
* atomically at one block.
|
|
11
|
+
* 2. Step B — wait for finality. In `canonical` mode, wait for the
|
|
12
|
+
* OP dispute game to resolve and portal finality to elapse, then build
|
|
13
|
+
* the OP-Stack storage proof. In `mock` mode, plant the matching fixture on the L1
|
|
14
|
+
* MockMessenger.
|
|
15
|
+
* 3. Step C — submit on L1. Call `JinnDistributor.claim(proof)` on
|
|
16
|
+
* Sepolia / Ethereum. The distributor verifies, applies channel
|
|
17
|
+
* weights, and mints to the operator multisig + DAO Timelock.
|
|
18
|
+
*
|
|
19
|
+
* The loop is disabled when no `distributorAddress` is configured. Each
|
|
20
|
+
* tick iterates over staked services in the FleetStateStore. Failures are
|
|
21
|
+
* logged and surfaced via `tick_error` observability events; they don't
|
|
22
|
+
* crash the daemon. Replay protection lives entirely in the distributor's
|
|
23
|
+
* accumulators — repeated submissions are no-ops on the second mint.
|
|
24
|
+
*
|
|
25
|
+
* Configuration: `jinnClaimLoopIntervalMs` (default 1h), `jinnMessengerMode`
|
|
26
|
+
* (`canonical` | `mock`). The `mock` path requires the daemon's L1 wallet to
|
|
27
|
+
* be the MockMessenger's owner (set at deploy).
|
|
28
|
+
*
|
|
29
|
+
* Automated `run()` / `runOnce()` **only execute mock-mode** emit→fixture→claim.
|
|
30
|
+
* When `jinnMessengerMode === 'canonical'`, scheduled ticks **skip** emitting:
|
|
31
|
+
* canonical OP-Stack finality is multi-day (see R-1); operators should use mock
|
|
32
|
+
* for burn-in and run `tsx scripts/verify-canonical-canary.ts` for
|
|
33
|
+
* verifier-only proofs after an intentional L2 emit.
|
|
34
|
+
*/
|
|
35
|
+
import type { Address, Hex, PublicClient, WalletClient } from 'viem';
|
|
36
|
+
import type { FleetStateStore } from '../earning/store.js';
|
|
37
|
+
import type { Store } from '../store/store.js';
|
|
38
|
+
export type JinnMessengerMode = 'canonical' | 'mock';
|
|
39
|
+
export interface JinnClaimLoopConfig {
|
|
40
|
+
intervalMs: number;
|
|
41
|
+
/** PublicClient bound to the L2 measurement chain (Base / Base Sepolia). */
|
|
42
|
+
l2Client: PublicClient;
|
|
43
|
+
/**
|
|
44
|
+
* Optional archive/proof RPC client for canonical mode. Historical
|
|
45
|
+
* `eth_getProof` at the dispute game's L2 block can require a stronger
|
|
46
|
+
* endpoint than the daemon's normal L2 RPC.
|
|
47
|
+
*/
|
|
48
|
+
l2ProofClient?: PublicClient;
|
|
49
|
+
/** WalletClient bound to L2 — pays gas for `emitClaim`. */
|
|
50
|
+
l2Wallet: WalletClient;
|
|
51
|
+
/** PublicClient bound to the L1 governance chain (Ethereum / Sepolia). */
|
|
52
|
+
l1Client: PublicClient;
|
|
53
|
+
/** WalletClient bound to L1 — pays gas for `setFixture` (mock) + `claim`. */
|
|
54
|
+
l1Wallet: WalletClient;
|
|
55
|
+
/** Per-service state. We tick each service with a stake. */
|
|
56
|
+
store: FleetStateStore;
|
|
57
|
+
chain: 'base' | 'base-sepolia';
|
|
58
|
+
/** L2 JinnClaimEmitter address. Required. */
|
|
59
|
+
claimEmitterAddress: Address;
|
|
60
|
+
/** L1 JinnDistributor address. Required. */
|
|
61
|
+
distributorAddress: Address;
|
|
62
|
+
/** L1 messenger address. Required (MockMessenger or CanonicalOpStackMessenger). */
|
|
63
|
+
messengerAddress: Address;
|
|
64
|
+
/** 'canonical' or 'mock'. Defaults to 'canonical'. */
|
|
65
|
+
messengerMode: JinnMessengerMode;
|
|
66
|
+
/** Canonical-mode only — L1 OptimismPortal2 anchoring L2 output roots. */
|
|
67
|
+
optimismPortalAddress?: Address;
|
|
68
|
+
/** Canonical-mode only — L1 DisputeGameFactory. */
|
|
69
|
+
disputeGameFactoryAddress?: Address;
|
|
70
|
+
/** Daemon observability sink. */
|
|
71
|
+
jinnStore?: Store;
|
|
72
|
+
}
|
|
73
|
+
export interface JinnClaimTickResult {
|
|
74
|
+
ticks: number;
|
|
75
|
+
emits: number;
|
|
76
|
+
submits: number;
|
|
77
|
+
errors: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The orchestrator. One loop, one method per stage so they're individually
|
|
81
|
+
* testable. Failures bubble to `runOnce` which records them and continues
|
|
82
|
+
* to the next service — a single bad service must not stall the fleet.
|
|
83
|
+
*/
|
|
84
|
+
export declare class JinnClaimLoop {
|
|
85
|
+
private readonly config;
|
|
86
|
+
private stopped;
|
|
87
|
+
constructor(config: JinnClaimLoopConfig);
|
|
88
|
+
stop(): void;
|
|
89
|
+
/**
|
|
90
|
+
* One tick: iterate the staked services and run emit → wait → submit for
|
|
91
|
+
* each. Returns counters useful for tests and operational dashboards.
|
|
92
|
+
*/
|
|
93
|
+
runOnce(): Promise<JinnClaimTickResult>;
|
|
94
|
+
/**
|
|
95
|
+
* One service's full Step A → Step B → Step C run. Split out so tests
|
|
96
|
+
* can drive a single service end-to-end without the iteration scaffold.
|
|
97
|
+
*/
|
|
98
|
+
tickService(args: {
|
|
99
|
+
serviceId: bigint;
|
|
100
|
+
displayIndex: number;
|
|
101
|
+
multisig: Address;
|
|
102
|
+
}, result: JinnClaimTickResult): Promise<void>;
|
|
103
|
+
/** Step A — `JinnClaimEmitter.emitClaim(serviceId)` on L2. */
|
|
104
|
+
emitOnL2(serviceId: bigint): Promise<Hex>;
|
|
105
|
+
/** Mock-mode Step B + C: read the L2 event, plant fixture on L1, claim. */
|
|
106
|
+
submitMock(args: {
|
|
107
|
+
serviceId: bigint;
|
|
108
|
+
emitTxHash: Hex;
|
|
109
|
+
multisig: Address;
|
|
110
|
+
}): Promise<Hex>;
|
|
111
|
+
/** Canonical-mode Step B + C: build OP-Stack proof, submit on L1. */
|
|
112
|
+
submitCanonical(args: {
|
|
113
|
+
serviceId: bigint;
|
|
114
|
+
emitTxHash: Hex;
|
|
115
|
+
}): Promise<Hex>;
|
|
116
|
+
/**
|
|
117
|
+
* Read the latest ClaimTicket for `serviceId` near `emitTxHash`. Bounded
|
|
118
|
+
* to the emit block to avoid scanning the full chain on every tick.
|
|
119
|
+
*/
|
|
120
|
+
private readSnapshot;
|
|
121
|
+
/** Loop forever, sleeping `intervalMs` between ticks. */
|
|
122
|
+
run(): Promise<void>;
|
|
123
|
+
}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-chain JINN claim loop (Phase B / jinn-mono-7x5).
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the two-tx flow that turns on-chain protocol work on L2 into
|
|
5
|
+
* JINN mints on L1:
|
|
6
|
+
*
|
|
7
|
+
* 1. Step A — emit on Base. Call `JinnClaimEmitter.emitClaim(serviceId)`
|
|
8
|
+
* on Base / Base Sepolia. The event records the three counters
|
|
9
|
+
* (`verifiedCreations`, `noveltyWeightedCounts`, `evaluationDeliveryCount`)
|
|
10
|
+
* atomically at one block.
|
|
11
|
+
* 2. Step B — wait for finality. In `canonical` mode, wait for the
|
|
12
|
+
* OP dispute game to resolve and portal finality to elapse, then build
|
|
13
|
+
* the OP-Stack storage proof. In `mock` mode, plant the matching fixture on the L1
|
|
14
|
+
* MockMessenger.
|
|
15
|
+
* 3. Step C — submit on L1. Call `JinnDistributor.claim(proof)` on
|
|
16
|
+
* Sepolia / Ethereum. The distributor verifies, applies channel
|
|
17
|
+
* weights, and mints to the operator multisig + DAO Timelock.
|
|
18
|
+
*
|
|
19
|
+
* The loop is disabled when no `distributorAddress` is configured. Each
|
|
20
|
+
* tick iterates over staked services in the FleetStateStore. Failures are
|
|
21
|
+
* logged and surfaced via `tick_error` observability events; they don't
|
|
22
|
+
* crash the daemon. Replay protection lives entirely in the distributor's
|
|
23
|
+
* accumulators — repeated submissions are no-ops on the second mint.
|
|
24
|
+
*
|
|
25
|
+
* Configuration: `jinnClaimLoopIntervalMs` (default 1h), `jinnMessengerMode`
|
|
26
|
+
* (`canonical` | `mock`). The `mock` path requires the daemon's L1 wallet to
|
|
27
|
+
* be the MockMessenger's owner (set at deploy).
|
|
28
|
+
*
|
|
29
|
+
* Automated `run()` / `runOnce()` **only execute mock-mode** emit→fixture→claim.
|
|
30
|
+
* When `jinnMessengerMode === 'canonical'`, scheduled ticks **skip** emitting:
|
|
31
|
+
* canonical OP-Stack finality is multi-day (see R-1); operators should use mock
|
|
32
|
+
* for burn-in and run `tsx scripts/verify-canonical-canary.ts` for
|
|
33
|
+
* verifier-only proofs after an intentional L2 emit.
|
|
34
|
+
*/
|
|
35
|
+
import { getAddress } from 'viem';
|
|
36
|
+
import { isOperationalServiceStep } from '../earning/types.js';
|
|
37
|
+
import { base, baseSepolia } from 'viem/chains';
|
|
38
|
+
import { emitEvent } from '../observability/emit-event.js';
|
|
39
|
+
import { displayFleetServiceIndex } from '../earning/fleet-display-index.js';
|
|
40
|
+
import { waitForTransactionReceiptWithRetry } from '../tx-retry.js';
|
|
41
|
+
import { CLAIM_TICKET_TOPIC0, JINN_CLAIM_EMITTER_ABI } from '../earning/contracts.js';
|
|
42
|
+
import { fetchLatestClaimTicket, plantMockFixture, submitMockClaim, } from './jinn-claim-loop-mock.js';
|
|
43
|
+
import { buildCanonicalProof, decodeClaimTicketFromReceipt, verifyCanonicalClaimCanary, } from './jinn-claim-loop-canonical.js';
|
|
44
|
+
/**
|
|
45
|
+
* The orchestrator. One loop, one method per stage so they're individually
|
|
46
|
+
* testable. Failures bubble to `runOnce` which records them and continues
|
|
47
|
+
* to the next service — a single bad service must not stall the fleet.
|
|
48
|
+
*/
|
|
49
|
+
export class JinnClaimLoop {
|
|
50
|
+
config;
|
|
51
|
+
stopped = false;
|
|
52
|
+
constructor(config) {
|
|
53
|
+
this.config = config;
|
|
54
|
+
}
|
|
55
|
+
stop() {
|
|
56
|
+
this.stopped = true;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* One tick: iterate the staked services and run emit → wait → submit for
|
|
60
|
+
* each. Returns counters useful for tests and operational dashboards.
|
|
61
|
+
*/
|
|
62
|
+
async runOnce() {
|
|
63
|
+
const result = { ticks: 0, emits: 0, submits: 0, errors: 0 };
|
|
64
|
+
// Spec / Phase D: MockMessenger drives automated Sepolia burn-in; canonical
|
|
65
|
+
// verification is verifier-only and must not spam emitClaim each interval.
|
|
66
|
+
if (this.config.messengerMode === 'canonical') {
|
|
67
|
+
const detail = '[jinn-claim] Automated runOnce skips messengerMode=canonical (multi-day OP finality). ' +
|
|
68
|
+
'Set jinnMessengerMode=mock for Sepolia burn-in, or run `tsx scripts/verify-canonical-canary.ts` ' +
|
|
69
|
+
'after finality with an existing L2 ClaimTicket tx.';
|
|
70
|
+
console.warn(detail);
|
|
71
|
+
if (this.config.jinnStore) {
|
|
72
|
+
emitEvent(this.config.jinnStore, {
|
|
73
|
+
kind: 'jinn_claim_canonical_skip',
|
|
74
|
+
outcome: 'warn',
|
|
75
|
+
detail,
|
|
76
|
+
}, 'jinn-claim');
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
const state = await this.config.store.load(this.config.chain);
|
|
81
|
+
for (const svc of state.services) {
|
|
82
|
+
if (this.stopped)
|
|
83
|
+
break;
|
|
84
|
+
// Only services with a multisig + service id are eligible.
|
|
85
|
+
if (!isOperationalServiceStep(svc.step) && svc.step !== 'mech_deployed')
|
|
86
|
+
continue;
|
|
87
|
+
if (svc.service_id == null || !svc.safe_address)
|
|
88
|
+
continue;
|
|
89
|
+
const displayIndex = displayFleetServiceIndex(svc);
|
|
90
|
+
result.ticks++;
|
|
91
|
+
try {
|
|
92
|
+
await this.tickService({
|
|
93
|
+
serviceId: BigInt(svc.service_id),
|
|
94
|
+
displayIndex,
|
|
95
|
+
multisig: getAddress(svc.safe_address),
|
|
96
|
+
}, result);
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
result.errors++;
|
|
100
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
101
|
+
console.error(`[jinn-claim] Service ${svc.service_id}: ${detail}`);
|
|
102
|
+
if (this.config.jinnStore) {
|
|
103
|
+
emitEvent(this.config.jinnStore, {
|
|
104
|
+
kind: 'tick_error',
|
|
105
|
+
serviceIndex: displayIndex,
|
|
106
|
+
outcome: 'failed',
|
|
107
|
+
detail,
|
|
108
|
+
}, 'jinn-claim');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* One service's full Step A → Step B → Step C run. Split out so tests
|
|
116
|
+
* can drive a single service end-to-end without the iteration scaffold.
|
|
117
|
+
*/
|
|
118
|
+
async tickService(args, result) {
|
|
119
|
+
const { serviceId, displayIndex, multisig } = args;
|
|
120
|
+
// Step A — emit ClaimTicket on L2.
|
|
121
|
+
const emitTxHash = await this.emitOnL2(serviceId);
|
|
122
|
+
result.emits++;
|
|
123
|
+
if (this.config.jinnStore) {
|
|
124
|
+
emitEvent(this.config.jinnStore, {
|
|
125
|
+
kind: 'jinn_claim_emitted',
|
|
126
|
+
serviceIndex: displayIndex,
|
|
127
|
+
txHash: emitTxHash,
|
|
128
|
+
outcome: 'ok',
|
|
129
|
+
detail: `Emitted ClaimTicket for service ${serviceId}`,
|
|
130
|
+
}, 'jinn-claim');
|
|
131
|
+
}
|
|
132
|
+
// Step B + C — diverge by mode.
|
|
133
|
+
let submitTxHash;
|
|
134
|
+
if (this.config.messengerMode === 'mock') {
|
|
135
|
+
submitTxHash = await this.submitMock({
|
|
136
|
+
serviceId,
|
|
137
|
+
emitTxHash,
|
|
138
|
+
multisig,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
submitTxHash = await this.submitCanonical({
|
|
143
|
+
serviceId,
|
|
144
|
+
emitTxHash,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
result.submits++;
|
|
148
|
+
if (this.config.jinnStore) {
|
|
149
|
+
emitEvent(this.config.jinnStore, {
|
|
150
|
+
kind: 'jinn_claim_submitted',
|
|
151
|
+
serviceIndex: displayIndex,
|
|
152
|
+
txHash: submitTxHash,
|
|
153
|
+
outcome: 'ok',
|
|
154
|
+
detail: `Submitted ${this.config.messengerMode} claim for service ${serviceId}`,
|
|
155
|
+
}, 'jinn-claim');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/** Step A — `JinnClaimEmitter.emitClaim(serviceId)` on L2. */
|
|
159
|
+
async emitOnL2(serviceId) {
|
|
160
|
+
const account = this.config.l2Wallet.account;
|
|
161
|
+
if (!account)
|
|
162
|
+
throw new Error('L2 wallet has no account configured');
|
|
163
|
+
const { request } = await this.config.l2Client.simulateContract({
|
|
164
|
+
address: this.config.claimEmitterAddress,
|
|
165
|
+
abi: JINN_CLAIM_EMITTER_ABI,
|
|
166
|
+
functionName: 'emitClaim',
|
|
167
|
+
args: [serviceId],
|
|
168
|
+
account,
|
|
169
|
+
});
|
|
170
|
+
const hash = await this.config.l2Wallet.writeContract(request);
|
|
171
|
+
await waitForTransactionReceiptWithRetry(this.config.l2Client, hash);
|
|
172
|
+
return hash;
|
|
173
|
+
}
|
|
174
|
+
/** Mock-mode Step B + C: read the L2 event, plant fixture on L1, claim. */
|
|
175
|
+
async submitMock(args) {
|
|
176
|
+
const snapshot = await this.readSnapshot(args.serviceId, args.emitTxHash);
|
|
177
|
+
if (snapshot.multisig.toLowerCase() !== args.multisig.toLowerCase()) {
|
|
178
|
+
throw new Error(`[jinn-claim] L2 ClaimTicket multisig ${snapshot.multisig} does not match ` +
|
|
179
|
+
`service multisig ${args.multisig} — refusing to plant mock fixture`);
|
|
180
|
+
}
|
|
181
|
+
// Plant the fixture (daemon wallet must be MockMessenger.owner).
|
|
182
|
+
const fixtureTx = await plantMockFixture(this.config.l1Client, this.config.l1Wallet, this.config.messengerAddress, snapshot);
|
|
183
|
+
await waitForTransactionReceiptWithRetry(this.config.l1Client, fixtureTx);
|
|
184
|
+
// Submit the claim on L1.
|
|
185
|
+
const claimTx = await submitMockClaim(this.config.l1Client, this.config.l1Wallet, this.config.distributorAddress, snapshot.claimId);
|
|
186
|
+
await waitForTransactionReceiptWithRetry(this.config.l1Client, claimTx);
|
|
187
|
+
return claimTx;
|
|
188
|
+
}
|
|
189
|
+
/** Canonical-mode Step B + C: build OP-Stack proof, submit on L1. */
|
|
190
|
+
async submitCanonical(args) {
|
|
191
|
+
if (!this.config.optimismPortalAddress || !this.config.disputeGameFactoryAddress) {
|
|
192
|
+
throw new Error('[jinn-claim-loop] canonical mode requires optimismPortalAddress + disputeGameFactoryAddress');
|
|
193
|
+
}
|
|
194
|
+
// Use retrying helper for same reason as readSnapshot — RPC eventual consistency.
|
|
195
|
+
const receipt = await waitForTransactionReceiptWithRetry(this.config.l2Client, args.emitTxHash);
|
|
196
|
+
const claimLog = receipt.logs.find((log) => log.address.toLowerCase() === this.config.claimEmitterAddress.toLowerCase()
|
|
197
|
+
&& log.topics[0]?.toLowerCase() === CLAIM_TICKET_TOPIC0.toLowerCase());
|
|
198
|
+
if (!claimLog) {
|
|
199
|
+
throw new Error(`[jinn-claim-loop] no ClaimTicket log in receipt ${args.emitTxHash}`);
|
|
200
|
+
}
|
|
201
|
+
const snapshot = decodeClaimTicketFromReceipt(receipt.logs, this.config.claimEmitterAddress, claimLog.logIndex ?? 0);
|
|
202
|
+
const result = await buildCanonicalProof({
|
|
203
|
+
l1Client: this.config.l1Client,
|
|
204
|
+
l2ProofClient: this.config.l2ProofClient ?? this.config.l2Client,
|
|
205
|
+
targetChain: this.config.chain === 'base-sepolia' ? baseSepolia : base,
|
|
206
|
+
optimismPortal: this.config.optimismPortalAddress,
|
|
207
|
+
disputeGameFactory: this.config.disputeGameFactoryAddress,
|
|
208
|
+
claimEmitter: this.config.claimEmitterAddress,
|
|
209
|
+
}, { snapshot, l2BlockNumber: receipt.blockNumber });
|
|
210
|
+
await verifyCanonicalClaimCanary(this.config.l1Client, this.config.messengerAddress, result.proof);
|
|
211
|
+
// Verifier-only canary path: no L1 transaction submitted; return the L2 emit tx.
|
|
212
|
+
return args.emitTxHash;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Read the latest ClaimTicket for `serviceId` near `emitTxHash`. Bounded
|
|
216
|
+
* to the emit block to avoid scanning the full chain on every tick.
|
|
217
|
+
*/
|
|
218
|
+
async readSnapshot(serviceId, emitTxHash) {
|
|
219
|
+
// Use the retrying helper because Tenderly's L2 RPC is load-balanced and
|
|
220
|
+
// can return "receipt not found" briefly after the tx lands when the
|
|
221
|
+
// request hits a backend that hasn't propagated the receipt yet.
|
|
222
|
+
const receipt = await waitForTransactionReceiptWithRetry(this.config.l2Client, emitTxHash);
|
|
223
|
+
// Search a small window around the emit block.
|
|
224
|
+
const fromBlock = receipt.blockNumber > 5n ? receipt.blockNumber - 5n : 0n;
|
|
225
|
+
const toBlock = receipt.blockNumber + 5n;
|
|
226
|
+
const snapshot = await fetchLatestClaimTicket(this.config.l2Client, this.config.claimEmitterAddress, serviceId, { fromBlock, toBlock });
|
|
227
|
+
if (!snapshot) {
|
|
228
|
+
throw new Error(`[jinn-claim] no ClaimTicket event for service ${serviceId} near tx ${emitTxHash}`);
|
|
229
|
+
}
|
|
230
|
+
return snapshot;
|
|
231
|
+
}
|
|
232
|
+
/** Loop forever, sleeping `intervalMs` between ticks. */
|
|
233
|
+
async run() {
|
|
234
|
+
if (this.config.intervalMs <= 0)
|
|
235
|
+
return;
|
|
236
|
+
while (!this.stopped) {
|
|
237
|
+
try {
|
|
238
|
+
await this.runOnce();
|
|
239
|
+
}
|
|
240
|
+
catch (err) {
|
|
241
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
242
|
+
console.error(`[jinn-claim] Tick failed (non-fatal): ${detail}`);
|
|
243
|
+
if (this.config.jinnStore) {
|
|
244
|
+
emitEvent(this.config.jinnStore, {
|
|
245
|
+
kind: 'tick_error',
|
|
246
|
+
outcome: 'failed',
|
|
247
|
+
detail,
|
|
248
|
+
}, 'jinn-claim');
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
this.config.jinnStore?.setConfigValue('last_jinn_claim_tick_at', new Date().toISOString());
|
|
252
|
+
await new Promise((r) => setTimeout(r, this.config.intervalMs));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=jinn-claim-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jinn-claim-loop.js","sourceRoot":"","sources":["../../src/daemon/jinn-claim-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import type { PublicClient } from 'viem';
|
|
|
10
10
|
import type { WalletClient } from 'viem';
|
|
11
11
|
import { FleetStateStore } from '../earning/store.js';
|
|
12
12
|
import { type StolasClaimTickResult } from '../earning/stolas-claim.js';
|
|
13
|
+
import type { FleetState } from '../earning/types.js';
|
|
13
14
|
import type { Store } from '../store/store.js';
|
|
14
15
|
export interface RewardClaimLoopConfig {
|
|
15
16
|
intervalMs: number;
|
|
@@ -28,6 +29,7 @@ export type RewardClaimTickConfig = Omit<RewardClaimLoopConfig, 'intervalMs'> &
|
|
|
28
29
|
strict?: boolean;
|
|
29
30
|
};
|
|
30
31
|
export declare function runRewardClaimOnce(cfg: RewardClaimTickConfig): Promise<StolasClaimTickResult>;
|
|
32
|
+
export declare function recordRewardClaimResult(jinnStore: Store, state: FleetState, result: StolasClaimTickResult, distributorAddress: string | undefined, source?: string): void;
|
|
31
33
|
export declare class RewardClaimLoop {
|
|
32
34
|
private readonly config;
|
|
33
35
|
private stopped;
|