@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/config.d.ts
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* (mainnet V1, testnet V2) for JinnRouter claimDelivery encoding.
|
|
15
15
|
*/
|
|
16
16
|
import { z } from 'zod';
|
|
17
|
+
import type { DesiredState } from './types/desired-state.js';
|
|
17
18
|
export declare const JinnConfigSchema: z.ZodObject<{
|
|
18
19
|
/**
|
|
19
20
|
* Network to connect to.
|
|
@@ -29,6 +30,7 @@ export declare const JinnConfigSchema: z.ZodObject<{
|
|
|
29
30
|
* https://sepolia.base.org for 'testnet'. Set explicitly to override.
|
|
30
31
|
*/
|
|
31
32
|
rpcUrl: z.ZodOptional<z.ZodString>;
|
|
33
|
+
archiveRpcUrl: z.ZodOptional<z.ZodString>;
|
|
32
34
|
/** Earning state directory */
|
|
33
35
|
earningDir: z.ZodDefault<z.ZodString>;
|
|
34
36
|
/** SQLite database path */
|
|
@@ -54,25 +56,68 @@ export declare const JinnConfigSchema: z.ZodObject<{
|
|
|
54
56
|
claudePath: z.ZodDefault<z.ZodString>;
|
|
55
57
|
/** Model for restoration/evaluation agent */
|
|
56
58
|
claudeModel: z.ZodDefault<z.ZodString>;
|
|
59
|
+
/**
|
|
60
|
+
* How the operator runs the daemon. Set once at `jinn auth`, read by every
|
|
61
|
+
* command that probes the Claude CLI or spawns a subprocess. Leaving it
|
|
62
|
+
* unset falls back to filesystem-based detection (docker-compose.yml near
|
|
63
|
+
* cwd, /.dockerenv, etc.) which is error-prone inside a checkout of the
|
|
64
|
+
* repo itself.
|
|
65
|
+
* Env override: JINN_RUNTIME_MODE.
|
|
66
|
+
*/
|
|
67
|
+
runtimeMode: z.ZodOptional<z.ZodEnum<["bare", "docker-compose", "container"]>>;
|
|
57
68
|
/** Comma-separated or array of peer URLs */
|
|
58
69
|
peers: z.ZodDefault<z.ZodUnion<[z.ZodEffects<z.ZodString, string[], string>, z.ZodArray<z.ZodString, "many">]>>;
|
|
59
70
|
/** The Graph subgraph URL for artifact discovery */
|
|
60
71
|
subgraphUrl: z.ZodOptional<z.ZodString>;
|
|
61
72
|
/** This node's public HTTP endpoint (for 8004 registration) */
|
|
62
73
|
nodeEndpoint: z.ZodOptional<z.ZodString>;
|
|
63
|
-
/** Desired states to create and restore */
|
|
74
|
+
/** Desired states to create and restore. Empty by default; testnet auto-intents fill the loop. */
|
|
64
75
|
desiredStates: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
65
|
-
id: z.ZodString
|
|
76
|
+
id: z.ZodOptional<z.ZodString>;
|
|
66
77
|
description: z.ZodString;
|
|
67
78
|
context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
79
|
+
window: z.ZodOptional<z.ZodObject<{
|
|
80
|
+
startTs: z.ZodNumber;
|
|
81
|
+
endTs: z.ZodNumber;
|
|
82
|
+
}, "strip", z.ZodTypeAny, {
|
|
83
|
+
startTs: number;
|
|
84
|
+
endTs: number;
|
|
85
|
+
}, {
|
|
86
|
+
startTs: number;
|
|
87
|
+
endTs: number;
|
|
88
|
+
}>>;
|
|
89
|
+
spec: z.ZodOptional<z.ZodIntersection<z.ZodObject<{
|
|
90
|
+
kind: z.ZodString;
|
|
91
|
+
}, "strip", z.ZodTypeAny, {
|
|
92
|
+
kind: string;
|
|
93
|
+
}, {
|
|
94
|
+
kind: string;
|
|
95
|
+
}>, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
96
|
+
eligibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
68
97
|
}, "strip", z.ZodTypeAny, {
|
|
69
|
-
id: string;
|
|
70
98
|
description: string;
|
|
99
|
+
id?: string | undefined;
|
|
71
100
|
context?: Record<string, unknown> | undefined;
|
|
101
|
+
window?: {
|
|
102
|
+
startTs: number;
|
|
103
|
+
endTs: number;
|
|
104
|
+
} | undefined;
|
|
105
|
+
spec?: ({
|
|
106
|
+
kind: string;
|
|
107
|
+
} & Record<string, unknown>) | undefined;
|
|
108
|
+
eligibility?: Record<string, unknown> | undefined;
|
|
72
109
|
}, {
|
|
73
|
-
id: string;
|
|
74
110
|
description: string;
|
|
111
|
+
id?: string | undefined;
|
|
75
112
|
context?: Record<string, unknown> | undefined;
|
|
113
|
+
window?: {
|
|
114
|
+
startTs: number;
|
|
115
|
+
endTs: number;
|
|
116
|
+
} | undefined;
|
|
117
|
+
spec?: ({
|
|
118
|
+
kind: string;
|
|
119
|
+
} & Record<string, unknown>) | undefined;
|
|
120
|
+
eligibility?: Record<string, unknown> | undefined;
|
|
76
121
|
}>, "many">>;
|
|
77
122
|
/** IPFS upload endpoint */
|
|
78
123
|
ipfsRegistryUrl: z.ZodDefault<z.ZodString>;
|
|
@@ -86,6 +131,8 @@ export declare const JinnConfigSchema: z.ZodObject<{
|
|
|
86
131
|
testnetMechDeploymentPath: z.ZodOptional<z.ZodString>;
|
|
87
132
|
/** Optional Base Sepolia stOLAS deployment artifact path */
|
|
88
133
|
testnetStolasDeploymentPath: z.ZodOptional<z.ZodString>;
|
|
134
|
+
/** Optional Base Sepolia ClaimRegistry deployment artifact path */
|
|
135
|
+
testnetClaimRegistryDeploymentPath: z.ZodOptional<z.ZodString>;
|
|
89
136
|
/** Staking mode: 'standard' uses stOLAS (no OLAS needed), 'self-bond' uses operator-provided OLAS. */
|
|
90
137
|
stakingMode: z.ZodDefault<z.ZodEnum<["standard", "self-bond"]>>;
|
|
91
138
|
/** Number of services to bootstrap and run. */
|
|
@@ -100,6 +147,28 @@ export declare const JinnConfigSchema: z.ZodObject<{
|
|
|
100
147
|
* Default is applied in bootstrap when unset. Env: JINN_MASTER_ETH_DAILY_WEI
|
|
101
148
|
*/
|
|
102
149
|
masterEthDailyEstimateWei: z.ZodOptional<z.ZodString>;
|
|
150
|
+
/**
|
|
151
|
+
* Operator-controlled impl dispatch for the restorer engine.
|
|
152
|
+
*
|
|
153
|
+
* Wired by daemon (jinn-mono-bv5); engine consumes via RestorerImplRegistry config.
|
|
154
|
+
*
|
|
155
|
+
* byKind: explicit spec.kind → impl name mapping (highest priority)
|
|
156
|
+
* default: fallback impl name when no kind-specific match is found
|
|
157
|
+
* disabled: impl names to exclude from dispatch entirely
|
|
158
|
+
*/
|
|
159
|
+
restorers: z.ZodOptional<z.ZodObject<{
|
|
160
|
+
byKind: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
161
|
+
default: z.ZodOptional<z.ZodString>;
|
|
162
|
+
disabled: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
163
|
+
}, "strip", z.ZodTypeAny, {
|
|
164
|
+
byKind?: Record<string, string> | undefined;
|
|
165
|
+
default?: string | undefined;
|
|
166
|
+
disabled?: string[] | undefined;
|
|
167
|
+
}, {
|
|
168
|
+
byKind?: Record<string, string> | undefined;
|
|
169
|
+
default?: string | undefined;
|
|
170
|
+
disabled?: string[] | undefined;
|
|
171
|
+
}>>;
|
|
103
172
|
}, "strip", z.ZodTypeAny, {
|
|
104
173
|
network: "testnet" | "mainnet";
|
|
105
174
|
earningDir: string;
|
|
@@ -112,9 +181,17 @@ export declare const JinnConfigSchema: z.ZodObject<{
|
|
|
112
181
|
claudeModel: string;
|
|
113
182
|
peers: string[];
|
|
114
183
|
desiredStates: {
|
|
115
|
-
id: string;
|
|
116
184
|
description: string;
|
|
185
|
+
id?: string | undefined;
|
|
117
186
|
context?: Record<string, unknown> | undefined;
|
|
187
|
+
window?: {
|
|
188
|
+
startTs: number;
|
|
189
|
+
endTs: number;
|
|
190
|
+
} | undefined;
|
|
191
|
+
spec?: ({
|
|
192
|
+
kind: string;
|
|
193
|
+
} & Record<string, unknown>) | undefined;
|
|
194
|
+
eligibility?: Record<string, unknown> | undefined;
|
|
118
195
|
}[];
|
|
119
196
|
ipfsRegistryUrl: string;
|
|
120
197
|
ipfsGatewayUrl: string;
|
|
@@ -122,16 +199,25 @@ export declare const JinnConfigSchema: z.ZodObject<{
|
|
|
122
199
|
targetServices: number;
|
|
123
200
|
debug: boolean;
|
|
124
201
|
rpcUrl?: string | undefined;
|
|
202
|
+
archiveRpcUrl?: string | undefined;
|
|
203
|
+
runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
|
|
125
204
|
subgraphUrl?: string | undefined;
|
|
126
205
|
nodeEndpoint?: string | undefined;
|
|
127
206
|
testnetL2DeploymentPath?: string | undefined;
|
|
128
207
|
testnetL2TokenDeploymentPath?: string | undefined;
|
|
129
208
|
testnetMechDeploymentPath?: string | undefined;
|
|
130
209
|
testnetStolasDeploymentPath?: string | undefined;
|
|
210
|
+
testnetClaimRegistryDeploymentPath?: string | undefined;
|
|
131
211
|
masterEthDailyEstimateWei?: string | undefined;
|
|
212
|
+
restorers?: {
|
|
213
|
+
byKind?: Record<string, string> | undefined;
|
|
214
|
+
default?: string | undefined;
|
|
215
|
+
disabled?: string[] | undefined;
|
|
216
|
+
} | undefined;
|
|
132
217
|
}, {
|
|
133
218
|
network?: "testnet" | "mainnet" | undefined;
|
|
134
219
|
rpcUrl?: string | undefined;
|
|
220
|
+
archiveRpcUrl?: string | undefined;
|
|
135
221
|
earningDir?: string | undefined;
|
|
136
222
|
dbPath?: string | undefined;
|
|
137
223
|
pollIntervalMs?: number | undefined;
|
|
@@ -140,13 +226,22 @@ export declare const JinnConfigSchema: z.ZodObject<{
|
|
|
140
226
|
apiPort?: number | undefined;
|
|
141
227
|
claudePath?: string | undefined;
|
|
142
228
|
claudeModel?: string | undefined;
|
|
229
|
+
runtimeMode?: "bare" | "docker-compose" | "container" | undefined;
|
|
143
230
|
peers?: string | string[] | undefined;
|
|
144
231
|
subgraphUrl?: string | undefined;
|
|
145
232
|
nodeEndpoint?: string | undefined;
|
|
146
233
|
desiredStates?: {
|
|
147
|
-
id: string;
|
|
148
234
|
description: string;
|
|
235
|
+
id?: string | undefined;
|
|
149
236
|
context?: Record<string, unknown> | undefined;
|
|
237
|
+
window?: {
|
|
238
|
+
startTs: number;
|
|
239
|
+
endTs: number;
|
|
240
|
+
} | undefined;
|
|
241
|
+
spec?: ({
|
|
242
|
+
kind: string;
|
|
243
|
+
} & Record<string, unknown>) | undefined;
|
|
244
|
+
eligibility?: Record<string, unknown> | undefined;
|
|
150
245
|
}[] | undefined;
|
|
151
246
|
ipfsRegistryUrl?: string | undefined;
|
|
152
247
|
ipfsGatewayUrl?: string | undefined;
|
|
@@ -154,14 +249,21 @@ export declare const JinnConfigSchema: z.ZodObject<{
|
|
|
154
249
|
testnetL2TokenDeploymentPath?: string | undefined;
|
|
155
250
|
testnetMechDeploymentPath?: string | undefined;
|
|
156
251
|
testnetStolasDeploymentPath?: string | undefined;
|
|
252
|
+
testnetClaimRegistryDeploymentPath?: string | undefined;
|
|
157
253
|
stakingMode?: "standard" | "self-bond" | undefined;
|
|
158
254
|
targetServices?: number | undefined;
|
|
159
255
|
debug?: boolean | undefined;
|
|
160
256
|
masterEthDailyEstimateWei?: string | undefined;
|
|
257
|
+
restorers?: {
|
|
258
|
+
byKind?: Record<string, string> | undefined;
|
|
259
|
+
default?: string | undefined;
|
|
260
|
+
disabled?: string[] | undefined;
|
|
261
|
+
} | undefined;
|
|
161
262
|
}>;
|
|
162
|
-
/** JinnConfig with rpcUrl guaranteed to be resolved (never undefined). */
|
|
163
|
-
export type JinnConfig = Omit<z.infer<typeof JinnConfigSchema>, 'rpcUrl'> & {
|
|
263
|
+
/** JinnConfig with rpcUrl guaranteed to be resolved (never undefined) and desiredStates with id always assigned. */
|
|
264
|
+
export type JinnConfig = Omit<z.infer<typeof JinnConfigSchema>, 'rpcUrl' | 'desiredStates'> & {
|
|
164
265
|
rpcUrl: string;
|
|
266
|
+
desiredStates: DesiredState[];
|
|
165
267
|
};
|
|
166
268
|
export type ConfigLoadErrorCode = 'config_file_not_found' | 'config_json_invalid' | 'desired_states_file_not_found' | 'desired_states_json_invalid' | 'config_invalid';
|
|
167
269
|
export declare class ConfigLoadError extends Error {
|
package/dist/config.js
CHANGED
|
@@ -17,12 +17,8 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
17
17
|
import { homedir } from 'node:os';
|
|
18
18
|
import { join } from 'node:path';
|
|
19
19
|
import { z } from 'zod';
|
|
20
|
+
import { DesiredStateSchema, parseDesiredState } from './types/desired-state.js';
|
|
20
21
|
// ── Schema ──────────────────────────────────────────────────────────────────
|
|
21
|
-
const DesiredStateSchema = z.object({
|
|
22
|
-
id: z.string(),
|
|
23
|
-
description: z.string().min(1),
|
|
24
|
-
context: z.record(z.unknown()).optional(),
|
|
25
|
-
});
|
|
26
22
|
export const JinnConfigSchema = z.object({
|
|
27
23
|
/**
|
|
28
24
|
* Network to connect to.
|
|
@@ -38,6 +34,7 @@ export const JinnConfigSchema = z.object({
|
|
|
38
34
|
* https://sepolia.base.org for 'testnet'. Set explicitly to override.
|
|
39
35
|
*/
|
|
40
36
|
rpcUrl: z.string().optional(),
|
|
37
|
+
archiveRpcUrl: z.string().optional(),
|
|
41
38
|
/** Earning state directory */
|
|
42
39
|
earningDir: z.string().default(join(homedir(), '.jinn-client', 'earning')),
|
|
43
40
|
/** SQLite database path */
|
|
@@ -63,6 +60,15 @@ export const JinnConfigSchema = z.object({
|
|
|
63
60
|
claudePath: z.string().default('claude'),
|
|
64
61
|
/** Model for restoration/evaluation agent */
|
|
65
62
|
claudeModel: z.string().default('claude-haiku-4-5-20251001'),
|
|
63
|
+
/**
|
|
64
|
+
* How the operator runs the daemon. Set once at `jinn auth`, read by every
|
|
65
|
+
* command that probes the Claude CLI or spawns a subprocess. Leaving it
|
|
66
|
+
* unset falls back to filesystem-based detection (docker-compose.yml near
|
|
67
|
+
* cwd, /.dockerenv, etc.) which is error-prone inside a checkout of the
|
|
68
|
+
* repo itself.
|
|
69
|
+
* Env override: JINN_RUNTIME_MODE.
|
|
70
|
+
*/
|
|
71
|
+
runtimeMode: z.enum(['bare', 'docker-compose', 'container']).optional(),
|
|
66
72
|
/** Comma-separated or array of peer URLs */
|
|
67
73
|
peers: z.union([
|
|
68
74
|
z.string().transform(s => s.split(',').filter(Boolean)),
|
|
@@ -72,13 +78,8 @@ export const JinnConfigSchema = z.object({
|
|
|
72
78
|
subgraphUrl: z.string().optional(),
|
|
73
79
|
/** This node's public HTTP endpoint (for 8004 registration) */
|
|
74
80
|
nodeEndpoint: z.string().optional(),
|
|
75
|
-
/** Desired states to create and restore */
|
|
76
|
-
desiredStates: z.array(DesiredStateSchema).default([
|
|
77
|
-
{
|
|
78
|
-
id: 'health-check',
|
|
79
|
-
description: 'The service is running and participating in the Jinn protocol loop.',
|
|
80
|
-
},
|
|
81
|
-
]),
|
|
81
|
+
/** Desired states to create and restore. Empty by default; testnet auto-intents fill the loop. */
|
|
82
|
+
desiredStates: z.array(DesiredStateSchema).default([]),
|
|
82
83
|
/** IPFS upload endpoint */
|
|
83
84
|
ipfsRegistryUrl: z.string().default('https://registry.autonolas.tech'),
|
|
84
85
|
/** IPFS read endpoint */
|
|
@@ -91,6 +92,8 @@ export const JinnConfigSchema = z.object({
|
|
|
91
92
|
testnetMechDeploymentPath: z.string().optional(),
|
|
92
93
|
/** Optional Base Sepolia stOLAS deployment artifact path */
|
|
93
94
|
testnetStolasDeploymentPath: z.string().optional(),
|
|
95
|
+
/** Optional Base Sepolia ClaimRegistry deployment artifact path */
|
|
96
|
+
testnetClaimRegistryDeploymentPath: z.string().optional(),
|
|
94
97
|
/** Staking mode: 'standard' uses stOLAS (no OLAS needed), 'self-bond' uses operator-provided OLAS. */
|
|
95
98
|
stakingMode: z.enum(['standard', 'self-bond']).default('standard'),
|
|
96
99
|
/** Number of services to bootstrap and run. */
|
|
@@ -108,6 +111,22 @@ export const JinnConfigSchema = z.object({
|
|
|
108
111
|
.string()
|
|
109
112
|
.regex(/^\d+$/, 'must be a non-negative integer string')
|
|
110
113
|
.optional(),
|
|
114
|
+
/**
|
|
115
|
+
* Operator-controlled impl dispatch for the restorer engine.
|
|
116
|
+
*
|
|
117
|
+
* Wired by daemon (jinn-mono-bv5); engine consumes via RestorerImplRegistry config.
|
|
118
|
+
*
|
|
119
|
+
* byKind: explicit spec.kind → impl name mapping (highest priority)
|
|
120
|
+
* default: fallback impl name when no kind-specific match is found
|
|
121
|
+
* disabled: impl names to exclude from dispatch entirely
|
|
122
|
+
*/
|
|
123
|
+
restorers: z
|
|
124
|
+
.object({
|
|
125
|
+
byKind: z.record(z.string()).optional(),
|
|
126
|
+
default: z.string().optional(),
|
|
127
|
+
disabled: z.array(z.string()).optional(),
|
|
128
|
+
})
|
|
129
|
+
.optional(),
|
|
111
130
|
});
|
|
112
131
|
// ── Defaults ────────────────────────────────────────────────────────────────
|
|
113
132
|
const DEFAULT_DIR = join(homedir(), '.jinn-client');
|
|
@@ -173,6 +192,8 @@ export function loadConfig(configPath) {
|
|
|
173
192
|
merged.claudePath = env['JINN_CLAUDE_PATH'];
|
|
174
193
|
if (env['JINN_CLAUDE_MODEL'])
|
|
175
194
|
merged.claudeModel = env['JINN_CLAUDE_MODEL'];
|
|
195
|
+
if (env['JINN_RUNTIME_MODE'])
|
|
196
|
+
merged.runtimeMode = env['JINN_RUNTIME_MODE'];
|
|
176
197
|
if (env['JINN_PEERS'])
|
|
177
198
|
merged.peers = env['JINN_PEERS'];
|
|
178
199
|
if (env['JINN_SUBGRAPH_URL'])
|
|
@@ -189,6 +210,9 @@ export function loadConfig(configPath) {
|
|
|
189
210
|
merged.testnetL2TokenDeploymentPath = env['JINN_TESTNET_TOKEN_DEPLOYMENT'];
|
|
190
211
|
if (env['JINN_TESTNET_MECH_DEPLOYMENT'])
|
|
191
212
|
merged.testnetMechDeploymentPath = env['JINN_TESTNET_MECH_DEPLOYMENT'];
|
|
213
|
+
if (env['JINN_TESTNET_CLAIM_REGISTRY_DEPLOYMENT']) {
|
|
214
|
+
merged.testnetClaimRegistryDeploymentPath = env['JINN_TESTNET_CLAIM_REGISTRY_DEPLOYMENT'];
|
|
215
|
+
}
|
|
192
216
|
if (env['JINN_STAKING_MODE'])
|
|
193
217
|
merged.stakingMode = env['JINN_STAKING_MODE'];
|
|
194
218
|
if (env['JINN_TARGET_SERVICES'])
|
|
@@ -214,6 +238,9 @@ export function loadConfig(configPath) {
|
|
|
214
238
|
else if (env['BASE_RPC_URL']) {
|
|
215
239
|
merged.rpcUrl = env['BASE_RPC_URL'];
|
|
216
240
|
}
|
|
241
|
+
if (env['JINN_ARCHIVE_RPC_URL']) {
|
|
242
|
+
merged.archiveRpcUrl = env['JINN_ARCHIVE_RPC_URL'];
|
|
243
|
+
}
|
|
217
244
|
// desiredStates from env points to a JSON file
|
|
218
245
|
if (env['JINN_DESIRED_STATES']) {
|
|
219
246
|
const statesPath = env['JINN_DESIRED_STATES'];
|
|
@@ -248,6 +275,8 @@ export function loadConfig(configPath) {
|
|
|
248
275
|
return {
|
|
249
276
|
...parsed,
|
|
250
277
|
rpcUrl: parsed.rpcUrl ?? defaultRpcUrl,
|
|
278
|
+
// parseDesiredState assigns a UUID to any entry missing an id
|
|
279
|
+
desiredStates: parsed.desiredStates.map(parseDesiredState),
|
|
251
280
|
};
|
|
252
281
|
}
|
|
253
282
|
/**
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/creator.d.ts
CHANGED
|
@@ -7,17 +7,23 @@ export interface ActiveAttempt {
|
|
|
7
7
|
restorationRequestId: string;
|
|
8
8
|
status: 'pending' | 'resolved';
|
|
9
9
|
}
|
|
10
|
+
/** Returns a freshly-built DesiredState for this tick, or null to skip. */
|
|
11
|
+
export type IntentGenerator = () => Promise<DesiredState | null>;
|
|
10
12
|
export declare class CreatorLoop {
|
|
11
13
|
private readonly adapter;
|
|
12
14
|
private readonly desiredStates;
|
|
13
15
|
private readonly store;
|
|
16
|
+
private readonly safeAddress?;
|
|
14
17
|
private stopped;
|
|
15
18
|
private posted;
|
|
16
19
|
private attempts;
|
|
17
20
|
private stopResolve;
|
|
18
21
|
private stopPromise;
|
|
22
|
+
private readonly generators;
|
|
19
23
|
private static readonly REPOST_INTERVAL_MS;
|
|
20
|
-
|
|
24
|
+
/** SQLite config key for durable idempotency across daemon restarts. */
|
|
25
|
+
private static cacheKey;
|
|
26
|
+
constructor(adapter: ExecutionAdapter, desiredStates: DesiredState[], store: Store, generators?: IntentGenerator[], safeAddress?: string | undefined);
|
|
21
27
|
tick(): Promise<RequestId | null>;
|
|
22
28
|
run(): Promise<void>;
|
|
23
29
|
stop(): void;
|
package/dist/daemon/creator.js
CHANGED
|
@@ -4,29 +4,63 @@ export class CreatorLoop {
|
|
|
4
4
|
adapter;
|
|
5
5
|
desiredStates;
|
|
6
6
|
store;
|
|
7
|
+
safeAddress;
|
|
7
8
|
stopped = false;
|
|
8
|
-
posted = new Map(); // stateId → timestamp of last post
|
|
9
|
+
posted = new Map(); // stateId → timestamp of last post (in-memory fast-path)
|
|
9
10
|
attempts = new Map();
|
|
10
11
|
stopResolve = null;
|
|
11
12
|
stopPromise;
|
|
13
|
+
generators;
|
|
12
14
|
// Minimum interval between posting the same desired state (ms).
|
|
13
15
|
// ~20 activities/day needed; each cycle = 4 activities; 5 cycles/day = 1 every ~4.8h.
|
|
14
16
|
// Use 4h to provide safety margin.
|
|
15
17
|
static REPOST_INTERVAL_MS = 4 * 60 * 60 * 1000;
|
|
16
|
-
|
|
18
|
+
/** SQLite config key for durable idempotency across daemon restarts. */
|
|
19
|
+
static cacheKey(state, safeAddress) {
|
|
20
|
+
const prefix = safeAddress ? `created_intent:${safeAddress}` : 'created_intent';
|
|
21
|
+
return `${prefix}:${state.id}`;
|
|
22
|
+
}
|
|
23
|
+
constructor(adapter, desiredStates, store, generators = [], safeAddress) {
|
|
17
24
|
this.adapter = adapter;
|
|
18
25
|
this.desiredStates = desiredStates;
|
|
19
26
|
this.store = store;
|
|
27
|
+
this.safeAddress = safeAddress;
|
|
28
|
+
this.generators = generators;
|
|
20
29
|
this.stopPromise = new Promise(resolve => {
|
|
21
30
|
this.stopResolve = resolve;
|
|
22
31
|
});
|
|
23
32
|
}
|
|
24
33
|
async tick() {
|
|
25
34
|
const now = Date.now();
|
|
26
|
-
|
|
35
|
+
// Compose candidates: static configured states + freshly generated ones.
|
|
36
|
+
// Generators returning null are filtered (e.g. Chainlink read failure).
|
|
37
|
+
const generated = [];
|
|
38
|
+
for (const gen of this.generators) {
|
|
39
|
+
try {
|
|
40
|
+
const result = await gen();
|
|
41
|
+
if (result)
|
|
42
|
+
generated.push(result);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
console.error('[creator] generator error (skipping this tick):', err);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const candidates = [...this.desiredStates, ...generated];
|
|
49
|
+
for (const state of candidates) {
|
|
50
|
+
// In-memory fast-path: posted within the 4h window → skip.
|
|
27
51
|
const lastPosted = this.posted.get(state.id);
|
|
28
52
|
if (lastPosted && (now - lastPosted) < CreatorLoop.REPOST_INTERVAL_MS)
|
|
29
53
|
continue;
|
|
54
|
+
// Durable idempotency: SQLite cache survives daemon restarts. If we
|
|
55
|
+
// already posted this state.id before (and it's still within the repost
|
|
56
|
+
// window OR the id is stable-per-hour like auto-generators), skip.
|
|
57
|
+
const cacheKey = CreatorLoop.cacheKey(state, this.safeAddress);
|
|
58
|
+
const cachedRequestId = this.store.getConfigValue(cacheKey);
|
|
59
|
+
if (cachedRequestId) {
|
|
60
|
+
// Refresh the in-memory tracker so subsequent ticks hit the fast-path.
|
|
61
|
+
this.posted.set(state.id, now);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
30
64
|
try {
|
|
31
65
|
const prev = this.attempts.get(state.id);
|
|
32
66
|
const attemptNumber = prev ? prev.attemptNumber + 1 : 1;
|
|
@@ -46,6 +80,7 @@ export class CreatorLoop {
|
|
|
46
80
|
status: 'pending',
|
|
47
81
|
});
|
|
48
82
|
this.store.recordOwnActivity(requestId, 'created');
|
|
83
|
+
this.store.setConfigValue(cacheKey, requestId);
|
|
49
84
|
return requestId;
|
|
50
85
|
}
|
|
51
86
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator.js","sourceRoot":"","sources":["../../src/daemon/creator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"creator.js","sourceRoot":"","sources":["../../src/daemon/creator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAY/D,MAAM,OAAO,WAAW;IAoBH;IACA;IACA;IAEA;IAvBX,OAAO,GAAG,KAAK,CAAC;IAChB,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,yDAAyD;IAC7F,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,WAAW,GAAwB,IAAI,CAAC;IACxC,WAAW,CAAgB;IAClB,UAAU,CAAoB;IAE/C,gEAAgE;IAChE,sFAAsF;IACtF,mCAAmC;IAC3B,MAAM,CAAU,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEhE,wEAAwE;IAChE,MAAM,CAAC,QAAQ,CAAC,KAAmB,EAAE,WAAoB;QAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAChF,OAAO,GAAG,MAAM,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;IACjC,CAAC;IAED,YACmB,OAAyB,EACzB,aAA6B,EAC7B,KAAY,EAC7B,aAAgC,EAAE,EACjB,WAAoB;QAJpB,YAAO,GAAP,OAAO,CAAkB;QACzB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,UAAK,GAAL,KAAK,CAAO;QAEZ,gBAAW,GAAX,WAAW,CAAS;QAErC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,SAAS,GAAmB,EAAE,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;gBAC3B,IAAI,MAAM;oBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC;QAEzD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,2DAA2D;YAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,UAAU,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC,kBAAkB;gBAAE,SAAS;YAEhF,oEAAoE;YACpE,wEAAwE;YACxE,mEAAmE;YACnE,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,eAAe,EAAE,CAAC;gBACpB,uEAAuE;gBACvE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzC,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,EAAE,IAAI,aAAa,EAAE,CAAC;gBACjD,MAAM,gBAAgB,GAAiB;oBACrC,GAAG,KAAK;oBACR,IAAI,EAAE,aAAa;oBACnB,SAAS;oBACT,aAAa;iBACd,CAAC;gBACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;oBAC1B,YAAY,EAAE,KAAK;oBACnB,aAAa;oBACb,oBAAoB,EAAE,SAAS;oBAC/B,MAAM,EAAE,SAAS;iBAClB,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACnD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC/C,OAAO,SAAS,CAAC;YACnB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,cAAc;oBAAE,SAAS;gBAC5C,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;gBACvC,OAAO,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxC,IAAI,CAAC,WAAW;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACvB,CAAC"}
|
package/dist/daemon/daemon.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { ExecutionAdapter } from '../adapters/adapter.js';
|
|
2
2
|
import type { Runner } from '../runner/runner.js';
|
|
3
3
|
import type { DesiredState } from '../types/index.js';
|
|
4
|
+
import { type IntentGenerator } from './creator.js';
|
|
4
5
|
import type { StatusGatherConfig } from '../api/gather-status.js';
|
|
5
6
|
import type { EthHttpSigner } from '../auth/erc8128.js';
|
|
6
7
|
import { type RegistryConfig } from '../discovery/registry.js';
|
|
7
8
|
import type { X402Config } from '../x402/handler.js';
|
|
8
9
|
import { type RewardClaimLoopConfig } from './reward-claim-loop.js';
|
|
10
|
+
import { type RestorationEngineOptions } from '../restorer/engine/engine.js';
|
|
9
11
|
import { type BalanceTopupLoopConfig } from './balance-topup-loop.js';
|
|
10
12
|
export interface DaemonConfig {
|
|
11
13
|
adapter: ExecutionAdapter;
|
|
@@ -13,6 +15,8 @@ export interface DaemonConfig {
|
|
|
13
15
|
desiredStates: DesiredState[];
|
|
14
16
|
dbPath: string;
|
|
15
17
|
shutdownTimeoutMs?: number;
|
|
18
|
+
/** Engine tick interval (ms) for re-driving in-flight intents. Defaults to 5000. */
|
|
19
|
+
pollIntervalMs?: number;
|
|
16
20
|
apiPort?: number;
|
|
17
21
|
peers?: string[];
|
|
18
22
|
signer?: EthHttpSigner;
|
|
@@ -33,12 +37,37 @@ export interface DaemonConfig {
|
|
|
33
37
|
balanceTopup?: BalanceTopupLoopConfig;
|
|
34
38
|
/** Passed to HTTP API for GET /v1/status (fleet + RPC hints). */
|
|
35
39
|
status?: StatusGatherConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Extra intent generators called each CreatorLoop tick. Each returns a
|
|
42
|
+
* freshly-built DesiredState (or null to skip this tick). Used e.g. for
|
|
43
|
+
* auto-posting price-aware prediction.v0 intents on testnet.
|
|
44
|
+
*/
|
|
45
|
+
intentGenerators?: IntentGenerator[];
|
|
46
|
+
/**
|
|
47
|
+
* Creator Safe address — used to scope CreatorLoop's SQLite idempotency
|
|
48
|
+
* cache keys per-Safe. Without this, two co-located daemons on the same
|
|
49
|
+
* DB would collide. Optional for backwards compatibility.
|
|
50
|
+
*/
|
|
51
|
+
creatorSafeAddress?: string;
|
|
52
|
+
/**
|
|
53
|
+
* When provided, the daemon uses RestorationEngine (new engine path) instead
|
|
54
|
+
* of the legacy RestorerLoop for intent dispatch.
|
|
55
|
+
*
|
|
56
|
+
* Required for portfolio.v0 spec kind (both restoration and evaluation).
|
|
57
|
+
* Evaluation intents (type === 'evaluation') are dispatched via supports() to
|
|
58
|
+
* portfolio-v0-evaluator; legacy health-check intents (no spec) fall back to
|
|
59
|
+
* legacy-claude via the default impl in the registry.
|
|
60
|
+
*/
|
|
61
|
+
restorationEngine?: Omit<RestorationEngineOptions, 'store'>;
|
|
36
62
|
}
|
|
37
63
|
export declare class Daemon {
|
|
38
64
|
private readonly config;
|
|
39
65
|
private store;
|
|
40
66
|
private creatorLoop;
|
|
67
|
+
/** @deprecated Kept for backwards compatibility (test suite). Not started when restorationEngine is configured. */
|
|
41
68
|
private restorerLoop;
|
|
69
|
+
private restorationEngine?;
|
|
70
|
+
private engineStopped;
|
|
42
71
|
private deliveryWatcherLoop;
|
|
43
72
|
private adapter;
|
|
44
73
|
private loopPromises;
|
|
@@ -53,6 +82,20 @@ export declare class Daemon {
|
|
|
53
82
|
start(): Promise<void>;
|
|
54
83
|
stop(): Promise<void>;
|
|
55
84
|
getShutdownState(): string | null;
|
|
85
|
+
/**
|
|
86
|
+
* Bridge loop: consumes adapter.watchForRequests() and routes each request to
|
|
87
|
+
* the RestorationEngine via observe() + process().
|
|
88
|
+
*
|
|
89
|
+
* For legacy intents (no spec), the engine dispatches to the legacy-claude impl.
|
|
90
|
+
* For portfolio.v0 intents, the engine dispatches to claude-mcp-hyperliquid.
|
|
91
|
+
* For portfolio.v0.eval intents, the engine dispatches to portfolio-v0-evaluator.
|
|
92
|
+
*
|
|
93
|
+
* On-chain provenance (intentCid, onchainCreationTx, onchainCreationBlock) is
|
|
94
|
+
* populated from the RestorationRequest when available (MechAdapter sets these
|
|
95
|
+
* from the MarketplaceRequest event log). Legacy paths that don't populate them
|
|
96
|
+
* fall back to safe defaults with a warning.
|
|
97
|
+
*/
|
|
98
|
+
private _runEngineWatcherLoop;
|
|
56
99
|
/**
|
|
57
100
|
* Register an artifact on the 8004 registry (fire-and-forget).
|
|
58
101
|
* Called after local artifact publish if registry is configured.
|