@a2aletheia/sdk 0.2.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 (122) hide show
  1. package/README.md +436 -0
  2. package/dist/__tests__/pow-solver.test.d.ts +2 -0
  3. package/dist/__tests__/pow-solver.test.d.ts.map +1 -0
  4. package/dist/__tests__/pow-solver.test.js +35 -0
  5. package/dist/__tests__/pow-solver.test.js.map +1 -0
  6. package/dist/__tests__/signing.test.d.ts +2 -0
  7. package/dist/__tests__/signing.test.d.ts.map +1 -0
  8. package/dist/__tests__/signing.test.js +59 -0
  9. package/dist/__tests__/signing.test.js.map +1 -0
  10. package/dist/agent/agent-context.d.ts +26 -0
  11. package/dist/agent/agent-context.d.ts.map +1 -0
  12. package/dist/agent/agent-context.js +38 -0
  13. package/dist/agent/agent-context.js.map +1 -0
  14. package/dist/agent/agent-executor.d.ts +17 -0
  15. package/dist/agent/agent-executor.d.ts.map +1 -0
  16. package/dist/agent/agent-executor.js +91 -0
  17. package/dist/agent/agent-executor.js.map +1 -0
  18. package/dist/agent/agent-response.d.ts +63 -0
  19. package/dist/agent/agent-response.d.ts.map +1 -0
  20. package/dist/agent/agent-response.js +211 -0
  21. package/dist/agent/agent-response.js.map +1 -0
  22. package/dist/agent/aletheia-agent.d.ts +114 -0
  23. package/dist/agent/aletheia-agent.d.ts.map +1 -0
  24. package/dist/agent/aletheia-agent.js +248 -0
  25. package/dist/agent/aletheia-agent.js.map +1 -0
  26. package/dist/agent/index.d.ts +6 -0
  27. package/dist/agent/index.d.ts.map +1 -0
  28. package/dist/agent/index.js +9 -0
  29. package/dist/agent/index.js.map +1 -0
  30. package/dist/agent/types.d.ts +61 -0
  31. package/dist/agent/types.d.ts.map +1 -0
  32. package/dist/agent/types.js +2 -0
  33. package/dist/agent/types.js.map +1 -0
  34. package/dist/client.d.ts +114 -0
  35. package/dist/client.d.ts.map +1 -0
  36. package/dist/client.js +141 -0
  37. package/dist/client.js.map +1 -0
  38. package/dist/identity/agent-signer.d.ts +93 -0
  39. package/dist/identity/agent-signer.d.ts.map +1 -0
  40. package/dist/identity/agent-signer.js +288 -0
  41. package/dist/identity/agent-signer.js.map +1 -0
  42. package/dist/identity/did-resolver.d.ts +17 -0
  43. package/dist/identity/did-resolver.d.ts.map +1 -0
  44. package/dist/identity/did-resolver.js +73 -0
  45. package/dist/identity/did-resolver.js.map +1 -0
  46. package/dist/identity/index.d.ts +4 -0
  47. package/dist/identity/index.d.ts.map +1 -0
  48. package/dist/identity/index.js +4 -0
  49. package/dist/identity/index.js.map +1 -0
  50. package/dist/identity/manifest-fetcher.d.ts +12 -0
  51. package/dist/identity/manifest-fetcher.d.ts.map +1 -0
  52. package/dist/identity/manifest-fetcher.js +27 -0
  53. package/dist/identity/manifest-fetcher.js.map +1 -0
  54. package/dist/index.d.ts +12 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +20 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/logger/console-logger.d.ts +20 -0
  59. package/dist/logger/console-logger.d.ts.map +1 -0
  60. package/dist/logger/console-logger.js +43 -0
  61. package/dist/logger/console-logger.js.map +1 -0
  62. package/dist/logger/event-emitter.d.ts +39 -0
  63. package/dist/logger/event-emitter.d.ts.map +1 -0
  64. package/dist/logger/event-emitter.js +50 -0
  65. package/dist/logger/event-emitter.js.map +1 -0
  66. package/dist/logger/index.d.ts +4 -0
  67. package/dist/logger/index.d.ts.map +1 -0
  68. package/dist/logger/index.js +4 -0
  69. package/dist/logger/index.js.map +1 -0
  70. package/dist/logger/noop-logger.d.ts +20 -0
  71. package/dist/logger/noop-logger.d.ts.map +1 -0
  72. package/dist/logger/noop-logger.js +19 -0
  73. package/dist/logger/noop-logger.js.map +1 -0
  74. package/dist/reputation/index.d.ts +2 -0
  75. package/dist/reputation/index.d.ts.map +1 -0
  76. package/dist/reputation/index.js +2 -0
  77. package/dist/reputation/index.js.map +1 -0
  78. package/dist/reputation/pow-solver.d.ts +20 -0
  79. package/dist/reputation/pow-solver.d.ts.map +1 -0
  80. package/dist/reputation/pow-solver.js +46 -0
  81. package/dist/reputation/pow-solver.js.map +1 -0
  82. package/dist/reputation/rating-client.d.ts +35 -0
  83. package/dist/reputation/rating-client.d.ts.map +1 -0
  84. package/dist/reputation/rating-client.js +51 -0
  85. package/dist/reputation/rating-client.js.map +1 -0
  86. package/dist/security/audit-client.d.ts +17 -0
  87. package/dist/security/audit-client.d.ts.map +1 -0
  88. package/dist/security/audit-client.js +20 -0
  89. package/dist/security/audit-client.js.map +1 -0
  90. package/dist/security/index.d.ts +2 -0
  91. package/dist/security/index.d.ts.map +1 -0
  92. package/dist/security/index.js +2 -0
  93. package/dist/security/index.js.map +1 -0
  94. package/dist/tools/calculator.d.ts +29 -0
  95. package/dist/tools/calculator.d.ts.map +1 -0
  96. package/dist/tools/calculator.js +314 -0
  97. package/dist/tools/calculator.js.map +1 -0
  98. package/dist/tools/convert-units.d.ts +49 -0
  99. package/dist/tools/convert-units.d.ts.map +1 -0
  100. package/dist/tools/convert-units.js +152 -0
  101. package/dist/tools/convert-units.js.map +1 -0
  102. package/dist/tools/get-current-time.d.ts +23 -0
  103. package/dist/tools/get-current-time.d.ts.map +1 -0
  104. package/dist/tools/get-current-time.js +28 -0
  105. package/dist/tools/get-current-time.js.map +1 -0
  106. package/dist/tools/index.d.ts +80 -0
  107. package/dist/tools/index.d.ts.map +1 -0
  108. package/dist/tools/index.js +41 -0
  109. package/dist/tools/index.js.map +1 -0
  110. package/dist/tools/uuid-generator.d.ts +21 -0
  111. package/dist/tools/uuid-generator.d.ts.map +1 -0
  112. package/dist/tools/uuid-generator.js +25 -0
  113. package/dist/tools/uuid-generator.js.map +1 -0
  114. package/dist/utils/http.d.ts +11 -0
  115. package/dist/utils/http.d.ts.map +1 -0
  116. package/dist/utils/http.js +60 -0
  117. package/dist/utils/http.js.map +1 -0
  118. package/dist/utils/signing.d.ts +43 -0
  119. package/dist/utils/signing.d.ts.map +1 -0
  120. package/dist/utils/signing.js +78 -0
  121. package/dist/utils/signing.js.map +1 -0
  122. package/package.json +66 -0
@@ -0,0 +1,93 @@
1
+ import type { DIDDocument } from "@a2aletheia/types";
2
+ /**
3
+ * Agent key pair for signing messages.
4
+ */
5
+ export interface AgentKeyPair {
6
+ /** Private key (hex string, keep secret!) */
7
+ privateKey: string;
8
+ /** Public key (hex string) */
9
+ publicKey: string;
10
+ /** Public key in multibase format (for DID documents) */
11
+ publicKeyMultibase: string;
12
+ /** Generated did:key identifier */
13
+ didKey: string;
14
+ }
15
+ /**
16
+ * Signed message structure.
17
+ */
18
+ export interface SignedMessage<T = unknown> {
19
+ /** The original message payload */
20
+ payload: T;
21
+ /** Ed25519 signature (hex string) */
22
+ signature: string;
23
+ /** DID of the signer */
24
+ signer: string;
25
+ /** Timestamp when signed */
26
+ timestamp: number;
27
+ }
28
+ /**
29
+ * Generate a new Ed25519 key pair for agent signing.
30
+ *
31
+ * @returns Key pair with private key, public key, and derived did:key
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const keys = await generateAgentKeyPair();
36
+ * console.log(keys.didKey); // did:key:z6Mk...
37
+ * // Store keys.privateKey securely!
38
+ * ```
39
+ */
40
+ export declare function generateAgentKeyPair(): Promise<AgentKeyPair>;
41
+ /**
42
+ * Sign a message with an agent's private key.
43
+ *
44
+ * @param message - The message to sign (will be JSON stringified)
45
+ * @param privateKey - Agent's private key (hex string)
46
+ * @param signerDid - The DID of the signer
47
+ * @returns Signed message with signature and metadata
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * const signed = await signAgentMessage(
52
+ * { action: "book", hotelId: "123" },
53
+ * keys.privateKey,
54
+ * keys.didKey
55
+ * );
56
+ * ```
57
+ */
58
+ export declare function signAgentMessage<T>(message: T, privateKey: string, signerDid: string): Promise<SignedMessage<T>>;
59
+ /**
60
+ * Verify a signed message using the signer's public key.
61
+ *
62
+ * @param signedMessage - The signed message to verify
63
+ * @param publicKey - Signer's public key (hex string)
64
+ * @returns True if signature is valid
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const isValid = await verifyAgentSignature(signedMessage, publicKey);
69
+ * ```
70
+ */
71
+ export declare function verifyAgentSignature<T>(signedMessage: SignedMessage<T>, publicKey: string): Promise<boolean>;
72
+ /**
73
+ * Verify a signed message by resolving the signer's DID document.
74
+ * This is the main verification method for agent-to-agent authentication.
75
+ *
76
+ * @param signedMessage - The signed message to verify
77
+ * @param didDocument - The signer's resolved DID document
78
+ * @returns True if signature is valid and matches DID document
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * // Resolve DID first
83
+ * const didDoc = await client.resolveDID(signedMessage.signer);
84
+ *
85
+ * // Verify signature
86
+ * const isValid = await verifyAgentMessageWithDID(signedMessage, didDoc);
87
+ * if (!isValid) {
88
+ * throw new Error("Message signature invalid - not from claimed agent!");
89
+ * }
90
+ * ```
91
+ */
92
+ export declare function verifyAgentMessageWithDID<T>(signedMessage: SignedMessage<T>, didDocument: DIDDocument): Promise<boolean>;
93
+ //# sourceMappingURL=agent-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-signer.d.ts","sourceRoot":"","sources":["../../src/identity/agent-signer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,mCAAmC;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,YAAY,CAAC,CAwBlE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAsB3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,EAC/C,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,OAAO,CAAC,CAiClB"}
@@ -0,0 +1,288 @@
1
+ import * as ed25519 from "@noble/ed25519";
2
+ import { sha512 } from "@noble/hashes/sha2.js";
3
+ // Configure ed25519 to use sha512
4
+ ed25519.etc.sha512Sync = (...m) => sha512(ed25519.etc.concatBytes(...m));
5
+ /**
6
+ * Generate a new Ed25519 key pair for agent signing.
7
+ *
8
+ * @returns Key pair with private key, public key, and derived did:key
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const keys = await generateAgentKeyPair();
13
+ * console.log(keys.didKey); // did:key:z6Mk...
14
+ * // Store keys.privateKey securely!
15
+ * ```
16
+ */
17
+ export async function generateAgentKeyPair() {
18
+ const privateKey = ed25519.utils.randomPrivateKey();
19
+ const publicKey = await ed25519.getPublicKeyAsync(privateKey);
20
+ const privateKeyHex = bytesToHex(privateKey);
21
+ const publicKeyHex = bytesToHex(publicKey);
22
+ // Multibase encoding: 'z' prefix + base58btc
23
+ // For Ed25519, the multicodec prefix is 0xed01
24
+ const multicodecPrefix = new Uint8Array([0xed, 0x01]);
25
+ const publicKeyWithPrefix = new Uint8Array([
26
+ ...multicodecPrefix,
27
+ ...publicKey,
28
+ ]);
29
+ const publicKeyMultibase = "z" + base58btcEncode(publicKeyWithPrefix);
30
+ const didKey = `did:key:${publicKeyMultibase}`;
31
+ return {
32
+ privateKey: privateKeyHex,
33
+ publicKey: publicKeyHex,
34
+ publicKeyMultibase,
35
+ didKey,
36
+ };
37
+ }
38
+ /**
39
+ * Sign a message with an agent's private key.
40
+ *
41
+ * @param message - The message to sign (will be JSON stringified)
42
+ * @param privateKey - Agent's private key (hex string)
43
+ * @param signerDid - The DID of the signer
44
+ * @returns Signed message with signature and metadata
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const signed = await signAgentMessage(
49
+ * { action: "book", hotelId: "123" },
50
+ * keys.privateKey,
51
+ * keys.didKey
52
+ * );
53
+ * ```
54
+ */
55
+ export async function signAgentMessage(message, privateKey, signerDid) {
56
+ const timestamp = Date.now();
57
+ // Create canonical message to sign
58
+ const toSign = JSON.stringify({
59
+ payload: message,
60
+ signer: signerDid,
61
+ timestamp,
62
+ });
63
+ const messageBytes = new TextEncoder().encode(toSign);
64
+ const privateKeyBytes = hexToBytes(privateKey);
65
+ const signatureBytes = await ed25519.signAsync(messageBytes, privateKeyBytes);
66
+ const signature = bytesToHex(signatureBytes);
67
+ return {
68
+ payload: message,
69
+ signature,
70
+ signer: signerDid,
71
+ timestamp,
72
+ };
73
+ }
74
+ /**
75
+ * Verify a signed message using the signer's public key.
76
+ *
77
+ * @param signedMessage - The signed message to verify
78
+ * @param publicKey - Signer's public key (hex string)
79
+ * @returns True if signature is valid
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const isValid = await verifyAgentSignature(signedMessage, publicKey);
84
+ * ```
85
+ */
86
+ export async function verifyAgentSignature(signedMessage, publicKey) {
87
+ const { payload, signature, signer, timestamp } = signedMessage;
88
+ // Recreate the canonical message that was signed
89
+ const toVerify = JSON.stringify({
90
+ payload,
91
+ signer,
92
+ timestamp,
93
+ });
94
+ const messageBytes = new TextEncoder().encode(toVerify);
95
+ const signatureBytes = hexToBytes(signature);
96
+ const publicKeyBytes = hexToBytes(publicKey);
97
+ try {
98
+ return await ed25519.verifyAsync(signatureBytes, messageBytes, publicKeyBytes);
99
+ }
100
+ catch {
101
+ return false;
102
+ }
103
+ }
104
+ /**
105
+ * Verify a signed message by resolving the signer's DID document.
106
+ * This is the main verification method for agent-to-agent authentication.
107
+ *
108
+ * @param signedMessage - The signed message to verify
109
+ * @param didDocument - The signer's resolved DID document
110
+ * @returns True if signature is valid and matches DID document
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * // Resolve DID first
115
+ * const didDoc = await client.resolveDID(signedMessage.signer);
116
+ *
117
+ * // Verify signature
118
+ * const isValid = await verifyAgentMessageWithDID(signedMessage, didDoc);
119
+ * if (!isValid) {
120
+ * throw new Error("Message signature invalid - not from claimed agent!");
121
+ * }
122
+ * ```
123
+ */
124
+ export async function verifyAgentMessageWithDID(signedMessage, didDocument) {
125
+ // Verify DID document ID matches signer
126
+ if (didDocument.id !== signedMessage.signer) {
127
+ console.warn(`DID mismatch: message claims ${signedMessage.signer}, document is ${didDocument.id}`);
128
+ return false;
129
+ }
130
+ // Find verification method (public key) in DID document
131
+ const verificationMethods = didDocument.verificationMethod ?? [];
132
+ const authMethods = didDocument.authentication ?? [];
133
+ for (const method of verificationMethods) {
134
+ // Check if this method is authorized for authentication
135
+ // Authentication array contains string references to verification method IDs
136
+ const isAuthMethod = authMethods.some((auth) => auth === method.id);
137
+ if (!isAuthMethod && authMethods.length > 0) {
138
+ continue; // Skip non-auth methods if auth methods are specified
139
+ }
140
+ // Try to extract and verify with this key
141
+ const publicKey = extractPublicKey(method);
142
+ if (publicKey) {
143
+ const isValid = await verifyAgentSignature(signedMessage, publicKey);
144
+ if (isValid) {
145
+ return true;
146
+ }
147
+ }
148
+ }
149
+ return false;
150
+ }
151
+ /**
152
+ * Extract public key from a DID verification method.
153
+ */
154
+ function extractPublicKey(method) {
155
+ // Handle publicKeyMultibase (Ed25519VerificationKey2020, Multikey)
156
+ if (method.publicKeyMultibase) {
157
+ try {
158
+ const decoded = base58btcDecode(method.publicKeyMultibase.slice(1)); // Remove 'z' prefix
159
+ // Check for Ed25519 multicodec prefix (0xed01)
160
+ if (decoded[0] === 0xed && decoded[1] === 0x01) {
161
+ return bytesToHex(decoded.slice(2));
162
+ }
163
+ // No prefix, assume raw key
164
+ return bytesToHex(decoded);
165
+ }
166
+ catch {
167
+ return null;
168
+ }
169
+ }
170
+ // Handle publicKeyJwk
171
+ if (method.publicKeyJwk) {
172
+ const jwk = method.publicKeyJwk;
173
+ if (jwk.crv === "Ed25519" && jwk.x) {
174
+ try {
175
+ const keyBytes = base64urlDecode(jwk.x);
176
+ return bytesToHex(keyBytes);
177
+ }
178
+ catch {
179
+ return null;
180
+ }
181
+ }
182
+ }
183
+ return null;
184
+ }
185
+ // === Utility functions ===
186
+ function bytesToHex(bytes) {
187
+ return Array.from(bytes)
188
+ .map((b) => b.toString(16).padStart(2, "0"))
189
+ .join("");
190
+ }
191
+ function hexToBytes(hex) {
192
+ const bytes = new Uint8Array(hex.length / 2);
193
+ for (let i = 0; i < bytes.length; i++) {
194
+ bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
195
+ }
196
+ return bytes;
197
+ }
198
+ // Base58btc alphabet
199
+ const BASE58_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
200
+ function base58btcEncode(bytes) {
201
+ if (bytes.length === 0)
202
+ return "";
203
+ // Count leading zeros
204
+ let zeros = 0;
205
+ while (zeros < bytes.length && bytes[zeros] === 0) {
206
+ zeros++;
207
+ }
208
+ // Convert to base58
209
+ const size = Math.ceil((bytes.length * 138) / 100) + 1;
210
+ const b58 = new Uint8Array(size);
211
+ let length = 0;
212
+ for (let i = zeros; i < bytes.length; i++) {
213
+ let carry = bytes[i];
214
+ let j = 0;
215
+ for (let k = size - 1; (carry !== 0 || j < length) && k >= 0; k--, j++) {
216
+ carry += 256 * (b58[k] ?? 0);
217
+ b58[k] = carry % 58;
218
+ carry = Math.floor(carry / 58);
219
+ }
220
+ length = j;
221
+ }
222
+ // Skip leading zeros in base58 result
223
+ let start = size - length;
224
+ while (start < size && b58[start] === 0) {
225
+ start++;
226
+ }
227
+ // Build result
228
+ let result = "1".repeat(zeros);
229
+ for (let i = start; i < size; i++) {
230
+ result += BASE58_ALPHABET[b58[i]];
231
+ }
232
+ return result;
233
+ }
234
+ function base58btcDecode(str) {
235
+ if (str.length === 0)
236
+ return new Uint8Array(0);
237
+ // Count leading '1's (zeros in byte form)
238
+ let zeros = 0;
239
+ while (zeros < str.length && str[zeros] === "1") {
240
+ zeros++;
241
+ }
242
+ // Allocate enough space
243
+ const size = Math.ceil((str.length * 733) / 1000) + 1;
244
+ const bytes = new Uint8Array(size);
245
+ let length = 0;
246
+ for (let i = zeros; i < str.length; i++) {
247
+ const char = str[i];
248
+ let carry = BASE58_ALPHABET.indexOf(char);
249
+ if (carry === -1) {
250
+ throw new Error(`Invalid base58 character: ${char}`);
251
+ }
252
+ let j = 0;
253
+ for (let k = size - 1; (carry !== 0 || j < length) && k >= 0; k--, j++) {
254
+ carry += 58 * (bytes[k] ?? 0);
255
+ bytes[k] = carry % 256;
256
+ carry = Math.floor(carry / 256);
257
+ }
258
+ length = j;
259
+ }
260
+ // Skip leading zeros in result
261
+ let start = size - length;
262
+ while (start < size && bytes[start] === 0) {
263
+ start++;
264
+ }
265
+ // Build final result with leading zeros
266
+ const result = new Uint8Array(zeros + (size - start));
267
+ for (let i = 0; i < zeros; i++) {
268
+ result[i] = 0;
269
+ }
270
+ for (let i = start; i < size; i++) {
271
+ result[zeros + i - start] = bytes[i];
272
+ }
273
+ return result;
274
+ }
275
+ function base64urlDecode(str) {
276
+ // Add padding if needed
277
+ const padded = str + "=".repeat((4 - (str.length % 4)) % 4);
278
+ // Convert base64url to base64
279
+ const base64 = padded.replace(/-/g, "+").replace(/_/g, "/");
280
+ // Decode
281
+ const binary = atob(base64);
282
+ const bytes = new Uint8Array(binary.length);
283
+ for (let i = 0; i < binary.length; i++) {
284
+ bytes[i] = binary.charCodeAt(i);
285
+ }
286
+ return bytes;
287
+ }
288
+ //# sourceMappingURL=agent-signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-signer.js","sourceRoot":"","sources":["../../src/identity/agent-signer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type DID, type DIDDocument } from "@a2aletheia/types";
2
+ export declare class DIDResolver {
3
+ /**
4
+ * Resolve a did:web DID by fetching https://<domain>/.well-known/did.json
5
+ */
6
+ resolveWeb(did: DID): Promise<DIDDocument>;
7
+ /**
8
+ * Resolve a did:key DID by constructing a DID Document from the key.
9
+ * Supports Ed25519 and secp256k1 multicodec keys.
10
+ */
11
+ resolveKey(did: DID): Promise<DIDDocument>;
12
+ /**
13
+ * Resolve any supported DID method.
14
+ */
15
+ resolve(did: DID): Promise<DIDDocument>;
16
+ }
17
+ //# sourceMappingURL=did-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-resolver.d.ts","sourceRoot":"","sources":["../../src/identity/did-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,WAAW;IACtB;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IA6BhD;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IA0BhD;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;CAa9C"}
@@ -0,0 +1,73 @@
1
+ import { DIDDocumentSchema, } from "@a2aletheia/types";
2
+ export class DIDResolver {
3
+ /**
4
+ * Resolve a did:web DID by fetching https://<domain>/.well-known/did.json
5
+ */
6
+ async resolveWeb(did) {
7
+ // did:web:example.com -> https://example.com/.well-known/did.json
8
+ // did:web:example.com:path:to -> https://example.com/path/to/did.json
9
+ const parts = did.split(":").slice(2);
10
+ if (parts.length === 0) {
11
+ throw new Error(`Invalid did:web DID: ${did}`);
12
+ }
13
+ const domain = decodeURIComponent(parts[0]);
14
+ const pathParts = parts.slice(1).map(decodeURIComponent);
15
+ let url;
16
+ if (pathParts.length === 0) {
17
+ url = `https://${domain}/.well-known/did.json`;
18
+ }
19
+ else {
20
+ url = `https://${domain}/${pathParts.join("/")}/did.json`;
21
+ }
22
+ const response = await fetch(url);
23
+ if (!response.ok) {
24
+ throw new Error(`Failed to resolve did:web ${did}: HTTP ${response.status}`);
25
+ }
26
+ const data = await response.json();
27
+ return DIDDocumentSchema.parse(data);
28
+ }
29
+ /**
30
+ * Resolve a did:key DID by constructing a DID Document from the key.
31
+ * Supports Ed25519 and secp256k1 multicodec keys.
32
+ */
33
+ async resolveKey(did) {
34
+ const multibaseKey = did.split(":")[2];
35
+ if (!multibaseKey) {
36
+ throw new Error(`Invalid did:key DID: ${did}`);
37
+ }
38
+ // Construct a minimal DID Document
39
+ return {
40
+ "@context": [
41
+ "https://www.w3.org/ns/did/v1",
42
+ "https://w3id.org/security/multikey/v1",
43
+ ],
44
+ id: did,
45
+ verificationMethod: [
46
+ {
47
+ id: `${did}#${multibaseKey}`,
48
+ type: "Multikey",
49
+ controller: did,
50
+ publicKeyMultibase: multibaseKey,
51
+ },
52
+ ],
53
+ authentication: [`${did}#${multibaseKey}`],
54
+ assertionMethod: [`${did}#${multibaseKey}`],
55
+ };
56
+ }
57
+ /**
58
+ * Resolve any supported DID method.
59
+ */
60
+ async resolve(did) {
61
+ const parts = did.split(":");
62
+ const method = parts[1];
63
+ switch (method) {
64
+ case "web":
65
+ return this.resolveWeb(did);
66
+ case "key":
67
+ return this.resolveKey(did);
68
+ default:
69
+ throw new Error(`Unsupported DID method: ${method}`);
70
+ }
71
+ }
72
+ }
73
+ //# sourceMappingURL=did-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-resolver.js","sourceRoot":"","sources":["../../src/identity/did-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,OAAO,WAAW;IACtB;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,GAAQ;QACvB,kEAAkE;QAClE,sEAAsE;QACtE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEzD,IAAI,GAAW,CAAC;QAChB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,GAAG,GAAG,WAAW,MAAM,uBAAuB,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,WAAW,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAC5D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,6BAA6B,GAAG,UAAU,QAAQ,CAAC,MAAM,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5C,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,GAAQ;QACvB,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,mCAAmC;QACnC,OAAO;YACL,UAAU,EAAE;gBACV,8BAA8B;gBAC9B,uCAAuC;aACxC;YACD,EAAE,EAAE,GAAG;YACP,kBAAkB,EAAE;gBAClB;oBACE,EAAE,EAAE,GAAG,GAAG,IAAI,YAAY,EAAE;oBAC5B,IAAI,EAAE,UAAU;oBAChB,UAAU,EAAE,GAAG;oBACf,kBAAkB,EAAE,YAAY;iBACjC;aACF;YACD,cAAc,EAAE,CAAC,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;YAC1C,eAAe,EAAE,CAAC,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAExB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B;gBACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export { DIDResolver } from "./did-resolver.js";
2
+ export { ManifestFetcher } from "./manifest-fetcher.js";
3
+ export { generateAgentKeyPair, signAgentMessage, verifyAgentSignature, verifyAgentMessageWithDID, type AgentKeyPair, type SignedMessage, } from "./agent-signer.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { DIDResolver } from "./did-resolver.js";
2
+ export { ManifestFetcher } from "./manifest-fetcher.js";
3
+ export { generateAgentKeyPair, signAgentMessage, verifyAgentSignature, verifyAgentMessageWithDID, } from "./agent-signer.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,GAG1B,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type AgentManifest } from "@a2aletheia/types";
2
+ export declare class ManifestFetcher {
3
+ /**
4
+ * Fetch and validate an agent manifest from a .well-known/agent.json URL.
5
+ */
6
+ fetch(baseUrl: string): Promise<AgentManifest>;
7
+ /**
8
+ * Fetch manifest from an arbitrary URL (not necessarily .well-known).
9
+ */
10
+ fetchFromUrl(manifestUrl: string): Promise<AgentManifest>;
11
+ }
12
+ //# sourceMappingURL=manifest-fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-fetcher.d.ts","sourceRoot":"","sources":["../../src/identity/manifest-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5E,qBAAa,eAAe;IAC1B;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAcpD;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAYhE"}
@@ -0,0 +1,27 @@
1
+ import { AgentManifestSchema } from "@a2aletheia/types";
2
+ export class ManifestFetcher {
3
+ /**
4
+ * Fetch and validate an agent manifest from a .well-known/agent.json URL.
5
+ */
6
+ async fetch(baseUrl) {
7
+ const url = new URL("/.well-known/agent.json", baseUrl);
8
+ const response = await fetch(url.toString());
9
+ if (!response.ok) {
10
+ throw new Error(`Failed to fetch manifest from ${url}: HTTP ${response.status}`);
11
+ }
12
+ const data = await response.json();
13
+ return AgentManifestSchema.parse(data);
14
+ }
15
+ /**
16
+ * Fetch manifest from an arbitrary URL (not necessarily .well-known).
17
+ */
18
+ async fetchFromUrl(manifestUrl) {
19
+ const response = await fetch(manifestUrl);
20
+ if (!response.ok) {
21
+ throw new Error(`Failed to fetch manifest from ${manifestUrl}: HTTP ${response.status}`);
22
+ }
23
+ const data = await response.json();
24
+ return AgentManifestSchema.parse(data);
25
+ }
26
+ }
27
+ //# sourceMappingURL=manifest-fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-fetcher.js","sourceRoot":"","sources":["../../src/identity/manifest-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAsB,MAAM,mBAAmB,CAAC;AAE5E,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,iCAAiC,GAAG,UAAU,QAAQ,CAAC,MAAM,EAAE,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5C,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,iCAAiC,WAAW,UAAU,QAAQ,CAAC,MAAM,EAAE,CACxE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5C,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ export { AletheiaClient, type AletheiaClientConfig } from "./client.js";
2
+ export { DIDResolver } from "./identity/did-resolver.js";
3
+ export { ManifestFetcher } from "./identity/manifest-fetcher.js";
4
+ export { generateAgentKeyPair, signAgentMessage, verifyAgentSignature, verifyAgentMessageWithDID, type AgentKeyPair, type SignedMessage, } from "./identity/agent-signer.js";
5
+ export { RatingClient } from "./reputation/rating-client.js";
6
+ export { solvePoWChallenge } from "./reputation/pow-solver.js";
7
+ export { AuditClient } from "./security/audit-client.js";
8
+ export { signRatingPayload, verifyRatingSignature, hashRatingPayload, type SignedPayload, type RatingPayloadMessage, } from "./utils/signing.js";
9
+ export { HttpClient } from "./utils/http.js";
10
+ export { ConsoleLogger, NoopLogger, EventEmitter } from "./logger/index.js";
11
+ export { calculate, calculatorToolDefinition, getCurrentTime, getCurrentTimeToolDefinition, convertUnits, convertUnitsToolDefinition, generateUUID, uuidGeneratorToolDefinition, aletheiaToolDefinitions, aletheiaToolExecutors, type CalculatorInput, type CalculatorResult, type CurrentTimeResult, type CryptoUnit, type TimeUnit, type DataUnit, type SupportedUnit, type UnitCategory, type UnitConversionInput, type UnitConversionResult, type UUIDResult, } from "./tools/index.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,EAEL,SAAS,EACT,wBAAwB,EACxB,cAAc,EACd,4BAA4B,EAC5B,YAAY,EACZ,0BAA0B,EAC1B,YAAY,EACZ,2BAA2B,EAE3B,uBAAuB,EACvB,qBAAqB,EAErB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ export { AletheiaClient } from "./client.js";
2
+ export { DIDResolver } from "./identity/did-resolver.js";
3
+ export { ManifestFetcher } from "./identity/manifest-fetcher.js";
4
+ export { generateAgentKeyPair, signAgentMessage, verifyAgentSignature, verifyAgentMessageWithDID, } from "./identity/agent-signer.js";
5
+ export { RatingClient } from "./reputation/rating-client.js";
6
+ export { solvePoWChallenge } from "./reputation/pow-solver.js";
7
+ export { AuditClient } from "./security/audit-client.js";
8
+ export { signRatingPayload, verifyRatingSignature, hashRatingPayload, } from "./utils/signing.js";
9
+ export { HttpClient } from "./utils/http.js";
10
+ // Logger — BYOL (Bring Your Own Logger)
11
+ export { ConsoleLogger, NoopLogger, EventEmitter } from "./logger/index.js";
12
+ // Tools — LangChain / Vercel AI SDK / OpenAI-compatible tool definitions
13
+ export {
14
+ // Individual tools
15
+ calculate, calculatorToolDefinition, getCurrentTime, getCurrentTimeToolDefinition, convertUnits, convertUnitsToolDefinition, generateUUID, uuidGeneratorToolDefinition,
16
+ // Convenience collections
17
+ aletheiaToolDefinitions, aletheiaToolExecutors, } from "./tools/index.js";
18
+ // NOTE: Agent hosting exports are available via "@a2aletheia/sdk/agent"
19
+ // This keeps the main export browser-safe (no Node.js dependencies)
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6B,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,GAG1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAGlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,wCAAwC;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5E,yEAAyE;AACzE,OAAO;AACL,mBAAmB;AACnB,SAAS,EACT,wBAAwB,EACxB,cAAc,EACd,4BAA4B,EAC5B,YAAY,EACZ,0BAA0B,EAC1B,YAAY,EACZ,2BAA2B;AAC3B,0BAA0B;AAC1B,uBAAuB,EACvB,qBAAqB,GAatB,MAAM,kBAAkB,CAAC;AAE1B,wEAAwE;AACxE,oEAAoE"}
@@ -0,0 +1,20 @@
1
+ import type { AletheiaLogger, AletheiaLogLevel } from "@a2aletheia/types";
2
+ /**
3
+ * Default logger that writes to the console with level filtering.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const logger = new ConsoleLogger("debug");
8
+ * logger.info("Agent started", { port: 4000 });
9
+ * // [aletheia:info] Agent started { port: 4000 }
10
+ * ```
11
+ */
12
+ export declare class ConsoleLogger implements AletheiaLogger {
13
+ private readonly minLevel;
14
+ constructor(level?: AletheiaLogLevel);
15
+ debug(message: string, context?: Record<string, unknown>): void;
16
+ info(message: string, context?: Record<string, unknown>): void;
17
+ warn(message: string, context?: Record<string, unknown>): void;
18
+ error(message: string, context?: Record<string, unknown>): void;
19
+ }
20
+ //# sourceMappingURL=console-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-logger.d.ts","sourceRoot":"","sources":["../../src/logger/console-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAS1E;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,KAAK,GAAE,gBAAyB;IAI5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAKhE"}