@lawrenceliang-btc/atel-sdk 1.1.21 → 1.1.22
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 +44 -0
- package/package.json +1 -1
- package/skill/atel-agent/SKILL.md +12 -0
package/bin/atel.mjs
CHANGED
|
@@ -5614,6 +5614,45 @@ async function signedFetch(method, path, payload = {}) {
|
|
|
5614
5614
|
return data;
|
|
5615
5615
|
}
|
|
5616
5616
|
|
|
5617
|
+
// ─── Auth Command ────────────────────────────────────────────────
|
|
5618
|
+
|
|
5619
|
+
async function cmdAuth(code) {
|
|
5620
|
+
if (!code) {
|
|
5621
|
+
console.error('Usage: atel auth <code>');
|
|
5622
|
+
console.error(' Authorize a Dashboard session using the code displayed on the login page.');
|
|
5623
|
+
process.exit(1);
|
|
5624
|
+
}
|
|
5625
|
+
const id = requireIdentity();
|
|
5626
|
+
const { default: nacl } = await import('tweetnacl');
|
|
5627
|
+
const { serializePayload } = await import('@lawrenceliang-btc/atel-sdk');
|
|
5628
|
+
|
|
5629
|
+
const ts = new Date().toISOString();
|
|
5630
|
+
const payload = { code: code.toUpperCase(), did: id.did, timestamp: ts };
|
|
5631
|
+
const signable = serializePayload({ payload, did: id.did, timestamp: ts });
|
|
5632
|
+
const sig = Buffer.from(nacl.sign.detached(Buffer.from(signable), id.secretKey)).toString('base64');
|
|
5633
|
+
|
|
5634
|
+
try {
|
|
5635
|
+
const resp = await fetch(`${ATEL_PLATFORM}/auth/v1/verify`, {
|
|
5636
|
+
method: 'POST',
|
|
5637
|
+
headers: { 'Content-Type': 'application/json' },
|
|
5638
|
+
body: JSON.stringify({ code: code.toUpperCase(), did: id.did, signature: sig, timestamp: ts }),
|
|
5639
|
+
});
|
|
5640
|
+
const data = await resp.json();
|
|
5641
|
+
if (resp.ok) {
|
|
5642
|
+
console.log('Authorization successful!');
|
|
5643
|
+
console.log(` Agent: ${data.name}`);
|
|
5644
|
+
console.log(` DID: ${data.did}`);
|
|
5645
|
+
console.log(' Dashboard is now connected to your agent.');
|
|
5646
|
+
} else {
|
|
5647
|
+
console.error(`Authorization failed: ${data.error}`);
|
|
5648
|
+
process.exit(1);
|
|
5649
|
+
}
|
|
5650
|
+
} catch (e) {
|
|
5651
|
+
console.error(`Failed to connect: ${e.message}`);
|
|
5652
|
+
process.exit(1);
|
|
5653
|
+
}
|
|
5654
|
+
}
|
|
5655
|
+
|
|
5617
5656
|
// ─── Account Commands ────────────────────────────────────────────
|
|
5618
5657
|
|
|
5619
5658
|
async function cmdBalance() {
|
|
@@ -8058,6 +8097,8 @@ const commands = {
|
|
|
8058
8097
|
console.error(' status [--json]');
|
|
8059
8098
|
process.exit(1);
|
|
8060
8099
|
},
|
|
8100
|
+
// Auth (Dashboard authorization code login)
|
|
8101
|
+
auth: () => cmdAuth(args[0]),
|
|
8061
8102
|
// Send (Rich Media P2P Message)
|
|
8062
8103
|
send: () => {
|
|
8063
8104
|
if (rawArgs.includes('--help') || rawArgs.includes('-h') || args.length === 0) {
|
|
@@ -8255,6 +8296,9 @@ Protocol Commands:
|
|
|
8255
8296
|
audit <did_or_url> <taskId> Deep audit: fetch trace + verify hash chain
|
|
8256
8297
|
rotate Rotate identity key pair (backup + on-chain anchor)
|
|
8257
8298
|
|
|
8299
|
+
Auth Commands:
|
|
8300
|
+
auth <code> Authorize Dashboard login (enter code from login page)
|
|
8301
|
+
|
|
8258
8302
|
Account Commands:
|
|
8259
8303
|
balance Show platform account balance
|
|
8260
8304
|
deposit <amount> [channel] Deposit funds (channel: manual|crypto_solana|crypto_base|crypto_bsc|stripe|alipay)
|
package/package.json
CHANGED
|
@@ -520,6 +520,18 @@ atel notify enable <id> # 恢复通知
|
|
|
520
520
|
atel notify test # 发送测试通知
|
|
521
521
|
```
|
|
522
522
|
|
|
523
|
+
## Dashboard 授权
|
|
524
|
+
|
|
525
|
+
用户可能会发给你一个 6 位授权码(如 `A7K3M9`),要求你连接 Dashboard。收到后直接执行:
|
|
526
|
+
|
|
527
|
+
```bash
|
|
528
|
+
cd ~/atel-workspace && atel auth <授权码>
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
成功后告诉用户"Dashboard 已连接"。
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
523
535
|
## 重要规则
|
|
524
536
|
|
|
525
537
|
1. **所有 atel 命令必须在 ~/atel-workspace 目录执行**
|