@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,43 @@
1
+ const LEVEL_PRIORITY = {
2
+ debug: 0,
3
+ info: 1,
4
+ warn: 2,
5
+ error: 3,
6
+ };
7
+ /**
8
+ * Default logger that writes to the console with level filtering.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const logger = new ConsoleLogger("debug");
13
+ * logger.info("Agent started", { port: 4000 });
14
+ * // [aletheia:info] Agent started { port: 4000 }
15
+ * ```
16
+ */
17
+ export class ConsoleLogger {
18
+ minLevel;
19
+ constructor(level = "info") {
20
+ this.minLevel = LEVEL_PRIORITY[level];
21
+ }
22
+ debug(message, context) {
23
+ if (this.minLevel <= LEVEL_PRIORITY.debug) {
24
+ console.debug(`[aletheia:debug] ${message}`, context ?? "");
25
+ }
26
+ }
27
+ info(message, context) {
28
+ if (this.minLevel <= LEVEL_PRIORITY.info) {
29
+ console.info(`[aletheia:info] ${message}`, context ?? "");
30
+ }
31
+ }
32
+ warn(message, context) {
33
+ if (this.minLevel <= LEVEL_PRIORITY.warn) {
34
+ console.warn(`[aletheia:warn] ${message}`, context ?? "");
35
+ }
36
+ }
37
+ error(message, context) {
38
+ if (this.minLevel <= LEVEL_PRIORITY.error) {
39
+ console.error(`[aletheia:error] ${message}`, context ?? "");
40
+ }
41
+ }
42
+ }
43
+ //# sourceMappingURL=console-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-logger.js","sourceRoot":"","sources":["../../src/logger/console-logger.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAqC;IACvD,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;IACP,QAAQ,CAAS;IAElC,YAAY,QAA0B,MAAM;QAC1C,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAiC;QACtD,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,OAAiC;QACrD,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,mBAAmB,OAAO,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,OAAiC;QACrD,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,mBAAmB,OAAO,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAiC;QACtD,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ import type { AletheiaEventType, AletheiaEventHandler } from "@a2aletheia/types";
2
+ /**
3
+ * Lightweight event emitter for Aletheia lifecycle events.
4
+ *
5
+ * Supports specific event types and a `"*"` wildcard that receives all events.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const emitter = new EventEmitter();
10
+ *
11
+ * // Listen to specific event
12
+ * const unsub = emitter.on("agent.start", (event) => {
13
+ * console.log("Agent started at", event.timestamp);
14
+ * });
15
+ *
16
+ * // Listen to all events (wildcard)
17
+ * emitter.on("*", (event) => {
18
+ * metrics.increment(`aletheia.${event.type}`);
19
+ * });
20
+ *
21
+ * // Emit
22
+ * emitter.emit("agent.start", { port: 4000 });
23
+ *
24
+ * // Unsubscribe
25
+ * unsub();
26
+ * ```
27
+ */
28
+ export declare class EventEmitter {
29
+ private readonly handlers;
30
+ /**
31
+ * Subscribe to an event type. Returns an unsubscribe function.
32
+ */
33
+ on(event: AletheiaEventType | "*", handler: AletheiaEventHandler): () => void;
34
+ /**
35
+ * Emit an event to all registered handlers (specific + wildcard).
36
+ */
37
+ emit(type: AletheiaEventType, data?: Record<string, unknown>): void;
38
+ }
39
+ //# sourceMappingURL=event-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../src/logger/event-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGrB;IAEJ;;OAEG;IACH,EAAE,CACA,KAAK,EAAE,iBAAiB,GAAG,GAAG,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,MAAM,IAAI;IAUb;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAKpE"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Lightweight event emitter for Aletheia lifecycle events.
3
+ *
4
+ * Supports specific event types and a `"*"` wildcard that receives all events.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const emitter = new EventEmitter();
9
+ *
10
+ * // Listen to specific event
11
+ * const unsub = emitter.on("agent.start", (event) => {
12
+ * console.log("Agent started at", event.timestamp);
13
+ * });
14
+ *
15
+ * // Listen to all events (wildcard)
16
+ * emitter.on("*", (event) => {
17
+ * metrics.increment(`aletheia.${event.type}`);
18
+ * });
19
+ *
20
+ * // Emit
21
+ * emitter.emit("agent.start", { port: 4000 });
22
+ *
23
+ * // Unsubscribe
24
+ * unsub();
25
+ * ```
26
+ */
27
+ export class EventEmitter {
28
+ handlers = new Map();
29
+ /**
30
+ * Subscribe to an event type. Returns an unsubscribe function.
31
+ */
32
+ on(event, handler) {
33
+ if (!this.handlers.has(event)) {
34
+ this.handlers.set(event, new Set());
35
+ }
36
+ this.handlers.get(event).add(handler);
37
+ return () => {
38
+ this.handlers.get(event)?.delete(handler);
39
+ };
40
+ }
41
+ /**
42
+ * Emit an event to all registered handlers (specific + wildcard).
43
+ */
44
+ emit(type, data) {
45
+ const event = { type, timestamp: new Date(), data };
46
+ this.handlers.get(type)?.forEach((h) => h(event));
47
+ this.handlers.get("*")?.forEach((h) => h(event));
48
+ }
49
+ }
50
+ //# sourceMappingURL=event-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../src/logger/event-emitter.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,YAAY;IACN,QAAQ,GAAG,IAAI,GAAG,EAGhC,CAAC;IAEJ;;OAEG;IACH,EAAE,CACA,KAA8B,EAC9B,OAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,IAAuB,EAAE,IAA8B;QAC1D,MAAM,KAAK,GAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export { ConsoleLogger } from "./console-logger.js";
2
+ export { NoopLogger } from "./noop-logger.js";
3
+ export { EventEmitter } from "./event-emitter.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { ConsoleLogger } from "./console-logger.js";
2
+ export { NoopLogger } from "./noop-logger.js";
3
+ export { EventEmitter } from "./event-emitter.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { AletheiaLogger } from "@a2aletheia/types";
2
+ /**
3
+ * Silent logger that discards all output.
4
+ * Use when you want to suppress SDK logging entirely.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const agent = new AletheiaAgent({
9
+ * logger: new NoopLogger(),
10
+ * // ...
11
+ * });
12
+ * ```
13
+ */
14
+ export declare class NoopLogger implements AletheiaLogger {
15
+ debug(): void;
16
+ info(): void;
17
+ warn(): void;
18
+ error(): void;
19
+ }
20
+ //# sourceMappingURL=noop-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop-logger.d.ts","sourceRoot":"","sources":["../../src/logger/noop-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,KAAK,IAAI,IAAI;IACb,IAAI,IAAI,IAAI;IACZ,IAAI,IAAI,IAAI;IACZ,KAAK,IAAI,IAAI;CACd"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Silent logger that discards all output.
3
+ * Use when you want to suppress SDK logging entirely.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const agent = new AletheiaAgent({
8
+ * logger: new NoopLogger(),
9
+ * // ...
10
+ * });
11
+ * ```
12
+ */
13
+ export class NoopLogger {
14
+ debug() { }
15
+ info() { }
16
+ warn() { }
17
+ error() { }
18
+ }
19
+ //# sourceMappingURL=noop-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop-logger.js","sourceRoot":"","sources":["../../src/logger/noop-logger.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAU;IACrB,KAAK,KAAU,CAAC;IAChB,IAAI,KAAU,CAAC;IACf,IAAI,KAAU,CAAC;IACf,KAAK,KAAU,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export { RatingClient } from "./rating-client.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reputation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RatingClient } from "./rating-client.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reputation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Client-side SHA-256 Proof of Work solver.
3
+ *
4
+ * Iteratively hashes `challenge + nonce` until the result has enough
5
+ * leading zero bits to meet the specified difficulty.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const challenge = await client.requestRatingChallenge(targetDid);
10
+ * const { nonce, hash } = await solvePoWChallenge(
11
+ * challenge.challenge,
12
+ * challenge.difficulty,
13
+ * );
14
+ * ```
15
+ */
16
+ export declare function solvePoWChallenge(challenge: string, difficulty: number): Promise<{
17
+ nonce: string;
18
+ hash: string;
19
+ }>;
20
+ //# sourceMappingURL=pow-solver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pow-solver.d.ts","sourceRoot":"","sources":["../../src/reputation/pow-solver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB1C"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Client-side SHA-256 Proof of Work solver.
3
+ *
4
+ * Iteratively hashes `challenge + nonce` until the result has enough
5
+ * leading zero bits to meet the specified difficulty.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const challenge = await client.requestRatingChallenge(targetDid);
10
+ * const { nonce, hash } = await solvePoWChallenge(
11
+ * challenge.challenge,
12
+ * challenge.difficulty,
13
+ * );
14
+ * ```
15
+ */
16
+ export async function solvePoWChallenge(challenge, difficulty) {
17
+ let nonce = 0n;
18
+ while (true) {
19
+ const nonceHex = nonce.toString(16);
20
+ const input = new TextEncoder().encode(challenge + nonceHex);
21
+ const hashBuffer = await crypto.subtle.digest("SHA-256", input);
22
+ const hashArray = new Uint8Array(hashBuffer);
23
+ const hashHex = Array.from(hashArray)
24
+ .map((b) => b.toString(16).padStart(2, "0"))
25
+ .join("");
26
+ if (hasLeadingZeros(hashHex, difficulty)) {
27
+ return { nonce: nonceHex, hash: "0x" + hashHex };
28
+ }
29
+ nonce++;
30
+ }
31
+ }
32
+ function hasLeadingZeros(hex, bits) {
33
+ const fullBytes = Math.floor(bits / 8);
34
+ const remainingBits = bits % 8;
35
+ for (let i = 0; i < fullBytes; i++) {
36
+ if (hex[i * 2] !== "0" || hex[i * 2 + 1] !== "0")
37
+ return false;
38
+ }
39
+ if (remainingBits > 0) {
40
+ const byte = parseInt(hex.substring(fullBytes * 2, fullBytes * 2 + 2), 16);
41
+ if (byte >= 1 << (8 - remainingBits))
42
+ return false;
43
+ }
44
+ return true;
45
+ }
46
+ //# sourceMappingURL=pow-solver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pow-solver.js","sourceRoot":"","sources":["../../src/reputation/pow-solver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,UAAkB;IAElB,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,IAAI,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,CAAC;QACnD,CAAC;QAED,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,IAAY;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;IACjE,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CACnB,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAC/C,EAAE,CACH,CAAC;QACF,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { Rating, CreateRatingInput, TrustScore, PoWChallenge, DID, PaginatedResponse } from "@a2aletheia/types";
2
+ import type { HttpClient } from "../utils/http.js";
3
+ /**
4
+ * Client for the Aletheia reputation API.
5
+ */
6
+ export declare class RatingClient {
7
+ private http;
8
+ constructor(http: HttpClient);
9
+ /**
10
+ * Request a PoW challenge for rating submission.
11
+ * Requires authentication.
12
+ */
13
+ requestChallenge(targetDid: DID): Promise<PoWChallenge>;
14
+ /**
15
+ * Submit a rating with PoW proof and interaction proofs.
16
+ * Requires authentication.
17
+ */
18
+ submitRating(input: CreateRatingInput): Promise<Rating>;
19
+ /**
20
+ * Get the trust score for an agent.
21
+ */
22
+ getTrustScore(did: DID): Promise<TrustScore>;
23
+ /**
24
+ * Get paginated ratings received by an agent.
25
+ */
26
+ getRatingsForAgent(did: DID, page?: number, limit?: number): Promise<PaginatedResponse<Rating>>;
27
+ /**
28
+ * Check cooldown status for a rating pair.
29
+ */
30
+ checkCooldown(fromDid: DID, toDid: DID): Promise<{
31
+ allowed: boolean;
32
+ expiresAt?: string;
33
+ }>;
34
+ }
35
+ //# sourceMappingURL=rating-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rating-client.d.ts","sourceRoot":"","sources":["../../src/reputation/rating-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,GAAG,EACH,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;;OAGG;IACG,gBAAgB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAM7D;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7D;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAMlD;;OAEG;IACG,kBAAkB,CACtB,GAAG,EAAE,GAAG,EACR,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAOrC;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,GAAG,GACT,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAKrD"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Client for the Aletheia reputation API.
3
+ */
4
+ export class RatingClient {
5
+ http;
6
+ constructor(http) {
7
+ this.http = http;
8
+ }
9
+ /**
10
+ * Request a PoW challenge for rating submission.
11
+ * Requires authentication.
12
+ */
13
+ async requestChallenge(targetDid) {
14
+ return this.http.post("/api/ratings/challenge", {
15
+ targetDid,
16
+ });
17
+ }
18
+ /**
19
+ * Submit a rating with PoW proof and interaction proofs.
20
+ * Requires authentication.
21
+ */
22
+ async submitRating(input) {
23
+ return this.http.post("/api/ratings", input);
24
+ }
25
+ /**
26
+ * Get the trust score for an agent.
27
+ */
28
+ async getTrustScore(did) {
29
+ return this.http.get(`/api/ratings/${encodeURIComponent(did)}/score`);
30
+ }
31
+ /**
32
+ * Get paginated ratings received by an agent.
33
+ */
34
+ async getRatingsForAgent(did, page, limit) {
35
+ const params = { did };
36
+ if (page !== undefined)
37
+ params.page = String(page);
38
+ if (limit !== undefined)
39
+ params.limit = String(limit);
40
+ return this.http.get("/api/ratings", params);
41
+ }
42
+ /**
43
+ * Check cooldown status for a rating pair.
44
+ */
45
+ async checkCooldown(fromDid, toDid) {
46
+ return this.http.get(`/api/ratings/${encodeURIComponent(toDid)}/cooldown`, {
47
+ fromDid,
48
+ });
49
+ }
50
+ }
51
+ //# sourceMappingURL=rating-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rating-client.js","sourceRoot":"","sources":["../../src/reputation/rating-client.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,OAAO,YAAY;IACH;IAApB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,SAAc;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAe,wBAAwB,EAAE;YAC5D,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,KAAwB;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAS,cAAc,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,GAAQ;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,GAAQ,EACR,IAAa,EACb,KAAc;QAEd,MAAM,MAAM,GAA2B,EAAE,GAAG,EAAE,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA4B,cAAc,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,OAAY,EACZ,KAAU;QAEV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE;YACzE,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { AuditReport, DID } from "@a2aletheia/types";
2
+ import type { HttpClient } from "../utils/http.js";
3
+ /**
4
+ * Client for security/audit endpoints.
5
+ * Stub implementation -- Phase 3.
6
+ */
7
+ export declare class AuditClient {
8
+ private http;
9
+ constructor(http: HttpClient);
10
+ requestAudit(_did: DID): Promise<AuditReport>;
11
+ getAuditReport(_reportId: string): Promise<AuditReport>;
12
+ getAuditHistory(_did: DID): Promise<{
13
+ items: AuditReport[];
14
+ total: number;
15
+ }>;
16
+ }
17
+ //# sourceMappingURL=audit-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-client.d.ts","sourceRoot":"","sources":["../../src/security/audit-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;GAGG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE9B,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IAI7C,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIvD,eAAe,CACnB,IAAI,EAAE,GAAG,GACR,OAAO,CAAC;QAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAGpD"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Client for security/audit endpoints.
3
+ * Stub implementation -- Phase 3.
4
+ */
5
+ export class AuditClient {
6
+ http;
7
+ constructor(http) {
8
+ this.http = http;
9
+ }
10
+ async requestAudit(_did) {
11
+ throw new Error("Not implemented: Phase 3");
12
+ }
13
+ async getAuditReport(_reportId) {
14
+ throw new Error("Not implemented: Phase 3");
15
+ }
16
+ async getAuditHistory(_did) {
17
+ throw new Error("Not implemented: Phase 3");
18
+ }
19
+ }
20
+ //# sourceMappingURL=audit-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-client.js","sourceRoot":"","sources":["../../src/security/audit-client.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,KAAK,CAAC,YAAY,CAAC,IAAS;QAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAAS;QAET,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { AuditClient } from "./audit-client.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AuditClient } from "./audit-client.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,29 @@
1
+ export interface CalculatorInput {
2
+ expression: string;
3
+ }
4
+ export interface CalculatorResult {
5
+ tool: "calculator";
6
+ input: string;
7
+ result: number;
8
+ }
9
+ export declare function calculate(expression: string): CalculatorResult;
10
+ export declare const calculatorToolDefinition: {
11
+ type: "function";
12
+ function: {
13
+ name: string;
14
+ description: string;
15
+ parameters: {
16
+ type: "object";
17
+ properties: {
18
+ expression: {
19
+ type: "string";
20
+ description: string;
21
+ };
22
+ };
23
+ required: readonly ["expression"];
24
+ additionalProperties: false;
25
+ };
26
+ };
27
+ execute: (input: CalculatorInput) => CalculatorResult;
28
+ };
29
+ //# sourceMappingURL=calculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../src/tools/calculator.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AA0UD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAyB9D;AAID,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;qBAmBlB,eAAe,KAAG,gBAAgB;CAEpD,CAAC"}