@jinn-network/client 0.1.0-canary.adfd078d
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/LICENSE +21 -0
- package/README.md +162 -0
- package/deployments/deployment-phase1a-l2-baseSepolia-fast.json +32 -0
- package/deployments/deployment-phase1a-token-baseSepolia-fast.json +27 -0
- package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +26 -0
- package/deployments/deployment-stolas-l2-baseSepolia-fast.json +35 -0
- package/dist/adapters/adapter.d.ts +11 -0
- package/dist/adapters/adapter.js +2 -0
- package/dist/adapters/adapter.js.map +1 -0
- package/dist/adapters/local/adapter.d.ts +20 -0
- package/dist/adapters/local/adapter.js +146 -0
- package/dist/adapters/local/adapter.js.map +1 -0
- package/dist/adapters/mech/adapter.d.ts +29 -0
- package/dist/adapters/mech/adapter.js +332 -0
- package/dist/adapters/mech/adapter.js.map +1 -0
- package/dist/adapters/mech/claim-policy.d.ts +40 -0
- package/dist/adapters/mech/claim-policy.js +104 -0
- package/dist/adapters/mech/claim-policy.js.map +1 -0
- package/dist/adapters/mech/contracts.d.ts +44 -0
- package/dist/adapters/mech/contracts.js +323 -0
- package/dist/adapters/mech/contracts.js.map +1 -0
- package/dist/adapters/mech/ipfs.d.ts +43 -0
- package/dist/adapters/mech/ipfs.js +142 -0
- package/dist/adapters/mech/ipfs.js.map +1 -0
- package/dist/adapters/mech/safe.d.ts +15 -0
- package/dist/adapters/mech/safe.js +113 -0
- package/dist/adapters/mech/safe.js.map +1 -0
- package/dist/adapters/mech/types.d.ts +561 -0
- package/dist/adapters/mech/types.js +340 -0
- package/dist/adapters/mech/types.js.map +1 -0
- package/dist/api/balance-build.d.ts +22 -0
- package/dist/api/balance-build.js +37 -0
- package/dist/api/balance-build.js.map +1 -0
- package/dist/api/fleet-build.d.ts +62 -0
- package/dist/api/fleet-build.js +91 -0
- package/dist/api/fleet-build.js.map +1 -0
- package/dist/api/gather-status.d.ts +20 -0
- package/dist/api/gather-status.js +137 -0
- package/dist/api/gather-status.js.map +1 -0
- package/dist/api/history-build.d.ts +32 -0
- package/dist/api/history-build.js +48 -0
- package/dist/api/history-build.js.map +1 -0
- package/dist/api/peers.d.ts +27 -0
- package/dist/api/peers.js +94 -0
- package/dist/api/peers.js.map +1 -0
- package/dist/api/rewards-build.d.ts +20 -0
- package/dist/api/rewards-build.js +42 -0
- package/dist/api/rewards-build.js.map +1 -0
- package/dist/api/server.d.ts +34 -0
- package/dist/api/server.js +130 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/status-build.d.ts +92 -0
- package/dist/api/status-build.js +175 -0
- package/dist/api/status-build.js.map +1 -0
- package/dist/api/status-rollup-build.d.ts +36 -0
- package/dist/api/status-rollup-build.js +69 -0
- package/dist/api/status-rollup-build.js.map +1 -0
- package/dist/auth/erc8128.d.ts +43 -0
- package/dist/auth/erc8128.js +88 -0
- package/dist/auth/erc8128.js.map +1 -0
- package/dist/bin/jinn.d.ts +11 -0
- package/dist/bin/jinn.js +20 -0
- package/dist/bin/jinn.js.map +1 -0
- package/dist/build-meta.json +3 -0
- package/dist/chain-read-errors.d.ts +9 -0
- package/dist/chain-read-errors.js +43 -0
- package/dist/chain-read-errors.js.map +1 -0
- package/dist/cli/action.d.ts +26 -0
- package/dist/cli/action.js +56 -0
- package/dist/cli/action.js.map +1 -0
- package/dist/cli/command.d.ts +62 -0
- package/dist/cli/command.js +29 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands/balance.d.ts +3 -0
- package/dist/cli/commands/balance.js +46 -0
- package/dist/cli/commands/balance.js.map +1 -0
- package/dist/cli/commands/bootstrap.d.ts +3 -0
- package/dist/cli/commands/bootstrap.js +165 -0
- package/dist/cli/commands/bootstrap.js.map +1 -0
- package/dist/cli/commands/claim-rewards.d.ts +3 -0
- package/dist/cli/commands/claim-rewards.js +121 -0
- package/dist/cli/commands/claim-rewards.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.js +151 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/fleet-scale.d.ts +3 -0
- package/dist/cli/commands/fleet-scale.js +449 -0
- package/dist/cli/commands/fleet-scale.js.map +1 -0
- package/dist/cli/commands/fleet.d.ts +3 -0
- package/dist/cli/commands/fleet.js +45 -0
- package/dist/cli/commands/fleet.js.map +1 -0
- package/dist/cli/commands/fund-requirements.d.ts +3 -0
- package/dist/cli/commands/fund-requirements.js +139 -0
- package/dist/cli/commands/fund-requirements.js.map +1 -0
- package/dist/cli/commands/history.d.ts +3 -0
- package/dist/cli/commands/history.js +61 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.js +91 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/keys-backup.d.ts +3 -0
- package/dist/cli/commands/keys-backup.js +107 -0
- package/dist/cli/commands/keys-backup.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +3 -0
- package/dist/cli/commands/logs.js +69 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/rewards.d.ts +3 -0
- package/dist/cli/commands/rewards.js +54 -0
- package/dist/cli/commands/rewards.js.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.js +96 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.js +54 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +3 -0
- package/dist/cli/commands/stop.js +82 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/submit-intent.d.ts +3 -0
- package/dist/cli/commands/submit-intent.js +169 -0
- package/dist/cli/commands/submit-intent.js.map +1 -0
- package/dist/cli/commands/version.d.ts +3 -0
- package/dist/cli/commands/version.js +114 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/commands/withdraw.d.ts +3 -0
- package/dist/cli/commands/withdraw.js +181 -0
- package/dist/cli/commands/withdraw.js.map +1 -0
- package/dist/cli/deployment-digest.d.ts +10 -0
- package/dist/cli/deployment-digest.js +25 -0
- package/dist/cli/deployment-digest.js.map +1 -0
- package/dist/cli/execution-context.d.ts +50 -0
- package/dist/cli/execution-context.js +154 -0
- package/dist/cli/execution-context.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.js +37 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.js +132 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/introspection-context.d.ts +10 -0
- package/dist/cli/introspection-context.js +60 -0
- package/dist/cli/introspection-context.js.map +1 -0
- package/dist/cli/output.d.ts +36 -0
- package/dist/cli/output.js +35 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/password.d.ts +12 -0
- package/dist/cli/password.js +51 -0
- package/dist/cli/password.js.map +1 -0
- package/dist/config.d.ts +174 -0
- package/dist/config.js +252 -0
- package/dist/config.js.map +1 -0
- package/dist/daemon/creator.d.ts +24 -0
- package/dist/daemon/creator.js +80 -0
- package/dist/daemon/creator.js.map +1 -0
- package/dist/daemon/daemon.d.ts +60 -0
- package/dist/daemon/daemon.js +158 -0
- package/dist/daemon/daemon.js.map +1 -0
- package/dist/daemon/delivery-watcher.d.ts +10 -0
- package/dist/daemon/delivery-watcher.js +37 -0
- package/dist/daemon/delivery-watcher.js.map +1 -0
- package/dist/daemon/restorer.d.ts +19 -0
- package/dist/daemon/restorer.js +82 -0
- package/dist/daemon/restorer.js.map +1 -0
- package/dist/daemon/reward-claim-loop.d.ts +38 -0
- package/dist/daemon/reward-claim-loop.js +48 -0
- package/dist/daemon/reward-claim-loop.js.map +1 -0
- package/dist/discovery/registry.d.ts +43 -0
- package/dist/discovery/registry.js +104 -0
- package/dist/discovery/registry.js.map +1 -0
- package/dist/discovery/subgraph.d.ts +37 -0
- package/dist/discovery/subgraph.js +87 -0
- package/dist/discovery/subgraph.js.map +1 -0
- package/dist/earning/bootstrap.d.ts +79 -0
- package/dist/earning/bootstrap.js +989 -0
- package/dist/earning/bootstrap.js.map +1 -0
- package/dist/earning/contracts.d.ts +431 -0
- package/dist/earning/contracts.js +518 -0
- package/dist/earning/contracts.js.map +1 -0
- package/dist/earning/evidence-simhash.d.ts +59 -0
- package/dist/earning/evidence-simhash.js +87 -0
- package/dist/earning/evidence-simhash.js.map +1 -0
- package/dist/earning/fleet-display-index.d.ts +8 -0
- package/dist/earning/fleet-display-index.js +12 -0
- package/dist/earning/fleet-display-index.js.map +1 -0
- package/dist/earning/fleet-retire.d.ts +28 -0
- package/dist/earning/fleet-retire.js +75 -0
- package/dist/earning/fleet-retire.js.map +1 -0
- package/dist/earning/jinn-rewards.d.ts +62 -0
- package/dist/earning/jinn-rewards.js +81 -0
- package/dist/earning/jinn-rewards.js.map +1 -0
- package/dist/earning/next-service-index.d.ts +4 -0
- package/dist/earning/next-service-index.js +7 -0
- package/dist/earning/next-service-index.js.map +1 -0
- package/dist/earning/orphan-sweep.d.ts +33 -0
- package/dist/earning/orphan-sweep.js +157 -0
- package/dist/earning/orphan-sweep.js.map +1 -0
- package/dist/earning/reconcile.d.ts +37 -0
- package/dist/earning/reconcile.js +216 -0
- package/dist/earning/reconcile.js.map +1 -0
- package/dist/earning/safe-adapter.d.ts +70 -0
- package/dist/earning/safe-adapter.js +228 -0
- package/dist/earning/safe-adapter.js.map +1 -0
- package/dist/earning/stolas-claim.d.ts +47 -0
- package/dist/earning/stolas-claim.js +115 -0
- package/dist/earning/stolas-claim.js.map +1 -0
- package/dist/earning/store.d.ts +36 -0
- package/dist/earning/store.js +156 -0
- package/dist/earning/store.js.map +1 -0
- package/dist/earning/types.d.ts +123 -0
- package/dist/earning/types.js +64 -0
- package/dist/earning/types.js.map +1 -0
- package/dist/earning/viem-clients.d.ts +9 -0
- package/dist/earning/viem-clients.js +22 -0
- package/dist/earning/viem-clients.js.map +1 -0
- package/dist/earning/wallet.d.ts +20 -0
- package/dist/earning/wallet.js +103 -0
- package/dist/earning/wallet.js.map +1 -0
- package/dist/errors/envelope.d.ts +41 -0
- package/dist/errors/envelope.js +48 -0
- package/dist/errors/envelope.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +32 -0
- package/dist/main.js +281 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp/server.d.ts +14 -0
- package/dist/mcp/server.js +205 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/operator-errors.d.ts +16 -0
- package/dist/operator-errors.js +88 -0
- package/dist/operator-errors.js.map +1 -0
- package/dist/preflight/claude-binary.d.ts +19 -0
- package/dist/preflight/claude-binary.js +44 -0
- package/dist/preflight/claude-binary.js.map +1 -0
- package/dist/preflight/claude-invocation-envelope.d.ts +11 -0
- package/dist/preflight/claude-invocation-envelope.js +67 -0
- package/dist/preflight/claude-invocation-envelope.js.map +1 -0
- package/dist/runner/claude.d.ts +15 -0
- package/dist/runner/claude.js +193 -0
- package/dist/runner/claude.js.map +1 -0
- package/dist/runner/runner.d.ts +11 -0
- package/dist/runner/runner.js +2 -0
- package/dist/runner/runner.js.map +1 -0
- package/dist/runner/simple.d.ts +8 -0
- package/dist/runner/simple.js +11 -0
- package/dist/runner/simple.js.map +1 -0
- package/dist/store/store.d.ts +74 -0
- package/dist/store/store.js +173 -0
- package/dist/store/store.js.map +1 -0
- package/dist/tx-retry.d.ts +55 -0
- package/dist/tx-retry.js +214 -0
- package/dist/tx-retry.js.map +1 -0
- package/dist/types/desired-state.d.ts +41 -0
- package/dist/types/desired-state.js +16 -0
- package/dist/types/desired-state.js.map +1 -0
- package/dist/types/errors.d.ts +8 -0
- package/dist/types/errors.js +17 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/withdraw/args.d.ts +29 -0
- package/dist/withdraw/args.js +198 -0
- package/dist/withdraw/args.js.map +1 -0
- package/dist/withdraw/run-withdraw-plan.d.ts +21 -0
- package/dist/withdraw/run-withdraw-plan.js +257 -0
- package/dist/withdraw/run-withdraw-plan.js.map +1 -0
- package/dist/x402/acquire.d.ts +6 -0
- package/dist/x402/acquire.js +32 -0
- package/dist/x402/acquire.js.map +1 -0
- package/dist/x402/facilitator.d.ts +11 -0
- package/dist/x402/facilitator.js +52 -0
- package/dist/x402/facilitator.js.map +1 -0
- package/dist/x402/handler.d.ts +15 -0
- package/dist/x402/handler.js +40 -0
- package/dist/x402/handler.js.map +1 -0
- package/package.json +72 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Jinn Network contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# @jinn-network/client
|
|
2
|
+
|
|
3
|
+
Jinn protocol client. Runs a headless daemon that participates in the Jinn training loop: create, restore, and evaluate desired states, and earn rewards for measured work.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @jinn-network/client@latest
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or with Yarn:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
yarn global add @jinn-network/client@latest
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Quick start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Generate wallet and keystore
|
|
21
|
+
jinn init
|
|
22
|
+
|
|
23
|
+
# Check environment readiness
|
|
24
|
+
jinn doctor
|
|
25
|
+
|
|
26
|
+
# Start the daemon
|
|
27
|
+
JINN_PASSWORD=your-keystore-password jinn run
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
On first run, the bootstrap generates a master wallet and prints a funding address. Send testnet ETH to it, then re-run. The bootstrap is idempotent — it picks up where it left off.
|
|
31
|
+
|
|
32
|
+
`JINN_PASSWORD` encrypts the local keystore and is env-only; never put it in a config file.
|
|
33
|
+
|
|
34
|
+
## Try without installing
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx @jinn-network/client@latest doctor
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Docker (Recommended for Operators)
|
|
41
|
+
|
|
42
|
+
The Jinn daemon runs pure Node, but spawns the Anthropic `claude` CLI as a subprocess for restorations. To keep your costs low, operators should use Claude's OAuth authentication (which leverages prompt caching and app tiers) instead of brute-forcing API keys.
|
|
43
|
+
|
|
44
|
+
Because the macOS keychain securely encrypts OAuth tokens, you **cannot** simply mount `~/.claude` from a Mac host into Docker. Instead, the most robust way to manage credentials and daemon state is using our included `docker-compose.yml`.
|
|
45
|
+
|
|
46
|
+
### Zero-Friction Setup
|
|
47
|
+
|
|
48
|
+
1. **Configure Environment:** Create a `.env` file with your master password:
|
|
49
|
+
```bash
|
|
50
|
+
echo "JINN_PASSWORD=your-secure-password" > .env
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
2. **Authenticate Claude (One-Time):** The image entrypoint is the `jinn` binary, so run the Anthropic CLI directly by overriding the entrypoint. This performs the OAuth flow and saves the token to the persistent `jinn-claude-state` volume (same volumes as the daemon service):
|
|
54
|
+
```bash
|
|
55
|
+
docker compose run --rm -it --entrypoint claude jinn-daemon auth login
|
|
56
|
+
```
|
|
57
|
+
Use `-it` so the CLI can open a browser (or show a URL to visit) and receive input. The process stays in the foreground until you finish sign-in.
|
|
58
|
+
*Follow the URL to authenticate in your browser.*
|
|
59
|
+
|
|
60
|
+
3. **Start the Fleet:** Now that the Docker volume holds the token, start the headless daemon:
|
|
61
|
+
```bash
|
|
62
|
+
docker compose up -d
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Quick Test
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
docker run --rm ghcr.io/jinn-network/client:latest version --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Operator commands
|
|
72
|
+
|
|
73
|
+
### Lifecycle
|
|
74
|
+
|
|
75
|
+
| Command | Purpose | Idempotent |
|
|
76
|
+
|---|---|---|
|
|
77
|
+
| `jinn init` | Generate wallet + keystore | Yes |
|
|
78
|
+
| `jinn doctor` | Preflight checks without mutation | Yes |
|
|
79
|
+
| `jinn bootstrap` | Advance toward a running fleet | Yes |
|
|
80
|
+
| `jinn fund-requirements` | List what needs funding | Yes |
|
|
81
|
+
| `jinn run` | Start the daemon (foreground) | N/A |
|
|
82
|
+
| `jinn stop` | Signal a running daemon to stop | Yes |
|
|
83
|
+
| `jinn version` | Version, phase, deployment digest | Yes |
|
|
84
|
+
|
|
85
|
+
### Monitoring
|
|
86
|
+
|
|
87
|
+
| Command | Purpose |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `jinn status` | Daemon liveness + fleet health roll-up |
|
|
90
|
+
| `jinn fleet` | Per-service detail: wallets, staking, activity |
|
|
91
|
+
| `jinn balance` | Flat per-wallet balance map |
|
|
92
|
+
| `jinn history` | Recent protocol activity |
|
|
93
|
+
| `jinn rewards` | Earned vs claimed per service |
|
|
94
|
+
| `jinn logs` | Structured event stream |
|
|
95
|
+
|
|
96
|
+
### Actions
|
|
97
|
+
|
|
98
|
+
All action verbs support `--dry-run` and `--yes`.
|
|
99
|
+
|
|
100
|
+
| Command | Purpose |
|
|
101
|
+
|---|---|
|
|
102
|
+
| `jinn submit-intent` | Publish a desired state |
|
|
103
|
+
| `jinn claim-rewards` | Pull pending protocol rewards |
|
|
104
|
+
| `jinn fleet scale --to N` | Grow or shrink fleet |
|
|
105
|
+
| `jinn fleet retire <index>` | Retire one service |
|
|
106
|
+
| `jinn withdraw --to <addr>` | Sweep wallets to external address |
|
|
107
|
+
| `jinn keys backup --output <path>` | Export mnemonic |
|
|
108
|
+
|
|
109
|
+
## Output contract
|
|
110
|
+
|
|
111
|
+
- **JSON by default** for operational verbs unless you pass `--human` (headless- and agent-friendly regardless of TTY).
|
|
112
|
+
- Add `--human` for readable terminal output.
|
|
113
|
+
- `stderr` is reserved for progress, warnings, and runtime logs.
|
|
114
|
+
- Non-zero exits emit a structured error envelope on stdout with `schemaVersion`, `code`, `exitCode`, `message`, `hint`, and `exampleCli`.
|
|
115
|
+
- Without a global install, use `npx @jinn-network/client@latest <verb> ...` instead of `jinn ...` (the package name is scoped; `npx jinn` resolves a different package).
|
|
116
|
+
|
|
117
|
+
See [`spec/2026-04-14-client-surface.md`](../spec/2026-04-14-client-surface.md) for the full surface spec.
|
|
118
|
+
|
|
119
|
+
## Configuration
|
|
120
|
+
|
|
121
|
+
Config file first, env var override. Default location: `~/.jinn-client/config.json`.
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
JINN_PASSWORD=secret jinn run --config ./my-config.json
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
| Config key | Env override | Default |
|
|
128
|
+
|---|---|---|
|
|
129
|
+
| network | JINN_NETWORK | testnet (flips to mainnet at launch) |
|
|
130
|
+
| rpcUrl | BASE_RPC_URL / JINN_RPC_URL | network-appropriate public RPC |
|
|
131
|
+
| claudeModel | JINN_CLAUDE_MODEL | claude-haiku-4-5-20251001 |
|
|
132
|
+
| claudePath | JINN_CLAUDE_PATH | claude |
|
|
133
|
+
| pollIntervalMs | JINN_POLL_INTERVAL_MS | 5000 |
|
|
134
|
+
| apiPort | JINN_API_PORT | 7331 |
|
|
135
|
+
| dbPath | JINN_DB_PATH | ~/.jinn-client/jinn.db |
|
|
136
|
+
| earningDir | JINN_EARNING_DIR | ~/.jinn-client/earning |
|
|
137
|
+
| peers | JINN_PEERS | [] |
|
|
138
|
+
| desiredStates | JINN_DESIRED_STATES | [health-check] |
|
|
139
|
+
|
|
140
|
+
`JINN_PASSWORD` is env-only (keystore encryption, never in config files). Alternatively, use `--password-fd <N>` to read from a file descriptor.
|
|
141
|
+
|
|
142
|
+
## Switching to mainnet
|
|
143
|
+
|
|
144
|
+
When Phase 2 launches, the default flips. Until then:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
JINN_NETWORK=mainnet JINN_PASSWORD=secret jinn run
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## How it works
|
|
151
|
+
|
|
152
|
+
The daemon runs three concurrent loops:
|
|
153
|
+
|
|
154
|
+
1. **CreatorLoop** — posts desired states as restoration jobs
|
|
155
|
+
2. **RestorerLoop** — claims requests, spawns Claude to attempt restoration, submits results
|
|
156
|
+
3. **DeliveryWatcherLoop** — claims deliveries, creates evaluation jobs
|
|
157
|
+
|
|
158
|
+
Each loop call increments on-chain activity counters. Staking contracts read these at checkpoints to determine reward eligibility.
|
|
159
|
+
|
|
160
|
+
## Development
|
|
161
|
+
|
|
162
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup, running from source, and testing.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "baseSepolia",
|
|
3
|
+
"chainId": 84532,
|
|
4
|
+
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
5
|
+
"deployedAt": "2026-04-08T16:00:00.000Z",
|
|
6
|
+
"config": {
|
|
7
|
+
"jinnTokenSource": "external",
|
|
8
|
+
"serviceRegistrySource": "external",
|
|
9
|
+
"serviceRegistryTokenUtilitySource": "external",
|
|
10
|
+
"proxyHash": "0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000",
|
|
11
|
+
"proxyHashSource": "external",
|
|
12
|
+
"timingProfile": "fast-test",
|
|
13
|
+
"livenessRatio": "1000000000000000",
|
|
14
|
+
"maxNumServices": 100,
|
|
15
|
+
"rewardsPerSecond": "100000000000000",
|
|
16
|
+
"minStakingDeposit": "10000000000000000000",
|
|
17
|
+
"minNumStakingPeriods": 2,
|
|
18
|
+
"maxNumInactivityPeriods": 1,
|
|
19
|
+
"livenessPeriod": 300,
|
|
20
|
+
"timeForEmissions": 21600,
|
|
21
|
+
"numAgentInstances": 1
|
|
22
|
+
},
|
|
23
|
+
"contracts": {
|
|
24
|
+
"jinnToken": "0xAB9a01cd4A379e36006ec6df2960CF39EF79df63",
|
|
25
|
+
"serviceRegistry": "0x31D3202d8744B16A120117A053459DDFAE93c855",
|
|
26
|
+
"serviceRegistryTokenUtility": "0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994",
|
|
27
|
+
"activityChecker": "0xdaa1529de84B429945A33744539Af6D7140BF9B6",
|
|
28
|
+
"stakingFactory": "0x4FaF53A13Df420D70FE337F5b77B35B6E7309C48",
|
|
29
|
+
"stakingImplementation": "0xE98F9a4d368A0ea190cBdC938d1eAe8cEf086e12",
|
|
30
|
+
"stakingToken": "0x2c286651590b4DdC6d58d1270069B43183a851D1"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "baseSepolia",
|
|
3
|
+
"chainId": 84532,
|
|
4
|
+
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
5
|
+
"deployedAt": "2026-04-08T15:59:07.620Z",
|
|
6
|
+
"config": {
|
|
7
|
+
"timingProfile": "fast-test",
|
|
8
|
+
"l1DeploymentPath": "deployment-phase1a-sepolia-fast.json",
|
|
9
|
+
"l1Token": "0xc3ae831f146Eabbb8095E1EDf90a187AA4E5F408",
|
|
10
|
+
"name": "Jinn",
|
|
11
|
+
"symbol": "JINN",
|
|
12
|
+
"factoryAddress": "0x4200000000000000000000000000000000000012",
|
|
13
|
+
"l2StandardBridgeAddress": "0x4200000000000000000000000000000000000010"
|
|
14
|
+
},
|
|
15
|
+
"contracts": {
|
|
16
|
+
"l1Token": "0xc3ae831f146Eabbb8095E1EDf90a187AA4E5F408",
|
|
17
|
+
"l2Token": "0xAB9a01cd4A379e36006ec6df2960CF39EF79df63",
|
|
18
|
+
"mintableFactory": "0x4200000000000000000000000000000000000012",
|
|
19
|
+
"l2StandardBridge": "0x4200000000000000000000000000000000000010"
|
|
20
|
+
},
|
|
21
|
+
"verification": {
|
|
22
|
+
"remoteToken": "0xc3ae831f146Eabbb8095E1EDf90a187AA4E5F408",
|
|
23
|
+
"bridge": "0x4200000000000000000000000000000000000010",
|
|
24
|
+
"txHash": "0x27d79a54715df4509524e0f2308809d6336e0b734002266552ce256828b1469a",
|
|
25
|
+
"reusedExisting": false
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "baseSepolia",
|
|
3
|
+
"chainId": 84532,
|
|
4
|
+
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
5
|
+
"deployedAt": "2026-04-09T13:21:20.747Z",
|
|
6
|
+
"config": {
|
|
7
|
+
"timingProfile": "fast-test",
|
|
8
|
+
"fee": 0,
|
|
9
|
+
"minResponseTimeout": 60,
|
|
10
|
+
"maxResponseTimeout": 300,
|
|
11
|
+
"livenessRatio": "1000000000000000",
|
|
12
|
+
"nativePaymentType": "0xba699a34be8fe0e7725e93dcbce1701b0211a8ca61330aaeb8a05bf2ec7abed1"
|
|
13
|
+
},
|
|
14
|
+
"contracts": {
|
|
15
|
+
"karmaImpl": "0x5FFD663593Cea8dedF19fD314b13E392F5b64FC1",
|
|
16
|
+
"karma": "0x61434dAFf652FF0654684482Ab11736E96a7ba3A",
|
|
17
|
+
"mechMarketplaceImpl": "0x16F35EF27d4A0a8b49B77BfB65e668dB43311133",
|
|
18
|
+
"mechMarketplace": "0xD3233FdAaB51E9775f6bFCE8242B02C181D7c0e7",
|
|
19
|
+
"balanceTracker": "0xDbeEF1947F7BB3657f984aA6b230a0ca6578229D",
|
|
20
|
+
"mechFactory": "0x206183F35B2450Ca15A906BB923E74d945F78d67",
|
|
21
|
+
"jinnRouter": "0x6059Dd37eB0FD3a55BCe7A3C1fA86AB84F2d9675",
|
|
22
|
+
"serviceRegistry": "0x31D3202d8744B16A120117A053459DDFAE93c855",
|
|
23
|
+
"activityChecker": "0xF4Ca4943Eb0b0927d754A6A95206364f017D45f6",
|
|
24
|
+
"stakingToken": "0xf358b5c1ac4ddc4e807b5baf008826bf193eab3b"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "baseSepolia",
|
|
3
|
+
"chainId": 84532,
|
|
4
|
+
"deployer": "0x15e78734481bD31F6e183dad05225505a45ACd07",
|
|
5
|
+
"deployedAt": "2026-04-10T16:46:00.888Z",
|
|
6
|
+
"config": {
|
|
7
|
+
"l2Jinn": "0xAB9a01cd4A379e36006ec6df2960CF39EF79df63",
|
|
8
|
+
"stakingContract": "0xf358b5c1ac4ddc4e807b5baf008826bf193eab3b",
|
|
9
|
+
"l1DepositProcessor": "0x494FBcd686C895fD6265e852086B53Abf15cb076",
|
|
10
|
+
"l1DistributorProxy": "0x12F14eF5b4881a932BE3F334599cB9473aBE987A",
|
|
11
|
+
"l1TreasuryProxy": "0xa87c117cB54d9C6C8a8e0aA0b336a1125E485Cb7",
|
|
12
|
+
"stakingType": 1,
|
|
13
|
+
"collectorRewardFactor": 10000,
|
|
14
|
+
"protocolRewardFactor": 0,
|
|
15
|
+
"curatingAgentRewardFactor": 0,
|
|
16
|
+
"agentId": 103,
|
|
17
|
+
"livenessRatio": "1000000000000000"
|
|
18
|
+
},
|
|
19
|
+
"contracts": {
|
|
20
|
+
"recoveryModule": "0x5E3327C73834502f14e93e6b7D74742De1f9F3FD",
|
|
21
|
+
"safeMultisigWithRecoveryModule": "0x20F7b9b55a88e3b2561fe83B076DE52916C7eaf0",
|
|
22
|
+
"collectorImpl": "0x6A7a3aBdbfF301A6212ebA1523E579399833C718",
|
|
23
|
+
"collector": "0x21c52Be4F656435F97d0335B37e21B417c8b6DFa",
|
|
24
|
+
"distributorImpl": "0xf734551289f11431486D60621F4BDB0081887B34",
|
|
25
|
+
"distributor": "0x20951FBDb4F9cB1f051ef416BCB11A9Cfe3CEf81",
|
|
26
|
+
"multisigGuardImpl": "0xD6229A8b3D1b5824e824E6589469F85987379183",
|
|
27
|
+
"multisigGuard": "0x77aE56B2B745b3e81002090749Ef59B72B688D5F",
|
|
28
|
+
"moduleActivityChecker": "0x4B7F3539cAb410C7b56ad6158DB4197F02942a0F",
|
|
29
|
+
"activityModule": "0x73e2713B535540A3378ddA3DC62F1e75b35469c3",
|
|
30
|
+
"beacon": "0xB73Be5348C09FD95e4Fc64cc5fCb2b4B4F932b10",
|
|
31
|
+
"stakingManagerImpl": "0xFb0B086D3f7C03f1F671C6ccD5D16CC779B25Af9",
|
|
32
|
+
"stakingManager": "0x5edCd012C581b946E06a74e1906a5f29D588403e",
|
|
33
|
+
"baseStakingProcessorL2": "0x23a063f600e9938405D0367a137f1bE2F0B4D0D2"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DesiredState, RequestId, RestorationRequest, RestorationResult, DeliveredResult } from '../types/index.js';
|
|
2
|
+
export interface ExecutionAdapter {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
initialize(): Promise<void>;
|
|
5
|
+
postDesiredState(state: DesiredState): Promise<RequestId>;
|
|
6
|
+
watchForRequests(): AsyncIterable<RestorationRequest>;
|
|
7
|
+
claimRequest(requestId: RequestId): Promise<void>;
|
|
8
|
+
submitResult(requestId: RequestId, result: RestorationResult): Promise<void>;
|
|
9
|
+
watchForDeliveries(): AsyncIterable<DeliveredResult>;
|
|
10
|
+
stop(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ExecutionAdapter } from '../adapter.js';
|
|
2
|
+
import type { DesiredState, RequestId, RestorationRequest, RestorationResult, DeliveredResult } from '../../types/index.js';
|
|
3
|
+
export declare class LocalAdapter implements ExecutionAdapter {
|
|
4
|
+
readonly name = "local";
|
|
5
|
+
private requests;
|
|
6
|
+
private pendingRequests;
|
|
7
|
+
private deferredEvalRequests;
|
|
8
|
+
private pendingDeliveries;
|
|
9
|
+
private requestWaiters;
|
|
10
|
+
private deliveryWaiters;
|
|
11
|
+
private deliveredRequestIds;
|
|
12
|
+
private stopped;
|
|
13
|
+
initialize(): Promise<void>;
|
|
14
|
+
postDesiredState(state: DesiredState): Promise<RequestId>;
|
|
15
|
+
watchForRequests(): AsyncIterable<RestorationRequest>;
|
|
16
|
+
claimRequest(_requestId: RequestId): Promise<void>;
|
|
17
|
+
submitResult(requestId: RequestId, result: RestorationResult): Promise<void>;
|
|
18
|
+
watchForDeliveries(): AsyncIterable<DeliveredResult>;
|
|
19
|
+
stop(): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
export class LocalAdapter {
|
|
3
|
+
name = 'local';
|
|
4
|
+
requests = new Map();
|
|
5
|
+
pendingRequests = [];
|
|
6
|
+
deferredEvalRequests = [];
|
|
7
|
+
pendingDeliveries = [];
|
|
8
|
+
requestWaiters = [];
|
|
9
|
+
deliveryWaiters = [];
|
|
10
|
+
deliveredRequestIds = new Set();
|
|
11
|
+
stopped = false;
|
|
12
|
+
async initialize() {
|
|
13
|
+
// No-op for local
|
|
14
|
+
}
|
|
15
|
+
async postDesiredState(state) {
|
|
16
|
+
const requestId = randomUUID();
|
|
17
|
+
// Create restoration request
|
|
18
|
+
const restorationState = {
|
|
19
|
+
...state,
|
|
20
|
+
type: state.type ?? 'restoration',
|
|
21
|
+
};
|
|
22
|
+
const request = {
|
|
23
|
+
requestId,
|
|
24
|
+
desiredState: restorationState,
|
|
25
|
+
};
|
|
26
|
+
this.requests.set(requestId, request);
|
|
27
|
+
if (this.requestWaiters.length > 0) {
|
|
28
|
+
this.requestWaiters.shift()(request);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.pendingRequests.push(request);
|
|
32
|
+
}
|
|
33
|
+
// Create linked evaluation request
|
|
34
|
+
const evalRequestId = randomUUID();
|
|
35
|
+
const evaluationState = {
|
|
36
|
+
...state,
|
|
37
|
+
type: 'evaluation',
|
|
38
|
+
restorationRequestId: requestId,
|
|
39
|
+
};
|
|
40
|
+
const evalRequest = {
|
|
41
|
+
requestId: evalRequestId,
|
|
42
|
+
desiredState: evaluationState,
|
|
43
|
+
};
|
|
44
|
+
this.requests.set(evalRequestId, evalRequest);
|
|
45
|
+
// Evaluation requests are deferred — only yielded after restoration is delivered
|
|
46
|
+
this.deferredEvalRequests.push(evalRequest);
|
|
47
|
+
return requestId;
|
|
48
|
+
}
|
|
49
|
+
async *watchForRequests() {
|
|
50
|
+
while (!this.stopped) {
|
|
51
|
+
// Check if any deferred evaluation requests are now ready
|
|
52
|
+
const stillDeferred = [];
|
|
53
|
+
for (const evalReq of this.deferredEvalRequests) {
|
|
54
|
+
const restorationId = evalReq.desiredState.restorationRequestId;
|
|
55
|
+
if (restorationId && this.deliveredRequestIds.has(restorationId)) {
|
|
56
|
+
// Restoration delivered — yield evaluation request
|
|
57
|
+
if (this.requestWaiters.length > 0) {
|
|
58
|
+
this.requestWaiters.shift()(evalReq);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.pendingRequests.push(evalReq);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
stillDeferred.push(evalReq);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
this.deferredEvalRequests = stillDeferred;
|
|
69
|
+
if (this.pendingRequests.length > 0) {
|
|
70
|
+
yield this.pendingRequests.shift();
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const req = await new Promise((resolve) => {
|
|
74
|
+
this.requestWaiters.push(resolve);
|
|
75
|
+
});
|
|
76
|
+
if (!this.stopped)
|
|
77
|
+
yield req;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async claimRequest(_requestId) {
|
|
82
|
+
// Always succeeds in local mode
|
|
83
|
+
}
|
|
84
|
+
async submitResult(requestId, result) {
|
|
85
|
+
const request = this.requests.get(requestId);
|
|
86
|
+
if (!request)
|
|
87
|
+
throw new Error(`Unknown request: ${requestId}`);
|
|
88
|
+
this.deliveredRequestIds.add(requestId);
|
|
89
|
+
const delivery = {
|
|
90
|
+
requestId,
|
|
91
|
+
desiredState: request.desiredState,
|
|
92
|
+
result,
|
|
93
|
+
deliveryMechAddress: 'local',
|
|
94
|
+
};
|
|
95
|
+
if (this.deliveryWaiters.length > 0) {
|
|
96
|
+
this.deliveryWaiters.shift()(delivery);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.pendingDeliveries.push(delivery);
|
|
100
|
+
}
|
|
101
|
+
// Check if any deferred evaluation requests are now ready
|
|
102
|
+
const stillDeferred = [];
|
|
103
|
+
for (const evalReq of this.deferredEvalRequests) {
|
|
104
|
+
const restorationId = evalReq.desiredState.restorationRequestId;
|
|
105
|
+
if (restorationId && this.deliveredRequestIds.has(restorationId)) {
|
|
106
|
+
if (this.requestWaiters.length > 0) {
|
|
107
|
+
this.requestWaiters.shift()(evalReq);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
this.pendingRequests.push(evalReq);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
stillDeferred.push(evalReq);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
this.deferredEvalRequests = stillDeferred;
|
|
118
|
+
}
|
|
119
|
+
async *watchForDeliveries() {
|
|
120
|
+
while (!this.stopped) {
|
|
121
|
+
if (this.pendingDeliveries.length > 0) {
|
|
122
|
+
yield this.pendingDeliveries.shift();
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const del = await new Promise((resolve) => {
|
|
126
|
+
this.deliveryWaiters.push(resolve);
|
|
127
|
+
});
|
|
128
|
+
if (!this.stopped)
|
|
129
|
+
yield del;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async stop() {
|
|
134
|
+
this.stopped = true;
|
|
135
|
+
// Resolve any pending waiters so loops can exit
|
|
136
|
+
for (const waiter of this.requestWaiters) {
|
|
137
|
+
waiter({ requestId: '', desiredState: { id: '', description: '' } });
|
|
138
|
+
}
|
|
139
|
+
for (const waiter of this.deliveryWaiters) {
|
|
140
|
+
waiter({ requestId: '', desiredState: { id: '', description: '' }, result: { data: '' }, deliveryMechAddress: '' });
|
|
141
|
+
}
|
|
142
|
+
this.requestWaiters = [];
|
|
143
|
+
this.deliveryWaiters = [];
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/local/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,MAAM,OAAO,YAAY;IACd,IAAI,GAAG,OAAO,CAAC;IAEhB,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAC;IACpD,eAAe,GAAyB,EAAE,CAAC;IAC3C,oBAAoB,GAAyB,EAAE,CAAC;IAChD,iBAAiB,GAAsB,EAAE,CAAC;IAC1C,cAAc,GAA6C,EAAE,CAAC;IAC9D,eAAe,GAA0C,EAAE,CAAC;IAC5D,mBAAmB,GAAG,IAAI,GAAG,EAAa,CAAC;IAC3C,OAAO,GAAG,KAAK,CAAC;IAExB,KAAK,CAAC,UAAU;QACd,kBAAkB;IACpB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAmB;QACxC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAE/B,6BAA6B;QAC7B,MAAM,gBAAgB,GAAiB;YACrC,GAAG,KAAK;YACR,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,aAAa;SAClC,CAAC;QACF,MAAM,OAAO,GAAuB;YAClC,SAAS;YACT,YAAY,EAAE,gBAAgB;SAC/B,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAG,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,mCAAmC;QACnC,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC;QACnC,MAAM,eAAe,GAAiB;YACpC,GAAG,KAAK;YACR,IAAI,EAAE,YAAY;YAClB,oBAAoB,EAAE,SAAS;SAChC,CAAC;QACF,MAAM,WAAW,GAAuB;YACtC,SAAS,EAAE,aAAa;YACxB,YAAY,EAAE,eAAe;SAC9B,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC9C,iFAAiF;QACjF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,CAAC,gBAAgB;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,0DAA0D;YAC1D,MAAM,aAAa,GAAyB,EAAE,CAAC;YAC/C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAChD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC;gBAChE,IAAI,aAAa,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;oBACjE,mDAAmD;oBACnD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAG,CAAC,OAAO,CAAC,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC;YAE1C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAG,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,EAAE;oBAC5D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,MAAM,GAAG,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAqB;QACtC,gCAAgC;IAClC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAoB,EAAE,MAAyB;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAoB;YAChC,SAAS;YACT,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,MAAM;YACN,mBAAmB,EAAE,OAAO;SAC7B,CAAC;QAEF,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,0DAA0D;QAC1D,MAAM,aAAa,GAAyB,EAAE,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC;YAChE,IAAI,aAAa,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjE,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAG,CAAC,OAAO,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,CAAC,kBAAkB;QACvB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAG,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAkB,CAAC,OAAO,EAAE,EAAE;oBACzD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,MAAM,GAAG,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,gDAAgD;QAChD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;QACtH,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ExecutionAdapter } from '../adapter.js';
|
|
2
|
+
import type { DesiredState, RequestId, RestorationRequest, RestorationResult, DeliveredResult } from '../../types/index.js';
|
|
3
|
+
import { type MechAdapterConfig } from './types.js';
|
|
4
|
+
import type { Store } from '../../store/store.js';
|
|
5
|
+
export declare class MechAdapter implements ExecutionAdapter {
|
|
6
|
+
readonly name = "mech";
|
|
7
|
+
private publicClient;
|
|
8
|
+
private walletClient;
|
|
9
|
+
private config;
|
|
10
|
+
private stopped;
|
|
11
|
+
private requestBlockCursor;
|
|
12
|
+
private deliveryBlockCursor;
|
|
13
|
+
private pendingEvaluations;
|
|
14
|
+
private pendingEvaluationClaims;
|
|
15
|
+
private claimedButNotEvaluated;
|
|
16
|
+
private originalStates;
|
|
17
|
+
private store?;
|
|
18
|
+
private claimPolicy;
|
|
19
|
+
constructor(config: MechAdapterConfig, store?: Store);
|
|
20
|
+
initialize(): Promise<void>;
|
|
21
|
+
private recoverPendingState;
|
|
22
|
+
postDesiredState(state: DesiredState): Promise<RequestId>;
|
|
23
|
+
watchForRequests(): AsyncIterable<RestorationRequest>;
|
|
24
|
+
claimRequest(requestId: RequestId): Promise<void>;
|
|
25
|
+
submitResult(requestId: RequestId, result: RestorationResult): Promise<void>;
|
|
26
|
+
watchForDeliveries(): AsyncIterable<DeliveredResult>;
|
|
27
|
+
private tryCreateEvaluationJob;
|
|
28
|
+
stop(): Promise<void>;
|
|
29
|
+
}
|