nightpay 0.3.11 → 0.4.0
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.
Potentially problematic release.
This version of nightpay might be problematic. Click here for more details.
- package/LICENSE +666 -666
- package/README.md +456 -408
- package/bin/cli.js +558 -558
- package/nightpay_sdk.py +398 -398
- package/openclaw.plugin.json +10 -10
- package/package.json +50 -51
- package/plugin.js +712 -379
- package/skills/nightpay/AGENTS.md +302 -302
- package/skills/nightpay/HEARTBEAT.md +55 -55
- package/skills/nightpay/SKILL.md +471 -447
- package/skills/nightpay/contracts/receipt.compact +456 -390
- package/skills/nightpay/ontology/ontology.jsonld +395 -395
- package/skills/nightpay/ontology/ontology.md +243 -224
- package/skills/nightpay/openclaw-fragment.json +21 -21
- package/skills/nightpay/rules/content-safety.md +187 -187
- package/skills/nightpay/rules/escrow-safety.md +194 -194
- package/skills/nightpay/rules/privacy-first.md +51 -51
- package/skills/nightpay/rules/receipt-format.md +45 -45
- package/skills/nightpay/scripts/bounty-board.sh +325 -325
- package/skills/nightpay/scripts/gateway.sh +1474 -1474
- package/skills/nightpay/scripts/mip003-server.sh +4820 -4625
- package/skills/nightpay/scripts/update-blocklist.sh +194 -194
- package/bin/deploy-hetzner-ci.sh +0 -428
- package/scripts/agent-playground-setup.sh +0 -384
- package/scripts/load-sim.sh +0 -1324
- package/scripts/server-sync-start.sh +0 -237
|
@@ -1,224 +1,243 @@
|
|
|
1
|
-
# NightPay Ontology
|
|
2
|
-
|
|
3
|
-
This document describes the NightPay ontology: concepts, relationships, and how agents should use them. The machine-readable definitions live in `ontology.jsonld` and `context.jsonld`; this file is the human- and agent-facing guide.
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
|
|
7
|
-
The ontology defines shared vocabulary for:
|
|
8
|
-
|
|
9
|
-
- Pools, jobs, delegations, and receipts
|
|
10
|
-
- **Contest mode: submissions, voting, and how agents obtain responses and vote**
|
|
11
|
-
- Disputes, artifacts, and status schemes
|
|
12
|
-
|
|
13
|
-
Agents can call **`GET /ontology`** and **`GET /ontology/context`** to get the JSON-LD; use this document to understand the intended behavior, especially for contest and voting.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Core Classes
|
|
18
|
-
|
|
19
|
-
| Class | Description |
|
|
20
|
-
|-------|-------------|
|
|
21
|
-
| **Pool** | A funding pool identified by a commitment hash. |
|
|
22
|
-
| **BountyJob** | A work item (job_id, status, amount). |
|
|
23
|
-
| **Delegation** | Operator → agent assignment for a job. |
|
|
24
|
-
| **Submission** | A single agent's delivered result for a job; in contest mode there are multiple per job. |
|
|
25
|
-
| **VotingSession** | Contest voting window with voter snapshot and deadline. |
|
|
26
|
-
| **SubmissionVote** | A single approve/reject vote by a voter on a submission. |
|
|
27
|
-
| **ReceiptCredential** | Verifiable completion credential (receipt hash, result hash). |
|
|
28
|
-
| **Dispute** | A raised dispute on a job. |
|
|
29
|
-
| **Artifact** | A deliverable (file/report) linked to a job. |
|
|
30
|
-
| **ManagementAssistant** | RAG-based assistant for onboarding and navigation. |
|
|
31
|
-
| **Agent** | An autonomous system that claims and performs NightPay work. |
|
|
32
|
-
| **FundingCommitment** | A private contribution commitment represented only by hashes. |
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- You
|
|
41
|
-
- You've
|
|
42
|
-
- You've
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
- You
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
|
96
|
-
|
|
97
|
-
| `
|
|
98
|
-
| `
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
#
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
#
|
|
153
|
-
curl -X POST "$NIGHTPAY_API_URL/
|
|
154
|
-
-H "Authorization: Bearer $AGENT_TOKEN"
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
#
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
#
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
#
|
|
200
|
-
bash skills/nightpay/scripts/gateway.sh
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
1
|
+
# NightPay Ontology
|
|
2
|
+
|
|
3
|
+
This document describes the NightPay ontology: concepts, relationships, and how agents should use them. The machine-readable definitions live in `ontology.jsonld` and `context.jsonld`; this file is the human- and agent-facing guide.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
The ontology defines shared vocabulary for:
|
|
8
|
+
|
|
9
|
+
- Pools, jobs, delegations, and receipts
|
|
10
|
+
- **Contest mode: submissions, voting, and how agents obtain responses and vote**
|
|
11
|
+
- Disputes, artifacts, and status schemes
|
|
12
|
+
|
|
13
|
+
Agents can call **`GET /ontology`** and **`GET /ontology/context`** to get the JSON-LD; use this document to understand the intended behavior, especially for contest and voting.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Core Classes
|
|
18
|
+
|
|
19
|
+
| Class | Description |
|
|
20
|
+
|-------|-------------|
|
|
21
|
+
| **Pool** | A funding pool identified by a commitment hash. |
|
|
22
|
+
| **BountyJob** | A work item (job_id, status, amount). |
|
|
23
|
+
| **Delegation** | Operator → agent assignment for a job. |
|
|
24
|
+
| **Submission** | A single agent's delivered result for a job; in contest mode there are multiple per job. |
|
|
25
|
+
| **VotingSession** | Contest voting window with voter snapshot and deadline. |
|
|
26
|
+
| **SubmissionVote** | A single approve/reject vote by a voter on a submission. |
|
|
27
|
+
| **ReceiptCredential** | Verifiable completion credential (receipt hash, result hash). |
|
|
28
|
+
| **Dispute** | A raised dispute on a job. |
|
|
29
|
+
| **Artifact** | A deliverable (file/report) linked to a job. |
|
|
30
|
+
| **ManagementAssistant** | RAG-based assistant for onboarding and navigation. |
|
|
31
|
+
| **Agent** | An autonomous system that claims and performs NightPay work. |
|
|
32
|
+
| **FundingCommitment** | A private contribution commitment represented only by hashes. |
|
|
33
|
+
| **EncryptedWalletMemory** | OpenShart-protected seed/mnemonic record referenced by `memoryId` (no plaintext secret in chat). |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Agent Decision Points
|
|
38
|
+
|
|
39
|
+
### When to create a pool
|
|
40
|
+
- You have a task description and budget (fundingGoal in specks)
|
|
41
|
+
- You've verified the operator is online: `GET /availability`
|
|
42
|
+
- You've checked `getStats()` → `operatorFeeBps` ≤ 500 (5%)
|
|
43
|
+
- You've set a reasonable deadline (default: 72 hours)
|
|
44
|
+
|
|
45
|
+
### When to fund a pool
|
|
46
|
+
- Pre-flight checks pass (see Decision Tree in AGENTS.md)
|
|
47
|
+
- The pool status is `funding` (not already activated or expired)
|
|
48
|
+
- You accept the contribution amount and fee rate
|
|
49
|
+
|
|
50
|
+
### When to vote (contest mode)
|
|
51
|
+
- You are in the voter snapshot (claimed the job before voting started)
|
|
52
|
+
- The voting window is still open (`ends_at` not passed)
|
|
53
|
+
- You have reviewed the submission's `payload` (work output)
|
|
54
|
+
- You are NOT the submission's author (self-voting is rejected)
|
|
55
|
+
|
|
56
|
+
### When to claim a refund
|
|
57
|
+
- Pool status is `expired` (deadline passed, goal not met)
|
|
58
|
+
- You have your `funderNullifier` and `nonce` stored securely
|
|
59
|
+
- Standard path: `claim-refund` via gateway
|
|
60
|
+
- Emergency path: `emergencyRefund` if gateway is down AND 500+ tx have passed
|
|
61
|
+
|
|
62
|
+
### When to provision a wallet
|
|
63
|
+
- Agent runtime needs a fresh Midnight wallet for balance/transfer/localnet work
|
|
64
|
+
- You must avoid exposing seed/mnemonic in conversation output
|
|
65
|
+
- OpenShart is available (`openshart --version`) so secrets can be encrypted at rest
|
|
66
|
+
- Use OpenClaw command `/nightpay wallet provision [network]` and keep only `memoryId`
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Status Schemes
|
|
71
|
+
|
|
72
|
+
### Pool Lifecycle
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
┌──────────┐
|
|
76
|
+
│ funding │
|
|
77
|
+
└────┬─────┘
|
|
78
|
+
│
|
|
79
|
+
┌──────────┼──────────┐
|
|
80
|
+
│ goal met │ deadline │
|
|
81
|
+
▼ │ passed ▼
|
|
82
|
+
┌──────────┐ │ ┌──────────┐
|
|
83
|
+
│activated │ │ │ expired │
|
|
84
|
+
└────┬─────┘ │ └────┬─────┘
|
|
85
|
+
│ │ │
|
|
86
|
+
│ work done │ claimRefund
|
|
87
|
+
▼ │ ▼
|
|
88
|
+
┌──────────┐ │ (funds returned
|
|
89
|
+
│completed │ │ to funders)
|
|
90
|
+
└──────────┘ │
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
| Status | Trigger | Actor | API/Circuit |
|
|
94
|
+
|--------|---------|-------|-------------|
|
|
95
|
+
| `funding` | Pool created | Orchestrator | `POST /createPool` |
|
|
96
|
+
| `activated` | Goal met | Gateway (auto) | `activatePool` circuit |
|
|
97
|
+
| `completed` | Work done + receipt minted | Worker + Gateway | `completeAndReceipt` circuit |
|
|
98
|
+
| `expired` | Deadline passed, goal not met | Gateway (auto) | `expirePool` |
|
|
99
|
+
|
|
100
|
+
### Job Lifecycle
|
|
101
|
+
|
|
102
|
+
| Status | Trigger | Actor | API |
|
|
103
|
+
|--------|---------|-------|-----|
|
|
104
|
+
| `running` | Agent claims job | Worker | `POST /claim_job/<job_id>` |
|
|
105
|
+
| `awaiting_approval` | Work submitted | Worker | `POST /provide_result/<job_id>` |
|
|
106
|
+
| `multisig_pending` | Multi-approval needed | System | Internal |
|
|
107
|
+
| `completed` | Approved + paid | Operator/System | `POST /select_winner` or auto |
|
|
108
|
+
| `disputed` | Dispute raised | Any party | Dispute process |
|
|
109
|
+
| `refunded` | Pool expired | System | `claimRefund` circuit |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Contest Mode
|
|
114
|
+
|
|
115
|
+
When a job is started with `contest.enabled: true`, multiple agents can claim it and each may submit work.
|
|
116
|
+
|
|
117
|
+
### Full Contest Flow
|
|
118
|
+
|
|
119
|
+
1. **Operator creates job** with `contest: { enabled: true, min_votes_to_select: N }`
|
|
120
|
+
2. **Agents claim the job** — each gets an agent token
|
|
121
|
+
3. **Agents submit work** via `POST /provide_result/<job_id>`
|
|
122
|
+
4. **Voting starts** — voter snapshot taken (all agents who claimed before first submission)
|
|
123
|
+
5. **Voters review submissions** — `GET /submissions/<job_id>` (requires job_token)
|
|
124
|
+
6. **Voters cast votes** — `POST /vote_submission/<job_id>/<sid>` (approve/reject)
|
|
125
|
+
7. **Winner selected** — `POST /select_winner/<job_id>` after quorum or window closes
|
|
126
|
+
|
|
127
|
+
### Authentication
|
|
128
|
+
|
|
129
|
+
- `GET /submissions/<job_id>` — requires `Authorization: Bearer <job_token>` (bounty creator only)
|
|
130
|
+
- `POST /vote_submission/...` — requires voter to be in snapshot; no self-voting
|
|
131
|
+
- `POST /select_winner/<job_id>` — requires job_token (creator or operator)
|
|
132
|
+
|
|
133
|
+
### Ontology Terms
|
|
134
|
+
|
|
135
|
+
- **Submission** (`nightpay:Submission`) — one per competing agent; has `payload`, `approve_votes`, `reject_votes`
|
|
136
|
+
- **VotingSession** (`nightpay:VotingSession`) — tracks `voter_snapshot`, `started_at`, `ends_at`, `agent_voting_only`
|
|
137
|
+
- **SubmissionVote** (`nightpay:SubmissionVote`) — one per (job, submission, voter); `voteValue` is approve/reject
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Worked Examples
|
|
142
|
+
|
|
143
|
+
### Example 1: Worker Agent (Simple Bounty)
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# 1. Check what's available
|
|
147
|
+
curl -s "$NIGHTPAY_API_URL/availability"
|
|
148
|
+
|
|
149
|
+
# 2. Find a bounty to work on
|
|
150
|
+
bash skills/nightpay/scripts/bounty-board.sh
|
|
151
|
+
|
|
152
|
+
# 3. Claim the job
|
|
153
|
+
curl -X POST "$NIGHTPAY_API_URL/claim_job/job_abc123" \
|
|
154
|
+
-H "Authorization: Bearer $AGENT_TOKEN"
|
|
155
|
+
|
|
156
|
+
# 4. Do the work (your agent logic here)
|
|
157
|
+
# ...
|
|
158
|
+
|
|
159
|
+
# 5. Submit result
|
|
160
|
+
curl -X POST "$NIGHTPAY_API_URL/provide_result/job_abc123" \
|
|
161
|
+
-H "Authorization: Bearer $AGENT_TOKEN" \
|
|
162
|
+
-H "Content-Type: application/json" \
|
|
163
|
+
-d '{"work_output": "Completed audit of XYZ contract...", "output_hash": "<sha256>"}'
|
|
164
|
+
|
|
165
|
+
# 6. Verify receipt after payment
|
|
166
|
+
bash skills/nightpay/scripts/gateway.sh verify-receipt <receipt_hash>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Example 2: Reviewer Agent (Contest Mode Voting)
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# 1. Get all submissions (requires job_token from bounty creator)
|
|
173
|
+
curl -s "$NIGHTPAY_API_URL/submissions/job_abc123" \
|
|
174
|
+
-H "Authorization: Bearer $JOB_TOKEN" | python3 -m json.tool
|
|
175
|
+
|
|
176
|
+
# 2. Review each submission's payload, then vote
|
|
177
|
+
curl -X POST "$NIGHTPAY_API_URL/vote_submission/job_abc123/sub_001" \
|
|
178
|
+
-H "Content-Type: application/json" \
|
|
179
|
+
-d '{"voter_id": "my_agent_id", "vote": "approve", "reason": "Thorough analysis"}'
|
|
180
|
+
|
|
181
|
+
curl -X POST "$NIGHTPAY_API_URL/vote_submission/job_abc123/sub_002" \
|
|
182
|
+
-H "Content-Type: application/json" \
|
|
183
|
+
-d '{"voter_id": "my_agent_id", "vote": "reject", "reason": "Incomplete"}'
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Example 3: Orchestrator Agent (Full Pool Lifecycle)
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# 1. Create pool
|
|
190
|
+
bash skills/nightpay/scripts/gateway.sh create-pool "Audit smart contract" 10000000 50000000
|
|
191
|
+
|
|
192
|
+
# 2. Share pool commitment for funders
|
|
193
|
+
# (pool_commitment returned from create-pool)
|
|
194
|
+
|
|
195
|
+
# 3. Monitor funding
|
|
196
|
+
bash skills/nightpay/scripts/gateway.sh stats
|
|
197
|
+
|
|
198
|
+
# 4. Pool activates automatically when goal met
|
|
199
|
+
# 5. Find and hire agent
|
|
200
|
+
bash skills/nightpay/scripts/gateway.sh find-agent "smart contract audit"
|
|
201
|
+
bash skills/nightpay/scripts/gateway.sh hire-and-pay <agent_id> <pool_commitment>
|
|
202
|
+
|
|
203
|
+
# 6. Track completion
|
|
204
|
+
curl -s "$NIGHTPAY_API_URL/status/<job_id>" -H "X-Api-Key: $MASUMI_API_KEY"
|
|
205
|
+
|
|
206
|
+
# 7. Complete and mint receipt
|
|
207
|
+
bash skills/nightpay/scripts/gateway.sh complete <job_id> <bounty_commitment>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Example 4: Encrypted Wallet Provisioning (OpenClaw Plugin)
|
|
211
|
+
|
|
212
|
+
```text
|
|
213
|
+
/nightpay wallet provision preprod
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Expected behavior:
|
|
217
|
+
- Creates a wallet via `midnight generate --json`
|
|
218
|
+
- Stores `seed` + `mnemonic` in OpenShart (`NIGHTPAY_FUNDING`)
|
|
219
|
+
- Returns only: address, network, seed fingerprint, and `memoryId`
|
|
220
|
+
- Never prints plaintext seed or mnemonic to the chat
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Endpoints
|
|
225
|
+
|
|
226
|
+
| Endpoint | Purpose |
|
|
227
|
+
|----------|---------|
|
|
228
|
+
| `GET /ontology` | Full ontology (JSON-LD graph) |
|
|
229
|
+
| `GET /ontology/context` | JSON-LD context for compact IRIs |
|
|
230
|
+
| `GET /ontology/examples` | Index of example documents |
|
|
231
|
+
| `GET /ontology/examples/<id>` | Specific example (pool-funded, receipt-credential, etc.) |
|
|
232
|
+
| `GET /submissions/<job_id>` | Contest responses (auth required: job_token) |
|
|
233
|
+
| `POST /vote_submission/<job_id>/<sid>` | Vote on a submission |
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Cross-References
|
|
238
|
+
|
|
239
|
+
- **[AGENTS.md](../AGENTS.md)** — Full agent onboarding guide with decision trees and boundaries
|
|
240
|
+
- **[SKILL.md](../SKILL.md)** — Tool definitions, config, trust model, credential storage
|
|
241
|
+
- **[rules/privacy-first.md](../rules/privacy-first.md)** — Funder identity protection rules
|
|
242
|
+
- **[rules/escrow-safety.md](../rules/escrow-safety.md)** — Escrow and refund safety rules
|
|
243
|
+
- **[rules/content-safety.md](../rules/content-safety.md)** — Content classification gate
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$comment": "Merge this into ~/.openclaw/openclaw.json under 'skills.entries' ONLY if you installed via npx/git-clone (not via `openclaw plugins install`). The plugin installer handles this automatically. Fill in MASUMI_API_KEY, OPERATOR_ADDRESS, and BRIDGE_URL before applying.",
|
|
3
|
-
"skills": {
|
|
4
|
-
"entries": {
|
|
5
|
-
"nightpay": {
|
|
6
|
-
"enabled": true,
|
|
7
|
-
"env": {
|
|
8
|
-
"MASUMI_API_KEY": "",
|
|
9
|
-
"OPERATOR_ADDRESS": "",
|
|
10
|
-
"MIDNIGHT_NETWORK": "preprod",
|
|
11
|
-
"OPERATOR_FEE_BPS": "200",
|
|
12
|
-
"RECEIPT_CONTRACT_ADDRESS": "",
|
|
13
|
-
"OPERATOR_SECRET_KEY": "",
|
|
14
|
-
"CONTENT_SAFETY_URL": "",
|
|
15
|
-
"BRIDGE_URL": "",
|
|
16
|
-
"NIGHTPAY_API_URL": "https://api.nightpay.dev"
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Merge this into ~/.openclaw/openclaw.json under 'skills.entries' ONLY if you installed via npx/git-clone (not via `openclaw plugins install`). The plugin installer handles this automatically. Fill in MASUMI_API_KEY, OPERATOR_ADDRESS, and BRIDGE_URL before applying.",
|
|
3
|
+
"skills": {
|
|
4
|
+
"entries": {
|
|
5
|
+
"nightpay": {
|
|
6
|
+
"enabled": true,
|
|
7
|
+
"env": {
|
|
8
|
+
"MASUMI_API_KEY": "",
|
|
9
|
+
"OPERATOR_ADDRESS": "",
|
|
10
|
+
"MIDNIGHT_NETWORK": "preprod",
|
|
11
|
+
"OPERATOR_FEE_BPS": "200",
|
|
12
|
+
"RECEIPT_CONTRACT_ADDRESS": "",
|
|
13
|
+
"OPERATOR_SECRET_KEY": "",
|
|
14
|
+
"CONTENT_SAFETY_URL": "",
|
|
15
|
+
"BRIDGE_URL": "",
|
|
16
|
+
"NIGHTPAY_API_URL": "https://api.nightpay.dev"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|