beam-protocol-sdk 0.3.0 → 0.5.1

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 (49) hide show
  1. package/dist/bip39-wordlist.d.ts +2 -0
  2. package/dist/bip39-wordlist.d.ts.map +1 -0
  3. package/dist/bip39-wordlist.js +2052 -0
  4. package/dist/bip39-wordlist.js.map +1 -0
  5. package/dist/client.d.ts +80 -0
  6. package/dist/client.d.ts.map +1 -0
  7. package/dist/client.js +295 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/did.d.ts +85 -0
  10. package/dist/did.d.ts.map +1 -0
  11. package/dist/did.js +254 -0
  12. package/dist/did.js.map +1 -0
  13. package/dist/directory.d.ts +28 -0
  14. package/dist/directory.d.ts.map +1 -0
  15. package/dist/directory.js +215 -0
  16. package/dist/directory.js.map +1 -0
  17. package/dist/frames.d.ts +29 -0
  18. package/dist/frames.d.ts.map +1 -0
  19. package/dist/frames.js +133 -0
  20. package/dist/frames.js.map +1 -0
  21. package/dist/identity.d.ts +20 -0
  22. package/dist/identity.d.ts.map +1 -0
  23. package/dist/identity.js +81 -0
  24. package/dist/identity.js.map +1 -0
  25. package/dist/index.d.ts +9 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +7 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/key-management.d.ts +54 -0
  30. package/dist/key-management.d.ts.map +1 -0
  31. package/dist/key-management.js +172 -0
  32. package/dist/key-management.js.map +1 -0
  33. package/dist/types.d.ts +124 -0
  34. package/dist/types.d.ts.map +1 -0
  35. package/dist/types.js +2 -0
  36. package/dist/types.js.map +1 -0
  37. package/package.json +25 -5
  38. package/src/client.ts +0 -383
  39. package/src/directory.ts +0 -91
  40. package/src/frames.ts +0 -161
  41. package/src/identity.ts +0 -85
  42. package/src/index.ts +0 -25
  43. package/src/types.ts +0 -71
  44. package/tests/client.test.ts +0 -217
  45. package/tests/directory.test.ts +0 -202
  46. package/tests/frames.test.ts +0 -213
  47. package/tests/identity.test.ts +0 -130
  48. package/tsconfig.json +0 -19
  49. package/vitest.config.ts +0 -8
package/dist/did.js ADDED
@@ -0,0 +1,254 @@
1
+ import { createPublicKey, verify } from 'node:crypto';
2
+ const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
3
+ function sortJson(value) {
4
+ if (Array.isArray(value)) {
5
+ return value.map(sortJson);
6
+ }
7
+ if (value !== null && typeof value === 'object') {
8
+ const sorted = {};
9
+ for (const key of Object.keys(value).sort()) {
10
+ sorted[key] = sortJson(value[key]);
11
+ }
12
+ return sorted;
13
+ }
14
+ return value;
15
+ }
16
+ function canonicalizeJson(value) {
17
+ return JSON.stringify(sortJson(value));
18
+ }
19
+ function base64UrlToBuffer(value) {
20
+ const normalized = value.replace(/-/g, '+').replace(/_/g, '/');
21
+ const padding = (4 - (normalized.length % 4)) % 4;
22
+ return Buffer.from(normalized.padEnd(normalized.length + padding, '='), 'base64');
23
+ }
24
+ function bufferToBase64Url(value) {
25
+ return value.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
26
+ }
27
+ function base58Encode(value) {
28
+ if (value.length === 0)
29
+ return '';
30
+ const digits = [0];
31
+ for (const byte of value) {
32
+ let carry = byte;
33
+ for (let index = 0; index < digits.length; index += 1) {
34
+ const next = (digits[index] ?? 0) * 256 + carry;
35
+ digits[index] = next % 58;
36
+ carry = Math.floor(next / 58);
37
+ }
38
+ while (carry > 0) {
39
+ digits.push(carry % 58);
40
+ carry = Math.floor(carry / 58);
41
+ }
42
+ }
43
+ let result = '';
44
+ for (const byte of value) {
45
+ if (byte !== 0)
46
+ break;
47
+ result += BASE58_ALPHABET[0];
48
+ }
49
+ for (let index = digits.length - 1; index >= 0; index -= 1) {
50
+ result += BASE58_ALPHABET[digits[index] ?? 0];
51
+ }
52
+ return result;
53
+ }
54
+ function base58Decode(value) {
55
+ const bytes = [0];
56
+ for (const char of value) {
57
+ const digit = BASE58_ALPHABET.indexOf(char);
58
+ if (digit < 0) {
59
+ throw new Error(`Invalid base58 character: ${char}`);
60
+ }
61
+ let carry = digit;
62
+ for (let index = 0; index < bytes.length; index += 1) {
63
+ const next = (bytes[index] ?? 0) * 58 + carry;
64
+ bytes[index] = next & 0xff;
65
+ carry = next >> 8;
66
+ }
67
+ while (carry > 0) {
68
+ bytes.push(carry & 0xff);
69
+ carry >>= 8;
70
+ }
71
+ }
72
+ let leadingZeroes = 0;
73
+ for (const char of value) {
74
+ if (char !== BASE58_ALPHABET[0])
75
+ break;
76
+ leadingZeroes += 1;
77
+ }
78
+ const decoded = Buffer.alloc(leadingZeroes + bytes.length);
79
+ for (let index = 0; index < bytes.length; index += 1) {
80
+ decoded[decoded.length - 1 - index] = bytes[index] ?? 0;
81
+ }
82
+ return decoded;
83
+ }
84
+ function publicKeyBase64ToMultibase(publicKeyBase64) {
85
+ const publicKey = createPublicKey({
86
+ key: Buffer.from(publicKeyBase64, 'base64'),
87
+ format: 'der',
88
+ type: 'spki',
89
+ });
90
+ const jwk = publicKey.export({ format: 'jwk' });
91
+ if (jwk.kty !== 'OKP' || jwk.crv !== 'Ed25519' || typeof jwk.x !== 'string') {
92
+ throw new Error('Expected Ed25519 public key');
93
+ }
94
+ const rawKey = base64UrlToBuffer(jwk.x);
95
+ return `z${base58Encode(Buffer.concat([Buffer.from([0xed, 0x01]), rawKey]))}`;
96
+ }
97
+ function multibaseToPublicKeyBase64(multibase) {
98
+ if (!multibase.startsWith('z')) {
99
+ throw new Error('Expected base58btc key');
100
+ }
101
+ const decoded = base58Decode(multibase.slice(1));
102
+ const rawKey = decoded.subarray(2);
103
+ const jwk = {
104
+ kty: 'OKP',
105
+ crv: 'Ed25519',
106
+ x: bufferToBase64Url(rawKey),
107
+ };
108
+ const publicKey = createPublicKey({ key: jwk, format: 'jwk' });
109
+ return publicKey.export({ type: 'spki', format: 'der' }).toString('base64');
110
+ }
111
+ function extractParts(beamId) {
112
+ if (!beamId.includes('@')) {
113
+ return { handle: beamId, org: null };
114
+ }
115
+ const [handle, domain] = beamId.split('@');
116
+ const org = domain?.endsWith('.beam.directory')
117
+ ? domain.slice(0, -'.beam.directory'.length)
118
+ : null;
119
+ return { handle: handle ?? beamId, org };
120
+ }
121
+ function buildDocument(input) {
122
+ const verificationMethodId = `${input.did}#key-1`;
123
+ return {
124
+ '@context': [
125
+ 'https://www.w3.org/ns/did/v1',
126
+ 'https://w3id.org/security/suites/ed25519-2020/v1',
127
+ ],
128
+ id: input.did,
129
+ alsoKnownAs: [input.beamId],
130
+ verificationMethod: [{
131
+ id: verificationMethodId,
132
+ type: 'Ed25519VerificationKey2020',
133
+ controller: input.did,
134
+ publicKeyMultibase: publicKeyBase64ToMultibase(input.publicKey),
135
+ }],
136
+ authentication: [verificationMethodId],
137
+ assertionMethod: [verificationMethodId],
138
+ capabilityInvocation: [verificationMethodId],
139
+ capabilityDelegation: [verificationMethodId],
140
+ service: [{
141
+ id: `${input.did}#resolver`,
142
+ type: 'DIDResolutionService',
143
+ serviceEndpoint: `${input.baseUrl.replace(/\/$/, '')}/did/${encodeURIComponent(input.did)}`,
144
+ }],
145
+ ...(input.createdAt ? { created: input.createdAt } : {}),
146
+ ...(input.updatedAt ? { updated: input.updatedAt } : {}),
147
+ };
148
+ }
149
+ export class BeamDID {
150
+ baseUrl;
151
+ identity;
152
+ constructor(config) {
153
+ this.baseUrl = config.baseUrl.replace(/\/$/, '');
154
+ this.identity = config.identity;
155
+ }
156
+ create(options = {}) {
157
+ const beamId = options.beamId ?? this.identity?.beamId;
158
+ const publicKey = options.publicKey ?? this.identity?.publicKeyBase64;
159
+ if (!beamId || !publicKey) {
160
+ throw new Error('beamId and publicKey are required to create a DID document');
161
+ }
162
+ const { handle, org } = extractParts(beamId);
163
+ const format = options.format ?? (org ? 'org' : 'personal');
164
+ const did = format === 'key'
165
+ ? `did:beam:${publicKeyBase64ToMultibase(publicKey)}`
166
+ : format === 'personal'
167
+ ? `did:beam:${handle}`
168
+ : `did:beam:${org ?? 'beam'}:${handle}`;
169
+ return buildDocument({
170
+ did,
171
+ publicKey,
172
+ beamId,
173
+ baseUrl: this.baseUrl,
174
+ createdAt: options.createdAt,
175
+ updatedAt: options.updatedAt,
176
+ });
177
+ }
178
+ async resolve(did) {
179
+ const response = await fetch(`${this.baseUrl}/did/${encodeURIComponent(did)}`, {
180
+ headers: { Accept: 'application/did+json' },
181
+ });
182
+ if (response.status === 404) {
183
+ return null;
184
+ }
185
+ if (!response.ok) {
186
+ throw new Error(`DID resolution failed: ${response.status} ${response.statusText}`);
187
+ }
188
+ return response.json();
189
+ }
190
+ update(document, patch) {
191
+ return {
192
+ ...document,
193
+ ...patch,
194
+ updated: new Date().toISOString(),
195
+ };
196
+ }
197
+ deactivate(document) {
198
+ return {
199
+ ...document,
200
+ deactivated: true,
201
+ updated: new Date().toISOString(),
202
+ };
203
+ }
204
+ }
205
+ export class CredentialVerifier {
206
+ static verify(vc) {
207
+ try {
208
+ const { proof, ...unsignedCredential } = vc;
209
+ if (proof.verificationMethod !== `${vc.issuer}#key-1` || proof.proofPurpose !== 'assertionMethod') {
210
+ return false;
211
+ }
212
+ const publicKeyBase64 = multibaseToPublicKeyBase64(proof.publicKeyMultibase);
213
+ const publicKey = createPublicKey({
214
+ key: Buffer.from(publicKeyBase64, 'base64'),
215
+ format: 'der',
216
+ type: 'spki',
217
+ });
218
+ return verify(null, Buffer.from(canonicalizeJson(unsignedCredential), 'utf8'), publicKey, Buffer.from(proof.proofValue, 'base64'));
219
+ }
220
+ catch {
221
+ return false;
222
+ }
223
+ }
224
+ }
225
+ export class BeamCredentialsClient {
226
+ baseUrl;
227
+ constructor(baseUrl) {
228
+ this.baseUrl = baseUrl;
229
+ }
230
+ async issueEmailVC(beamId, email) {
231
+ return this.post('/credentials/email', { beamId, email });
232
+ }
233
+ async issueDomainVC(beamId, domain) {
234
+ return this.post('/credentials/domain', { beamId, domain });
235
+ }
236
+ async issueBusinessVC(beamId, businessInfo) {
237
+ return this.post('/credentials/business', { beamId, businessInfo });
238
+ }
239
+ verify(vc) {
240
+ return CredentialVerifier.verify(vc);
241
+ }
242
+ async post(path, body) {
243
+ const response = await fetch(`${this.baseUrl.replace(/\/$/, '')}${path}`, {
244
+ method: 'POST',
245
+ headers: { 'Content-Type': 'application/json' },
246
+ body: JSON.stringify(body),
247
+ });
248
+ if (!response.ok) {
249
+ throw new Error(`Credential request failed: ${response.status} ${response.statusText}`);
250
+ }
251
+ return response.json();
252
+ }
253
+ }
254
+ //# sourceMappingURL=did.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did.js","sourceRoot":"","sources":["../src/did.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { AgentProfile, AgentRecord, AgentRegistration, AgentSearchQuery, BeamIdString, BrowseFilters, BrowseResult, DirectoryConfig, DirectoryStats, DomainVerification, KeyRotationResult, Delegation, Report } from './types.js';
2
+ export declare class BeamDirectoryError extends Error {
3
+ readonly statusCode: number;
4
+ constructor(message: string, statusCode: number);
5
+ }
6
+ export declare class BeamDirectory {
7
+ private readonly baseUrl;
8
+ private readonly headers;
9
+ constructor(config: DirectoryConfig);
10
+ private request;
11
+ register(registration: AgentRegistration): Promise<AgentRecord>;
12
+ lookup(beamId: BeamIdString): Promise<AgentRecord | null>;
13
+ search(query: AgentSearchQuery): Promise<AgentRecord[]>;
14
+ browse(page?: number, filters?: BrowseFilters): Promise<BrowseResult>;
15
+ getStats(): Promise<DirectoryStats>;
16
+ updateProfile(beamId: BeamIdString, fields: {
17
+ description?: string;
18
+ logo_url?: string;
19
+ website?: string;
20
+ }): Promise<AgentProfile>;
21
+ verifyDomain(beamId: BeamIdString, domain: string): Promise<DomainVerification>;
22
+ checkDomainVerification(beamId: BeamIdString): Promise<DomainVerification>;
23
+ rotateKeys(beamId: BeamIdString, publicKey: string): Promise<KeyRotationResult>;
24
+ delegate(sourceBeamId: BeamIdString, targetBeamId: BeamIdString, scope: string, expiresIn?: number): Promise<Delegation>;
25
+ report(reporterBeamId: BeamIdString, targetBeamId: BeamIdString, reason: string): Promise<Report>;
26
+ heartbeat(beamId: BeamIdString): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,MAAM,EAEP,MAAM,YAAY,CAAA;AAyDnB,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,UAAU,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM;CAKrC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;gBAEpC,MAAM,EAAE,eAAe;YAQrB,OAAO;IAqBf,QAAQ,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ/D,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAUzD,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAYvD,MAAM,CAAC,IAAI,SAAI,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IA4CpE,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAKnC,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAQjI,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQ/E,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK1E,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQ/E,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQxH,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQjG,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CASrD"}
@@ -0,0 +1,215 @@
1
+ function getString(raw, ...keys) {
2
+ for (const key of keys) {
3
+ const value = raw[key];
4
+ if (typeof value === 'string' && value.length > 0) {
5
+ return value;
6
+ }
7
+ }
8
+ return undefined;
9
+ }
10
+ function getNumber(raw, ...keys) {
11
+ for (const key of keys) {
12
+ const value = raw[key];
13
+ if (typeof value === 'number' && Number.isFinite(value)) {
14
+ return value;
15
+ }
16
+ }
17
+ return undefined;
18
+ }
19
+ function getBoolean(raw, ...keys) {
20
+ for (const key of keys) {
21
+ const value = raw[key];
22
+ if (typeof value === 'boolean') {
23
+ return value;
24
+ }
25
+ }
26
+ return undefined;
27
+ }
28
+ function getStringArray(raw, ...keys) {
29
+ for (const key of keys) {
30
+ const value = raw[key];
31
+ if (Array.isArray(value)) {
32
+ return value.filter((entry) => typeof entry === 'string');
33
+ }
34
+ }
35
+ return [];
36
+ }
37
+ function normalizeAgent(raw) {
38
+ return {
39
+ beamId: (raw.beamId ?? raw.beam_id),
40
+ did: (raw.did ?? ''),
41
+ displayName: (raw.displayName ?? raw.display_name ?? ''),
42
+ capabilities: (raw.capabilities ?? []),
43
+ publicKey: (raw.publicKey ?? raw.public_key ?? ''),
44
+ org: (raw.org ?? ''),
45
+ trustScore: (raw.trustScore ?? raw.trust_score ?? 0),
46
+ verified: (raw.verified ?? false),
47
+ createdAt: (raw.createdAt ?? raw.created_at ?? ''),
48
+ lastSeen: (raw.lastSeen ?? raw.last_seen ?? ''),
49
+ };
50
+ }
51
+ export class BeamDirectoryError extends Error {
52
+ statusCode;
53
+ constructor(message, statusCode) {
54
+ super(message);
55
+ this.statusCode = statusCode;
56
+ this.name = 'BeamDirectoryError';
57
+ }
58
+ }
59
+ export class BeamDirectory {
60
+ baseUrl;
61
+ headers;
62
+ constructor(config) {
63
+ this.baseUrl = config.baseUrl.replace(/\/$/, '');
64
+ this.headers = {
65
+ 'Content-Type': 'application/json',
66
+ ...(config.apiKey && { Authorization: `Bearer ${config.apiKey}` })
67
+ };
68
+ }
69
+ async request(path, init) {
70
+ const res = await fetch(`${this.baseUrl}${path}`, {
71
+ ...init,
72
+ headers: {
73
+ ...this.headers,
74
+ ...(init?.headers ?? {}),
75
+ },
76
+ });
77
+ if (!res.ok) {
78
+ const body = await res.json().catch(() => ({ error: res.statusText }));
79
+ throw new BeamDirectoryError(body.error ?? res.statusText, res.status);
80
+ }
81
+ if (res.status === 204) {
82
+ return undefined;
83
+ }
84
+ return res.json();
85
+ }
86
+ async register(registration) {
87
+ const body = await this.request('/agents/register', {
88
+ method: 'POST',
89
+ body: JSON.stringify(registration)
90
+ });
91
+ return normalizeAgent(body);
92
+ }
93
+ async lookup(beamId) {
94
+ const res = await fetch(`${this.baseUrl}/agents/${encodeURIComponent(beamId)}`, {
95
+ headers: this.headers
96
+ });
97
+ if (res.status === 404)
98
+ return null;
99
+ if (!res.ok)
100
+ throw new BeamDirectoryError(`Lookup failed: ${res.statusText}`, res.status);
101
+ const body = await res.json();
102
+ return normalizeAgent(body);
103
+ }
104
+ async search(query) {
105
+ const params = new URLSearchParams();
106
+ if (query.org)
107
+ params.set('org', query.org);
108
+ if (query.capabilities?.length)
109
+ params.set('capabilities', query.capabilities.join(','));
110
+ if (query.minTrustScore !== undefined)
111
+ params.set('minTrustScore', String(query.minTrustScore));
112
+ if (query.limit !== undefined)
113
+ params.set('limit', String(query.limit));
114
+ const body = await this.request(`/agents/search?${params.toString()}`);
115
+ const raw = Array.isArray(body) ? body : (body.agents ?? []);
116
+ return raw.map(normalizeAgent);
117
+ }
118
+ async browse(page = 1, filters = {}) {
119
+ const params = new URLSearchParams({ page: String(page) });
120
+ if (filters.capability)
121
+ params.set('capability', filters.capability);
122
+ if (filters.tier)
123
+ params.set('tier', filters.tier);
124
+ if (filters.verified_only)
125
+ params.set('verified_only', String(filters.verified_only));
126
+ try {
127
+ const body = await this.request(`/agents/browse?${params.toString()}`);
128
+ const agentsRaw = Array.isArray(body['agents'])
129
+ ? body['agents'].filter((entry) => typeof entry === 'object' && entry !== null)
130
+ : [];
131
+ return {
132
+ page: getNumber(body, 'page') ?? page,
133
+ pageSize: getNumber(body, 'pageSize', 'page_size') ?? agentsRaw.length,
134
+ total: getNumber(body, 'total') ?? agentsRaw.length,
135
+ agents: agentsRaw.map(normalizeProfile),
136
+ };
137
+ }
138
+ catch (error) {
139
+ if (!(error instanceof BeamDirectoryError) || error.statusCode !== 404) {
140
+ throw error;
141
+ }
142
+ const search = await this.search({
143
+ capabilities: filters.capability ? [filters.capability] : undefined,
144
+ limit: 20,
145
+ });
146
+ const filtered = search.filter((agent) => {
147
+ if (filters.verified_only && !agent.verified)
148
+ return false;
149
+ return true;
150
+ });
151
+ return {
152
+ page,
153
+ pageSize: filtered.length,
154
+ total: filtered.length,
155
+ agents: filtered.map((agent) => ({
156
+ ...agent,
157
+ verificationTier: agent.verified ? 'verified' : 'basic',
158
+ })),
159
+ };
160
+ }
161
+ }
162
+ async getStats() {
163
+ const body = await this.request('/stats');
164
+ return normalizeStats(body);
165
+ }
166
+ async updateProfile(beamId, fields) {
167
+ const body = await this.request(`/agents/${encodeURIComponent(beamId)}/profile`, {
168
+ method: 'PATCH',
169
+ body: JSON.stringify(fields),
170
+ });
171
+ return normalizeProfile(body);
172
+ }
173
+ async verifyDomain(beamId, domain) {
174
+ const body = await this.request(`/agents/${encodeURIComponent(beamId)}/verify/domain`, {
175
+ method: 'POST',
176
+ body: JSON.stringify({ domain }),
177
+ });
178
+ return normalizeVerification(body, domain);
179
+ }
180
+ async checkDomainVerification(beamId) {
181
+ const body = await this.request(`/agents/${encodeURIComponent(beamId)}/verify/domain`);
182
+ return normalizeVerification(body);
183
+ }
184
+ async rotateKeys(beamId, publicKey) {
185
+ const body = await this.request(`/agents/${encodeURIComponent(beamId)}/keys/rotate`, {
186
+ method: 'POST',
187
+ body: JSON.stringify({ publicKey }),
188
+ });
189
+ return normalizeRotation(body, beamId, publicKey);
190
+ }
191
+ async delegate(sourceBeamId, targetBeamId, scope, expiresIn) {
192
+ const body = await this.request('/delegations', {
193
+ method: 'POST',
194
+ body: JSON.stringify({ sourceBeamId, targetBeamId, scope, expiresIn }),
195
+ });
196
+ return normalizeDelegation(body);
197
+ }
198
+ async report(reporterBeamId, targetBeamId, reason) {
199
+ const body = await this.request('/reports', {
200
+ method: 'POST',
201
+ body: JSON.stringify({ reporterBeamId, targetBeamId, reason }),
202
+ });
203
+ return normalizeReport(body);
204
+ }
205
+ async heartbeat(beamId) {
206
+ const res = await fetch(`${this.baseUrl}/agents/${encodeURIComponent(beamId)}/heartbeat`, {
207
+ method: 'POST',
208
+ headers: this.headers
209
+ });
210
+ if (!res.ok && res.status !== 404) {
211
+ throw new BeamDirectoryError(`Heartbeat failed: ${res.statusText}`, res.status);
212
+ }
213
+ }
214
+ }
215
+ //# sourceMappingURL=directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"AAiBA,SAAS,SAAS,CAAC,GAA4B,EAAE,GAAG,IAAc;IAChE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,GAA4B,EAAE,GAAG,IAAc;IAChE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,GAA4B,EAAE,GAAG,IAAc;IACjE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,GAA4B,EAAE,GAAG,IAAc;IACrE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,cAAc,CAAC,GAA4B;IAClD,OAAO;QACL,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAA0B;QAC5D,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAW;QAC9B,WAAW,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,CAAW;QAClE,YAAY,EAAE,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAa;QAClD,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,CAAW;QAC5D,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAW;QAC9B,UAAU,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,CAAW;QAC9D,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAY;QAC5C,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,CAAW;QAC5D,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAW;KAC1D,CAAA;AACH,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB;IAFlB,YACE,OAAe,EACC,UAAkB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFE,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAED,MAAM,OAAO,aAAa;IACP,OAAO,CAAQ;IACf,OAAO,CAAwB;IAEhD,YAAY,MAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,GAAG;YACb,cAAc,EAAE,kBAAkB;YAClC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;SACnE,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,IAAkB;QACvD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,GAAG,IAAI;YACP,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,OAAO;gBACf,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;aACzB;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAuB,CAAA;YAC5F,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QACxE,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,SAAc,CAAA;QACvB,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,YAA+B;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,kBAAkB,EAAE;YAC3E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;SACnC,CAAC,CAAA;QACF,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAoB;QAC/B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE;YAC9E,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAA;QACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;QACnC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,kBAAkB,CAAC,kBAAkB,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QACzF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAA;QACxD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAuB;QAClC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QACpC,IAAI,KAAK,CAAC,GAAG;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,KAAK,CAAC,YAAY,EAAE,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACxF,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;QAC/F,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QAEvE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAqE,kBAAkB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC1I,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QAC5D,OAAO,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,UAAyB,EAAE;QAChD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC1D,IAAI,OAAO,CAAC,UAAU;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QACpE,IAAI,OAAO,CAAC,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,OAAO,CAAC,aAAa;YAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;QAErF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,kBAAkB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC/F,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;gBACjH,CAAC,CAAC,EAAE,CAAA;YACN,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI;gBACrC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,IAAI,SAAS,CAAC,MAAM;gBACtE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,MAAM;gBACnD,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;aACxC,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAkB,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvE,MAAM,KAAK,CAAA;YACb,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;gBAC/B,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBACnE,KAAK,EAAE,EAAE;aACV,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvC,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ;oBAAE,OAAO,KAAK,CAAA;gBAC1D,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;YAEF,OAAO;gBACL,IAAI;gBACJ,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC/B,GAAG,KAAK;oBACR,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;iBACxD,CAAC,CAAC;aACJ,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,QAAQ,CAAC,CAAA;QAClE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAoB,EAAE,MAAqE;QAC7G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,WAAW,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE;YACxG,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAC7B,CAAC,CAAA;QACF,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAoB,EAAE,MAAc;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,WAAW,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAC9G,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;SACjC,CAAC,CAAA;QACF,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAoB;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,WAAW,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAC/G,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAoB,EAAE,SAAiB;QACtD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,WAAW,kBAAkB,CAAC,MAAM,CAAC,cAAc,EAAE;YAC5G,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;SACpC,CAAC,CAAA;QACF,OAAO,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,YAA0B,EAAE,YAA0B,EAAE,KAAa,EAAE,SAAkB;QACtG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,cAAc,EAAE;YACvE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SACvE,CAAC,CAAA;QACF,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,cAA4B,EAAE,YAA0B,EAAE,MAAc;QACnF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,UAAU,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;SAC/D,CAAC,CAAA;QACF,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAoB;QAClC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,kBAAkB,CAAC,MAAM,CAAC,YAAY,EAAE;YACxF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAClC,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QACjF,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import type { IntentFrame, ResultFrame, BeamIdString } from './types.js';
2
+ import { BeamIdentity } from './identity.js';
3
+ export declare const MAX_FRAME_SIZE: number;
4
+ export declare const REPLAY_WINDOW_MS: number;
5
+ export declare function createIntentFrame(options: {
6
+ intent: string;
7
+ from: BeamIdString;
8
+ to: BeamIdString;
9
+ payload?: Record<string, unknown>;
10
+ }, identity: BeamIdentity): IntentFrame;
11
+ export declare function signFrame(frame: IntentFrame, privateKeyBase64: string): IntentFrame;
12
+ export declare function createResultFrame(options: {
13
+ nonce: string;
14
+ success: boolean;
15
+ payload?: Record<string, unknown>;
16
+ error?: string;
17
+ errorCode?: string;
18
+ latency?: number;
19
+ }, identity: BeamIdentity): ResultFrame;
20
+ export declare function validateIntentFrame(frame: unknown, senderPublicKey: string): {
21
+ valid: boolean;
22
+ error?: string;
23
+ };
24
+ export declare function validateResultFrame(frame: unknown, senderPublicKey: string): {
25
+ valid: boolean;
26
+ error?: string;
27
+ };
28
+ export declare function canonicalizeFrame(frame: Record<string, unknown>): string;
29
+ //# sourceMappingURL=frames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../src/frames.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,eAAO,MAAM,cAAc,QAAW,CAAA;AACtC,eAAO,MAAM,gBAAgB,QAAgB,CAAA;AAE7C,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,EAAE,EAAE,YAAY,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC,EACD,QAAQ,EAAE,YAAY,GACrB,WAAW,CAWb;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAG,WAAW,CAiBnF;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,EACD,QAAQ,EAAE,YAAY,GACrB,WAAW,CAab;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,MAAM,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA8CpC;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,MAAM,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAkBpC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAExE"}