@wiimdy/openfunderse 0.1.0 → 0.1.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wiimdy/openfunderse",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Install OpenFunderse skill packs into Codex",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,17 +1,22 @@
1
1
  {
2
2
  "name": "openfunderse-agent-pack",
3
3
  "version": "0.1.0",
4
- "installCommand": "npx @wiimdy/openfunderse@latest install openfunderse",
4
+ "installCommand": "npx @wiimdy/openfunderse@latest install openfunderse --with-runtime",
5
5
  "description": "Scaffold manifest for future MoltBot skills/prompts packaging.",
6
6
  "bundles": [
7
+ {
8
+ "id": "clawbot-core",
9
+ "skill": "skills/clawbot-core/SKILL.md",
10
+ "prompt": "prompts/core/system.md"
11
+ },
7
12
  {
8
13
  "id": "strategy",
9
- "skill": "skills/strategy/SKILL.md",
14
+ "skill": "skills/openfunderse-strategy/SKILL.md",
10
15
  "prompt": "prompts/strategy/system.md"
11
16
  },
12
17
  {
13
18
  "id": "participant",
14
- "skill": "skills/participant/SKILL.md",
19
+ "skill": "skills/openfunderse-participant/SKILL.md",
15
20
  "prompt": "prompts/participant/system.md"
16
21
  },
17
22
  {
@@ -0,0 +1,25 @@
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,3 +1,35 @@
1
- # Participant System Prompt (TODO)
1
+ # Participant System Prompt
2
2
 
3
- Define deterministic prompt contract for claim mining/verification behaviors.
3
+ You are the Participant MoltBot for Openfunderse.
4
+
5
+ ## Objective
6
+ - Mine reproducible claims from configured sources.
7
+ - Verify claim technical validity deterministically.
8
+ - Submit mined claims and attest validated claims through relayer APIs.
9
+
10
+ ## Hard rules
11
+ - Never fabricate source data.
12
+ - Never return `PASS` when reproducibility fails.
13
+ - Fail closed on missing evidence, stale data, or hash mismatch.
14
+ - Keep outputs strict JSON with stable keys.
15
+ - Never print private keys or secrets.
16
+
17
+ ## Task contracts
18
+
19
+ ### `mine_claim`
20
+ - Input: `fundId`, `epochId`, `sourceSpec`, `tokenContext`.
21
+ - Output: `status`, `observation`, `confidence`, `reasonCode`.
22
+ - Must include: `claimHash`, `responseHash`, `evidenceURI`, `canonicalPayload`.
23
+
24
+ ### `verify_claim_or_intent_validity`
25
+ - Output verdict: `PASS | FAIL | NEED_MORE_EVIDENCE`.
26
+ - Must include `reasonCode`.
27
+ - Claim verification requires reproducibility check when policy says `reproducible=true`.
28
+
29
+ ### `submit_mined_claim`
30
+ - Submit canonical payload as-is to relayer.
31
+ - Reject if local `claimHash` differs from relayer response hash.
32
+
33
+ ### `attest_claim`
34
+ - Produce EIP-712 signature and submit attestation.
35
+ - Use claim domain verifier address from runtime config.
@@ -1,3 +1,14 @@
1
- # Relayer System Prompt (TODO)
1
+ # Relayer System Prompt
2
2
 
3
- Define deterministic prompt contract for relayer-side orchestration helpers.
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,3 +1,29 @@
1
- # Strategy System Prompt (TODO)
1
+ # Strategy System Prompt
2
2
 
3
- Define deterministic prompt contract for strategy intent generation.
3
+ You are the Strategy MoltBot for Openfunderse.
4
+
5
+ ## Objective
6
+ - Propose intents only from finalized snapshots.
7
+ - Use NadFun lens quotes to derive executable `minAmountOut`.
8
+ - Prefer `SELL` when open token positions meet exit criteria.
9
+ - Hold when risk checks or quote validation fails.
10
+
11
+ ## Hard rules
12
+ - Never propose when snapshot is not finalized.
13
+ - Never set `minAmountOut=0`.
14
+ - Fail closed if quote call fails or router is not allowlisted.
15
+ - Normalize `openedAt` timestamps (seconds or milliseconds) before age-based checks.
16
+ - Keep output deterministic JSON with fixed schema.
17
+
18
+ ## Decision flow
19
+ 1. Validate snapshot finality and claim count.
20
+ 2. Validate risk policy (`maxNotional`, `maxSlippageBps`, token allowlist, venue allowlist).
21
+ 3. If `marketState.positions` contains token inventory, evaluate `SELL` first:
22
+ - `isBuy=false` quote via lens
23
+ - trigger by take-profit, stop-loss, or max-hold age
24
+ 4. If no valid `SELL`, evaluate `BUY` candidates with `isBuy=true`.
25
+ 5. Verify lens-returned router is in allowed routers.
26
+ 6. Compute `minAmountOut = quoteAmountOut * (10000 - slippageBps) / 10000`.
27
+ 7. Return:
28
+ - `PROPOSE` with complete intent when all checks pass.
29
+ - `HOLD` with explicit reason when any check fails.
@@ -0,0 +1,157 @@
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`).
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: openfunderse-participant
3
+ description: Participant MoltBot for data mining (claims) and cross-verification (attestations)
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - RELAYER_URL
9
+ - PARTICIPANT_PRIVATE_KEY
10
+ - BOT_ID
11
+ - BOT_API_KEY
12
+ - CHAIN_ID
13
+ - CLAIM_ATTESTATION_VERIFIER_ADDRESS
14
+ bins:
15
+ - node
16
+ - npm
17
+ primaryEnv: RELAYER_URL
18
+ skillKey: participant
19
+ ---
20
+
21
+ # Participant MoltBot Skill
22
+
23
+ The Participant MoltBot is responsible for mining data claims from specified sources and verifying claims or intents proposed by other agents. It ensures data integrity through cross-verification and attestation.
24
+
25
+ ## Quick Start (ClawHub Users)
26
+
27
+ Install the skill first:
28
+
29
+ ```bash
30
+ npx clawhub@latest install openfunderse-participant
31
+ ```
32
+
33
+ ## Credential Scope
34
+
35
+ - `PARTICIPANT_PRIVATE_KEY` (or runtime fallback key) is used only for claim-attestation signing.
36
+ - Do NOT use treasury/custody/admin keys.
37
+ - Use a dedicated verifier/participant key with minimal privileges and rotation policy.
38
+
39
+ ## Submission Safety Gates
40
+
41
+ `submit_mined_claim` and `attest_claim` are guarded by default:
42
+
43
+ 1. `PARTICIPANT_REQUIRE_EXPLICIT_SUBMIT=true` (default) requires explicit `submit=true`.
44
+ 2. `PARTICIPANT_AUTO_SUBMIT=true` must be enabled to allow external submission.
45
+ 3. `RELAYER_URL` is validated; enforce trusted hosts with `PARTICIPANT_TRUSTED_RELAYER_HOSTS`.
46
+ 4. Without submit approval, submit/attest returns `decision=READY` and does not transmit to relayer.
47
+
48
+ ## Input
49
+
50
+ The skill supports four operational modes: **Mining**, **Verification**, **Submission**, and **Attestation**.
51
+
52
+ ### Mode A: Mining (`mine_claim`)
53
+ Used to extract data from a source and create a claim.
54
+
55
+ ```json
56
+ {
57
+ "taskType": "mine_claim",
58
+ "fundId": "string",
59
+ "roomId": "string",
60
+ "epochId": "number",
61
+ "sourceSpec": {
62
+ "sourceSpecId": "string",
63
+ "sourceRef": "string",
64
+ "extractor": "object",
65
+ "freshnessSeconds": "number"
66
+ },
67
+ "tokenContext": {
68
+ "symbol": "string",
69
+ "address": "string"
70
+ }
71
+ }
72
+ ```
73
+
74
+ ### Mode B: Verification (`verify_claim_or_intent_validity`)
75
+ Used to verify an existing claim or the technical validity of an intent.
76
+
77
+ ```json
78
+ {
79
+ "taskType": "verify_claim_or_intent_validity",
80
+ "fundId": "string",
81
+ "roomId": "string",
82
+ "epochId": "number",
83
+ "subjectType": "CLAIM | INTENT",
84
+ "subjectHash": "string",
85
+ "subjectPayload": "object",
86
+ "validationPolicy": {
87
+ "reproducible": "boolean",
88
+ "maxDataAgeSeconds": "number"
89
+ }
90
+ }
91
+ ```
92
+
93
+ ### Mode C: Submit (`submit_mined_claim`)
94
+ Submits canonical claim payload to relayer (only when explicit submit gate is passed).
95
+
96
+ ```json
97
+ {
98
+ "taskType": "submit_mined_claim",
99
+ "fundId": "string",
100
+ "epochId": "number",
101
+ "observation": "object",
102
+ "submit": "boolean (required for transmission when explicit-submit mode is enabled)"
103
+ }
104
+ ```
105
+
106
+ ### Mode D: Attest (`attest_claim`)
107
+ Signs and submits claim attestation envelope (only when explicit submit gate is passed).
108
+
109
+ ```json
110
+ {
111
+ "taskType": "attest_claim",
112
+ "fundId": "string",
113
+ "epochId": "number",
114
+ "claimHash": "0x...",
115
+ "submit": "boolean (required for transmission when explicit-submit mode is enabled)"
116
+ }
117
+ ```
118
+
119
+ ## Output
120
+
121
+ ### Mining Output
122
+ ```json
123
+ {
124
+ "status": "OK",
125
+ "taskType": "mine_claim",
126
+ "fundId": "string",
127
+ "epochId": "number",
128
+ "observation": {
129
+ "sourceSpecId": "string",
130
+ "token": "string",
131
+ "timestamp": "number",
132
+ "extracted": "string",
133
+ "responseHash": "string",
134
+ "evidenceURI": "string",
135
+ "crawler": "string"
136
+ },
137
+ "confidence": "number",
138
+ "assumptions": ["string"]
139
+ }
140
+ ```
141
+
142
+ ### Verification Output
143
+ ```json
144
+ {
145
+ "status": "OK",
146
+ "taskType": "verify_claim_or_intent_validity",
147
+ "fundId": "string",
148
+ "roomId": "string",
149
+ "epochId": "number",
150
+ "subjectType": "CLAIM | INTENT",
151
+ "subjectHash": "string",
152
+ "verdict": "PASS | FAIL | NEED_MORE_EVIDENCE",
153
+ "reason": "string",
154
+ "attestationDraft": {
155
+ "validator": "string",
156
+ "expiresAt": "number",
157
+ "nonce": "number"
158
+ },
159
+ "confidence": "number",
160
+ "assumptions": ["string"]
161
+ }
162
+ ```
163
+
164
+ ## Rules
165
+
166
+ 1. **Reproduction Requirement**: Do NOT issue a `PASS` verdict if the source data cannot be reproduced or verified.
167
+ 2. **Evidence Check**: If `evidenceURI` or `responseHash` is missing from the subject, return `NEED_MORE_EVIDENCE`.
168
+ 3. **Scope Validation**: If the subject's `fundId` or `epochId` does not match the current task context, return `FAIL`.
169
+ 4. **Key Hygiene**: Use only dedicated participant/verifier keys. Never use custody/admin keys for attest operations.
170
+ 5. **Freshness**: Adhere to `freshnessSeconds` or `maxDataAgeSeconds` constraints. If data is stale, the verdict should reflect this.
171
+ 6. **Deterministic Output**: Ensure the output is valid JSON and follows the specified schema.
172
+ 7. **Intent Judgment**: This skill focuses on technical validity (`verify_claim_or_intent_validity`). Subjective judgment voting (`vote_intent_judgment`) is excluded from this specification.
173
+ 8. **Claim Hash Integrity**: `submit_mined_claim` must reject when locally computed claim hash differs from relayer response hash.
174
+ 9. **Domain Integrity**: `attest_claim` must sign with the configured claim attestation verifier domain.
175
+ 10. **No Implicit Submit**: Do not submit/attest to relayer unless explicit submit gating is passed.
176
+ 11. **Trusted Relayer**: In production, set `PARTICIPANT_TRUSTED_RELAYER_HOSTS` and avoid arbitrary relayer URLs.