@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 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lawrenceliang-btc/atel-sdk",
3
- "version": "1.1.21",
3
+ "version": "1.1.22",
4
4
  "description": "ATEL Protocol SDK - Agent Trust & Exchange Layer",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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 目录执行**