@agentunion/fastaun 0.2.13

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 (69) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +78 -0
  3. package/dist/auth.d.ts +287 -0
  4. package/dist/auth.js +1668 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/client.d.ts +359 -0
  7. package/dist/client.js +3918 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/config.d.ts +43 -0
  10. package/dist/config.js +119 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/crypto.d.ts +41 -0
  13. package/dist/crypto.js +85 -0
  14. package/dist/crypto.js.map +1 -0
  15. package/dist/discovery.d.ts +22 -0
  16. package/dist/discovery.js +110 -0
  17. package/dist/discovery.js.map +1 -0
  18. package/dist/e2ee-group.d.ts +192 -0
  19. package/dist/e2ee-group.js +1134 -0
  20. package/dist/e2ee-group.js.map +1 -0
  21. package/dist/e2ee.d.ts +120 -0
  22. package/dist/e2ee.js +890 -0
  23. package/dist/e2ee.js.map +1 -0
  24. package/dist/errors.d.ts +115 -0
  25. package/dist/errors.js +253 -0
  26. package/dist/errors.js.map +1 -0
  27. package/dist/events.d.ts +39 -0
  28. package/dist/events.js +82 -0
  29. package/dist/events.js.map +1 -0
  30. package/dist/index.d.ts +23 -0
  31. package/dist/index.js +32 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/keystore/aid-db.d.ts +79 -0
  34. package/dist/keystore/aid-db.js +621 -0
  35. package/dist/keystore/aid-db.js.map +1 -0
  36. package/dist/keystore/file.d.ts +82 -0
  37. package/dist/keystore/file.js +395 -0
  38. package/dist/keystore/file.js.map +1 -0
  39. package/dist/keystore/index.d.ts +88 -0
  40. package/dist/keystore/index.js +7 -0
  41. package/dist/keystore/index.js.map +1 -0
  42. package/dist/keystore/sqlite-backup.d.ts +40 -0
  43. package/dist/keystore/sqlite-backup.js +379 -0
  44. package/dist/keystore/sqlite-backup.js.map +1 -0
  45. package/dist/logger.d.ts +6 -0
  46. package/dist/logger.js +53 -0
  47. package/dist/logger.js.map +1 -0
  48. package/dist/namespaces/auth.d.ts +49 -0
  49. package/dist/namespaces/auth.js +248 -0
  50. package/dist/namespaces/auth.js.map +1 -0
  51. package/dist/namespaces/custody.d.ts +47 -0
  52. package/dist/namespaces/custody.js +231 -0
  53. package/dist/namespaces/custody.js.map +1 -0
  54. package/dist/secret-store/file-store.d.ts +25 -0
  55. package/dist/secret-store/file-store.js +124 -0
  56. package/dist/secret-store/file-store.js.map +1 -0
  57. package/dist/secret-store/index.d.ts +28 -0
  58. package/dist/secret-store/index.js +19 -0
  59. package/dist/secret-store/index.js.map +1 -0
  60. package/dist/seq-tracker.d.ts +29 -0
  61. package/dist/seq-tracker.js +221 -0
  62. package/dist/seq-tracker.js.map +1 -0
  63. package/dist/transport.d.ts +60 -0
  64. package/dist/transport.js +355 -0
  65. package/dist/transport.js.map +1 -0
  66. package/dist/types.d.ts +170 -0
  67. package/dist/types.js +12 -0
  68. package/dist/types.js.map +1 -0
  69. package/package.json +42 -0
@@ -0,0 +1,379 @@
1
+ /**
2
+ * SQLite 备份层 + 结构化主存。
3
+ *
4
+ * 语义对齐 Python:
5
+ * - metadata 仍作为兼容备份;
6
+ * - prekeys / group_current / group_old_epochs 作为结构化主存;
7
+ * - 业务层优先读取结构化主存,metadata 仅作为兼容视图和未过期回捞来源。
8
+ */
9
+ import { mkdirSync } from 'node:fs';
10
+ import { createRequire } from 'node:module';
11
+ import { dirname, join } from 'node:path';
12
+ const SCHEMA_VERSION = 2;
13
+ const { DatabaseSync } = createRequire(import.meta.url)('node:sqlite');
14
+ function configureDatabase(db, busyTimeoutMs) {
15
+ db.exec(`PRAGMA busy_timeout = ${busyTimeoutMs}`);
16
+ const row = db.prepare('PRAGMA journal_mode = WAL').get();
17
+ if (String(row?.journal_mode ?? '').toLowerCase() !== 'wal') {
18
+ throw new Error(`SQLite WAL 模式启用失败: journal_mode=${String(row?.journal_mode ?? '')}`);
19
+ }
20
+ db.exec('PRAGMA synchronous = NORMAL');
21
+ }
22
+ function runImmediateTransaction(db, fn) {
23
+ db.exec('BEGIN IMMEDIATE');
24
+ try {
25
+ const result = fn();
26
+ db.exec('COMMIT');
27
+ return result;
28
+ }
29
+ catch (err) {
30
+ try {
31
+ if (db.isTransaction)
32
+ db.exec('ROLLBACK');
33
+ }
34
+ catch {
35
+ /* ignore rollback failure */
36
+ }
37
+ throw err;
38
+ }
39
+ }
40
+ function toNumber(value) {
41
+ if (typeof value === 'number' && Number.isFinite(value))
42
+ return Math.trunc(value);
43
+ return null;
44
+ }
45
+ function defaultNumber(...values) {
46
+ for (const value of values) {
47
+ const num = toNumber(value);
48
+ if (num !== null)
49
+ return num;
50
+ }
51
+ return 0;
52
+ }
53
+ export class SQLiteBackup {
54
+ _db = null;
55
+ _available = false;
56
+ constructor(dbPath) {
57
+ if (!dbPath) {
58
+ const dir = join(process.cwd(), '.aun_backup');
59
+ try {
60
+ mkdirSync(dir, { recursive: true });
61
+ }
62
+ catch { /* ignore */ }
63
+ dbPath = join(dir, 'aun_backup.db');
64
+ }
65
+ else {
66
+ try {
67
+ mkdirSync(dirname(dbPath), { recursive: true });
68
+ }
69
+ catch { /* ignore */ }
70
+ }
71
+ try {
72
+ this._db = new DatabaseSync(dbPath, { timeout: 3000, readBigInts: false });
73
+ configureDatabase(this._db, 3000);
74
+ this._initTables();
75
+ this._available = true;
76
+ }
77
+ catch (err) {
78
+ console.warn(`SQLite 备份初始化失败,降级为无备份模式: ${err}`);
79
+ }
80
+ }
81
+ get available() {
82
+ return this._available;
83
+ }
84
+ close() {
85
+ if (this._db?.isOpen)
86
+ this._db.close();
87
+ }
88
+ backupSeed(seed) {
89
+ this._exec('INSERT OR REPLACE INTO seed_backup (id, seed, updated_at) VALUES (1, ?, ?)', seed, Date.now());
90
+ }
91
+ restoreSeed() {
92
+ const row = this._queryOne('SELECT seed FROM seed_backup WHERE id = 1');
93
+ return row ? Buffer.from(row.seed) : null;
94
+ }
95
+ backupDeviceId(deviceId) {
96
+ this._exec('INSERT OR REPLACE INTO device_id_backup (id, device_id, updated_at) VALUES (1, ?, ?)', deviceId, Date.now());
97
+ }
98
+ restoreDeviceId() {
99
+ const row = this._queryOne('SELECT device_id FROM device_id_backup WHERE id = 1');
100
+ return row?.device_id ?? null;
101
+ }
102
+ backupKeyPair(aid, data) {
103
+ this._exec('INSERT OR REPLACE INTO key_pairs (aid, data, updated_at) VALUES (?, ?, ?)', aid, data, Date.now());
104
+ }
105
+ restoreKeyPair(aid) {
106
+ const row = this._queryOne('SELECT data FROM key_pairs WHERE aid = ?', aid);
107
+ return row?.data ?? null;
108
+ }
109
+ backupCert(aid, certPem) {
110
+ this._exec('INSERT OR REPLACE INTO certs (aid, cert_pem, updated_at) VALUES (?, ?, ?)', aid, certPem, Date.now());
111
+ }
112
+ restoreCert(aid) {
113
+ const row = this._queryOne('SELECT cert_pem FROM certs WHERE aid = ?', aid);
114
+ return row?.cert_pem ?? null;
115
+ }
116
+ backupMetadata(aid, data) {
117
+ this._exec('INSERT OR REPLACE INTO metadata (aid, data, updated_at) VALUES (?, ?, ?)', aid, data, Date.now());
118
+ }
119
+ restoreMetadata(aid) {
120
+ const row = this._queryOne('SELECT data FROM metadata WHERE aid = ?', aid);
121
+ return row?.data ?? null;
122
+ }
123
+ loadPrekeys(aid) {
124
+ const rows = this._queryAll(`SELECT prekey_id, data
125
+ FROM prekeys
126
+ WHERE aid = ?
127
+ ORDER BY created_at ASC, prekey_id ASC`, aid);
128
+ const result = {};
129
+ for (const row of rows) {
130
+ try {
131
+ const data = JSON.parse(row.data);
132
+ if (data && typeof data === 'object')
133
+ result[row.prekey_id] = data;
134
+ }
135
+ catch { /* ignore */ }
136
+ }
137
+ return result;
138
+ }
139
+ replacePrekeys(aid, prekeys) {
140
+ if (!this._db)
141
+ return;
142
+ this._runTransaction(() => {
143
+ const stmt = this._db.prepare(`
144
+ INSERT OR REPLACE INTO prekeys
145
+ (aid, prekey_id, data, created_at, updated_at, expires_at, deleted_at)
146
+ VALUES (?, ?, ?, ?, ?, ?, ?)
147
+ `);
148
+ for (const [prekeyId, data] of Object.entries(prekeys)) {
149
+ stmt.run(aid, prekeyId, JSON.stringify(data), toNumber(data.created_at), defaultNumber(data.updated_at, data.created_at, Date.now()), toNumber(data.expires_at), toNumber(data.deleted_at));
150
+ }
151
+ }, 'replace_prekeys');
152
+ }
153
+ cleanupPrekeysBefore(aid, cutoffMs, keepLatest = 7) {
154
+ const rows = this._queryAll(`SELECT prekey_id, created_at, updated_at, expires_at
155
+ FROM prekeys
156
+ WHERE aid = ?`, aid);
157
+ const retainedIds = new Set(rows
158
+ .slice()
159
+ .sort((left, right) => {
160
+ const leftMarker = defaultNumber(left.created_at, left.updated_at, left.expires_at, 0);
161
+ const rightMarker = defaultNumber(right.created_at, right.updated_at, right.expires_at, 0);
162
+ if (rightMarker !== leftMarker)
163
+ return rightMarker - leftMarker;
164
+ return right.prekey_id.localeCompare(left.prekey_id);
165
+ })
166
+ .slice(0, keepLatest)
167
+ .map(row => row.prekey_id));
168
+ const prekeyIds = rows
169
+ .filter((row) => {
170
+ const marker = defaultNumber(row.created_at, row.updated_at, row.expires_at, 0);
171
+ return marker < cutoffMs && !retainedIds.has(row.prekey_id);
172
+ })
173
+ .map(row => row.prekey_id);
174
+ if (prekeyIds.length === 0 || !this._db)
175
+ return prekeyIds;
176
+ this._runTransaction(() => {
177
+ const stmt = this._db.prepare('DELETE FROM prekeys WHERE aid = ? AND prekey_id = ?');
178
+ for (const prekeyId of prekeyIds)
179
+ stmt.run(aid, prekeyId);
180
+ }, 'cleanup_prekeys');
181
+ return prekeyIds;
182
+ }
183
+ loadGroupEntries(aid) {
184
+ const result = {};
185
+ const currentRows = this._queryAll(`SELECT group_id, data
186
+ FROM group_current
187
+ WHERE aid = ?
188
+ ORDER BY group_id ASC`, aid);
189
+ for (const row of currentRows) {
190
+ try {
191
+ const data = JSON.parse(row.data);
192
+ if (data && typeof data === 'object')
193
+ result[row.group_id] = data;
194
+ }
195
+ catch { /* ignore */ }
196
+ }
197
+ const oldRows = this._queryAll(`SELECT group_id, data
198
+ FROM group_old_epochs
199
+ WHERE aid = ?
200
+ ORDER BY group_id ASC, epoch ASC`, aid);
201
+ for (const row of oldRows) {
202
+ try {
203
+ const data = JSON.parse(row.data);
204
+ if (!data || typeof data !== 'object')
205
+ continue;
206
+ const entry = result[row.group_id] ?? {};
207
+ const oldEpochs = Array.isArray(entry.old_epochs) ? entry.old_epochs : [];
208
+ entry.old_epochs = [...oldEpochs, data];
209
+ result[row.group_id] = entry;
210
+ }
211
+ catch { /* ignore */ }
212
+ }
213
+ return result;
214
+ }
215
+ replaceGroupEntries(aid, entries) {
216
+ if (!this._db)
217
+ return;
218
+ this._runTransaction(() => {
219
+ const currentStmt = this._db.prepare(`
220
+ INSERT OR REPLACE INTO group_current
221
+ (aid, group_id, epoch, data, updated_at)
222
+ VALUES (?, ?, ?, ?, ?)
223
+ `);
224
+ const oldStmt = this._db.prepare(`
225
+ INSERT OR REPLACE INTO group_old_epochs
226
+ (aid, group_id, epoch, data, updated_at, expires_at, deleted_at)
227
+ VALUES (?, ?, ?, ?, ?, ?, ?)
228
+ `);
229
+ for (const [groupId, entry] of Object.entries(entries)) {
230
+ const current = { ...entry };
231
+ const oldEpochs = Array.isArray(current.old_epochs) ? current.old_epochs : [];
232
+ delete current.old_epochs;
233
+ const epoch = toNumber(current.epoch);
234
+ const updatedAt = defaultNumber(current.updated_at, Date.now());
235
+ if (epoch !== null) {
236
+ currentStmt.run(aid, groupId, epoch, JSON.stringify(current), updatedAt);
237
+ }
238
+ for (const old of oldEpochs) {
239
+ const oldEpoch = toNumber(old.epoch);
240
+ if (oldEpoch === null)
241
+ continue;
242
+ oldStmt.run(aid, groupId, oldEpoch, JSON.stringify(old), defaultNumber(old.updated_at, updatedAt, Date.now()), toNumber(old.expires_at), toNumber(old.deleted_at));
243
+ }
244
+ }
245
+ }, 'replace_group_entries');
246
+ }
247
+ cleanupGroupOldEpochs(aid, groupId, cutoffMs) {
248
+ const rows = this._queryAll(`SELECT epoch
249
+ FROM group_old_epochs
250
+ WHERE aid = ?
251
+ AND group_id = ?
252
+ AND COALESCE(expires_at, updated_at, 0) < ?`, aid, groupId, cutoffMs);
253
+ const epochs = rows.map(row => row.epoch);
254
+ if (epochs.length === 0 || !this._db)
255
+ return epochs;
256
+ this._runTransaction(() => {
257
+ const stmt = this._db.prepare('DELETE FROM group_old_epochs WHERE aid = ? AND group_id = ? AND epoch = ?');
258
+ for (const epoch of epochs)
259
+ stmt.run(aid, groupId, epoch);
260
+ }, 'cleanup_group_old_epochs');
261
+ return epochs;
262
+ }
263
+ _initTables() {
264
+ this._db.exec(`
265
+ CREATE TABLE IF NOT EXISTS _schema_version (
266
+ id INTEGER PRIMARY KEY,
267
+ version INTEGER NOT NULL
268
+ );
269
+ CREATE TABLE IF NOT EXISTS seed_backup (
270
+ id INTEGER PRIMARY KEY,
271
+ seed BLOB NOT NULL,
272
+ updated_at INTEGER NOT NULL
273
+ );
274
+ CREATE TABLE IF NOT EXISTS device_id_backup (
275
+ id INTEGER PRIMARY KEY,
276
+ device_id TEXT NOT NULL,
277
+ updated_at INTEGER NOT NULL
278
+ );
279
+ CREATE TABLE IF NOT EXISTS key_pairs (
280
+ aid TEXT PRIMARY KEY,
281
+ data TEXT NOT NULL,
282
+ updated_at INTEGER NOT NULL
283
+ );
284
+ CREATE TABLE IF NOT EXISTS certs (
285
+ aid TEXT PRIMARY KEY,
286
+ cert_pem TEXT NOT NULL,
287
+ updated_at INTEGER NOT NULL
288
+ );
289
+ CREATE TABLE IF NOT EXISTS metadata (
290
+ aid TEXT PRIMARY KEY,
291
+ data TEXT NOT NULL,
292
+ updated_at INTEGER NOT NULL
293
+ );
294
+ CREATE TABLE IF NOT EXISTS prekeys (
295
+ aid TEXT NOT NULL,
296
+ prekey_id TEXT NOT NULL,
297
+ data TEXT NOT NULL,
298
+ created_at INTEGER,
299
+ updated_at INTEGER NOT NULL,
300
+ expires_at INTEGER,
301
+ deleted_at INTEGER,
302
+ PRIMARY KEY (aid, prekey_id)
303
+ );
304
+ CREATE TABLE IF NOT EXISTS group_current (
305
+ aid TEXT NOT NULL,
306
+ group_id TEXT NOT NULL,
307
+ epoch INTEGER NOT NULL,
308
+ data TEXT NOT NULL,
309
+ updated_at INTEGER NOT NULL,
310
+ PRIMARY KEY (aid, group_id)
311
+ );
312
+ CREATE TABLE IF NOT EXISTS group_old_epochs (
313
+ aid TEXT NOT NULL,
314
+ group_id TEXT NOT NULL,
315
+ epoch INTEGER NOT NULL,
316
+ data TEXT NOT NULL,
317
+ updated_at INTEGER NOT NULL,
318
+ expires_at INTEGER,
319
+ deleted_at INTEGER,
320
+ PRIMARY KEY (aid, group_id, epoch)
321
+ );
322
+ CREATE INDEX IF NOT EXISTS idx_prekeys_aid_expires
323
+ ON prekeys (aid, expires_at, created_at, updated_at);
324
+ CREATE INDEX IF NOT EXISTS idx_group_old_epochs_aid_group_expires
325
+ ON group_old_epochs (aid, group_id, expires_at, updated_at);
326
+ `);
327
+ this._migrate();
328
+ }
329
+ _migrate() {
330
+ const row = this._queryOne('SELECT version FROM _schema_version WHERE id = 1');
331
+ const current = row?.version ?? 0;
332
+ if (current !== SCHEMA_VERSION && this._db) {
333
+ this._db.prepare('INSERT OR REPLACE INTO _schema_version (id, version) VALUES (1, ?)').run(SCHEMA_VERSION);
334
+ }
335
+ }
336
+ _runTransaction(fn, label) {
337
+ if (!this._db)
338
+ return;
339
+ try {
340
+ runImmediateTransaction(this._db, fn);
341
+ }
342
+ catch (err) {
343
+ console.warn(`SQLite ${label} 失败: ${err}`);
344
+ }
345
+ }
346
+ _exec(sql, ...params) {
347
+ if (!this._db)
348
+ return;
349
+ try {
350
+ this._db.prepare(sql).run(...params);
351
+ }
352
+ catch (err) {
353
+ console.warn(`SQLite 备份写入失败: ${err}`);
354
+ }
355
+ }
356
+ _queryOne(sql, ...params) {
357
+ if (!this._db)
358
+ return undefined;
359
+ try {
360
+ return this._db.prepare(sql).get(...params);
361
+ }
362
+ catch (err) {
363
+ console.warn(`SQLite 备份读取失败: ${err}`);
364
+ return undefined;
365
+ }
366
+ }
367
+ _queryAll(sql, ...params) {
368
+ if (!this._db)
369
+ return [];
370
+ try {
371
+ return this._db.prepare(sql).all(...params);
372
+ }
373
+ catch (err) {
374
+ console.warn(`SQLite 备份读取失败: ${err}`);
375
+ return [];
376
+ }
377
+ }
378
+ }
379
+ //# sourceMappingURL=sqlite-backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-backup.js","sourceRoot":"","sources":["../../src/keystore/sqlite-backup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class AUNLogger {
2
+ private _aid;
3
+ constructor();
4
+ setAid(aid: string): void;
5
+ log(message: string): void;
6
+ }
package/dist/logger.js ADDED
@@ -0,0 +1,53 @@
1
+ import { mkdirSync, appendFileSync, readdirSync, statSync, unlinkSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { homedir } from 'os';
4
+ function logDir() {
5
+ return join(homedir(), '.aun', 'logs');
6
+ }
7
+ function logPath(dateStr) {
8
+ return join(logDir(), `ts-sdk-${dateStr}.log`);
9
+ }
10
+ /** 删除超过 keepDays 天的旧日志文件 */
11
+ function cleanupOldLogs(keepDays = 3) {
12
+ const dir = logDir();
13
+ const cutoff = Date.now() - keepDays * 86400_000;
14
+ try {
15
+ for (const name of readdirSync(dir)) {
16
+ if (!name.startsWith('ts-sdk-') || !name.endsWith('.log'))
17
+ continue;
18
+ try {
19
+ const full = join(dir, name);
20
+ if (statSync(full).mtimeMs < cutoff)
21
+ unlinkSync(full);
22
+ }
23
+ catch { }
24
+ }
25
+ }
26
+ catch { }
27
+ }
28
+ export class AUNLogger {
29
+ _aid = '';
30
+ constructor() {
31
+ try {
32
+ mkdirSync(logDir(), { recursive: true });
33
+ }
34
+ catch { }
35
+ cleanupOldLogs();
36
+ }
37
+ setAid(aid) { this._aid = aid; }
38
+ log(message) {
39
+ const now = new Date();
40
+ const tsMs = now.getTime();
41
+ const dateStr = now.toISOString().slice(0, 10).replace(/-/g, '');
42
+ // 时间戳与后续内容之间用 " | " 分隔,便于日志解析
43
+ const line = `${tsMs} | ${this._aid ? '[' + this._aid + '] ' : ''}${message}\n`;
44
+ try {
45
+ appendFileSync(logPath(dateStr), line, 'utf-8');
46
+ }
47
+ catch (exc) {
48
+ // eslint-disable-next-line no-console
49
+ console.error('[AUNLogger] 写日志文件失败');
50
+ }
51
+ }
52
+ }
53
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,SAAS,MAAM;IACb,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,OAAO,CAAC,OAAe;IAC9B,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,OAAO,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,4BAA4B;AAC5B,SAAS,cAAc,CAAC,QAAQ,GAAG,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjD,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YACpE,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,MAAM;oBAAE,UAAU,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,MAAM,OAAO,SAAS;IACZ,IAAI,GAAG,EAAE,CAAC;IAElB;QACE,IAAI,CAAC;YAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAC1D,cAAc,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,GAAW,IAAU,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAE9C,GAAG,CAAC,OAAe;QACjB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjE,8BAA8B;QAC9B,MAAM,IAAI,GAAG,GAAG,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,IAAI,CAAC;QAChF,IAAI,CAAC;YACH,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Auth 命名空间
3
+ *
4
+ * 提供 auth.createAid / auth.authenticate 等高层方法,
5
+ * 内部通过 AUNClient 的 transport、auth、discovery 完成实际流程。
6
+ *
7
+ * 与 Python SDK 的 AuthNamespace 完全对齐。
8
+ */
9
+ import type { AUNClient } from '../client.js';
10
+ import { type IdentityRecord, type JsonObject, type RpcParams, type RpcResult } from '../types.js';
11
+ interface AuthNamespaceResult extends IdentityRecord {
12
+ gateway?: string;
13
+ cert_pem?: string;
14
+ }
15
+ export declare class AuthNamespace {
16
+ private _client;
17
+ constructor(client: AUNClient);
18
+ private get _internal();
19
+ /**
20
+ * 解析 Gateway URL。
21
+ * 优先使用已预置的 _gatewayUrl,否则基于 AID 自动发现。
22
+ *
23
+ * 发现流程:
24
+ * 发现流程:
25
+ * 1. 若 _gatewayUrl 已预置,直接返回
26
+ * 2. 开发环境:先 gateway.{issuer},再 fallback {aid}(泛域名在开发环境可能不可用)
27
+ * 3. 生产环境:先 {aid}(泛域名 nameservice),再 fallback gateway.{issuer}
28
+ */
29
+ _resolveGateway(aid?: string): Promise<string>;
30
+ /** 创建新 AID */
31
+ createAid(params: RpcParams): Promise<AuthNamespaceResult>;
32
+ /** 认证(登录) */
33
+ authenticate(params?: RpcParams): Promise<AuthNamespaceResult>;
34
+ private _resolveAgentMdUrl;
35
+ private _ensureAgentMdUploadToken;
36
+ uploadAgentMd(content: string): Promise<JsonObject>;
37
+ downloadAgentMd(aid: string): Promise<string>;
38
+ /** 下载证书 */
39
+ downloadCert(params?: RpcParams): Promise<RpcResult>;
40
+ /** 请求签发证书 */
41
+ requestCert(params: RpcParams): Promise<RpcResult>;
42
+ /** 续期证书 */
43
+ renewCert(params?: RpcParams): Promise<RpcResult>;
44
+ /** 密钥轮换 */
45
+ rekey(params?: RpcParams): Promise<RpcResult>;
46
+ /** 获取信任根证书列表 */
47
+ trustRoots(params?: RpcParams): Promise<RpcResult>;
48
+ }
49
+ export {};