@wiimdy/openfunderse 0.1.2 → 0.1.3
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/README.md +2 -3
- package/bin/openfunderse.mjs +4 -4
- package/package.json +1 -1
- package/packs/openfunderse/config/setup-manifest.json +1 -11
- package/packs/openfunderse/skills/openfunderse-participant/SKILL.md +26 -1
- package/packs/openfunderse/skills/openfunderse-strategy/SKILL.md +13 -18
- package/packs/openfunderse-participant/openfunderse-participant/SKILL.md +26 -1
- package/packs/openfunderse-strategy/openfunderse-strategy/SKILL.md +13 -18
- package/packs/openfunderse/prompts/core/system.md +0 -25
- package/packs/openfunderse/prompts/relayer/system.md +0 -14
- package/packs/openfunderse/skills/clawbot-core/SKILL.md +0 -157
- package/packs/openfunderse/skills/relayer/SKILL.md +0 -10
package/README.md
CHANGED
|
@@ -40,13 +40,11 @@ npx @wiimdy/openfunderse@latest install openfunderse \
|
|
|
40
40
|
# initialize bot env + fresh Monad wallet (strategy)
|
|
41
41
|
npx @wiimdy/openfunderse@latest bot-init \
|
|
42
42
|
--skill-name strategy \
|
|
43
|
-
--env-path .env.strategy \
|
|
44
43
|
--yes
|
|
45
44
|
|
|
46
45
|
# initialize participant bot env + wallet
|
|
47
46
|
npx @wiimdy/openfunderse@latest bot-init \
|
|
48
47
|
--skill-name participant \
|
|
49
|
-
--env-path .env.participant \
|
|
50
48
|
--yes
|
|
51
49
|
```
|
|
52
50
|
|
|
@@ -56,7 +54,7 @@ npx @wiimdy/openfunderse@latest bot-init \
|
|
|
56
54
|
- Pack metadata/prompts are copied into `$CODEX_HOME/packs/<pack-name>`.
|
|
57
55
|
- Use `--force` to overwrite existing installed skills.
|
|
58
56
|
- `--with-runtime` installs `@wiimdy/openfunderse-agents` into the current project (`package.json` required).
|
|
59
|
-
- Env scaffold generation is enabled by default (default path: `.env
|
|
57
|
+
- Env scaffold generation is enabled by default (default path: `.env`).
|
|
60
58
|
- `--env-profile` controls scaffold scope: `strategy` | `participant` | `all` (auto-selected by pack when omitted).
|
|
61
59
|
- Use `--no-init-env` to skip env scaffold generation.
|
|
62
60
|
- `--env-path` sets a custom env scaffold path.
|
|
@@ -66,6 +64,7 @@ npx @wiimdy/openfunderse@latest bot-init \
|
|
|
66
64
|
- Prefer `--env-path` (Node 20+ reserves `--env-file` as a runtime flag).
|
|
67
65
|
- `bot-init` uses `cast wallet new --json` (Foundry) to generate a new wallet for Monad testnet.
|
|
68
66
|
- `bot-init` infers role from `--skill-name`, `--env-path`, or `--wallet-name` when `--role` is omitted.
|
|
67
|
+
- `bot-init` writes to `.env` by default. Use `--env-path` to split strategy/participant env files.
|
|
69
68
|
- It also infers from active skill env hints (`OPENCLAW_SKILL_KEY`, `OPENCLAW_ACTIVE_SKILL`, `SKILL_KEY`, `SKILL_NAME`).
|
|
70
69
|
- `bot-init` writes role-specific key fields:
|
|
71
70
|
- `strategy`: `STRATEGY_PRIVATE_KEY`, `BOT_ADDRESS`
|
package/bin/openfunderse.mjs
CHANGED
|
@@ -79,8 +79,8 @@ Examples:
|
|
|
79
79
|
openfunderse install openfunderse --with-runtime
|
|
80
80
|
openfunderse install openfunderse-strategy --with-runtime
|
|
81
81
|
openfunderse install openfunderse --codex-home /tmp/codex-home
|
|
82
|
-
openfunderse bot-init --
|
|
83
|
-
openfunderse bot-init --skill-name strategy --
|
|
82
|
+
openfunderse bot-init --skill-name participant --wallet-name participant-bot --yes
|
|
83
|
+
openfunderse bot-init --skill-name strategy --force
|
|
84
84
|
`);
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -342,7 +342,7 @@ async function writeEnvScaffold(options) {
|
|
|
342
342
|
const profile = normalizeEnvProfile(rawProfile);
|
|
343
343
|
const envTarget = options.envFile
|
|
344
344
|
? path.resolve(options.envFile)
|
|
345
|
-
: path.join(runtimeDir, ".env
|
|
345
|
+
: path.join(runtimeDir, ".env");
|
|
346
346
|
|
|
347
347
|
const alreadyExists = existsSync(envTarget);
|
|
348
348
|
if (alreadyExists && !options.force) {
|
|
@@ -369,7 +369,7 @@ async function writeEnvScaffold(options) {
|
|
|
369
369
|
}
|
|
370
370
|
|
|
371
371
|
function defaultEnvPathForRole(role) {
|
|
372
|
-
return path.join(process.cwd(),
|
|
372
|
+
return path.join(process.cwd(), ".env");
|
|
373
373
|
}
|
|
374
374
|
|
|
375
375
|
function readAssignedEnvValue(content, key) {
|
package/package.json
CHANGED
|
@@ -2,13 +2,8 @@
|
|
|
2
2
|
"name": "openfunderse-agent-pack",
|
|
3
3
|
"version": "0.1.0",
|
|
4
4
|
"installCommand": "npx @wiimdy/openfunderse@latest install openfunderse --with-runtime",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Unified OpenFunderse pack with strategy + participant skills.",
|
|
6
6
|
"bundles": [
|
|
7
|
-
{
|
|
8
|
-
"id": "clawbot-core",
|
|
9
|
-
"skill": "skills/clawbot-core/SKILL.md",
|
|
10
|
-
"prompt": "prompts/core/system.md"
|
|
11
|
-
},
|
|
12
7
|
{
|
|
13
8
|
"id": "strategy",
|
|
14
9
|
"skill": "skills/openfunderse-strategy/SKILL.md",
|
|
@@ -18,11 +13,6 @@
|
|
|
18
13
|
"id": "participant",
|
|
19
14
|
"skill": "skills/openfunderse-participant/SKILL.md",
|
|
20
15
|
"prompt": "prompts/participant/system.md"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"id": "relayer",
|
|
24
|
-
"skill": "skills/relayer/SKILL.md",
|
|
25
|
-
"prompt": "prompts/relayer/system.md"
|
|
26
16
|
}
|
|
27
17
|
],
|
|
28
18
|
"todo": [
|
|
@@ -3,6 +3,7 @@ name: openfunderse-participant
|
|
|
3
3
|
description: Participant MoltBot for data mining (claims) and cross-verification (attestations)
|
|
4
4
|
metadata:
|
|
5
5
|
openclaw:
|
|
6
|
+
installCommand: npx @wiimdy/openfunderse@latest install openfunderse-participant --with-runtime
|
|
6
7
|
requires:
|
|
7
8
|
env:
|
|
8
9
|
- RELAYER_URL
|
|
@@ -24,12 +25,36 @@ The Participant MoltBot is responsible for mining data claims from specified sou
|
|
|
24
25
|
|
|
25
26
|
## Quick Start (ClawHub Users)
|
|
26
27
|
|
|
27
|
-
Install the skill
|
|
28
|
+
1) Install the skill:
|
|
28
29
|
|
|
29
30
|
```bash
|
|
30
31
|
npx clawhub@latest install openfunderse-participant
|
|
31
32
|
```
|
|
32
33
|
|
|
34
|
+
2) Install runtime + generate env scaffold:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx @wiimdy/openfunderse@latest install openfunderse-participant --with-runtime
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
3) Rotate the temporary bootstrap key and write a fresh participant wallet to env:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx @wiimdy/openfunderse@latest bot-init \
|
|
44
|
+
--skill-name participant \
|
|
45
|
+
--yes
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
4) Load env for the current shell:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
set -a; source .env; set +a
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Note:
|
|
55
|
+
- The scaffold includes a temporary public key placeholder by default.
|
|
56
|
+
- Always run `bot-init` before funding or running production actions.
|
|
57
|
+
|
|
33
58
|
## Credential Scope
|
|
34
59
|
|
|
35
60
|
- `PARTICIPANT_PRIVATE_KEY` (or runtime fallback key) is used only for claim-attestation signing.
|
|
@@ -5,6 +5,7 @@ always: false
|
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
8
|
+
installCommand: npx @wiimdy/openfunderse@latest install openfunderse-strategy --with-runtime
|
|
8
9
|
requires:
|
|
9
10
|
env:
|
|
10
11
|
- RELAYER_URL
|
|
@@ -46,41 +47,35 @@ In runtime, use `proposeIntentAndSubmit` to build a canonical proposal first, th
|
|
|
46
47
|
|
|
47
48
|
## Quick Start (ClawHub Users)
|
|
48
49
|
|
|
49
|
-
Install the skill
|
|
50
|
+
1) Install the skill:
|
|
50
51
|
|
|
51
52
|
```bash
|
|
52
53
|
npx clawhub@latest install openfunderse-strategy
|
|
53
54
|
```
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
2) Install runtime + generate env scaffold:
|
|
56
57
|
|
|
57
58
|
```bash
|
|
58
|
-
|
|
59
|
+
npx @wiimdy/openfunderse@latest install openfunderse-strategy --with-runtime
|
|
59
60
|
```
|
|
60
61
|
|
|
61
|
-
|
|
62
|
+
3) Rotate the temporary bootstrap key and write a fresh strategy wallet to env:
|
|
62
63
|
|
|
63
64
|
```bash
|
|
64
|
-
|
|
65
|
+
npx @wiimdy/openfunderse@latest bot-init \
|
|
66
|
+
--skill-name strategy \
|
|
67
|
+
--yes
|
|
65
68
|
```
|
|
66
69
|
|
|
67
|
-
|
|
70
|
+
4) Load env for the current shell:
|
|
68
71
|
|
|
69
72
|
```bash
|
|
70
|
-
|
|
73
|
+
set -a; source .env; set +a
|
|
71
74
|
```
|
|
72
75
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- `
|
|
76
|
-
- `packages/agents/README.md`
|
|
77
|
-
|
|
78
|
-
Runtime sources:
|
|
79
|
-
|
|
80
|
-
- npm package: `https://www.npmjs.com/package/@wiimdy/openfunderse-agents`
|
|
81
|
-
- repository: `https://github.com/wiimdy/openfunderse/tree/main/packages/agents`
|
|
82
|
-
|
|
83
|
-
Do not use `@latest` in production; pin an explicit version and keep lockfile reviewed.
|
|
76
|
+
Note:
|
|
77
|
+
- The scaffold includes a temporary public key placeholder by default.
|
|
78
|
+
- Always run `bot-init` before funding or running production actions.
|
|
84
79
|
|
|
85
80
|
## Credential Scope
|
|
86
81
|
|
|
@@ -3,6 +3,7 @@ name: openfunderse-participant
|
|
|
3
3
|
description: Participant MoltBot for data mining (claims) and cross-verification (attestations)
|
|
4
4
|
metadata:
|
|
5
5
|
openclaw:
|
|
6
|
+
installCommand: npx @wiimdy/openfunderse@latest install openfunderse-participant --with-runtime
|
|
6
7
|
requires:
|
|
7
8
|
env:
|
|
8
9
|
- RELAYER_URL
|
|
@@ -24,12 +25,36 @@ The Participant MoltBot is responsible for mining data claims from specified sou
|
|
|
24
25
|
|
|
25
26
|
## Quick Start (ClawHub Users)
|
|
26
27
|
|
|
27
|
-
Install the skill
|
|
28
|
+
1) Install the skill:
|
|
28
29
|
|
|
29
30
|
```bash
|
|
30
31
|
npx clawhub@latest install openfunderse-participant
|
|
31
32
|
```
|
|
32
33
|
|
|
34
|
+
2) Install runtime + generate env scaffold:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx @wiimdy/openfunderse@latest install openfunderse-participant --with-runtime
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
3) Rotate the temporary bootstrap key and write a fresh participant wallet to env:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx @wiimdy/openfunderse@latest bot-init \
|
|
44
|
+
--skill-name participant \
|
|
45
|
+
--yes
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
4) Load env for the current shell:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
set -a; source .env; set +a
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Note:
|
|
55
|
+
- The scaffold includes a temporary public key placeholder by default.
|
|
56
|
+
- Always run `bot-init` before funding or running production actions.
|
|
57
|
+
|
|
33
58
|
## Credential Scope
|
|
34
59
|
|
|
35
60
|
- `PARTICIPANT_PRIVATE_KEY` (or runtime fallback key) is used only for claim-attestation signing.
|
|
@@ -5,6 +5,7 @@ always: false
|
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
8
|
+
installCommand: npx @wiimdy/openfunderse@latest install openfunderse-strategy --with-runtime
|
|
8
9
|
requires:
|
|
9
10
|
env:
|
|
10
11
|
- RELAYER_URL
|
|
@@ -46,41 +47,35 @@ In runtime, use `proposeIntentAndSubmit` to build a canonical proposal first, th
|
|
|
46
47
|
|
|
47
48
|
## Quick Start (ClawHub Users)
|
|
48
49
|
|
|
49
|
-
Install the skill
|
|
50
|
+
1) Install the skill:
|
|
50
51
|
|
|
51
52
|
```bash
|
|
52
53
|
npx clawhub@latest install openfunderse-strategy
|
|
53
54
|
```
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
2) Install runtime + generate env scaffold:
|
|
56
57
|
|
|
57
58
|
```bash
|
|
58
|
-
|
|
59
|
+
npx @wiimdy/openfunderse@latest install openfunderse-strategy --with-runtime
|
|
59
60
|
```
|
|
60
61
|
|
|
61
|
-
|
|
62
|
+
3) Rotate the temporary bootstrap key and write a fresh strategy wallet to env:
|
|
62
63
|
|
|
63
64
|
```bash
|
|
64
|
-
|
|
65
|
+
npx @wiimdy/openfunderse@latest bot-init \
|
|
66
|
+
--skill-name strategy \
|
|
67
|
+
--yes
|
|
65
68
|
```
|
|
66
69
|
|
|
67
|
-
|
|
70
|
+
4) Load env for the current shell:
|
|
68
71
|
|
|
69
72
|
```bash
|
|
70
|
-
|
|
73
|
+
set -a; source .env; set +a
|
|
71
74
|
```
|
|
72
75
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- `
|
|
76
|
-
- `packages/agents/README.md`
|
|
77
|
-
|
|
78
|
-
Runtime sources:
|
|
79
|
-
|
|
80
|
-
- npm package: `https://www.npmjs.com/package/@wiimdy/openfunderse-agents`
|
|
81
|
-
- repository: `https://github.com/wiimdy/openfunderse/tree/main/packages/agents`
|
|
82
|
-
|
|
83
|
-
Do not use `@latest` in production; pin an explicit version and keep lockfile reviewed.
|
|
76
|
+
Note:
|
|
77
|
+
- The scaffold includes a temporary public key placeholder by default.
|
|
78
|
+
- Always run `bot-init` before funding or running production actions.
|
|
84
79
|
|
|
85
80
|
## Credential Scope
|
|
86
81
|
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# ClawBot Core System Prompt
|
|
2
|
-
|
|
3
|
-
You are ClawBot Core.
|
|
4
|
-
|
|
5
|
-
## Role routing
|
|
6
|
-
- If `role=strategy`, perform strategy lifecycle actions.
|
|
7
|
-
- If `role=participant`, perform participant claim lifecycle actions.
|
|
8
|
-
|
|
9
|
-
## Strategy priority
|
|
10
|
-
1. Read relayer state and verify threshold readiness.
|
|
11
|
-
2. Build/validate intent from finalized snapshot only.
|
|
12
|
-
3. Use onchain attest/execute paths only when preconditions pass.
|
|
13
|
-
4. Ack onchain result back to relayer.
|
|
14
|
-
|
|
15
|
-
## Participant priority
|
|
16
|
-
1. Mine deterministic claim payload.
|
|
17
|
-
2. Verify reproducibility before PASS.
|
|
18
|
-
3. Submit canonical claim payload.
|
|
19
|
-
4. Sign/submit attestation with correct EIP-712 domain.
|
|
20
|
-
|
|
21
|
-
## Hard rules
|
|
22
|
-
- No secret leakage.
|
|
23
|
-
- No fabricated data.
|
|
24
|
-
- No bypass of SDK canonical hashing/signing paths.
|
|
25
|
-
- Return structured JSON outputs.
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# Relayer System Prompt
|
|
2
|
-
|
|
3
|
-
You are the relayer orchestration assistant for Openfunderse.
|
|
4
|
-
|
|
5
|
-
## Objective
|
|
6
|
-
- Validate fund/bot authorization boundaries.
|
|
7
|
-
- Route claims, attestations, and intent submissions safely.
|
|
8
|
-
- Surface deterministic errors and retryable states clearly.
|
|
9
|
-
|
|
10
|
-
## Hard rules
|
|
11
|
-
- Enforce bot scope and fund role checks on every write endpoint.
|
|
12
|
-
- Reject malformed payloads and bigint/string mismatches.
|
|
13
|
-
- Never bypass allowlist, threshold, or signature verification steps.
|
|
14
|
-
- Keep API responses structured and machine-consumable.
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: clawbot-core
|
|
3
|
-
description: Unified ClawBot skill for strategy and participant actions over relayer and onchain contracts.
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
metadata:
|
|
6
|
-
openclaw:
|
|
7
|
-
requires:
|
|
8
|
-
env:
|
|
9
|
-
- RELAYER_URL
|
|
10
|
-
- BOT_ID
|
|
11
|
-
- BOT_API_KEY
|
|
12
|
-
- FUND_ID
|
|
13
|
-
- RPC_URL
|
|
14
|
-
- CHAIN_ID
|
|
15
|
-
bins:
|
|
16
|
-
- node
|
|
17
|
-
- npm
|
|
18
|
-
primaryEnv: RELAYER_URL
|
|
19
|
-
skillKey: clawbot-core
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
# ClawBot Core Skill
|
|
23
|
-
|
|
24
|
-
Unified runtime entrypoint:
|
|
25
|
-
- `npm run clawbot:run -w @claw/agents -- --role <strategy|participant> --action <action> ...`
|
|
26
|
-
|
|
27
|
-
## Global Input Contract
|
|
28
|
-
```json
|
|
29
|
-
{
|
|
30
|
-
"role": "strategy | participant",
|
|
31
|
-
"action": "string",
|
|
32
|
-
"params": {
|
|
33
|
-
"fundId": "string",
|
|
34
|
-
"...": "action specific"
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Strategy Actions
|
|
40
|
-
|
|
41
|
-
### `propose_intent`
|
|
42
|
-
CLI mapping: `strategy-propose`
|
|
43
|
-
```json
|
|
44
|
-
{
|
|
45
|
-
"fundId": "string",
|
|
46
|
-
"intentFile": "/path/intent.json",
|
|
47
|
-
"executionRouteFile": "/path/route.json",
|
|
48
|
-
"maxNotional": "optional bigint",
|
|
49
|
-
"intentUri": "optional string"
|
|
50
|
-
}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Intent JSON schema:
|
|
54
|
-
```json
|
|
55
|
-
{
|
|
56
|
-
"intentVersion": "V1",
|
|
57
|
-
"vault": "0x...",
|
|
58
|
-
"action": "BUY | SELL",
|
|
59
|
-
"tokenIn": "0x...",
|
|
60
|
-
"tokenOut": "0x...",
|
|
61
|
-
"amountIn": "bigint string",
|
|
62
|
-
"minAmountOut": "bigint string",
|
|
63
|
-
"deadline": "unix seconds string",
|
|
64
|
-
"maxSlippageBps": "bigint string",
|
|
65
|
-
"snapshotHash": "0x<32bytes>"
|
|
66
|
-
}
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Execution route JSON schema:
|
|
70
|
-
```json
|
|
71
|
-
{
|
|
72
|
-
"tokenIn": "0x...",
|
|
73
|
-
"tokenOut": "0x...",
|
|
74
|
-
"quoteAmountOut": "bigint string",
|
|
75
|
-
"minAmountOut": "bigint string",
|
|
76
|
-
"adapter": "0x...",
|
|
77
|
-
"adapterData": "0x..."
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### `dry_run_intent_execution`
|
|
82
|
-
CLI mapping: `strategy-dry-run-intent`
|
|
83
|
-
```json
|
|
84
|
-
{
|
|
85
|
-
"intentHash": "0x<32bytes>",
|
|
86
|
-
"intentFile": "/path/intent.json",
|
|
87
|
-
"executionRouteFile": "/path/route.json",
|
|
88
|
-
"coreAddress": "optional 0x..., defaults CLAW_CORE_ADDRESS"
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
Output includes:
|
|
92
|
-
- `pass` boolean
|
|
93
|
-
- full `dryRun` struct from `ClawCore.dryRunIntentExecution`
|
|
94
|
-
|
|
95
|
-
### `attest_intent_onchain`
|
|
96
|
-
CLI mapping: `strategy-attest-onchain`
|
|
97
|
-
Required params:
|
|
98
|
-
```json
|
|
99
|
-
{ "fundId": "string", "intentHash": "0x<32bytes>" }
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### `execute_intent_onchain`
|
|
103
|
-
CLI mapping: `strategy-execute-ready`
|
|
104
|
-
Required params:
|
|
105
|
-
```json
|
|
106
|
-
{ "fundId": "string" }
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## Participant Actions
|
|
110
|
-
|
|
111
|
-
### `mine_claim`
|
|
112
|
-
CLI mapping: `participant-mine`
|
|
113
|
-
```json
|
|
114
|
-
{
|
|
115
|
-
"fundId": "string",
|
|
116
|
-
"epochId": 1,
|
|
117
|
-
"sourceRef": "https://...",
|
|
118
|
-
"tokenAddress": "0x..."
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### `verify_claim`
|
|
123
|
-
CLI mapping: `participant-verify`
|
|
124
|
-
```json
|
|
125
|
-
{
|
|
126
|
-
"claimFile": "/path/claim.json",
|
|
127
|
-
"reproducible": false,
|
|
128
|
-
"maxDataAgeSeconds": 300
|
|
129
|
-
}
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### `submit_claim`
|
|
133
|
-
CLI mapping: `participant-submit`
|
|
134
|
-
```json
|
|
135
|
-
{
|
|
136
|
-
"claimFile": "/path/claim.json",
|
|
137
|
-
"submit": true
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### `attest_claim`
|
|
142
|
-
CLI mapping: `participant-attest`
|
|
143
|
-
```json
|
|
144
|
-
{
|
|
145
|
-
"fundId": "string",
|
|
146
|
-
"epochId": 1,
|
|
147
|
-
"claimHash": "0x<32bytes>",
|
|
148
|
-
"submit": true
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Safety Rules
|
|
153
|
-
1. Fail closed when relayer auth/scope/role checks fail.
|
|
154
|
-
2. Never bypass SDK canonical hashing and EIP-712 signing.
|
|
155
|
-
3. Use `dry_run_intent_execution` before execute in production flows.
|
|
156
|
-
4. Keep role separation in API auth even if crawler/verifier share one wallet.
|
|
157
|
-
5. For participant submit/attest, require explicit submit gating (`--submit` + `PARTICIPANT_AUTO_SUBMIT=true`).
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# Relayer Skill
|
|
2
|
-
|
|
3
|
-
Purpose:
|
|
4
|
-
- Define relayer-support MoltBot behavior for submission orchestration.
|
|
5
|
-
|
|
6
|
-
Responsibilities:
|
|
7
|
-
- Validate bot scope and fund-role authorization for every write call.
|
|
8
|
-
- Orchestrate claim/intent submission pipelines with deterministic retry policy.
|
|
9
|
-
- Enforce nonce/expiry constraints and surface retryable vs terminal errors.
|
|
10
|
-
- Emit operator-friendly status with request IDs and subject hashes.
|