@jinn-network/client 0.1.1 → 0.1.2-canary.d6e72dfd
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 +210 -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/gather-status.d.ts +1 -0
- package/dist/api/gather-status.js +33 -1
- package/dist/api/gather-status.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 +1 -1
- package/dist/api/rewards-build.js.map +1 -1
- package/dist/api/status-build.d.ts +7 -0
- package/dist/api/status-build.js +1 -0
- package/dist/api/status-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/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/fund-requirements.js +2 -0
- package/dist/cli/commands/fund-requirements.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/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/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/creator.d.ts +7 -1
- package/dist/daemon/creator.js +38 -3
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +43 -0
- package/dist/daemon/daemon.js +87 -2
- package/dist/daemon/daemon.js.map +1 -1
- 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/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/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 +3 -1
- package/dist/store/store.js +3 -0
- 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
package/dist/main.js
CHANGED
|
@@ -31,6 +31,19 @@ import { MechAdapter } from './adapters/mech/adapter.js';
|
|
|
31
31
|
import { ClaudeRunner } from './runner/claude.js';
|
|
32
32
|
import { Daemon } from './daemon/daemon.js';
|
|
33
33
|
import { createJinnPublicClient, createJinnWalletClient } from './earning/viem-clients.js';
|
|
34
|
+
import { RestorerImplRegistry } from './restorer/engine/registry.js';
|
|
35
|
+
import { LegacyClaudeImpl } from './restorer/impls/legacy-claude/index.js';
|
|
36
|
+
import { ClaudeMcpHyperliquidImpl } from './restorer/impls/claude-mcp-hyperliquid/index.js';
|
|
37
|
+
import { PortfolioV0Evaluator } from './restorer/impls/portfolio-v0-evaluator/index.js';
|
|
38
|
+
import { PredictionV0BaselineImpl } from './restorer/impls/prediction-v0-baseline/index.js';
|
|
39
|
+
import { PredictionV0Evaluator } from './restorer/impls/prediction-v0-evaluator/index.js';
|
|
40
|
+
import { ClaudeMcpPredictionImpl } from './restorer/impls/claude-mcp-prediction/index.js';
|
|
41
|
+
import { PredictionApyV0BaselineImpl } from './restorer/impls/prediction-apy-v0-baseline/index.js';
|
|
42
|
+
import { PredictionApyV0Evaluator } from './restorer/impls/prediction-apy-v0-evaluator/index.js';
|
|
43
|
+
import { ClaimRegistryClient } from './adapters/claim-registry/client.js';
|
|
44
|
+
import { createClients } from './adapters/mech/safe.js';
|
|
45
|
+
import { makePredictionV0Generator } from './intents/prediction-v0-auto.js';
|
|
46
|
+
import { BASE_SEPOLIA_FEEDS, BASE_FEEDS } from './venues/chainlink/feeds.js';
|
|
34
47
|
dotenvConfig({ path: join(dirname(fileURLToPath(import.meta.url)), '..', '.env') });
|
|
35
48
|
// ── Password (env-only — never in config files) ────────────────────────────
|
|
36
49
|
const PASSWORD = (() => {
|
|
@@ -50,6 +63,7 @@ const CHAIN_CONFIG = getChainConfig(NETWORK_CHAIN, {
|
|
|
50
63
|
testnetL2TokenDeploymentPath: config.testnetL2TokenDeploymentPath,
|
|
51
64
|
testnetMechDeploymentPath: config.testnetMechDeploymentPath,
|
|
52
65
|
testnetStolasDeploymentPath: config.testnetStolasDeploymentPath,
|
|
66
|
+
testnetClaimRegistryDeploymentPath: config.testnetClaimRegistryDeploymentPath,
|
|
53
67
|
});
|
|
54
68
|
const MARKETPLACE_ADDRESS = CHAIN_CONFIG.mechMarketplace;
|
|
55
69
|
const ROUTER_ADDRESS = (CHAIN_CONFIG.jinnRouter ?? '0xfFa7118A3D820cd4E820010837D65FAfF463181B');
|
|
@@ -106,6 +120,7 @@ async function bootstrap() {
|
|
|
106
120
|
testnetL2TokenDeploymentPath: config.testnetL2TokenDeploymentPath,
|
|
107
121
|
testnetMechDeploymentPath: config.testnetMechDeploymentPath,
|
|
108
122
|
testnetStolasDeploymentPath: config.testnetStolasDeploymentPath,
|
|
123
|
+
testnetClaimRegistryDeploymentPath: config.testnetClaimRegistryDeploymentPath,
|
|
109
124
|
debug: config.debug,
|
|
110
125
|
masterEthDailyEstimateWei: config.masterEthDailyEstimateWei,
|
|
111
126
|
pollIntervalMs: config.pollIntervalMs,
|
|
@@ -199,7 +214,7 @@ export async function main() {
|
|
|
199
214
|
if (!preflight.ok) {
|
|
200
215
|
emitClaudeBinaryPreflightFailure(preflight.detail, config.claudePath);
|
|
201
216
|
}
|
|
202
|
-
const authContext = detectAuthContext({ cwd: process.cwd() });
|
|
217
|
+
const authContext = detectAuthContext({ cwd: process.cwd(), configuredMode: config.runtimeMode });
|
|
203
218
|
const authProbe = probeClaudeAuth({ context: authContext, cwd: process.cwd() });
|
|
204
219
|
if (!authProbe.authenticated) {
|
|
205
220
|
emitEnvelope({
|
|
@@ -223,15 +238,133 @@ export async function main() {
|
|
|
223
238
|
const masterAccount = deriveMasterSigner(mnemonicForMaster);
|
|
224
239
|
const publicClient = createJinnPublicClient(config.rpcUrl, NETWORK_CHAIN);
|
|
225
240
|
const masterWallet = createJinnWalletClient(config.rpcUrl, NETWORK_CHAIN, masterAccount);
|
|
241
|
+
// ── RestorationEngine wiring ─────────────────────────────────────────────────
|
|
242
|
+
// Build agent viem clients (same creds as MechAdapter uses internally).
|
|
243
|
+
const agentChain = config.network === 'testnet'
|
|
244
|
+
? (await import('viem/chains')).baseSepolia
|
|
245
|
+
: (await import('viem/chains')).base;
|
|
246
|
+
const agentClients = createClients(config.rpcUrl, agentPrivateKey, agentChain);
|
|
247
|
+
// ── Impl registry ────────────────────────────────────────────────────────────
|
|
248
|
+
// Default-disable impls with external dependencies the operator must opt
|
|
249
|
+
// into (see cli/intent-registry-access.ts). The user's
|
|
250
|
+
// `config.restorers.disabled[]` fully overrides this default when present,
|
|
251
|
+
// so `jinn intents enable <kind>` persists the opt-in by writing to that
|
|
252
|
+
// list in ~/.jinn-client/config.json.
|
|
253
|
+
const { DEFAULT_DISABLED_IMPLS, DEFAULT_BY_KIND } = await import('./cli/intent-registry-access.js');
|
|
254
|
+
const implRegistry = new RestorerImplRegistry({
|
|
255
|
+
byKind: { ...DEFAULT_BY_KIND },
|
|
256
|
+
default: 'legacy-claude',
|
|
257
|
+
disabled: [...DEFAULT_DISABLED_IMPLS],
|
|
258
|
+
...(config.restorers ?? {}),
|
|
259
|
+
});
|
|
260
|
+
// legacy-claude: wraps ClaudeRunner; handles spec=undefined (health-check) intents
|
|
261
|
+
implRegistry.register(new LegacyClaudeImpl({
|
|
262
|
+
runner,
|
|
263
|
+
workingDirectory: '/tmp',
|
|
264
|
+
timeoutMs: 300_000,
|
|
265
|
+
daemonApiUrl: `http://127.0.0.1:${config.apiPort}`,
|
|
266
|
+
}));
|
|
267
|
+
// claude-mcp-hyperliquid: portfolio.v0 trader
|
|
268
|
+
implRegistry.register(new ClaudeMcpHyperliquidImpl({
|
|
269
|
+
claudePath: config.claudePath,
|
|
270
|
+
claudeModel: config.claudeModel,
|
|
271
|
+
}));
|
|
272
|
+
// portfolio-v0-evaluator: deterministic verifier — dispatched via type='evaluation' for portfolio.v0 kind
|
|
273
|
+
implRegistry.register(new PortfolioV0Evaluator());
|
|
274
|
+
// prediction-v0-baseline: reference restorer for prediction.v0 intents
|
|
275
|
+
implRegistry.register(new PredictionV0BaselineImpl({
|
|
276
|
+
rpcUrl: config.rpcUrl,
|
|
277
|
+
}));
|
|
278
|
+
// claude-mcp-prediction: opt-in alternative that spawns Claude via MCP.
|
|
279
|
+
// Only chosen when config.restorers.byKind['prediction.v0'] names it.
|
|
280
|
+
// Registered unconditionally so the registry's byKind dispatch can find
|
|
281
|
+
// it when opted-in; baseline stays default via the byKind map above.
|
|
282
|
+
implRegistry.register(new ClaudeMcpPredictionImpl({
|
|
283
|
+
claudePath: config.claudePath,
|
|
284
|
+
claudeModel: config.claudeModel,
|
|
285
|
+
rpcUrl: config.rpcUrl,
|
|
286
|
+
}));
|
|
287
|
+
// prediction-v0-evaluator: deterministic verifier for prediction.v0 evaluation jobs
|
|
288
|
+
implRegistry.register(new PredictionV0Evaluator({
|
|
289
|
+
evaluatorPk: agentPrivateKey,
|
|
290
|
+
evaluatorSafeAddress: safeAddress,
|
|
291
|
+
rpcUrl: config.rpcUrl,
|
|
292
|
+
}));
|
|
293
|
+
implRegistry.register(new PredictionApyV0BaselineImpl({
|
|
294
|
+
rpcUrl: config.rpcUrl,
|
|
295
|
+
archiveRpcUrl: config.archiveRpcUrl,
|
|
296
|
+
}));
|
|
297
|
+
implRegistry.register(new PredictionApyV0Evaluator({
|
|
298
|
+
evaluatorPk: agentPrivateKey,
|
|
299
|
+
evaluatorSafeAddress: safeAddress,
|
|
300
|
+
rpcUrl: config.rpcUrl,
|
|
301
|
+
archiveRpcUrl: config.archiveRpcUrl,
|
|
302
|
+
}));
|
|
303
|
+
console.log(`[main] RestorerImplRegistry: ${implRegistry.list().map(i => i.name).join(', ')}`);
|
|
304
|
+
// ── Engine deps ───────────────────────────────────────────────────────────────
|
|
305
|
+
// Packaging deps: IPFS upload + optional artifact registration (wired in daemon via registerArtifact)
|
|
306
|
+
const packagingDeps = {
|
|
307
|
+
ipfsRegistryUrl: config.ipfsRegistryUrl,
|
|
308
|
+
};
|
|
309
|
+
// Manifest assembly deps: sign manifests with agent EOA private key
|
|
310
|
+
const manifestDeps = {
|
|
311
|
+
ipfsRegistryUrl: config.ipfsRegistryUrl,
|
|
312
|
+
agentEoaPrivateKey: agentPrivateKey,
|
|
313
|
+
safeAddress,
|
|
314
|
+
};
|
|
315
|
+
// Delivery deps: deliver to marketplace + claimDelivery via JinnRouter
|
|
316
|
+
const deliveryDeps = {
|
|
317
|
+
publicClient: agentClients.publicClient,
|
|
318
|
+
walletClient: agentClients.walletClient,
|
|
319
|
+
safeAddress,
|
|
320
|
+
mechContractAddress: mechAddress,
|
|
321
|
+
routerAddress: ROUTER_ADDRESS,
|
|
322
|
+
claimDeliveryVariant: CHAIN_CONFIG.routerClaimDeliveryVersion,
|
|
323
|
+
};
|
|
324
|
+
// Claim deps: use the network default when bundled, with env override for
|
|
325
|
+
// emergency redeploys or custom test deployments.
|
|
326
|
+
const claimRegistryAddress = (process.env['JINN_CLAIM_REGISTRY_ADDRESS']
|
|
327
|
+
?? CHAIN_CONFIG.claimRegistry
|
|
328
|
+
?? '');
|
|
329
|
+
const claimDeps = claimRegistryAddress
|
|
330
|
+
? {
|
|
331
|
+
registryClient: new ClaimRegistryClient(agentClients.publicClient, agentClients.walletClient, claimRegistryAddress, safeAddress),
|
|
332
|
+
marketplaceClaimer: adapter,
|
|
333
|
+
}
|
|
334
|
+
: undefined;
|
|
335
|
+
if (claimRegistryAddress) {
|
|
336
|
+
console.log(`[main] ClaimRegistry: ${claimRegistryAddress}`);
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
console.log('[main] ClaimRegistry: not configured (claim step will use NotImplementedError fallback)');
|
|
340
|
+
}
|
|
341
|
+
// ── Auto-intent generators (testnet only, opt-out via env) ─────────────────
|
|
342
|
+
const intentGenerators = [];
|
|
343
|
+
const autoIntentsDisabled = process.env['JINN_DISABLE_AUTO_INTENTS'] === '1';
|
|
344
|
+
if (config.network === 'testnet' && !autoIntentsDisabled) {
|
|
345
|
+
intentGenerators.push(makePredictionV0Generator({
|
|
346
|
+
feed: BASE_SEPOLIA_FEEDS['ETH / USD'],
|
|
347
|
+
feedDescription: 'ETH / USD',
|
|
348
|
+
venue: 'chainlink-base-sepolia',
|
|
349
|
+
rpcUrl: config.rpcUrl,
|
|
350
|
+
}));
|
|
351
|
+
console.log('[main] auto-intent generator enabled: prediction.v0 (testnet, ETH/USD coin-flip+0.5%)');
|
|
352
|
+
}
|
|
353
|
+
else if (config.network === 'mainnet' && !autoIntentsDisabled && BASE_FEEDS['ETH / USD']) {
|
|
354
|
+
// Mainnet opt-in only; default is OFF. Reserved for a future flag.
|
|
355
|
+
}
|
|
226
356
|
const daemon = new Daemon({
|
|
227
357
|
adapter,
|
|
228
358
|
runner,
|
|
229
359
|
desiredStates: config.desiredStates,
|
|
230
360
|
dbPath: config.dbPath,
|
|
361
|
+
pollIntervalMs: config.pollIntervalMs,
|
|
231
362
|
apiPort: config.apiPort,
|
|
232
363
|
peers: config.peers.length > 0 ? config.peers : undefined,
|
|
233
364
|
subgraphUrl: config.subgraphUrl,
|
|
234
365
|
nodeEndpoint: config.nodeEndpoint,
|
|
366
|
+
intentGenerators,
|
|
367
|
+
creatorSafeAddress: safeAddress,
|
|
235
368
|
status: {
|
|
236
369
|
earningDir: config.earningDir,
|
|
237
370
|
rpcUrl: config.rpcUrl,
|
|
@@ -243,6 +376,7 @@ export async function main() {
|
|
|
243
376
|
testnetL2TokenDeploymentPath: config.testnetL2TokenDeploymentPath,
|
|
244
377
|
testnetMechDeploymentPath: config.testnetMechDeploymentPath,
|
|
245
378
|
testnetStolasDeploymentPath: config.testnetStolasDeploymentPath,
|
|
379
|
+
testnetClaimRegistryDeploymentPath: config.testnetClaimRegistryDeploymentPath,
|
|
246
380
|
},
|
|
247
381
|
rewardClaim: config.rewardClaimIntervalMs > 0
|
|
248
382
|
? {
|
|
@@ -254,6 +388,20 @@ export async function main() {
|
|
|
254
388
|
distributorAddress: CHAIN_CONFIG.distributorAddress,
|
|
255
389
|
}
|
|
256
390
|
: undefined,
|
|
391
|
+
restorationEngine: {
|
|
392
|
+
// TODO(jinn-mono-cy4): RestorationEngineOptions has redundant registry+implRegistry
|
|
393
|
+
// fields. Engine refactor should consolidate to one. Locked in this PR.
|
|
394
|
+
registry: implRegistry,
|
|
395
|
+
paths: {
|
|
396
|
+
workingDirRoot: '/tmp/jinn-engine-working',
|
|
397
|
+
implStateDirRoot: '/tmp/jinn-engine-impl-state',
|
|
398
|
+
},
|
|
399
|
+
claimDeps,
|
|
400
|
+
packagingDeps,
|
|
401
|
+
manifestDeps,
|
|
402
|
+
deliveryDeps,
|
|
403
|
+
implRegistry,
|
|
404
|
+
},
|
|
257
405
|
balanceTopup: config.balanceTopupIntervalMs > 0
|
|
258
406
|
? {
|
|
259
407
|
intervalMs: config.balanceTopupIntervalMs,
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Exposes tools that let an external agent (e.g. Claude Desktop) manage a jinn
|
|
5
5
|
* fleet: read status, bootstrap, submit intents, start/stop the daemon.
|
|
6
6
|
*
|
|
7
|
-
* Entry
|
|
7
|
+
* Entry points: `jinn mcp` command (canonical) and `jinn-mcp` (compat shim).
|
|
8
8
|
*
|
|
9
9
|
* Design: wraps CLI command modules directly (Option B from the research doc).
|
|
10
10
|
* Each command already accepts an injectable { writer, exit } context, so we
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Exposes tools that let an external agent (e.g. Claude Desktop) manage a jinn
|
|
5
5
|
* fleet: read status, bootstrap, submit intents, start/stop the daemon.
|
|
6
6
|
*
|
|
7
|
-
* Entry
|
|
7
|
+
* Entry points: `jinn mcp` command (canonical) and `jinn-mcp` (compat shim).
|
|
8
8
|
*
|
|
9
9
|
* Design: wraps CLI command modules directly (Option B from the research doc).
|
|
10
10
|
* Each command already accepts an injectable { writer, exit } context, so we
|
|
@@ -6,11 +6,22 @@
|
|
|
6
6
|
* - 'docker-compose' — a docker-compose.yml with a jinn-daemon service lives in cwd
|
|
7
7
|
* - 'bare' — plain host environment (default)
|
|
8
8
|
*
|
|
9
|
-
* Priority:
|
|
9
|
+
* Priority:
|
|
10
|
+
* 1. JINN_RUNTIME_MODE env var (authoritative; CI/scripted operators)
|
|
11
|
+
* 2. `runtimeMode` field in the resolved config (persisted by `jinn auth`)
|
|
12
|
+
* 3. Filesystem heuristic (container → docker-compose → bare) as a last resort
|
|
13
|
+
*
|
|
14
|
+
* The filesystem path is a LAST RESORT because running from the `client/`
|
|
15
|
+
* checkout dir misdetects as docker-compose (the package's own compose file
|
|
16
|
+
* names `jinn-daemon`). Operators should set `runtimeMode` at `jinn auth`.
|
|
10
17
|
*/
|
|
11
18
|
export type AuthContext = 'container' | 'docker-compose' | 'bare';
|
|
12
19
|
export interface DetectContextOptions {
|
|
13
20
|
cwd: string;
|
|
21
|
+
/** Optional explicit mode, typically from `config.runtimeMode`. Highest priority. */
|
|
22
|
+
configuredMode?: AuthContext;
|
|
23
|
+
/** Optional env (default: process.env). Tests can inject a stub. */
|
|
24
|
+
env?: NodeJS.ProcessEnv;
|
|
14
25
|
/** Override the /.dockerenv existence check (for testing). */
|
|
15
26
|
dockerenvExists?: boolean;
|
|
16
27
|
/** Override the docker-compose.yml jinn-daemon check (for testing). */
|
|
@@ -6,7 +6,14 @@
|
|
|
6
6
|
* - 'docker-compose' — a docker-compose.yml with a jinn-daemon service lives in cwd
|
|
7
7
|
* - 'bare' — plain host environment (default)
|
|
8
8
|
*
|
|
9
|
-
* Priority:
|
|
9
|
+
* Priority:
|
|
10
|
+
* 1. JINN_RUNTIME_MODE env var (authoritative; CI/scripted operators)
|
|
11
|
+
* 2. `runtimeMode` field in the resolved config (persisted by `jinn auth`)
|
|
12
|
+
* 3. Filesystem heuristic (container → docker-compose → bare) as a last resort
|
|
13
|
+
*
|
|
14
|
+
* The filesystem path is a LAST RESORT because running from the `client/`
|
|
15
|
+
* checkout dir misdetects as docker-compose (the package's own compose file
|
|
16
|
+
* names `jinn-daemon`). Operators should set `runtimeMode` at `jinn auth`.
|
|
10
17
|
*/
|
|
11
18
|
import { existsSync, readFileSync } from 'node:fs';
|
|
12
19
|
import { spawnSync } from 'node:child_process';
|
|
@@ -21,13 +28,24 @@ import { join } from 'node:path';
|
|
|
21
28
|
*/
|
|
22
29
|
export function detectAuthContext(opts) {
|
|
23
30
|
const { cwd } = opts;
|
|
24
|
-
|
|
31
|
+
const env = opts.env ?? process.env;
|
|
32
|
+
// 1. JINN_RUNTIME_MODE env var (CI / scripted operators).
|
|
33
|
+
const envMode = env['JINN_RUNTIME_MODE'];
|
|
34
|
+
if (envMode === 'bare' || envMode === 'docker-compose' || envMode === 'container') {
|
|
35
|
+
return envMode;
|
|
36
|
+
}
|
|
37
|
+
// 2. Explicit config (persisted by `jinn auth`).
|
|
38
|
+
if (opts.configuredMode) {
|
|
39
|
+
return opts.configuredMode;
|
|
40
|
+
}
|
|
41
|
+
// 3. Filesystem heuristic — last resort. Flawed inside the client/ checkout dir
|
|
42
|
+
// because the package's own docker-compose.yml names jinn-daemon. Prefer
|
|
43
|
+
// setting runtimeMode explicitly.
|
|
25
44
|
const inContainer = opts.dockerenvExists !== undefined
|
|
26
45
|
? opts.dockerenvExists
|
|
27
46
|
: existsSync('/.dockerenv');
|
|
28
47
|
if (inContainer)
|
|
29
48
|
return 'container';
|
|
30
|
-
// Resolve compose service — injected override or parse the file.
|
|
31
49
|
const hasComposeService = opts.composeServiceExists !== undefined
|
|
32
50
|
? opts.composeServiceExists
|
|
33
51
|
: _composeHasJinnDaemon(cwd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-auth.js","sourceRoot":"","sources":["../../src/preflight/claude-auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claude-auth.js","sourceRoot":"","sources":["../../src/preflight/claude-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical JSON serialisation — sorted keys, no whitespace.
|
|
3
|
+
*
|
|
4
|
+
* Used for manifest signing: produce a deterministic byte string that two
|
|
5
|
+
* independent parties can reproduce from the same object graph.
|
|
6
|
+
*
|
|
7
|
+
* Rules:
|
|
8
|
+
* - Object keys are sorted lexicographically (UTF-16 code-unit order, same as
|
|
9
|
+
* Array.prototype.sort() on strings — matches JSON.stringify key insertion
|
|
10
|
+
* order when we control insertion).
|
|
11
|
+
* - Arrays preserve element order.
|
|
12
|
+
* - Numbers: JS default toString (no special formatting).
|
|
13
|
+
* - null, boolean, string: standard JSON encoding.
|
|
14
|
+
* - undefined values in objects are dropped (same as JSON.stringify).
|
|
15
|
+
* - NaN and Infinity are not valid JSON; this function will produce "null" for
|
|
16
|
+
* those values, matching JSON.stringify behaviour.
|
|
17
|
+
*/
|
|
18
|
+
export declare function canonicalJson(value: unknown): string;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical JSON serialisation — sorted keys, no whitespace.
|
|
3
|
+
*
|
|
4
|
+
* Used for manifest signing: produce a deterministic byte string that two
|
|
5
|
+
* independent parties can reproduce from the same object graph.
|
|
6
|
+
*
|
|
7
|
+
* Rules:
|
|
8
|
+
* - Object keys are sorted lexicographically (UTF-16 code-unit order, same as
|
|
9
|
+
* Array.prototype.sort() on strings — matches JSON.stringify key insertion
|
|
10
|
+
* order when we control insertion).
|
|
11
|
+
* - Arrays preserve element order.
|
|
12
|
+
* - Numbers: JS default toString (no special formatting).
|
|
13
|
+
* - null, boolean, string: standard JSON encoding.
|
|
14
|
+
* - undefined values in objects are dropped (same as JSON.stringify).
|
|
15
|
+
* - NaN and Infinity are not valid JSON; this function will produce "null" for
|
|
16
|
+
* those values, matching JSON.stringify behaviour.
|
|
17
|
+
*/
|
|
18
|
+
export function canonicalJson(value) {
|
|
19
|
+
if (value === null)
|
|
20
|
+
return 'null';
|
|
21
|
+
if (value === undefined)
|
|
22
|
+
return 'null';
|
|
23
|
+
if (typeof value === 'boolean')
|
|
24
|
+
return value ? 'true' : 'false';
|
|
25
|
+
if (typeof value === 'number') {
|
|
26
|
+
// NaN / Infinity → null, matching JSON.stringify
|
|
27
|
+
if (!isFinite(value))
|
|
28
|
+
return 'null';
|
|
29
|
+
return String(value);
|
|
30
|
+
}
|
|
31
|
+
if (typeof value === 'string')
|
|
32
|
+
return JSON.stringify(value);
|
|
33
|
+
if (Array.isArray(value)) {
|
|
34
|
+
const items = value.map((v) => canonicalJson(v)).join(',');
|
|
35
|
+
return `[${items}]`;
|
|
36
|
+
}
|
|
37
|
+
if (typeof value === 'object') {
|
|
38
|
+
const obj = value;
|
|
39
|
+
const pairs = Object.keys(obj)
|
|
40
|
+
.sort()
|
|
41
|
+
.flatMap((key) => {
|
|
42
|
+
const v = obj[key];
|
|
43
|
+
if (v === undefined)
|
|
44
|
+
return []; // drop undefined (matches JSON.stringify)
|
|
45
|
+
return [`${JSON.stringify(key)}:${canonicalJson(v)}`];
|
|
46
|
+
});
|
|
47
|
+
return `{${pairs.join(',')}}`;
|
|
48
|
+
}
|
|
49
|
+
// Bigint: emit raw decimal digits WITHOUT quotes, matching RFC 8785 and other
|
|
50
|
+
// canonical-JSON libs. JSON.stringify would throw; converting through String()
|
|
51
|
+
// would produce a quoted "12345" instead of the unquoted integer 12345.
|
|
52
|
+
// We do NOT convert through Number() because bigints can exceed JS number precision.
|
|
53
|
+
if (typeof value === 'bigint')
|
|
54
|
+
return value.toString();
|
|
55
|
+
// Fallback: other exotic types — JSON.stringify would throw;
|
|
56
|
+
// we convert to string to avoid hard failures.
|
|
57
|
+
return JSON.stringify(String(value));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=canonical-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../../src/restorer/engine/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,iDAAiD;QACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACpC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,IAAI,KAAK,GAAG,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAC3B,IAAI,EAAE;aACN,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC,CAAC,0CAA0C;YAC1E,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACL,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,CAAC;IACD,8EAA8E;IAC9E,+EAA+E;IAC/E,wEAAwE;IACxE,qFAAqF;IACrF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACvD,6DAA6D;IAC7D,+CAA+C;IAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Two-layer claim orchestration for the restorer engine.
|
|
3
|
+
*
|
|
4
|
+
* §6.1, §9.1, §9.2 of spec/2026-04-17-portfolio-v0-design.md
|
|
5
|
+
*
|
|
6
|
+
* Layer 1: ClaimRegistry claim — Jinn's work-coordination contract.
|
|
7
|
+
* Layer 2: Marketplace priority claim — calls MechAdapter.claimRequest() to
|
|
8
|
+
* register the priority-mech exclusivity window (300 s responseTimeout).
|
|
9
|
+
*
|
|
10
|
+
* The ClaimRegistry claimTTL is owner-configured per-deployment and is not
|
|
11
|
+
* passed by the client.
|
|
12
|
+
*
|
|
13
|
+
* Recovery:
|
|
14
|
+
* On resume, ClaimRegistryClient.weAlreadyClaimed() is checked before any
|
|
15
|
+
* on-chain write. If we already hold the claim, the ClaimRegistry step is
|
|
16
|
+
* skipped entirely. The marketplace claim is re-attempted because it is
|
|
17
|
+
* stateless from the engine's perspective (MechAdapter is idempotent there).
|
|
18
|
+
*
|
|
19
|
+
* Failure modes:
|
|
20
|
+
* - ClaimRegistry claim fails → throw, no marketplace call, engine marks FAILED.
|
|
21
|
+
* - Marketplace claim fails → release ClaimRegistry claim, throw.
|
|
22
|
+
*/
|
|
23
|
+
import type { ClaimRegistryClient } from '../../adapters/claim-registry/client.js';
|
|
24
|
+
/**
|
|
25
|
+
* Minimal interface for the marketplace adapter's claim path.
|
|
26
|
+
* The full MechAdapter satisfies this; tests can inject a stub.
|
|
27
|
+
*/
|
|
28
|
+
export interface MarketplaceClaimer {
|
|
29
|
+
claimRequest(requestId: string): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Parameters describing a single intent's timing window.
|
|
33
|
+
* Extracted from PersistedIntent for testability (no DB dependency).
|
|
34
|
+
*/
|
|
35
|
+
export interface ClaimWindow {
|
|
36
|
+
requestId: string;
|
|
37
|
+
/** Window start timestamp in ms (epoch). Used for graceful release decision. */
|
|
38
|
+
windowStartTs: number;
|
|
39
|
+
}
|
|
40
|
+
/** Result of a successful two-layer claim. */
|
|
41
|
+
export interface ClaimResult {
|
|
42
|
+
/** True if the ClaimRegistry claim was freshly placed (false = pre-existing). */
|
|
43
|
+
registryClaimWasFresh: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Execute the two-layer claim for a single intent.
|
|
47
|
+
*
|
|
48
|
+
* // Claim ordering: ClaimRegistry FIRST (cheap coordination lock), marketplace SECOND.
|
|
49
|
+
* // Spec §6.1 lists them in opposite order but doesn't enforce sequencing — registry-first
|
|
50
|
+
* // is preferred because: (a) ClaimRegistry revert is fast and signals "another restorer
|
|
51
|
+
* // is on it" cleanly; (b) marketplace claim is more expensive (Safe tx + actual gas);
|
|
52
|
+
* // (c) we release ClaimRegistry on marketplace failure to avoid leaking a stale claim.
|
|
53
|
+
*
|
|
54
|
+
* @param claimWindow - Timing data for the intent (requestId, windowStartTs).
|
|
55
|
+
* @param registryClient - ClaimRegistryClient for the deployed ClaimRegistry contract.
|
|
56
|
+
* @param marketplaceClaimer - Adapter whose claimRequest() performs the marketplace claim.
|
|
57
|
+
* @returns ClaimResult on success.
|
|
58
|
+
* @throws If either layer cannot be claimed (after graceful cleanup).
|
|
59
|
+
*/
|
|
60
|
+
export declare function executeTwoLayerClaim(claimWindow: ClaimWindow, registryClient: ClaimRegistryClient, marketplaceClaimer: MarketplaceClaimer): Promise<ClaimResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Release the ClaimRegistry claim for an intent that was CLAIMED but whose
|
|
63
|
+
* work window has not yet started (windowStartTs not reached).
|
|
64
|
+
*
|
|
65
|
+
* Used during graceful engine shutdown. No-op if we don't hold the claim.
|
|
66
|
+
*
|
|
67
|
+
* @returns true if the claim was released, false if there was nothing to release.
|
|
68
|
+
*/
|
|
69
|
+
export declare function releaseClaimedNotStarted(claimWindow: ClaimWindow, registryClient: ClaimRegistryClient): Promise<boolean>;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Two-layer claim orchestration for the restorer engine.
|
|
3
|
+
*
|
|
4
|
+
* §6.1, §9.1, §9.2 of spec/2026-04-17-portfolio-v0-design.md
|
|
5
|
+
*
|
|
6
|
+
* Layer 1: ClaimRegistry claim — Jinn's work-coordination contract.
|
|
7
|
+
* Layer 2: Marketplace priority claim — calls MechAdapter.claimRequest() to
|
|
8
|
+
* register the priority-mech exclusivity window (300 s responseTimeout).
|
|
9
|
+
*
|
|
10
|
+
* The ClaimRegistry claimTTL is owner-configured per-deployment and is not
|
|
11
|
+
* passed by the client.
|
|
12
|
+
*
|
|
13
|
+
* Recovery:
|
|
14
|
+
* On resume, ClaimRegistryClient.weAlreadyClaimed() is checked before any
|
|
15
|
+
* on-chain write. If we already hold the claim, the ClaimRegistry step is
|
|
16
|
+
* skipped entirely. The marketplace claim is re-attempted because it is
|
|
17
|
+
* stateless from the engine's perspective (MechAdapter is idempotent there).
|
|
18
|
+
*
|
|
19
|
+
* Failure modes:
|
|
20
|
+
* - ClaimRegistry claim fails → throw, no marketplace call, engine marks FAILED.
|
|
21
|
+
* - Marketplace claim fails → release ClaimRegistry claim, throw.
|
|
22
|
+
*/
|
|
23
|
+
// ── Two-layer claim ───────────────────────────────────────────────────────────
|
|
24
|
+
/**
|
|
25
|
+
* Execute the two-layer claim for a single intent.
|
|
26
|
+
*
|
|
27
|
+
* // Claim ordering: ClaimRegistry FIRST (cheap coordination lock), marketplace SECOND.
|
|
28
|
+
* // Spec §6.1 lists them in opposite order but doesn't enforce sequencing — registry-first
|
|
29
|
+
* // is preferred because: (a) ClaimRegistry revert is fast and signals "another restorer
|
|
30
|
+
* // is on it" cleanly; (b) marketplace claim is more expensive (Safe tx + actual gas);
|
|
31
|
+
* // (c) we release ClaimRegistry on marketplace failure to avoid leaking a stale claim.
|
|
32
|
+
*
|
|
33
|
+
* @param claimWindow - Timing data for the intent (requestId, windowStartTs).
|
|
34
|
+
* @param registryClient - ClaimRegistryClient for the deployed ClaimRegistry contract.
|
|
35
|
+
* @param marketplaceClaimer - Adapter whose claimRequest() performs the marketplace claim.
|
|
36
|
+
* @returns ClaimResult on success.
|
|
37
|
+
* @throws If either layer cannot be claimed (after graceful cleanup).
|
|
38
|
+
*/
|
|
39
|
+
export async function executeTwoLayerClaim(claimWindow, registryClient, marketplaceClaimer) {
|
|
40
|
+
const requestIdHex = claimWindow.requestId;
|
|
41
|
+
// ── Layer 1: ClaimRegistry ────────────────────────────────────────────────
|
|
42
|
+
// Idempotency check: if we already hold the claim, skip the on-chain write.
|
|
43
|
+
const alreadyClaimed = await registryClient.weAlreadyClaimed(requestIdHex);
|
|
44
|
+
let registryClaimWasFresh = false;
|
|
45
|
+
if (!alreadyClaimed) {
|
|
46
|
+
const result = await registryClient.claimJob(requestIdHex);
|
|
47
|
+
if (!result.claimed) {
|
|
48
|
+
throw new Error(`[claim-orchestration] ClaimRegistry claim failed for ${claimWindow.requestId} — another operator may hold the claim`);
|
|
49
|
+
}
|
|
50
|
+
registryClaimWasFresh = true;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
console.log(`[claim-orchestration] ClaimRegistry: pre-existing claim found for ${claimWindow.requestId}, skipping re-claim`);
|
|
54
|
+
}
|
|
55
|
+
// ── Layer 2: Marketplace ──────────────────────────────────────────────────
|
|
56
|
+
try {
|
|
57
|
+
await marketplaceClaimer.claimRequest(claimWindow.requestId);
|
|
58
|
+
}
|
|
59
|
+
catch (marketplaceErr) {
|
|
60
|
+
// Marketplace claim failed — release the ClaimRegistry claim we just placed
|
|
61
|
+
// (only if we placed it fresh; pre-existing claims are not ours to release here)
|
|
62
|
+
// TODO(v0 trade-off): on the resume path (weAlreadyClaimed = true, registryClaimWasFresh = false)
|
|
63
|
+
// we do NOT release the ClaimRegistry claim here. Releasing on a transient marketplace failure
|
|
64
|
+
// would forfeit our coordination lock and let a competing restorer take it. The downside is that
|
|
65
|
+
// on a *persistent* failure the claim sits locked until TTL expiry (owner-configured per-deployment).
|
|
66
|
+
// Distinguishing transient vs. permanent failures is non-trivial; for v0 we accept the TTL wait.
|
|
67
|
+
// Future: inspect the marketplace error type and release only on permanent failures.
|
|
68
|
+
if (registryClaimWasFresh) {
|
|
69
|
+
try {
|
|
70
|
+
await registryClient.releaseClaim(requestIdHex);
|
|
71
|
+
console.log(`[claim-orchestration] released ClaimRegistry claim for ${claimWindow.requestId} after marketplace failure`);
|
|
72
|
+
}
|
|
73
|
+
catch (releaseErr) {
|
|
74
|
+
const releaseMsg = releaseErr instanceof Error ? releaseErr.message : String(releaseErr);
|
|
75
|
+
console.error(`[claim-orchestration] failed to release ClaimRegistry claim for ${claimWindow.requestId} after marketplace failure: ${releaseMsg}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
throw marketplaceErr;
|
|
79
|
+
}
|
|
80
|
+
return { registryClaimWasFresh };
|
|
81
|
+
}
|
|
82
|
+
// ── Graceful release ──────────────────────────────────────────────────────────
|
|
83
|
+
/**
|
|
84
|
+
* Release the ClaimRegistry claim for an intent that was CLAIMED but whose
|
|
85
|
+
* work window has not yet started (windowStartTs not reached).
|
|
86
|
+
*
|
|
87
|
+
* Used during graceful engine shutdown. No-op if we don't hold the claim.
|
|
88
|
+
*
|
|
89
|
+
* @returns true if the claim was released, false if there was nothing to release.
|
|
90
|
+
*/
|
|
91
|
+
export async function releaseClaimedNotStarted(claimWindow, registryClient) {
|
|
92
|
+
const requestIdHex = claimWindow.requestId;
|
|
93
|
+
// Only release if the work window hasn't started yet
|
|
94
|
+
if (Date.now() >= claimWindow.windowStartTs) {
|
|
95
|
+
console.log(`[claim-orchestration] NOT releasing claim for ${claimWindow.requestId} — window already started`);
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
const released = await registryClient.releaseClaim(requestIdHex);
|
|
99
|
+
if (released) {
|
|
100
|
+
console.log(`[claim-orchestration] released ClaimRegistry claim for ${claimWindow.requestId} (graceful shutdown, before window start)`);
|
|
101
|
+
}
|
|
102
|
+
return released;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=claim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../../src/restorer/engine/claim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA+BH,iFAAiF;AAEjF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAwB,EACxB,cAAmC,EACnC,kBAAsC;IAEtC,MAAM,YAAY,GAAG,WAAW,CAAC,SAAgB,CAAC;IAElD,6EAA6E;IAE7E,4EAA4E;IAC5E,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAElC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,wDAAwD,WAAW,CAAC,SAAS,wCAAwC,CACtH,CAAC;QACJ,CAAC;QACD,qBAAqB,GAAG,IAAI,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,qEAAqE,WAAW,CAAC,SAAS,qBAAqB,CAChH,CAAC;IACJ,CAAC;IAED,6EAA6E;IAE7E,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,cAAc,EAAE,CAAC;QACxB,4EAA4E;QAC5E,iFAAiF;QACjF,kGAAkG;QAClG,gGAAgG;QAChG,kGAAkG;QAClG,sGAAsG;QACtG,iGAAiG;QACjG,qFAAqF;QACrF,IAAI,qBAAqB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,cAAc,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CACT,0DAA0D,WAAW,CAAC,SAAS,4BAA4B,CAC5G,CAAC;YACJ,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzF,OAAO,CAAC,KAAK,CACX,mEAAmE,WAAW,CAAC,SAAS,+BAA+B,UAAU,EAAE,CACpI,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,cAAc,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACnC,CAAC;AAED,iFAAiF;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAwB,EACxB,cAAmC;IAEnC,MAAM,YAAY,GAAG,WAAW,CAAC,SAAgB,CAAC;IAElD,qDAAqD;IACrD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CACT,iDAAiD,WAAW,CAAC,SAAS,2BAA2B,CAClG,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACjE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CACT,0DAA0D,WAAW,CAAC,SAAS,2CAA2C,CAC3H,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|