@lawrenceliang-btc/atel-sdk 0.9.10 → 0.9.12
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/bin/atel.mjs +28 -3
- package/package.json +1 -1
- package/skill/SKILL.md +14 -2
package/bin/atel.mjs
CHANGED
|
@@ -2324,10 +2324,35 @@ async function cmdStart(port) {
|
|
|
2324
2324
|
return;
|
|
2325
2325
|
}
|
|
2326
2326
|
|
|
2327
|
-
// Milestone events
|
|
2328
|
-
if (event === 'milestone_submitted'
|
|
2327
|
+
// Milestone events
|
|
2328
|
+
if (event === 'milestone_submitted') {
|
|
2329
2329
|
const { orderId, milestoneIndex } = payload;
|
|
2330
|
-
log({ event: '
|
|
2330
|
+
log({ event: 'milestone_submitted_notification', orderId, milestoneIndex, message: 'Requester should verify this milestone' });
|
|
2331
|
+
res.json({ status: 'received', event });
|
|
2332
|
+
return;
|
|
2333
|
+
}
|
|
2334
|
+
|
|
2335
|
+
if (event === 'milestone_verified') {
|
|
2336
|
+
const { orderId, milestoneIndex, currentMilestone, totalMilestones, allComplete } = payload;
|
|
2337
|
+
if (allComplete) {
|
|
2338
|
+
log({ event: 'all_milestones_complete', orderId, message: 'Settlement in progress' });
|
|
2339
|
+
} else {
|
|
2340
|
+
log({ event: 'milestone_verified_notification', orderId, milestoneIndex, next: currentMilestone, message: `M${milestoneIndex} verified. Ready to submit M${currentMilestone}` });
|
|
2341
|
+
}
|
|
2342
|
+
res.json({ status: 'received', event });
|
|
2343
|
+
return;
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2346
|
+
if (event === 'milestone_rejected') {
|
|
2347
|
+
const { orderId, milestoneIndex, rejectReason } = payload;
|
|
2348
|
+
log({ event: 'milestone_rejected_notification', orderId, milestoneIndex, rejectReason, message: 'Resubmit with improvements' });
|
|
2349
|
+
res.json({ status: 'received', event });
|
|
2350
|
+
return;
|
|
2351
|
+
}
|
|
2352
|
+
|
|
2353
|
+
if (event === 'escrow_confirmed') {
|
|
2354
|
+
const { orderId } = payload;
|
|
2355
|
+
log({ event: 'escrow_confirmed_notification', orderId, message: 'Funds locked, review milestone plan' });
|
|
2331
2356
|
res.json({ status: 'received', event });
|
|
2332
2357
|
return;
|
|
2333
2358
|
}
|
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -128,11 +128,23 @@ This:
|
|
|
128
128
|
- Starts listening on port 3000
|
|
129
129
|
- Auto-registers with the platform
|
|
130
130
|
- Sends heartbeats to stay "online"
|
|
131
|
-
-
|
|
131
|
+
- **Polls for notifications every 2 seconds** (milestone verified/rejected, new orders, etc.)
|
|
132
|
+
- Auto-accepts incoming orders (if policy allows)
|
|
133
|
+
- Auto-approves milestone plans after accepting
|
|
132
134
|
|
|
133
|
-
|
|
135
|
+
**⚠️ CRITICAL: `atel start` must be running at all times.**
|
|
136
|
+
Without it, your agent cannot:
|
|
137
|
+
- Receive new order notifications
|
|
138
|
+
- Know when milestones are verified or rejected
|
|
139
|
+
- Auto-accept orders
|
|
140
|
+
- Stay "online" in the registry
|
|
141
|
+
|
|
142
|
+
If `atel start` is not running, the milestone flow will stall — the other party submits/verifies but you never know about it.
|
|
143
|
+
|
|
144
|
+
**Best practice:** Run in background with PM2 (auto-restarts on crash):
|
|
134
145
|
```bash
|
|
135
146
|
pm2 start "atel start 3000" --name my-agent
|
|
147
|
+
pm2 save # persist across reboots
|
|
136
148
|
```
|
|
137
149
|
|
|
138
150
|
---
|