@agentunion/fastaun 0.4.12 → 0.5.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.
Files changed (154) hide show
  1. package/CHANGELOG.md +488 -366
  2. package/_packed_docs/CHANGELOG.md +488 -366
  3. package/_packed_docs/INDEX.md +111 -53
  4. package/_packed_docs/KITE_DOCS_GUIDE.md +43 -29
  5. package/_packed_docs/agent.md/SCHEMA.md +2 -0
  6. package/_packed_docs/agent.md/examples/codeagent-claudecode.md +2 -0
  7. package/_packed_docs/agent.md/examples/human-developer.md +2 -0
  8. package/_packed_docs/agent.md/examples/openclaw-lobster.md +2 -0
  9. package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +2 -0
  10. package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +2 -0
  11. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +265 -686
  12. package/_packed_docs/collab-gateway-boundary-test-report.md +164 -0
  13. package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +2 -0
  14. package/_packed_docs/design/AUNClient/346/213/206/345/210/206/351/207/215/346/236/204/346/211/247/350/241/214/346/226/271/346/241/210.md +2 -0
  15. package/_packed_docs/design/E2EE_V2/347/256/200/345/214/226/344/270/2721DH/345/212/240Per-AID_Wrap/346/226/271/346/241/210.md +2 -0
  16. package/_packed_docs/design//350/267/250/350/257/255/350/250/200/345/256/271/345/231/250E2E/346/265/213/350/257/225/346/226/271/346/241/210.md +2 -0
  17. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -0
  18. package/_packed_docs/protocol/00A-/350/256/276/350/256/241/345/216/237/345/210/231-/344/270/272Agent/350/200/214/347/224/237.md +2 -0
  19. package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +2 -0
  20. package/_packed_docs/protocol/02-/350/257/201/344/271/246/344/270/216/344/277/241/344/273/273/344/275/223/347/263/273.md +2 -0
  21. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +2 -0
  22. package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +2 -0
  23. package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +2 -0
  24. package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +2 -0
  25. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +2 -0
  26. package/_packed_docs/protocol/08-AUN-E2EE.md +2 -0
  27. package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +2 -0
  28. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +28 -85
  29. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +49 -0
  30. package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +2 -0
  31. package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +2 -0
  32. package/_packed_docs/protocol/14-/344/272/244/344/272/222/346/234/272/345/210/266-/345/223/215/345/272/224/346/250/241/345/274/217/344/270/216/350/207/252/344/270/273/346/250/241/345/274/217.md +2 -0
  33. package/_packed_docs/protocol/15-/347/246/273/347/272/277/346/216/250/351/200/201/351/200/232/347/237/245/345/215/217/350/256/256.md +2 -0
  34. package/_packed_docs/protocol/README.md +2 -0
  35. package/_packed_docs/protocol/agent.md/SCHEMA.md +2 -0
  36. package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +2 -0
  37. package/_packed_docs/protocol/agent.md/examples/human-developer.md +2 -0
  38. package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +2 -0
  39. package/_packed_docs/protocol/aun-docs-guide.md +2 -0
  40. package/_packed_docs/protocol/index.md +3 -1
  41. package/_packed_docs/protocol//350/215/211/346/241/210-agent.md/347/255/276/345/220/215/345/215/217/350/256/256.md +2 -0
  42. package/_packed_docs/protocol//350/215/211/346/241/210-/346/213/222/347/273/235/344/277/241/345/217/267/345/215/217/350/256/256.md +2 -0
  43. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +2 -0
  44. package/_packed_docs/protocol//351/231/204/345/275/225B-/346/211/251/345/261/225/346/200/247/346/214/207/345/215/227.md +2 -0
  45. package/_packed_docs/protocol//351/231/204/345/275/225C-/347/247/201/351/222/245/347/256/241/347/220/206/344/270/216/350/272/253/344/273/275/346/201/242/345/244/215.md +2 -0
  46. package/_packed_docs/protocol//351/231/204/345/275/225D-Root_CA_/346/262/273/347/220/206/346/234/272/345/210/266.md +2 -0
  47. package/_packed_docs/protocol//351/231/204/345/275/225E-Root_CA_/345/207/206/345/205/245/346/265/201/347/250/213.md +2 -0
  48. package/_packed_docs/protocol//351/231/204/345/275/225F-Issuer_CA_/347/224/263/350/257/267/346/265/201/347/250/213.md +2 -0
  49. package/_packed_docs/protocol//351/231/204/345/275/225G-AID_/345/255/244/345/204/277/351/242/204/351/230/262/344/270/216/346/225/221/346/217/264/346/234/272/345/210/266.md +2 -0
  50. package/_packed_docs/protocol//351/231/204/345/275/225H-Identity/346/234/215/345/212/241/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
  51. package/_packed_docs/protocol//351/231/204/345/275/225I-/350/267/250/345/237/237/346/266/210/346/201/257/350/267/257/347/224/261/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
  52. package/_packed_docs/protocol//351/231/204/345/275/225J-/345/256/242/346/210/267/347/253/257/346/216/245/345/205/245/347/244/272/344/276/213.md +2 -0
  53. package/_packed_docs/protocol//351/231/204/345/275/225K-Agent_Web/345/217/221/347/216/260/345/215/217/350/256/256.md +2 -0
  54. package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
  55. package/_packed_docs/protocol//351/231/204/345/275/225M-JWT/350/256/244/350/257/201/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
  56. package/_packed_docs/protocol//351/231/204/345/275/225N-/345/210/206/345/270/203/345/274/217Trace/345/215/217/350/256/256.md +2 -0
  57. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +2 -0
  58. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +2 -0
  59. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +2 -0
  60. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -0
  61. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +2 -0
  62. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +283 -267
  63. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +4 -1
  64. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -0
  65. package/_packed_docs/sdk/09-collab-rpc-manual.md +550 -0
  66. package/_packed_docs/sdk/09-custody-api-manual.md +2 -0
  67. package/_packed_docs/sdk/09-group-rpc-manual.md +197 -445
  68. package/_packed_docs/sdk/09-message-rpc-manual.md +8 -7
  69. package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -0
  70. package/_packed_docs/sdk/09-payload-reference.md +2 -0
  71. package/_packed_docs/sdk/09-proxy-rpc-manual.md +2 -0
  72. package/_packed_docs/sdk/09-storage-rpc-manual.md +952 -279
  73. package/_packed_docs/sdk/09-stream-rpc-manual.md +2 -0
  74. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +33 -20
  75. package/_packed_docs/sdk/E2EE_V2/346/266/210/346/201/257/351/200/232/344/277/241/346/227/266/345/272/217/345/233/276.md +2 -0
  76. package/_packed_docs/sdk/INDEX.md +46 -29
  77. package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +2 -0
  78. package/_packed_docs/sdk/README.md +17 -15
  79. package/dist/aid-store.d.ts +25 -0
  80. package/dist/aid-store.js +80 -0
  81. package/dist/aid-store.js.map +1 -1
  82. package/dist/auth.d.ts +2 -0
  83. package/dist/auth.js +99 -8
  84. package/dist/auth.js.map +1 -1
  85. package/dist/client/delivery.d.ts +5 -0
  86. package/dist/client/delivery.js +169 -8
  87. package/dist/client/delivery.js.map +1 -1
  88. package/dist/client/rpc-pipeline.js +58 -26
  89. package/dist/client/rpc-pipeline.js.map +1 -1
  90. package/dist/client/v2-e2ee.js +67 -8
  91. package/dist/client/v2-e2ee.js.map +1 -1
  92. package/dist/client.d.ts +29 -0
  93. package/dist/client.js +301 -20
  94. package/dist/client.js.map +1 -1
  95. package/dist/collab/client.d.ts +38 -0
  96. package/dist/collab/client.js +124 -0
  97. package/dist/collab/client.js.map +1 -0
  98. package/dist/collab/errors.d.ts +15 -0
  99. package/dist/collab/errors.js +60 -0
  100. package/dist/collab/errors.js.map +1 -0
  101. package/dist/collab/index.d.ts +3 -0
  102. package/dist/collab/index.js +4 -0
  103. package/dist/collab/index.js.map +1 -0
  104. package/dist/collab/types.d.ts +110 -0
  105. package/dist/collab/types.js +2 -0
  106. package/dist/collab/types.js.map +1 -0
  107. package/dist/crypto.d.ts +2 -0
  108. package/dist/crypto.js +6 -0
  109. package/dist/crypto.js.map +1 -1
  110. package/dist/errors.d.ts +8 -0
  111. package/dist/errors.js +30 -1
  112. package/dist/errors.js.map +1 -1
  113. package/dist/facades.d.ts +89 -0
  114. package/dist/facades.js +133 -0
  115. package/dist/facades.js.map +1 -0
  116. package/dist/group-fs.d.ts +105 -0
  117. package/dist/group-fs.js +467 -0
  118. package/dist/group-fs.js.map +1 -0
  119. package/dist/group-resources.d.ts +31 -0
  120. package/dist/group-resources.js +84 -0
  121. package/dist/group-resources.js.map +1 -0
  122. package/dist/index.d.ts +6 -2
  123. package/dist/index.js +8 -1
  124. package/dist/index.js.map +1 -1
  125. package/dist/register-flow.d.ts +1 -0
  126. package/dist/register-flow.js +3 -0
  127. package/dist/register-flow.js.map +1 -1
  128. package/dist/service-proxy.d.ts +1 -0
  129. package/dist/service-proxy.js +17 -4
  130. package/dist/service-proxy.js.map +1 -1
  131. package/dist/storage/errors.d.ts +27 -0
  132. package/dist/storage/errors.js +65 -0
  133. package/dist/storage/errors.js.map +1 -0
  134. package/dist/storage/index.d.ts +1 -0
  135. package/dist/storage/index.js +2 -0
  136. package/dist/storage/index.js.map +1 -0
  137. package/dist/storage/lowlevel.d.ts +313 -0
  138. package/dist/storage/lowlevel.js +464 -0
  139. package/dist/storage/lowlevel.js.map +1 -0
  140. package/dist/storage/types.d.ts +58 -0
  141. package/dist/storage/types.js +116 -0
  142. package/dist/storage/types.js.map +1 -0
  143. package/dist/storage/vfs.d.ts +147 -0
  144. package/dist/storage/vfs.js +489 -0
  145. package/dist/storage/vfs.js.map +1 -0
  146. package/dist/tools/cross-sdk-agent.js +421 -1
  147. package/dist/tools/cross-sdk-agent.js.map +1 -1
  148. package/dist/transport.d.ts +3 -0
  149. package/dist/transport.js +76 -22
  150. package/dist/transport.js.map +1 -1
  151. package/dist/version.d.ts +1 -1
  152. package/dist/version.js +1 -1
  153. package/dist/version.js.map +1 -1
  154. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../src/storage/vfs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import * as http from 'node:http';
3
+ import * as https from 'node:https';
3
4
  import * as crypto from 'node:crypto';
4
5
  import * as fs from 'node:fs';
5
6
  import { URL } from 'node:url';
@@ -53,6 +54,16 @@ function textOf(value) {
53
54
  function jsonObjectOf(value) {
54
55
  return value && typeof value === 'object' && !Array.isArray(value) ? value : null;
55
56
  }
57
+ function accessTokenFromClient(client) {
58
+ const internals = client;
59
+ const direct = textOf(internals.accessToken ?? internals.access_token).trim();
60
+ if (direct)
61
+ return direct;
62
+ const identityToken = textOf(internals._identity?.access_token).trim();
63
+ if (identityToken)
64
+ return identityToken;
65
+ return textOf(internals._sessionParams?.access_token).trim();
66
+ }
56
67
  function envelopeMetadata(data) {
57
68
  const e2ee = jsonObjectOf(data.e2ee);
58
69
  const protectedHeaders = jsonObjectOf(data.protected_headers) ?? jsonObjectOf(e2ee?.protected_headers);
@@ -295,6 +306,10 @@ class CrossSdkTsAgent {
295
306
  await this.groupCreate(req, res);
296
307
  return;
297
308
  }
309
+ if (req.method === 'POST' && url.pathname === '/group/call') {
310
+ await this.groupCall(req, res);
311
+ return;
312
+ }
298
313
  if (req.method === 'GET' && url.pathname === '/group/ready') {
299
314
  await this.groupReady(url, res);
300
315
  return;
@@ -311,6 +326,18 @@ class CrossSdkTsAgent {
311
326
  await this.groupAck(req, res);
312
327
  return;
313
328
  }
329
+ if (req.method === 'POST' && url.pathname === '/group/fs/call') {
330
+ await this.groupFsCall(req, res);
331
+ return;
332
+ }
333
+ if (req.method === 'POST' && url.pathname === '/collab/call') {
334
+ await this.collabCall(req, res);
335
+ return;
336
+ }
337
+ if (req.method === 'POST' && url.pathname === '/storage/call') {
338
+ await this.storageCall(req, res);
339
+ return;
340
+ }
314
341
  if (req.method === 'GET' && url.pathname === '/inbox') {
315
342
  const traceId = textOf(url.searchParams.get('trace_id') ?? '');
316
343
  const fromAid = textOf(url.searchParams.get('from') ?? '');
@@ -470,12 +497,18 @@ class CrossSdkTsAgent {
470
497
  name,
471
498
  visibility: textOf(body.visibility || 'private'),
472
499
  };
500
+ const groupName = textOf(body.group_name ?? body.groupName ?? '').trim();
501
+ if (groupName)
502
+ params.group_name = groupName;
473
503
  const joinMode = textOf(body.join_mode || '').trim();
474
504
  if (joinMode)
475
505
  params.join_mode = joinMode;
476
506
  try {
477
- const createResult = await this.client.call('group.create', params);
507
+ const createResult = groupName
508
+ ? await this.client.createGroup(params)
509
+ : await this.client.call('group.create', params);
478
510
  const groupId = this.extractGroupId(createResult);
511
+ const groupAid = this.extractGroupAid(createResult);
479
512
  if (!groupId)
480
513
  throw new Error(`group.create did not return group_id: ${JSON.stringify(jsonSafe(createResult))}`);
481
514
  const addResults = [];
@@ -493,6 +526,7 @@ class CrossSdkTsAgent {
493
526
  ok: true,
494
527
  trace_id: traceId,
495
528
  group_id: groupId,
529
+ group_aid: groupAid,
496
530
  create_result: jsonSafe(createResult),
497
531
  add_results: addResults,
498
532
  };
@@ -510,6 +544,324 @@ class CrossSdkTsAgent {
510
544
  sendJson(res, 500, error);
511
545
  }
512
546
  }
547
+ async groupCall(req, res) {
548
+ const body = await readJson(req);
549
+ const traceId = textOf(body.trace_id || crypto.randomUUID().replace(/-/g, ''));
550
+ let method = textOf(body.method).trim();
551
+ const action = textOf(body.action).trim();
552
+ if (!method && action)
553
+ method = action.startsWith('group.') ? action : `group.${action}`;
554
+ const params = jsonObjectOf(body.params) ?? {};
555
+ if (!method) {
556
+ sendJson(res, 400, { ok: false, trace_id: traceId, error_code: 'bad_request', error_message: 'method is required' });
557
+ return;
558
+ }
559
+ try {
560
+ const result = await this.client.call(method, params);
561
+ const response = { ok: true, trace_id: traceId, method, result: jsonSafe(result) };
562
+ this.recordTrace(traceId, { stage: 'group_call', method, result: response });
563
+ sendJson(res, 200, response);
564
+ }
565
+ catch (err) {
566
+ const error = {
567
+ ok: false,
568
+ trace_id: traceId,
569
+ method,
570
+ error_code: err instanceof Error ? err.name : 'Error',
571
+ error_message: err instanceof Error ? err.message : String(err),
572
+ };
573
+ this.recordTrace(traceId, { stage: 'group_call_error', method, error });
574
+ sendJson(res, 500, error);
575
+ }
576
+ }
577
+ async groupFsCall(req, res) {
578
+ const body = await readJson(req);
579
+ const traceId = textOf(body.trace_id || crypto.randomUUID().replace(/-/g, ''));
580
+ const action = textOf(body.action).trim();
581
+ const params = jsonObjectOf(body.params) ?? {};
582
+ try {
583
+ const result = await this.callGroupFsAction(action, params);
584
+ const response = { ok: true, trace_id: traceId, action, result: jsonSafe(result) };
585
+ this.recordTrace(traceId, { stage: 'group_fs_call', action, result: response });
586
+ sendJson(res, 200, response);
587
+ }
588
+ catch (err) {
589
+ const error = {
590
+ ok: false,
591
+ trace_id: traceId,
592
+ action,
593
+ error_code: err instanceof Error ? err.name : 'Error',
594
+ error_message: err instanceof Error ? err.message : String(err),
595
+ };
596
+ this.recordTrace(traceId, { stage: 'group_fs_call_error', action, error });
597
+ sendJson(res, 500, error);
598
+ }
599
+ }
600
+ async collabCall(req, res) {
601
+ const body = await readJson(req);
602
+ const traceId = textOf(body.trace_id || crypto.randomUUID().replace(/-/g, ''));
603
+ const action = textOf(body.action).trim();
604
+ const params = jsonObjectOf(body.params) ?? {};
605
+ try {
606
+ const result = await this.callCollabAction(action, params);
607
+ const response = { ok: true, trace_id: traceId, action, result: jsonSafe(result) };
608
+ this.recordTrace(traceId, { stage: 'collab_call', action, result: response });
609
+ sendJson(res, 200, response);
610
+ }
611
+ catch (err) {
612
+ const error = {
613
+ ok: false,
614
+ trace_id: traceId,
615
+ action,
616
+ error_code: err instanceof Error ? err.name : 'Error',
617
+ error_message: err instanceof Error ? err.message : String(err),
618
+ };
619
+ this.recordTrace(traceId, { stage: 'collab_call_error', action, error });
620
+ sendJson(res, 500, error);
621
+ }
622
+ }
623
+ async storageCall(req, res) {
624
+ const body = await readJson(req);
625
+ const traceId = textOf(body.trace_id || crypto.randomUUID().replace(/-/g, ''));
626
+ const action = textOf(body.action).trim();
627
+ const params = jsonObjectOf(body.params) ?? {};
628
+ try {
629
+ const result = await this.callStorageAction(action, params);
630
+ const response = { ok: true, trace_id: traceId, action, result: jsonSafe(result) };
631
+ this.recordTrace(traceId, { stage: 'storage_call', action, result: response });
632
+ sendJson(res, 200, response);
633
+ }
634
+ catch (err) {
635
+ const error = {
636
+ ok: false,
637
+ trace_id: traceId,
638
+ action,
639
+ error_code: err instanceof Error ? err.name : 'Error',
640
+ error_message: err instanceof Error ? err.message : String(err),
641
+ };
642
+ this.recordTrace(traceId, { stage: 'storage_call_error', action, error });
643
+ sendJson(res, 500, error);
644
+ }
645
+ }
646
+ async callCollabAction(action, params) {
647
+ const collabRoot = textOf(params.collab_root ?? params.collabRoot);
648
+ const doc = textOf(params.doc);
649
+ const source = textOf(params.source);
650
+ switch (action) {
651
+ case 'ls':
652
+ case 'ls-files':
653
+ return await this.client.collab.lsFiles(collabRoot);
654
+ case 'create':
655
+ return await this.client.collab.create(collabRoot, doc, source);
656
+ case 'read':
657
+ return await this.client.collab.show(collabRoot, doc);
658
+ case 'show':
659
+ return await this.client.collab.show(collabRoot, doc, params.rev == null ? undefined : Number(params.rev) || 0);
660
+ case 'submit':
661
+ return await this.client.collab.commit(collabRoot, doc, source, Number(params.onto ?? params.base_version ?? params.baseVersion ?? 0) || 0, textOf(params.message) || '');
662
+ case 'commit':
663
+ return await this.client.collab.commit(collabRoot, doc, source, Number(params.onto ?? params.base_version ?? params.baseVersion ?? 0) || 0, textOf(params.message) || '');
664
+ case 'merge':
665
+ return await this.client.collab.merge(collabRoot, doc, source, Number(params.onto ?? params.base_version ?? params.baseVersion ?? 0) || 0);
666
+ case 'history':
667
+ case 'log':
668
+ return await this.client.collab.log(collabRoot, doc);
669
+ case 'get':
670
+ return await this.client.collab.show(collabRoot, doc, Number(params.version ?? 0) || 0);
671
+ case 'diff':
672
+ return await this.client.collab.diff(collabRoot, doc, Number(params.from ?? 0) || 0, Number(params.to ?? 0) || 0);
673
+ case 'export':
674
+ return await this.client.collab.clone(collabRoot, textOf(params.dest), false);
675
+ case 'adopt':
676
+ return await this.client.collab.clone(textOf(params.src), textOf(params.new_root ?? params.newRoot), true);
677
+ case 'clone':
678
+ return await this.client.collab.clone(textOf(params.src), textOf(params.dest), Boolean(params.reroot));
679
+ case 'prune':
680
+ return await this.client.collab.prune(collabRoot, doc);
681
+ case 'gc':
682
+ return await this.client.collab.gc(collabRoot, params.dry_run == null && params.dryRun == null ? true : Boolean(params.dry_run ?? params.dryRun));
683
+ case 'reflog':
684
+ return await this.client.collab.reflog(collabRoot, doc || undefined, Number(params.limit ?? 100) || 100);
685
+ case 'reset':
686
+ return await this.client.collab.revert(collabRoot, doc, Number(params.version ?? 0) || 0, textOf(params.message) || '');
687
+ case 'revert':
688
+ return await this.client.collab.revert(collabRoot, doc, Number(params.rev ?? params.version ?? 0) || 0, textOf(params.message) || '');
689
+ case 'discover':
690
+ case 'ls-remote':
691
+ return await this.client.collab.lsRemote(textOf(params.group_aid ?? params.groupAid));
692
+ case 'unregister':
693
+ return await this.client.collab.unregister(textOf(params.group_aid ?? params.groupAid), collabRoot);
694
+ case 'snapshot.create':
695
+ case 'tag.create':
696
+ return await this.client.collab.tag.create(collabRoot, {
697
+ message: textOf(params.message),
698
+ major: Boolean(params.major),
699
+ });
700
+ case 'snapshot.list':
701
+ case 'tag.list':
702
+ return await this.client.collab.tag.list(collabRoot);
703
+ case 'snapshot.show':
704
+ case 'tag.show':
705
+ return await this.client.collab.tag.show(collabRoot, textOf(params.version));
706
+ case 'snapshot.diff':
707
+ case 'tag.diff':
708
+ return await this.client.collab.tag.diff(collabRoot, textOf(params.version_a ?? params.versionA), textOf(params.version_b ?? params.versionB));
709
+ case 'snapshot.restore':
710
+ case 'tag.restore':
711
+ return await this.client.collab.tag.restore(collabRoot, textOf(params.version), { message: textOf(params.message) });
712
+ case 'snapshot.rm':
713
+ case 'tag.rm':
714
+ return await this.client.collab.tag.rm(collabRoot, textOf(params.version));
715
+ case 'snapshot.prune':
716
+ case 'tag.prune':
717
+ return await this.client.collab.tag.prune(collabRoot, {
718
+ before: params.before == null ? null : Number(params.before),
719
+ keep_last: params.keep_last == null && params.keepLast == null ? null : Number(params.keep_last ?? params.keepLast),
720
+ });
721
+ default:
722
+ throw new Error(`unsupported collab action: ${action}`);
723
+ }
724
+ }
725
+ async callGroupFsAction(action, params) {
726
+ const groupFs = this.client.group.fs;
727
+ const path = textOf(params.path).trim();
728
+ const options = { ...params };
729
+ delete options.path;
730
+ switch (action) {
731
+ case 'ls':
732
+ return await groupFs.ls(path, options);
733
+ case 'find':
734
+ return await groupFs.find(path, options);
735
+ case 'stat':
736
+ return await groupFs.stat(path, options);
737
+ case 'lstat':
738
+ return await groupFs.lstat(path, options);
739
+ case 'mkdir':
740
+ return await groupFs.mkdir(path, { ...options, parents: Boolean(params.parents) });
741
+ case 'rm':
742
+ return await groupFs.rm(path, {
743
+ ...options,
744
+ recursive: Boolean(params.recursive),
745
+ force: Boolean(params.force),
746
+ });
747
+ case 'cp': {
748
+ let src = textOf(params.src);
749
+ const dst = textOf(params.dst);
750
+ const cpOptions = { ...params };
751
+ delete cpOptions.src;
752
+ delete cpOptions.dst;
753
+ delete cpOptions.src_text;
754
+ if (params.src_text != null) {
755
+ src = this.writeTempText(textOf(params.src_text), '.txt');
756
+ }
757
+ const result = await groupFs.cp(src, dst, cpOptions);
758
+ return this.groupFsCpResponse(result, dst);
759
+ }
760
+ case 'mv':
761
+ {
762
+ const mvOptions = { ...params };
763
+ delete mvOptions.src;
764
+ delete mvOptions.dst;
765
+ return await groupFs.mv(textOf(params.src), textOf(params.dst), mvOptions);
766
+ }
767
+ case 'df':
768
+ return await groupFs.df(path || textOf(params.group_id), options);
769
+ case 'mount':
770
+ return await groupFs.mount(path, options);
771
+ case 'umount':
772
+ return await groupFs.umount(path, options);
773
+ default:
774
+ throw new Error(`unsupported group fs action: ${action}`);
775
+ }
776
+ }
777
+ writeTempText(content, suffix = '') {
778
+ const root = textOf(process.env.AUN_CROSS_SDK_TMP || '/tmp/aun-cross-sdk');
779
+ fs.mkdirSync(root, { recursive: true });
780
+ const filePath = `${root}/${crypto.randomUUID()}${suffix}`;
781
+ fs.writeFileSync(filePath, content, 'utf-8');
782
+ return filePath;
783
+ }
784
+ groupFsCpResponse(result, dst) {
785
+ const response = { raw: jsonSafe(result) };
786
+ const resultObj = jsonObjectOf(result);
787
+ const data = resultObj?.data;
788
+ if (data instanceof ArrayBuffer) {
789
+ const buffer = Buffer.from(new Uint8Array(data));
790
+ response.content = buffer.toString('utf-8');
791
+ response.content_base64 = buffer.toString('base64');
792
+ response.size_bytes = buffer.byteLength;
793
+ }
794
+ else if (data instanceof Uint8Array || ArrayBuffer.isView(data)) {
795
+ const view = data;
796
+ const buffer = Buffer.from(view.buffer, view.byteOffset, view.byteLength);
797
+ response.content = buffer.toString('utf-8');
798
+ response.content_base64 = buffer.toString('base64');
799
+ response.size_bytes = buffer.byteLength;
800
+ }
801
+ const localPath = textOf(resultObj?.localPath ?? resultObj?.local_path ?? dst).trim();
802
+ if (localPath && fs.existsSync(localPath) && fs.statSync(localPath).isFile()) {
803
+ const buffer = fs.readFileSync(localPath);
804
+ response.local_path = localPath;
805
+ response.content = buffer.toString('utf-8');
806
+ response.content_base64 = buffer.toString('base64');
807
+ response.size_bytes = buffer.byteLength;
808
+ }
809
+ return response;
810
+ }
811
+ async callStorageAction(action, params) {
812
+ const storage = this.client.storage;
813
+ const path = textOf(params.path).trim();
814
+ const owner = textOf(params.owner_aid ?? params.ownerAID).trim() || undefined;
815
+ const bucket = textOf(params.bucket).trim() || 'default';
816
+ const token = textOf(params.token).trim() || undefined;
817
+ switch (action) {
818
+ case 'write_bytes':
819
+ return await storage.writeBytes(path, params.content_base64 || params.contentBase64
820
+ ? Buffer.from(textOf(params.content), 'base64')
821
+ : textOf(params.content), {
822
+ owner,
823
+ bucket,
824
+ contentType: textOf(params.content_type ?? params.contentType).trim() || 'text/plain',
825
+ public: Boolean(params.public),
826
+ overwrite: params.overwrite == null ? false : Boolean(params.overwrite),
827
+ });
828
+ case 'read_bytes': {
829
+ const data = await storage.readBytes(path, { owner, bucket, token });
830
+ return {
831
+ content: Buffer.from(data).toString('utf-8'),
832
+ content_base64: Buffer.from(data).toString('base64'),
833
+ size_bytes: data.byteLength,
834
+ };
835
+ }
836
+ case 'create_download_ticket': {
837
+ const objectKey = textOf(params.object_key ?? params.objectKey ?? path).replace(/^\/+/, '');
838
+ return await storage.lowlevel.createDownloadTicket({ owner, bucket, objectKey, token });
839
+ }
840
+ case 'download_text': {
841
+ const url = textOf(params.url ?? params.download_url ?? params.downloadUrl).trim();
842
+ if (!url)
843
+ throw new Error('download_text requires url');
844
+ return { content: await downloadText(url, accessTokenFromClient(this.client)) };
845
+ }
846
+ case 'set_acl':
847
+ return await storage.setAcl(path, {
848
+ owner,
849
+ bucket,
850
+ granteeAid: textOf(params.grantee_aid ?? params.granteeAID).trim(),
851
+ perms: textOf(params.perms).trim(),
852
+ expiresAt: params.expires_at == null && params.expiresAt == null ? undefined : Number(params.expires_at ?? params.expiresAt),
853
+ maxUses: params.max_uses == null && params.maxUses == null ? undefined : Number(params.max_uses ?? params.maxUses),
854
+ });
855
+ case 'remove_acl':
856
+ return await storage.removeAcl(path, {
857
+ owner,
858
+ bucket,
859
+ granteeAid: textOf(params.grantee_aid ?? params.granteeAID).trim(),
860
+ });
861
+ default:
862
+ throw new Error(`unsupported storage action: ${action}`);
863
+ }
864
+ }
513
865
  async groupReady(url, res) {
514
866
  const groupId = textOf(url.searchParams.get('group_id') ?? '').trim();
515
867
  const expected = textOf(url.searchParams.get('members') ?? this.aid)
@@ -664,6 +1016,74 @@ class CrossSdkTsAgent {
664
1016
  }
665
1017
  return '';
666
1018
  }
1019
+ extractGroupAid(result) {
1020
+ if (!result || typeof result !== 'object' || Array.isArray(result))
1021
+ return '';
1022
+ const obj = result;
1023
+ const group = jsonObjectOf(obj.group);
1024
+ return textOf(group?.group_aid ?? obj.group_aid).trim();
1025
+ }
1026
+ aidStore() {
1027
+ return new AIDStore({
1028
+ aunPath: this.aunPath,
1029
+ encryptionSeed: '',
1030
+ slotId: this.slotId,
1031
+ debug: this.debug,
1032
+ });
1033
+ }
1034
+ }
1035
+ function shouldForwardBearerOnRedirect(current, next) {
1036
+ if (current.origin === next.origin)
1037
+ return true;
1038
+ const currentHost = current.hostname.toLowerCase();
1039
+ const nextHost = next.hostname.toLowerCase();
1040
+ if (!nextHost.startsWith('storage.'))
1041
+ return false;
1042
+ const issuer = nextHost.slice('storage.'.length);
1043
+ return Boolean(issuer) && (currentHost === issuer || currentHost.endsWith(`.${issuer}`));
1044
+ }
1045
+ function downloadText(url, bearerToken = '', redirects = 0) {
1046
+ return new Promise((resolve, reject) => {
1047
+ const parsed = new URL(url);
1048
+ const client = parsed.protocol === 'https:' ? https : http;
1049
+ const headers = bearerToken ? { Authorization: `Bearer ${bearerToken}` } : undefined;
1050
+ const options = parsed.protocol === 'https:'
1051
+ ? { rejectUnauthorized: false, headers }
1052
+ : { headers };
1053
+ const req = client.get(parsed, options, (resp) => {
1054
+ const status = resp.statusCode ?? 0;
1055
+ const location = typeof resp.headers.location === 'string' ? resp.headers.location : '';
1056
+ if ([301, 302, 303, 307, 308].includes(status) && location) {
1057
+ resp.resume();
1058
+ if (redirects >= 5) {
1059
+ reject(new Error(`download redirect limit exceeded url=${url}`));
1060
+ return;
1061
+ }
1062
+ const nextUrl = new URL(location, parsed).toString();
1063
+ const nextBearer = bearerToken && shouldForwardBearerOnRedirect(parsed, new URL(nextUrl)) ? bearerToken : '';
1064
+ downloadText(nextUrl, nextBearer, redirects + 1).then(resolve, reject);
1065
+ return;
1066
+ }
1067
+ const chunks = [];
1068
+ resp.on('data', (chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
1069
+ resp.on('end', () => {
1070
+ if (status < 200 || status >= 300) {
1071
+ reject(new Error(`download failed status=${status} url=${url}`));
1072
+ return;
1073
+ }
1074
+ const content = Buffer.concat(chunks).toString('utf-8');
1075
+ if (!content) {
1076
+ reject(new Error(`download returned empty body status=${status} url=${url}`));
1077
+ return;
1078
+ }
1079
+ resolve(content);
1080
+ });
1081
+ });
1082
+ req.setTimeout(20000, () => {
1083
+ req.destroy(new Error('download timeout'));
1084
+ });
1085
+ req.on('error', reject);
1086
+ });
667
1087
  }
668
1088
  async function main() {
669
1089
  const agent = new CrossSdkTsAgent();