@jinn-network/client 0.1.1 → 0.1.2-canary.647548b7
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 +14 -0
- package/CONTRIBUTING.md +123 -0
- package/README.md +213 -37
- package/deployments/deployment-claim-registry-baseSepolia.json +13 -0
- package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +15 -0
- package/dist/adapters/claim-registry/abi.d.ts +127 -0
- package/dist/adapters/claim-registry/abi.js +93 -0
- package/dist/adapters/claim-registry/abi.js.map +1 -0
- package/dist/adapters/claim-registry/client.d.ts +89 -0
- package/dist/adapters/claim-registry/client.js +205 -0
- package/dist/adapters/claim-registry/client.js.map +1 -0
- package/dist/adapters/mech/adapter.d.ts +1 -0
- package/dist/adapters/mech/adapter.js +75 -41
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +2 -0
- package/dist/adapters/mech/contracts.js +57 -7
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/ipfs.d.ts +8 -0
- package/dist/adapters/mech/ipfs.js +12 -0
- package/dist/adapters/mech/ipfs.js.map +1 -1
- package/dist/adapters/mech/types.d.ts +20 -46
- package/dist/adapters/mech/types.js +16 -35
- package/dist/adapters/mech/types.js.map +1 -1
- package/dist/api/balance-build.js +3 -3
- package/dist/api/balance-build.js.map +1 -1
- package/dist/api/fleet-build.js +35 -40
- package/dist/api/fleet-build.js.map +1 -1
- package/dist/api/gather-status.d.ts +1 -0
- package/dist/api/gather-status.js +185 -4
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/history-build.d.ts +5 -1
- package/dist/api/history-build.js +51 -26
- package/dist/api/history-build.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +81 -0
- package/dist/api/portfolio-v0-build.js +141 -0
- package/dist/api/portfolio-v0-build.js.map +1 -0
- package/dist/api/portfolio-v0-doctor.d.ts +37 -0
- package/dist/api/portfolio-v0-doctor.js +123 -0
- package/dist/api/portfolio-v0-doctor.js.map +1 -0
- package/dist/api/rewards-build.js +30 -14
- package/dist/api/rewards-build.js.map +1 -1
- package/dist/api/status-build.d.ts +37 -6
- package/dist/api/status-build.js +1 -0
- package/dist/api/status-build.js.map +1 -1
- package/dist/api/status-rollup-build.d.ts +2 -0
- package/dist/api/status-rollup-build.js +27 -0
- package/dist/api/status-rollup-build.js.map +1 -1
- package/dist/bin/jinn-mcp.d.ts +0 -12
- package/dist/bin/jinn-mcp.js +5 -14
- package/dist/bin/jinn-mcp.js.map +1 -1
- package/dist/build-meta.json +1 -1
- package/dist/cli/commands/auth.js +115 -25
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/balance.js +8 -1
- package/dist/cli/commands/balance.js.map +1 -1
- package/dist/cli/commands/bootstrap.js +1 -0
- package/dist/cli/commands/bootstrap.js.map +1 -1
- package/dist/cli/commands/doctor.js +130 -14
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/fleet-scale.js +1 -0
- package/dist/cli/commands/fleet-scale.js.map +1 -1
- package/dist/cli/commands/fleet.js +10 -1
- package/dist/cli/commands/fleet.js.map +1 -1
- package/dist/cli/commands/fund-requirements.js +2 -0
- package/dist/cli/commands/fund-requirements.js.map +1 -1
- package/dist/cli/commands/history.js +25 -6
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/intents.d.ts +17 -0
- package/dist/cli/commands/intents.js +489 -0
- package/dist/cli/commands/intents.js.map +1 -0
- package/dist/cli/commands/keys-backup.js +13 -11
- package/dist/cli/commands/keys-backup.js.map +1 -1
- package/dist/cli/commands/logs.js +35 -11
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.js +19 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/plugin-install.js +8 -4
- package/dist/cli/commands/plugin-install.js.map +1 -1
- package/dist/cli/commands/quickstart.js +60 -4
- package/dist/cli/commands/quickstart.js.map +1 -1
- package/dist/cli/commands/rewards.js +27 -1
- package/dist/cli/commands/rewards.js.map +1 -1
- package/dist/cli/commands/status.js +11 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/submit-intent.js +108 -5
- package/dist/cli/commands/submit-intent.js.map +1 -1
- package/dist/cli/commands/version.js +1 -0
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/deployment-digest.js +5 -0
- package/dist/cli/deployment-digest.js.map +1 -1
- package/dist/cli/execution-context.js +1 -0
- package/dist/cli/execution-context.js.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/intent-registry-access.d.ts +64 -0
- package/dist/cli/intent-registry-access.js +187 -0
- package/dist/cli/intent-registry-access.js.map +1 -0
- package/dist/cli/introspection-context.js +1 -0
- package/dist/cli/introspection-context.js.map +1 -1
- package/dist/cli/password.d.ts +21 -9
- package/dist/cli/password.js +45 -24
- package/dist/cli/password.js.map +1 -1
- package/dist/config.d.ts +110 -8
- package/dist/config.js +41 -12
- package/dist/config.js.map +1 -1
- package/dist/daemon/balance-topup-loop.js +32 -4
- package/dist/daemon/balance-topup-loop.js.map +1 -1
- package/dist/daemon/creator.d.ts +7 -1
- package/dist/daemon/creator.js +51 -3
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +43 -0
- package/dist/daemon/daemon.js +110 -3
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/delivery-watcher.d.ts +3 -1
- package/dist/daemon/delivery-watcher.js +19 -1
- package/dist/daemon/delivery-watcher.js.map +1 -1
- package/dist/daemon/restorer.js +27 -0
- package/dist/daemon/restorer.js.map +1 -1
- package/dist/daemon/reward-claim-loop.js +38 -1
- package/dist/daemon/reward-claim-loop.js.map +1 -1
- package/dist/dashboard/index.html +71 -496
- package/dist/earning/bootstrap.d.ts +2 -1
- package/dist/earning/bootstrap.js +72 -4
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +10 -0
- package/dist/earning/contracts.js +24 -0
- package/dist/earning/contracts.js.map +1 -1
- package/dist/earning/jinn-rewards.d.ts +9 -0
- package/dist/earning/jinn-rewards.js +7 -0
- package/dist/earning/jinn-rewards.js.map +1 -1
- package/dist/earning/stolas-claim.d.ts +6 -0
- package/dist/earning/stolas-claim.js +7 -0
- package/dist/earning/stolas-claim.js.map +1 -1
- package/dist/intents/prediction-apy-v0-auto.d.ts +11 -0
- package/dist/intents/prediction-apy-v0-auto.js +46 -0
- package/dist/intents/prediction-apy-v0-auto.js.map +1 -0
- package/dist/intents/prediction-apy-v0-template.d.ts +8 -0
- package/dist/intents/prediction-apy-v0-template.js +22 -0
- package/dist/intents/prediction-apy-v0-template.js.map +1 -0
- package/dist/intents/prediction-v0-auto.d.ts +53 -0
- package/dist/intents/prediction-v0-auto.js +84 -0
- package/dist/intents/prediction-v0-auto.js.map +1 -0
- package/dist/intents/prediction-v0-template.d.ts +65 -0
- package/dist/intents/prediction-v0-template.js +125 -0
- package/dist/intents/prediction-v0-template.js.map +1 -0
- package/dist/main.js +149 -1
- package/dist/main.js.map +1 -1
- package/dist/mcp/operator-server.d.ts +1 -1
- package/dist/mcp/operator-server.js +1 -1
- package/dist/observability/emit-event.d.ts +12 -0
- package/dist/observability/emit-event.js +27 -0
- package/dist/observability/emit-event.js.map +1 -0
- package/dist/preflight/claude-auth.d.ts +12 -1
- package/dist/preflight/claude-auth.js +21 -3
- package/dist/preflight/claude-auth.js.map +1 -1
- package/dist/restorer/engine/canonical-json.d.ts +18 -0
- package/dist/restorer/engine/canonical-json.js +59 -0
- package/dist/restorer/engine/canonical-json.js.map +1 -0
- package/dist/restorer/engine/claim.d.ts +69 -0
- package/dist/restorer/engine/claim.js +104 -0
- package/dist/restorer/engine/claim.js.map +1 -0
- package/dist/restorer/engine/delivery.d.ts +52 -0
- package/dist/restorer/engine/delivery.js +63 -0
- package/dist/restorer/engine/delivery.js.map +1 -0
- package/dist/restorer/engine/engine.d.ts +203 -0
- package/dist/restorer/engine/engine.js +753 -0
- package/dist/restorer/engine/engine.js.map +1 -0
- package/dist/restorer/engine/manifest-assembly.d.ts +67 -0
- package/dist/restorer/engine/manifest-assembly.js +79 -0
- package/dist/restorer/engine/manifest-assembly.js.map +1 -0
- package/dist/restorer/engine/packaging.d.ts +87 -0
- package/dist/restorer/engine/packaging.js +350 -0
- package/dist/restorer/engine/packaging.js.map +1 -0
- package/dist/restorer/engine/persistence.d.ts +170 -0
- package/dist/restorer/engine/persistence.js +381 -0
- package/dist/restorer/engine/persistence.js.map +1 -0
- package/dist/restorer/engine/recovery.d.ts +22 -0
- package/dist/restorer/engine/recovery.js +24 -0
- package/dist/restorer/engine/recovery.js.map +1 -0
- package/dist/restorer/engine/registry.d.ts +62 -0
- package/dist/restorer/engine/registry.js +73 -0
- package/dist/restorer/engine/registry.js.map +1 -0
- package/dist/restorer/engine/signing.d.ts +30 -0
- package/dist/restorer/engine/signing.js +39 -0
- package/dist/restorer/engine/signing.js.map +1 -0
- package/dist/restorer/engine/state.d.ts +42 -0
- package/dist/restorer/engine/state.js +87 -0
- package/dist/restorer/engine/state.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.d.ts +64 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js +96 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +101 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +710 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +137 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js +865 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.d.ts +74 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js +74 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +97 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +226 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +43 -0
- package/dist/restorer/impls/claude-mcp-prediction/index.js +230 -0
- package/dist/restorer/impls/claude-mcp-prediction/index.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.d.ts +38 -0
- package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js +135 -0
- package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-prediction/prompt.d.ts +8 -0
- package/dist/restorer/impls/claude-mcp-prediction/prompt.js +54 -0
- package/dist/restorer/impls/claude-mcp-prediction/prompt.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.d.ts +36 -0
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js +137 -0
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-prediction/types.d.ts +82 -0
- package/dist/restorer/impls/claude-mcp-prediction/types.js +6 -0
- package/dist/restorer/impls/claude-mcp-prediction/types.js.map +1 -0
- package/dist/restorer/impls/legacy-claude/index.d.ts +45 -0
- package/dist/restorer/impls/legacy-claude/index.js +71 -0
- package/dist/restorer/impls/legacy-claude/index.js.map +1 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +68 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js +117 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.d.ts +49 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js +91 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.d.ts +78 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js +274 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +23 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js +49 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.d.ts +25 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js +44 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.d.ts +17 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js +43 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +43 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/index.js +431 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/score.d.ts +21 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/score.js +32 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +1 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/types.d.ts +32 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/types.js +8 -0
- package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +1 -0
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +39 -0
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +98 -0
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +1 -0
- package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.d.ts +2 -0
- package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js +7 -0
- package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js.map +1 -0
- package/dist/restorer/impls/prediction-apy-v0-baseline/types.d.ts +4 -0
- package/dist/restorer/impls/prediction-apy-v0-baseline/types.js +2 -0
- package/dist/restorer/impls/prediction-apy-v0-baseline/types.js.map +1 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +2 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js +7 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +39 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +186 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +1 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/score.d.ts +9 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js +20 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js.map +1 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/types.d.ts +7 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js +2 -0
- package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +29 -0
- package/dist/restorer/impls/prediction-v0-baseline/index.js +94 -0
- package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-baseline/strategy.d.ts +8 -0
- package/dist/restorer/impls/prediction-v0-baseline/strategy.js +41 -0
- package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +7 -0
- package/dist/restorer/impls/prediction-v0-baseline/types.js +2 -0
- package/dist/restorer/impls/prediction-v0-baseline/types.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.d.ts +20 -0
- package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js +66 -0
- package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.d.ts +9 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js +23 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.d.ts +3 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js +13 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +7 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js +93 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.d.ts +5 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js +20 -0
- package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +33 -0
- package/dist/restorer/impls/prediction-v0-evaluator/index.js +208 -0
- package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-evaluator/score.d.ts +8 -0
- package/dist/restorer/impls/prediction-v0-evaluator/score.js +15 -0
- package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +1 -0
- package/dist/restorer/impls/prediction-v0-evaluator/types.d.ts +7 -0
- package/dist/restorer/impls/prediction-v0-evaluator/types.js +2 -0
- package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +1 -0
- package/dist/restorer/types.d.ts +177 -0
- package/dist/restorer/types.js +7 -0
- package/dist/restorer/types.js.map +1 -0
- package/dist/store/store.d.ts +64 -1
- package/dist/store/store.js +226 -4
- package/dist/store/store.js.map +1 -1
- package/dist/types/desired-state.d.ts +53 -0
- package/dist/types/desired-state.js +20 -0
- package/dist/types/desired-state.js.map +1 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.js +4 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/portfolio.d.ts +1000 -0
- package/dist/types/portfolio.js +168 -0
- package/dist/types/portfolio.js.map +1 -0
- package/dist/types/prediction-apy.d.ts +919 -0
- package/dist/types/prediction-apy.js +121 -0
- package/dist/types/prediction-apy.js.map +1 -0
- package/dist/types/prediction.d.ts +925 -0
- package/dist/types/prediction.js +140 -0
- package/dist/types/prediction.js.map +1 -0
- package/dist/venues/aave-v3/addresses.d.ts +6 -0
- package/dist/venues/aave-v3/addresses.js +19 -0
- package/dist/venues/aave-v3/addresses.js.map +1 -0
- package/dist/venues/aave-v3/client.d.ts +81 -0
- package/dist/venues/aave-v3/client.js +97 -0
- package/dist/venues/aave-v3/client.js.map +1 -0
- package/dist/venues/chainlink/client.d.ts +99 -0
- package/dist/venues/chainlink/client.js +130 -0
- package/dist/venues/chainlink/client.js.map +1 -0
- package/dist/venues/chainlink/feeds.d.ts +8 -0
- package/dist/venues/chainlink/feeds.js +9 -0
- package/dist/venues/chainlink/feeds.js.map +1 -0
- package/dist/venues/hyperliquid/account-value.d.ts +30 -0
- package/dist/venues/hyperliquid/account-value.js +30 -0
- package/dist/venues/hyperliquid/account-value.js.map +1 -0
- package/dist/venues/hyperliquid/client.d.ts +63 -0
- package/dist/venues/hyperliquid/client.js +135 -0
- package/dist/venues/hyperliquid/client.js.map +1 -0
- package/dist/venues/hyperliquid/grid.d.ts +36 -0
- package/dist/venues/hyperliquid/grid.js +61 -0
- package/dist/venues/hyperliquid/grid.js.map +1 -0
- package/dist/venues/hyperliquid/types.d.ts +81 -0
- package/dist/venues/hyperliquid/types.js +8 -0
- package/dist/venues/hyperliquid/types.js.map +1 -0
- package/dist/withdraw/run-withdraw-plan.js +2 -0
- package/dist/withdraw/run-withdraw-plan.js.map +1 -1
- package/docker-compose.yml +44 -0
- package/package.json +12 -1
- package/skills/jinn-operator/SKILL.md +85 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Restorer engine — main RestorationEngine class.
|
|
3
|
+
*
|
|
4
|
+
* §6.3, §6.5 of spec/2026-04-17-portfolio-v0-design.md
|
|
5
|
+
*
|
|
6
|
+
* Orchestrates the state machine lifecycle for each observed intent.
|
|
7
|
+
* Transition method bodies are stubs; subsequent tasks fill them in.
|
|
8
|
+
*/
|
|
9
|
+
import { IntentPersistence, type PersistedIntent, type PersistedIntentInput } from './persistence.js';
|
|
10
|
+
import type { Store } from '../../store/store.js';
|
|
11
|
+
import { type MarketplaceClaimer } from './claim.js';
|
|
12
|
+
import type { ClaimRegistryClient } from '../../adapters/claim-registry/client.js';
|
|
13
|
+
import { type PackagingDeps } from './packaging.js';
|
|
14
|
+
import { type ManifestAssemblyDeps } from './manifest-assembly.js';
|
|
15
|
+
import { type DeliveryDeps } from './delivery.js';
|
|
16
|
+
import type { RestorerImpl } from '../types.js';
|
|
17
|
+
export declare class NotImplementedError extends Error {
|
|
18
|
+
readonly transitionName: string;
|
|
19
|
+
constructor(transitionName: string);
|
|
20
|
+
}
|
|
21
|
+
export interface RestorerImplRegistry {
|
|
22
|
+
/** Returns the impl name for a given spec kind (and optional type), or null if none registered. */
|
|
23
|
+
resolveImplName(ctx: {
|
|
24
|
+
kind: string | null;
|
|
25
|
+
type?: 'restoration' | 'evaluation';
|
|
26
|
+
}): string | null;
|
|
27
|
+
}
|
|
28
|
+
export interface RestorationEngineOptions {
|
|
29
|
+
store: Store;
|
|
30
|
+
registry: RestorerImplRegistry;
|
|
31
|
+
paths: {
|
|
32
|
+
workingDirRoot: string;
|
|
33
|
+
implStateDirRoot: string;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Injected claim dependencies. When provided, engine.claim() is functional.
|
|
37
|
+
* When absent, claim() falls back to NotImplementedError (useful for tests
|
|
38
|
+
* that don't exercise the claim path).
|
|
39
|
+
*/
|
|
40
|
+
claimDeps?: {
|
|
41
|
+
registryClient: ClaimRegistryClient;
|
|
42
|
+
marketplaceClaimer: MarketplaceClaimer;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Packaging dependencies. When provided, pack() is functional.
|
|
46
|
+
* When absent, pack() falls back to NotImplementedError.
|
|
47
|
+
*/
|
|
48
|
+
packagingDeps?: PackagingDeps;
|
|
49
|
+
/**
|
|
50
|
+
* Manifest assembly dependencies. When provided, pack() can assemble + sign.
|
|
51
|
+
* When absent, pack() falls back to NotImplementedError.
|
|
52
|
+
*/
|
|
53
|
+
manifestDeps?: ManifestAssemblyDeps;
|
|
54
|
+
/**
|
|
55
|
+
* Delivery dependencies. When provided, deliver() is functional.
|
|
56
|
+
* When absent, deliver() falls back to NotImplementedError.
|
|
57
|
+
*/
|
|
58
|
+
deliveryDeps?: DeliveryDeps;
|
|
59
|
+
/**
|
|
60
|
+
* Impl registry for resolving which RestorerImpl to run.
|
|
61
|
+
* When provided and findFor() returns an impl, runImpl() dispatches to it.
|
|
62
|
+
*/
|
|
63
|
+
implRegistry?: {
|
|
64
|
+
findFor(ctx: {
|
|
65
|
+
kind: string;
|
|
66
|
+
type?: 'restoration' | 'evaluation';
|
|
67
|
+
}): RestorerImpl | undefined;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/** Per-intent outcome from a recovery pass. */
|
|
71
|
+
export interface RecoveryReport {
|
|
72
|
+
requestId: string;
|
|
73
|
+
outcome: 'ok' | 'failed';
|
|
74
|
+
error?: string;
|
|
75
|
+
}
|
|
76
|
+
export declare class RestorationEngine {
|
|
77
|
+
protected readonly persistence: IntentPersistence;
|
|
78
|
+
protected readonly registry: RestorerImplRegistry;
|
|
79
|
+
protected readonly paths: RestorationEngineOptions['paths'];
|
|
80
|
+
protected readonly claimDeps: RestorationEngineOptions['claimDeps'];
|
|
81
|
+
protected readonly packagingDeps: RestorationEngineOptions['packagingDeps'];
|
|
82
|
+
protected readonly manifestDeps: RestorationEngineOptions['manifestDeps'];
|
|
83
|
+
protected readonly deliveryDeps: RestorationEngineOptions['deliveryDeps'];
|
|
84
|
+
protected readonly implRegistry: RestorationEngineOptions['implRegistry'];
|
|
85
|
+
private readonly implOutputs;
|
|
86
|
+
/** Set by stop(); causes runTickLoop to exit at the next iteration. */
|
|
87
|
+
private stopped;
|
|
88
|
+
constructor(opts: RestorationEngineOptions);
|
|
89
|
+
/**
|
|
90
|
+
* Called when an intent is observed from an on-chain event.
|
|
91
|
+
* Persists a DISCOVERED row. Idempotent: if the row already exists, no-op.
|
|
92
|
+
*/
|
|
93
|
+
observe(input: PersistedIntentInput): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Recover all in-flight intents from persisted state.
|
|
96
|
+
* Called at daemon startup before beginning normal event processing.
|
|
97
|
+
* Returns a per-intent report for each intent attempted.
|
|
98
|
+
*/
|
|
99
|
+
recoverInFlight(): Promise<RecoveryReport[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Periodic tick: advance every in-flight intent by one transition.
|
|
102
|
+
* Called by `runTickLoop` so that intents which entered a non-event-driven
|
|
103
|
+
* state (e.g. CLAIMED waiting for windowStartTs) get re-driven without
|
|
104
|
+
* waiting for a daemon restart or a fresh marketplace event.
|
|
105
|
+
*
|
|
106
|
+
* Errors from individual intents are logged but do not stop the loop.
|
|
107
|
+
*/
|
|
108
|
+
tick(): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Drive `tick()` on a fixed interval until `stop()` is called.
|
|
111
|
+
* Errors thrown by tick() itself are logged and do not stop the loop.
|
|
112
|
+
*/
|
|
113
|
+
runTickLoop(intervalMs: number): Promise<void>;
|
|
114
|
+
/** Signal `runTickLoop` to exit at the next iteration. */
|
|
115
|
+
stop(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Process a single intent: dispatch by current state to the appropriate
|
|
118
|
+
* transition. Drives one state transition per call.
|
|
119
|
+
*
|
|
120
|
+
* Called both by recovery and by the ongoing event-processing loop.
|
|
121
|
+
*/
|
|
122
|
+
process(requestId: string): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Two-layer claim: ClaimRegistry + Marketplace.
|
|
125
|
+
*
|
|
126
|
+
* Idempotent on resume: checks ClaimRegistry for a pre-existing claim before
|
|
127
|
+
* sending any on-chain transaction.
|
|
128
|
+
*
|
|
129
|
+
* Advances state DISCOVERED → CLAIMED on success.
|
|
130
|
+
* Marks FAILED if either layer cannot be claimed.
|
|
131
|
+
*
|
|
132
|
+
* Requires claimDeps to be injected via constructor options. Falls back to
|
|
133
|
+
* NotImplementedError if claimDeps is absent (development / test mode).
|
|
134
|
+
*/
|
|
135
|
+
protected claim(intent: PersistedIntent): Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* Release ClaimRegistry claims for all CLAIMED intents whose work window has
|
|
138
|
+
* not yet started. Called on graceful engine shutdown.
|
|
139
|
+
*
|
|
140
|
+
* Returns the list of requestIds that were successfully released.
|
|
141
|
+
*/
|
|
142
|
+
releaseClaimedNotStarted(): Promise<string[]>;
|
|
143
|
+
/**
|
|
144
|
+
* PRE_SNAPSHOT transition: provision workingDir + implStateDir, write
|
|
145
|
+
* intent.json + env/ files, create sessions/ directory.
|
|
146
|
+
*
|
|
147
|
+
* Requires no external deps beyond filesystem access — always implemented.
|
|
148
|
+
* Advances state PRE_SNAPSHOT with workingDir + implStateDir patch.
|
|
149
|
+
*/
|
|
150
|
+
protected takePreSnapshot(intent: PersistedIntent): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* RUNNING transition: dispatch to a RestorerImpl if implRegistry is provided.
|
|
153
|
+
*
|
|
154
|
+
* When no impl is found for the spec kind, falls back to NotImplementedError
|
|
155
|
+
* so the engine does not silently swallow the request. In tests that don't
|
|
156
|
+
* exercise the impl path, override this method.
|
|
157
|
+
*
|
|
158
|
+
* Captures impl output in `implOutputs` map for pack() to consume. Also
|
|
159
|
+
* records a minimal post-snapshot so data-driven advance can fire.
|
|
160
|
+
*/
|
|
161
|
+
protected runImpl(intent: PersistedIntent): Promise<void>;
|
|
162
|
+
protected takePostSnapshot(_intent: PersistedIntent): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* PACKAGING transition: walk workingDir, upload artifacts, assemble + sign
|
|
165
|
+
* manifest, upload manifest, persist manifest CID + artifact CIDs.
|
|
166
|
+
*
|
|
167
|
+
* Requires packagingDeps + manifestDeps. When absent, falls back to
|
|
168
|
+
* NotImplementedError.
|
|
169
|
+
*/
|
|
170
|
+
protected pack(intent: PersistedIntent): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* DELIVERING transition: call mech.deliverToMarketplace + JinnRouter.claimDelivery.
|
|
173
|
+
*
|
|
174
|
+
* Requires deliveryDeps. When absent, falls back to NotImplementedError.
|
|
175
|
+
*
|
|
176
|
+
* Crash-recovery safe: if `intent.deliveryTxHash` is already set (persisted
|
|
177
|
+
* after a previous deliverToMarketplace call that completed before the process
|
|
178
|
+
* crashed), we skip the deliver step and go straight to claimDelivery.
|
|
179
|
+
*/
|
|
180
|
+
protected deliver(intent: PersistedIntent): Promise<void>;
|
|
181
|
+
/**
|
|
182
|
+
* Returns the next state if the current state can be advanced purely from
|
|
183
|
+
* persisted data (no external work needed), or null if external work is required.
|
|
184
|
+
*
|
|
185
|
+
* Used for crash recovery and for collapsing transitions in process()
|
|
186
|
+
* when a previous run already produced the data.
|
|
187
|
+
*/
|
|
188
|
+
private dataDrivenAdvance;
|
|
189
|
+
/**
|
|
190
|
+
* Wraps a transition method call with error handling: if the transition
|
|
191
|
+
* throws, the intent is marked FAILED with the error message.
|
|
192
|
+
*/
|
|
193
|
+
private _runTransition;
|
|
194
|
+
/**
|
|
195
|
+
* Recovery handler for a single in-flight intent.
|
|
196
|
+
* Dispatches by state per §6.5.
|
|
197
|
+
*/
|
|
198
|
+
private _recoverOne;
|
|
199
|
+
/**
|
|
200
|
+
* Per-state recovery dispatch per §6.5.
|
|
201
|
+
*/
|
|
202
|
+
private _recoverDispatch;
|
|
203
|
+
}
|