@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,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ValidationRegistryClient — typed wrapper for the ERC-8004 ValidationRegistry
|
|
3
|
+
* contract.
|
|
4
|
+
*
|
|
5
|
+
* Phase 1b challenge mechanism. Per
|
|
6
|
+
* `docs/superpowers/specs/2026-04-27-erc-8004-entity-model-design.md` §4.4,
|
|
7
|
+
* Jinn challenges are anchored on the deployed `0x8004…` ValidationRegistry
|
|
8
|
+
* keyed by `(validatorAddress, agentId, requestHash)` where
|
|
9
|
+
* `requestHash = manifest.evidenceHash` — the same 32-byte hash JinnRouter
|
|
10
|
+
* already commits in `claimDelivery`. No new contracts are deployed; this
|
|
11
|
+
* client wraps the existing UUPS proxy.
|
|
12
|
+
*
|
|
13
|
+
* Wire shape (from /tmp/erc8004-ref/ValidationRegistryUpgradeable.sol):
|
|
14
|
+
* - validationRequest(validator, agentId, requestURI, requestHash) — only
|
|
15
|
+
* the agent owner / approved / operator can submit; reverts on duplicate
|
|
16
|
+
* `requestHash`.
|
|
17
|
+
* - validationResponse(requestHash, response, responseURI, responseHash, tag)
|
|
18
|
+
* — only the validator named in the request may respond; `response` is a
|
|
19
|
+
* 0..100 score.
|
|
20
|
+
* - getValidationStatus(requestHash) returns
|
|
21
|
+
* (validator, agentId, response, responseHash, tag, lastUpdate). The
|
|
22
|
+
* contract reverts on unknown `requestHash`.
|
|
23
|
+
* - getAgentValidations(agentId) → bytes32[]
|
|
24
|
+
* - getValidatorRequests(validator) → bytes32[]
|
|
25
|
+
*
|
|
26
|
+
* This module is intentionally **not wired into the daemon, evaluator, or CLI**.
|
|
27
|
+
* The UX of the challenge mechanism (who calls `requestValidation`, when, with
|
|
28
|
+
* what UI, with what validator-selection model) is a separate Phase 1b spec.
|
|
29
|
+
* This file ships the typed client; downstream beads consume it.
|
|
30
|
+
*/
|
|
31
|
+
import { type Address, type Hex, type PublicClient, type WalletClient } from 'viem';
|
|
32
|
+
import { VALIDATION_REGISTRY_ABI } from './abis.js';
|
|
33
|
+
import { VALIDATION_REGISTRY_ADDRESSES, getValidationRegistryAddress } from './addresses.js';
|
|
34
|
+
export { VALIDATION_REGISTRY_ABI, VALIDATION_REGISTRY_ADDRESSES, getValidationRegistryAddress, };
|
|
35
|
+
export type ValidationStatus = 'REQUESTED' | 'RESPONDED';
|
|
36
|
+
export interface ValidationRecord {
|
|
37
|
+
/** Same 32-byte hash committed by JinnRouter as `evidenceHash`. */
|
|
38
|
+
requestHash: Hex;
|
|
39
|
+
validatorAddress: Address;
|
|
40
|
+
agentId: bigint;
|
|
41
|
+
/**
|
|
42
|
+
* The `requestURI` provided at request time. NOTE: the deployed contract
|
|
43
|
+
* does not persist `requestURI` in storage — it appears only in the
|
|
44
|
+
* `ValidationRequest` event. This field is therefore left as an empty
|
|
45
|
+
* string when read back via `getStatus`; callers that need the URI must
|
|
46
|
+
* recover it from the indexed event log. Documented here so call sites
|
|
47
|
+
* don't accidentally rely on a value that round-trips through storage.
|
|
48
|
+
*/
|
|
49
|
+
requestURI: string;
|
|
50
|
+
status: ValidationStatus;
|
|
51
|
+
/** uint8 0..100. Present only when `status === 'RESPONDED'`. */
|
|
52
|
+
response?: number;
|
|
53
|
+
/** Same caveat as requestURI: only present in events, not in storage. */
|
|
54
|
+
responseURI?: string;
|
|
55
|
+
responseHash?: Hex;
|
|
56
|
+
tag?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface ValidationRegistryConfig {
|
|
59
|
+
validationRegistryAddress: Address;
|
|
60
|
+
/** Required for every read path. */
|
|
61
|
+
publicClient: PublicClient;
|
|
62
|
+
/** Required for write paths (`requestValidation`, `submitResponse`). */
|
|
63
|
+
walletClient?: WalletClient;
|
|
64
|
+
}
|
|
65
|
+
export declare class ValidationRegistryClient {
|
|
66
|
+
private readonly publicClient;
|
|
67
|
+
private readonly walletClient;
|
|
68
|
+
private readonly contractAddress;
|
|
69
|
+
constructor(config: ValidationRegistryConfig);
|
|
70
|
+
/**
|
|
71
|
+
* Submit a challenge — `validationRequest(validator, agentId, requestURI, requestHash)`.
|
|
72
|
+
*
|
|
73
|
+
* `requestHash` MUST equal `manifest.evidenceHash` (the same 32-byte hash
|
|
74
|
+
* JinnRouter committed in `claimDelivery`); see DR §4.4. The contract
|
|
75
|
+
* enforces uniqueness on `requestHash`, so duplicate calls revert.
|
|
76
|
+
*
|
|
77
|
+
* **Validator selection is open** at the contract level: any address may
|
|
78
|
+
* be passed as `validatorAddress`, and any caller authorised by the agent
|
|
79
|
+
* NFT (owner / approved / operator-for-all) may submit a request. Whether
|
|
80
|
+
* Jinn imposes an additional gating layer (whitelist, stake, randomized
|
|
81
|
+
* pool) is **deferred to a follow-up Phase 1b spec** and not enforced
|
|
82
|
+
* here.
|
|
83
|
+
*
|
|
84
|
+
* The agent-NFT permission check inside the contract means the caller's
|
|
85
|
+
* EOA / Safe must be authorised on `agentId` via `IdentityRegistry`
|
|
86
|
+
* (owner, getApproved, or isApprovedForAll). Callers should ensure this
|
|
87
|
+
* upstream — e.g. the operator submits requests against their own
|
|
88
|
+
* agentId.
|
|
89
|
+
*
|
|
90
|
+
* Returns the transaction hash. Caller is responsible for waiting on the
|
|
91
|
+
* receipt if they need confirmation semantics (kept off this path so the
|
|
92
|
+
* client is reusable from both EOA-direct and Safe-wrapped contexts —
|
|
93
|
+
* higher layers add the appropriate retry/confirm helper).
|
|
94
|
+
*/
|
|
95
|
+
requestValidation(args: {
|
|
96
|
+
validatorAddress: Address;
|
|
97
|
+
agentId: bigint;
|
|
98
|
+
requestURI: string;
|
|
99
|
+
requestHash: Hex;
|
|
100
|
+
}): Promise<Hex>;
|
|
101
|
+
/**
|
|
102
|
+
* Submit a response — `validationResponse(requestHash, response, responseURI,
|
|
103
|
+
* responseHash, tag)`.
|
|
104
|
+
*
|
|
105
|
+
* Validators only. The contract checks `msg.sender === validatorAddress`
|
|
106
|
+
* and `response <= 100`. Callers must use the wallet that was named as
|
|
107
|
+
* `validatorAddress` in the matching `requestValidation` call.
|
|
108
|
+
*/
|
|
109
|
+
submitResponse(args: {
|
|
110
|
+
requestHash: Hex;
|
|
111
|
+
/** uint8 0..100 score. */
|
|
112
|
+
response: number;
|
|
113
|
+
responseURI: string;
|
|
114
|
+
responseHash: Hex;
|
|
115
|
+
tag: string;
|
|
116
|
+
}): Promise<Hex>;
|
|
117
|
+
/**
|
|
118
|
+
* Fetch the current validation status for a given `requestHash`.
|
|
119
|
+
*
|
|
120
|
+
* Returns `null` if no request has been recorded for that hash. The
|
|
121
|
+
* deployed contract reverts (`"unknown"`) on unknown hashes; we catch and
|
|
122
|
+
* map that to `null` so callers can treat "not found" as a value rather
|
|
123
|
+
* than an exception.
|
|
124
|
+
*
|
|
125
|
+
* `requestURI` and `responseURI` are not persisted in contract storage —
|
|
126
|
+
* they appear only in the `ValidationRequest` / `ValidationResponse`
|
|
127
|
+
* events. The returned record therefore leaves `requestURI` empty and
|
|
128
|
+
* omits `responseURI`; callers that need them must read the indexed
|
|
129
|
+
* events.
|
|
130
|
+
*/
|
|
131
|
+
getStatus(requestHash: Hex): Promise<ValidationRecord | null>;
|
|
132
|
+
/**
|
|
133
|
+
* All `requestHash` values ever filed against `agentId`. Order is
|
|
134
|
+
* insertion order from contract storage (per
|
|
135
|
+
* `_agentValidations[agentId]`).
|
|
136
|
+
*/
|
|
137
|
+
getAgentValidations(agentId: bigint): Promise<Hex[]>;
|
|
138
|
+
/**
|
|
139
|
+
* All `requestHash` values ever assigned to `validatorAddress`. Order is
|
|
140
|
+
* insertion order from contract storage (per
|
|
141
|
+
* `_validatorRequests[validator]`).
|
|
142
|
+
*/
|
|
143
|
+
getValidatorRequests(validatorAddress: Address): Promise<Hex[]>;
|
|
144
|
+
private requireWallet;
|
|
145
|
+
}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ValidationRegistryClient — typed wrapper for the ERC-8004 ValidationRegistry
|
|
3
|
+
* contract.
|
|
4
|
+
*
|
|
5
|
+
* Phase 1b challenge mechanism. Per
|
|
6
|
+
* `docs/superpowers/specs/2026-04-27-erc-8004-entity-model-design.md` §4.4,
|
|
7
|
+
* Jinn challenges are anchored on the deployed `0x8004…` ValidationRegistry
|
|
8
|
+
* keyed by `(validatorAddress, agentId, requestHash)` where
|
|
9
|
+
* `requestHash = manifest.evidenceHash` — the same 32-byte hash JinnRouter
|
|
10
|
+
* already commits in `claimDelivery`. No new contracts are deployed; this
|
|
11
|
+
* client wraps the existing UUPS proxy.
|
|
12
|
+
*
|
|
13
|
+
* Wire shape (from /tmp/erc8004-ref/ValidationRegistryUpgradeable.sol):
|
|
14
|
+
* - validationRequest(validator, agentId, requestURI, requestHash) — only
|
|
15
|
+
* the agent owner / approved / operator can submit; reverts on duplicate
|
|
16
|
+
* `requestHash`.
|
|
17
|
+
* - validationResponse(requestHash, response, responseURI, responseHash, tag)
|
|
18
|
+
* — only the validator named in the request may respond; `response` is a
|
|
19
|
+
* 0..100 score.
|
|
20
|
+
* - getValidationStatus(requestHash) returns
|
|
21
|
+
* (validator, agentId, response, responseHash, tag, lastUpdate). The
|
|
22
|
+
* contract reverts on unknown `requestHash`.
|
|
23
|
+
* - getAgentValidations(agentId) → bytes32[]
|
|
24
|
+
* - getValidatorRequests(validator) → bytes32[]
|
|
25
|
+
*
|
|
26
|
+
* This module is intentionally **not wired into the daemon, evaluator, or CLI**.
|
|
27
|
+
* The UX of the challenge mechanism (who calls `requestValidation`, when, with
|
|
28
|
+
* what UI, with what validator-selection model) is a separate Phase 1b spec.
|
|
29
|
+
* This file ships the typed client; downstream beads consume it.
|
|
30
|
+
*/
|
|
31
|
+
import { VALIDATION_REGISTRY_ABI } from './abis.js';
|
|
32
|
+
import { VALIDATION_REGISTRY_ADDRESSES, getValidationRegistryAddress, } from './addresses.js';
|
|
33
|
+
// Re-exports so callers that imported these from the validation module
|
|
34
|
+
// continue to work without touching `./abis.js` / `./addresses.js`.
|
|
35
|
+
export { VALIDATION_REGISTRY_ABI, VALIDATION_REGISTRY_ADDRESSES, getValidationRegistryAddress, };
|
|
36
|
+
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
37
|
+
const ZERO_BYTES32 = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
38
|
+
// ── Client ───────────────────────────────────────────────────────────────────
|
|
39
|
+
export class ValidationRegistryClient {
|
|
40
|
+
publicClient;
|
|
41
|
+
walletClient;
|
|
42
|
+
contractAddress;
|
|
43
|
+
constructor(config) {
|
|
44
|
+
this.publicClient = config.publicClient;
|
|
45
|
+
this.walletClient = config.walletClient;
|
|
46
|
+
this.contractAddress = config.validationRegistryAddress;
|
|
47
|
+
}
|
|
48
|
+
// ── Write methods ──────────────────────────────────────────────────────────
|
|
49
|
+
/**
|
|
50
|
+
* Submit a challenge — `validationRequest(validator, agentId, requestURI, requestHash)`.
|
|
51
|
+
*
|
|
52
|
+
* `requestHash` MUST equal `manifest.evidenceHash` (the same 32-byte hash
|
|
53
|
+
* JinnRouter committed in `claimDelivery`); see DR §4.4. The contract
|
|
54
|
+
* enforces uniqueness on `requestHash`, so duplicate calls revert.
|
|
55
|
+
*
|
|
56
|
+
* **Validator selection is open** at the contract level: any address may
|
|
57
|
+
* be passed as `validatorAddress`, and any caller authorised by the agent
|
|
58
|
+
* NFT (owner / approved / operator-for-all) may submit a request. Whether
|
|
59
|
+
* Jinn imposes an additional gating layer (whitelist, stake, randomized
|
|
60
|
+
* pool) is **deferred to a follow-up Phase 1b spec** and not enforced
|
|
61
|
+
* here.
|
|
62
|
+
*
|
|
63
|
+
* The agent-NFT permission check inside the contract means the caller's
|
|
64
|
+
* EOA / Safe must be authorised on `agentId` via `IdentityRegistry`
|
|
65
|
+
* (owner, getApproved, or isApprovedForAll). Callers should ensure this
|
|
66
|
+
* upstream — e.g. the operator submits requests against their own
|
|
67
|
+
* agentId.
|
|
68
|
+
*
|
|
69
|
+
* Returns the transaction hash. Caller is responsible for waiting on the
|
|
70
|
+
* receipt if they need confirmation semantics (kept off this path so the
|
|
71
|
+
* client is reusable from both EOA-direct and Safe-wrapped contexts —
|
|
72
|
+
* higher layers add the appropriate retry/confirm helper).
|
|
73
|
+
*/
|
|
74
|
+
async requestValidation(args) {
|
|
75
|
+
const wallet = this.requireWallet('requestValidation');
|
|
76
|
+
const account = wallet.account;
|
|
77
|
+
if (!account) {
|
|
78
|
+
throw new Error('[ValidationRegistryClient] walletClient has no account');
|
|
79
|
+
}
|
|
80
|
+
return wallet.writeContract({
|
|
81
|
+
address: this.contractAddress,
|
|
82
|
+
abi: VALIDATION_REGISTRY_ABI,
|
|
83
|
+
functionName: 'validationRequest',
|
|
84
|
+
args: [args.validatorAddress, args.agentId, args.requestURI, args.requestHash],
|
|
85
|
+
account,
|
|
86
|
+
chain: wallet.chain ?? null,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Submit a response — `validationResponse(requestHash, response, responseURI,
|
|
91
|
+
* responseHash, tag)`.
|
|
92
|
+
*
|
|
93
|
+
* Validators only. The contract checks `msg.sender === validatorAddress`
|
|
94
|
+
* and `response <= 100`. Callers must use the wallet that was named as
|
|
95
|
+
* `validatorAddress` in the matching `requestValidation` call.
|
|
96
|
+
*/
|
|
97
|
+
async submitResponse(args) {
|
|
98
|
+
if (!Number.isInteger(args.response) || args.response < 0 || args.response > 100) {
|
|
99
|
+
throw new Error(`[ValidationRegistryClient] response must be an integer in [0, 100]; got ${args.response}`);
|
|
100
|
+
}
|
|
101
|
+
const wallet = this.requireWallet('submitResponse');
|
|
102
|
+
const account = wallet.account;
|
|
103
|
+
if (!account) {
|
|
104
|
+
throw new Error('[ValidationRegistryClient] walletClient has no account');
|
|
105
|
+
}
|
|
106
|
+
return wallet.writeContract({
|
|
107
|
+
address: this.contractAddress,
|
|
108
|
+
abi: VALIDATION_REGISTRY_ABI,
|
|
109
|
+
functionName: 'validationResponse',
|
|
110
|
+
args: [
|
|
111
|
+
args.requestHash,
|
|
112
|
+
args.response,
|
|
113
|
+
args.responseURI,
|
|
114
|
+
args.responseHash,
|
|
115
|
+
args.tag,
|
|
116
|
+
],
|
|
117
|
+
account,
|
|
118
|
+
chain: wallet.chain ?? null,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// ── Read methods ───────────────────────────────────────────────────────────
|
|
122
|
+
/**
|
|
123
|
+
* Fetch the current validation status for a given `requestHash`.
|
|
124
|
+
*
|
|
125
|
+
* Returns `null` if no request has been recorded for that hash. The
|
|
126
|
+
* deployed contract reverts (`"unknown"`) on unknown hashes; we catch and
|
|
127
|
+
* map that to `null` so callers can treat "not found" as a value rather
|
|
128
|
+
* than an exception.
|
|
129
|
+
*
|
|
130
|
+
* `requestURI` and `responseURI` are not persisted in contract storage —
|
|
131
|
+
* they appear only in the `ValidationRequest` / `ValidationResponse`
|
|
132
|
+
* events. The returned record therefore leaves `requestURI` empty and
|
|
133
|
+
* omits `responseURI`; callers that need them must read the indexed
|
|
134
|
+
* events.
|
|
135
|
+
*/
|
|
136
|
+
async getStatus(requestHash) {
|
|
137
|
+
let raw;
|
|
138
|
+
try {
|
|
139
|
+
raw = (await this.publicClient.readContract({
|
|
140
|
+
address: this.contractAddress,
|
|
141
|
+
abi: VALIDATION_REGISTRY_ABI,
|
|
142
|
+
functionName: 'getValidationStatus',
|
|
143
|
+
args: [requestHash],
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
148
|
+
if (message.includes('unknown'))
|
|
149
|
+
return null;
|
|
150
|
+
throw err;
|
|
151
|
+
}
|
|
152
|
+
const [validatorAddress, agentId, response, responseHash, tag /*, lastUpdate */] = raw;
|
|
153
|
+
if (validatorAddress === ZERO_ADDRESS)
|
|
154
|
+
return null;
|
|
155
|
+
// Contract initialises responseHash=0 / tag="" until the validator
|
|
156
|
+
// responds; a non-zero responseHash OR a non-empty tag both indicate
|
|
157
|
+
// a response has landed (the validator may legitimately submit
|
|
158
|
+
// responseHash=0 with a non-empty tag, or vice versa). The
|
|
159
|
+
// `lastUpdate` block-timestamp also moves on response, but we treat
|
|
160
|
+
// the storage fields as the authoritative signal.
|
|
161
|
+
const hasResponded = responseHash !== ZERO_BYTES32 || tag !== '';
|
|
162
|
+
if (!hasResponded) {
|
|
163
|
+
return {
|
|
164
|
+
requestHash,
|
|
165
|
+
validatorAddress,
|
|
166
|
+
agentId,
|
|
167
|
+
requestURI: '',
|
|
168
|
+
status: 'REQUESTED',
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
requestHash,
|
|
173
|
+
validatorAddress,
|
|
174
|
+
agentId,
|
|
175
|
+
requestURI: '',
|
|
176
|
+
status: 'RESPONDED',
|
|
177
|
+
response,
|
|
178
|
+
responseHash,
|
|
179
|
+
tag,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* All `requestHash` values ever filed against `agentId`. Order is
|
|
184
|
+
* insertion order from contract storage (per
|
|
185
|
+
* `_agentValidations[agentId]`).
|
|
186
|
+
*/
|
|
187
|
+
async getAgentValidations(agentId) {
|
|
188
|
+
const result = (await this.publicClient.readContract({
|
|
189
|
+
address: this.contractAddress,
|
|
190
|
+
abi: VALIDATION_REGISTRY_ABI,
|
|
191
|
+
functionName: 'getAgentValidations',
|
|
192
|
+
args: [agentId],
|
|
193
|
+
}));
|
|
194
|
+
return [...result];
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* All `requestHash` values ever assigned to `validatorAddress`. Order is
|
|
198
|
+
* insertion order from contract storage (per
|
|
199
|
+
* `_validatorRequests[validator]`).
|
|
200
|
+
*/
|
|
201
|
+
async getValidatorRequests(validatorAddress) {
|
|
202
|
+
const result = (await this.publicClient.readContract({
|
|
203
|
+
address: this.contractAddress,
|
|
204
|
+
abi: VALIDATION_REGISTRY_ABI,
|
|
205
|
+
functionName: 'getValidatorRequests',
|
|
206
|
+
args: [validatorAddress],
|
|
207
|
+
}));
|
|
208
|
+
return [...result];
|
|
209
|
+
}
|
|
210
|
+
// ── Internal ───────────────────────────────────────────────────────────────
|
|
211
|
+
requireWallet(method) {
|
|
212
|
+
if (!this.walletClient) {
|
|
213
|
+
throw new Error(`[ValidationRegistryClient] ${method} requires a walletClient; ` +
|
|
214
|
+
`pass one via ValidationRegistryConfig.walletClient.`);
|
|
215
|
+
}
|
|
216
|
+
return this.walletClient;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/erc8004/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ErrorEnvelope } from './envelope.js';
|
|
2
|
+
export declare function persistBootstrapError(envelope: ErrorEnvelope, earningDir: string): void;
|
|
3
|
+
export declare function readBootstrapError(earningDir: string): ErrorEnvelope | null;
|
|
4
|
+
export declare function clearBootstrapError(earningDir: string): void;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persist a fatal bootstrap error to disk so the panel can surface it to the
|
|
3
|
+
* operator after the daemon process has exited.
|
|
4
|
+
*
|
|
5
|
+
* The structured error envelope produced by `emitEnvelope` is written to
|
|
6
|
+
* `<earningDir>/bootstrap-error.json` *before* `process.exit(50)` runs. On
|
|
7
|
+
* the next `jinn run`, `/v1/bootstrap` reads this file and includes it in
|
|
8
|
+
* the response so the SPA can render an error state on the active phase
|
|
9
|
+
* instead of staying frozen on the last persisted bootstrap step.
|
|
10
|
+
*
|
|
11
|
+
* Cleared at the start of each bootstrap attempt — if the operator fixes
|
|
12
|
+
* the underlying issue and the daemon proceeds past the failed step, the
|
|
13
|
+
* error file disappears and the panel returns to a clean state.
|
|
14
|
+
*/
|
|
15
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
16
|
+
import { join } from 'node:path';
|
|
17
|
+
const FILE_NAME = 'bootstrap-error.json';
|
|
18
|
+
export function persistBootstrapError(envelope, earningDir) {
|
|
19
|
+
try {
|
|
20
|
+
mkdirSync(earningDir, { recursive: true, mode: 0o700 });
|
|
21
|
+
writeFileSync(join(earningDir, FILE_NAME), JSON.stringify(envelope, null, 2) + '\n', { mode: 0o600 });
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Best-effort. A failure here doesn't change the existing exit-with-50
|
|
25
|
+
// contract — we just lose the panel breadcrumb.
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function readBootstrapError(earningDir) {
|
|
29
|
+
const path = join(earningDir, FILE_NAME);
|
|
30
|
+
if (!existsSync(path))
|
|
31
|
+
return null;
|
|
32
|
+
try {
|
|
33
|
+
return JSON.parse(readFileSync(path, 'utf-8'));
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function clearBootstrapError(earningDir) {
|
|
40
|
+
const path = join(earningDir, FILE_NAME);
|
|
41
|
+
if (!existsSync(path))
|
|
42
|
+
return;
|
|
43
|
+
try {
|
|
44
|
+
unlinkSync(path);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Best-effort.
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=persisted-bootstrap-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persisted-bootstrap-error.js","sourceRoot":"","sources":["../../src/errors/persisted-bootstrap-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEzC,MAAM,UAAU,qBAAqB,CAAC,QAAuB,EAAE,UAAkB;IAC/E,IAAI,CAAC;QACH,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,aAAa,CACX,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACxC,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAkB,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IAC9B,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EventRingBuffer } from './ring-buffer.js';
|
|
2
|
+
import type { StructuredEventKind } from './types.js';
|
|
3
|
+
export declare function getEventBuffer(): EventRingBuffer;
|
|
4
|
+
export interface EmitInput {
|
|
5
|
+
kind: StructuredEventKind;
|
|
6
|
+
message: string;
|
|
7
|
+
requestId?: string;
|
|
8
|
+
txHash?: string;
|
|
9
|
+
errorCode?: string;
|
|
10
|
+
details?: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export declare function emitStructured(input: EmitInput): void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global structured-event emitter for the daemon.
|
|
3
|
+
*
|
|
4
|
+
* Singleton ring buffer + a thin `emitStructured` helper. The /v1/events SSE
|
|
5
|
+
* endpoint subscribes to this buffer; the daemon's lifecycle/error sites push
|
|
6
|
+
* into it. See docs/superpowers/specs/2026-05-01-operator-local-app-design.md.
|
|
7
|
+
*/
|
|
8
|
+
import { randomUUID } from 'node:crypto';
|
|
9
|
+
import { EventRingBuffer } from './ring-buffer.js';
|
|
10
|
+
const RING = new EventRingBuffer(1000);
|
|
11
|
+
export function getEventBuffer() {
|
|
12
|
+
return RING;
|
|
13
|
+
}
|
|
14
|
+
export function emitStructured(input) {
|
|
15
|
+
const event = {
|
|
16
|
+
schemaVersion: 1,
|
|
17
|
+
id: randomUUID(),
|
|
18
|
+
ts: new Date().toISOString(),
|
|
19
|
+
...input,
|
|
20
|
+
};
|
|
21
|
+
RING.push(event);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC7C,MAAM,KAAK,GAAoB;QAC7B,aAAa,EAAE,CAAC;QAChB,EAAE,EAAE,UAAU,EAAE;QAChB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,GAAG,KAAK;KACT,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded in-memory ring buffer of structured daemon events with subscribe/snapshot.
|
|
3
|
+
*
|
|
4
|
+
* - `push` records an event and notifies subscribers; subscriber errors are isolated.
|
|
5
|
+
* - `snapshot` returns a defensive copy filtered by kinds/sinceId/limit.
|
|
6
|
+
* - Default capacity 1000; trim is amortized O(1) at expected event rates.
|
|
7
|
+
*/
|
|
8
|
+
import type { StructuredEvent, StructuredEventKind } from './types.js';
|
|
9
|
+
export interface EventFilter {
|
|
10
|
+
kinds?: StructuredEventKind[];
|
|
11
|
+
sinceId?: string;
|
|
12
|
+
limit?: number;
|
|
13
|
+
}
|
|
14
|
+
export type EventSubscriber = (event: StructuredEvent) => void;
|
|
15
|
+
export declare class EventRingBuffer {
|
|
16
|
+
private capacity;
|
|
17
|
+
private buffer;
|
|
18
|
+
private subscribers;
|
|
19
|
+
constructor(capacity?: number);
|
|
20
|
+
push(event: StructuredEvent): void;
|
|
21
|
+
snapshot(filter?: EventFilter): StructuredEvent[];
|
|
22
|
+
subscribe(sub: EventSubscriber): () => void;
|
|
23
|
+
/** Drop all buffered events; subscribers are retained. Intended for test isolation. */
|
|
24
|
+
clear(): void;
|
|
25
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export class EventRingBuffer {
|
|
2
|
+
capacity;
|
|
3
|
+
buffer = [];
|
|
4
|
+
subscribers = new Set();
|
|
5
|
+
constructor(capacity = 1000) {
|
|
6
|
+
this.capacity = capacity;
|
|
7
|
+
}
|
|
8
|
+
push(event) {
|
|
9
|
+
this.buffer.push(event);
|
|
10
|
+
if (this.buffer.length > this.capacity) {
|
|
11
|
+
this.buffer = this.buffer.slice(-this.capacity);
|
|
12
|
+
}
|
|
13
|
+
for (const sub of this.subscribers) {
|
|
14
|
+
try {
|
|
15
|
+
sub(event);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
// never let subscriber errors propagate, but leave a breadcrumb
|
|
19
|
+
console.error('[events] subscriber threw:', err instanceof Error ? err.message : err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
snapshot(filter = {}) {
|
|
24
|
+
let out = this.buffer;
|
|
25
|
+
if (filter.sinceId) {
|
|
26
|
+
const idx = out.findIndex((e) => e.id === filter.sinceId);
|
|
27
|
+
out = idx >= 0 ? out.slice(idx + 1) : out;
|
|
28
|
+
}
|
|
29
|
+
if (filter.kinds && filter.kinds.length > 0) {
|
|
30
|
+
const allowed = new Set(filter.kinds);
|
|
31
|
+
out = out.filter((e) => allowed.has(e.kind));
|
|
32
|
+
}
|
|
33
|
+
if (filter.limit !== undefined)
|
|
34
|
+
out = out.slice(-filter.limit);
|
|
35
|
+
return [...out];
|
|
36
|
+
}
|
|
37
|
+
subscribe(sub) {
|
|
38
|
+
this.subscribers.add(sub);
|
|
39
|
+
return () => this.subscribers.delete(sub);
|
|
40
|
+
}
|
|
41
|
+
/** Drop all buffered events; subscribers are retained. Intended for test isolation. */
|
|
42
|
+
clear() {
|
|
43
|
+
this.buffer = [];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ring-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ring-buffer.js","sourceRoot":"","sources":["../../src/events/ring-buffer.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,eAAe;IAIN;IAHZ,MAAM,GAAsB,EAAE,CAAC;IAC/B,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;IAEjD,YAAoB,WAAmB,IAAI;QAAvB,aAAQ,GAAR,QAAQ,CAAe;IAAG,CAAC;IAE/C,IAAI,CAAC,KAAsB;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,GAAG,CAAC,KAAK,CAAC,CAAC;YACb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,gEAAgE;gBAChE,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,SAAsB,EAAE;QAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5C,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,GAAoB;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,uFAAuF;IACvF,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured event types for the operator-facing local app.
|
|
3
|
+
*
|
|
4
|
+
* Events are produced by the daemon (intent state transitions, errors, lifecycle
|
|
5
|
+
* markers) and consumed by /v1/events SSE + /v1/events/recent JSON endpoints
|
|
6
|
+
* served to the operator SPA. See docs/superpowers/specs/2026-05-01-operator-local-app-design.md.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export declare const StructuredEventKindSchema: z.ZodEnum<["intent", "reward", "fleet", "system", "error", "log"]>;
|
|
10
|
+
export type StructuredEventKind = z.infer<typeof StructuredEventKindSchema>;
|
|
11
|
+
export declare const StructuredEventSchema: z.ZodObject<{
|
|
12
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
13
|
+
id: z.ZodString;
|
|
14
|
+
ts: z.ZodString;
|
|
15
|
+
kind: z.ZodEnum<["intent", "reward", "fleet", "system", "error", "log"]>;
|
|
16
|
+
message: z.ZodString;
|
|
17
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
18
|
+
txHash: z.ZodOptional<z.ZodString>;
|
|
19
|
+
errorCode: z.ZodOptional<z.ZodString>;
|
|
20
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
message: string;
|
|
23
|
+
id: string;
|
|
24
|
+
schemaVersion: 1;
|
|
25
|
+
kind: "intent" | "error" | "reward" | "fleet" | "system" | "log";
|
|
26
|
+
ts: string;
|
|
27
|
+
details?: Record<string, unknown> | undefined;
|
|
28
|
+
requestId?: string | undefined;
|
|
29
|
+
txHash?: string | undefined;
|
|
30
|
+
errorCode?: string | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
message: string;
|
|
33
|
+
id: string;
|
|
34
|
+
schemaVersion: 1;
|
|
35
|
+
kind: "intent" | "error" | "reward" | "fleet" | "system" | "log";
|
|
36
|
+
ts: string;
|
|
37
|
+
details?: Record<string, unknown> | undefined;
|
|
38
|
+
requestId?: string | undefined;
|
|
39
|
+
txHash?: string | undefined;
|
|
40
|
+
errorCode?: string | undefined;
|
|
41
|
+
}>;
|
|
42
|
+
export type StructuredEvent = z.infer<typeof StructuredEventSchema>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured event types for the operator-facing local app.
|
|
3
|
+
*
|
|
4
|
+
* Events are produced by the daemon (intent state transitions, errors, lifecycle
|
|
5
|
+
* markers) and consumed by /v1/events SSE + /v1/events/recent JSON endpoints
|
|
6
|
+
* served to the operator SPA. See docs/superpowers/specs/2026-05-01-operator-local-app-design.md.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export const StructuredEventKindSchema = z.enum([
|
|
10
|
+
'intent',
|
|
11
|
+
'reward',
|
|
12
|
+
'fleet',
|
|
13
|
+
'system',
|
|
14
|
+
'error',
|
|
15
|
+
'log',
|
|
16
|
+
]);
|
|
17
|
+
export const StructuredEventSchema = z.object({
|
|
18
|
+
schemaVersion: z.literal(1),
|
|
19
|
+
id: z.string(),
|
|
20
|
+
ts: z.string(),
|
|
21
|
+
kind: StructuredEventKindSchema,
|
|
22
|
+
message: z.string(),
|
|
23
|
+
requestId: z.string().optional(),
|
|
24
|
+
txHash: z.string().optional(),
|
|
25
|
+
errorCode: z.string().optional(),
|
|
26
|
+
details: z.record(z.unknown()).optional(),
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,KAAK;CACN,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,yBAAyB;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { type
|
|
1
|
+
export { type RestorationJob, type RequestId, type RestorationRequest, type RestorationResult, type DeliveredResult } from './types/index.js';
|
|
2
2
|
export { TransientError, PermanentError } from './types/index.js';
|
|
3
3
|
export { type ExecutionAdapter } from './adapters/adapter.js';
|
|
4
4
|
export { LocalAdapter } from './adapters/local/adapter.js';
|
|
@@ -19,6 +19,16 @@ export declare function collectTestnetAutoIntentGenerators(opts: {
|
|
|
19
19
|
rpcUrl: string;
|
|
20
20
|
autoIntentsDisabled: boolean;
|
|
21
21
|
env: NodeJS.ProcessEnv;
|
|
22
|
+
/** Agent EOA address — passed to generator configs that produce SignedIntentV1. */
|
|
23
|
+
agentEoa?: `0x${string}`;
|
|
24
|
+
/** Safe address — passed to generator configs that populate intent.creator. */
|
|
25
|
+
safeAddress?: `0x${string}`;
|
|
26
|
+
/** Agent EOA private key — passed to generator configs that sign intents. */
|
|
27
|
+
agentPrivateKey?: `0x${string}`;
|
|
28
|
+
/** Override prediction.v0 submission window (ms). */
|
|
29
|
+
predictionV0WindowMs?: number;
|
|
30
|
+
/** Override prediction.v0 window→resolveTs gap (ms). */
|
|
31
|
+
predictionV0ResolveGapMs?: number;
|
|
22
32
|
}): {
|
|
23
33
|
generators: Array<{
|
|
24
34
|
kind: string;
|