@kaleidorg/wallet-engine 1.0.0-beta.4 → 1.0.0-beta.42

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 (242) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -10
  3. package/dist/adapters/ArkadeAdapter.d.ts +78 -14
  4. package/dist/adapters/ArkadeAdapter.d.ts.map +1 -1
  5. package/dist/adapters/ArkadeAdapter.js +653 -161
  6. package/dist/adapters/ArkadeAdapter.js.map +1 -1
  7. package/dist/adapters/IProtocolAdapter.d.ts +195 -18
  8. package/dist/adapters/IProtocolAdapter.d.ts.map +1 -1
  9. package/dist/adapters/IProtocolAdapter.js +6 -2
  10. package/dist/adapters/IProtocolAdapter.js.map +1 -1
  11. package/dist/adapters/RgbAdapter.d.ts +70 -27
  12. package/dist/adapters/RgbAdapter.d.ts.map +1 -1
  13. package/dist/adapters/RgbAdapter.js +464 -370
  14. package/dist/adapters/RgbAdapter.js.map +1 -1
  15. package/dist/adapters/SparkAdapter.d.ts +93 -15
  16. package/dist/adapters/SparkAdapter.d.ts.map +1 -1
  17. package/dist/adapters/SparkAdapter.js +833 -168
  18. package/dist/adapters/SparkAdapter.js.map +1 -1
  19. package/dist/adapters/arkade.d.ts +15 -0
  20. package/dist/adapters/arkade.d.ts.map +1 -0
  21. package/dist/adapters/arkade.js +15 -0
  22. package/dist/adapters/arkade.js.map +1 -0
  23. package/dist/adapters/flashnet.d.ts +15 -0
  24. package/dist/adapters/flashnet.d.ts.map +1 -0
  25. package/dist/adapters/flashnet.js +17 -0
  26. package/dist/adapters/flashnet.js.map +1 -0
  27. package/dist/adapters/native.d.ts +17 -0
  28. package/dist/adapters/native.d.ts.map +1 -0
  29. package/dist/adapters/native.js +17 -0
  30. package/dist/adapters/native.js.map +1 -0
  31. package/dist/adapters/rgb.d.ts +11 -0
  32. package/dist/adapters/rgb.d.ts.map +1 -0
  33. package/dist/adapters/rgb.js +11 -0
  34. package/dist/adapters/rgb.js.map +1 -0
  35. package/dist/adapters/spark.d.ts +12 -0
  36. package/dist/adapters/spark.d.ts.map +1 -0
  37. package/dist/adapters/spark.js +14 -0
  38. package/dist/adapters/spark.js.map +1 -0
  39. package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts +53 -19
  40. package/dist/adapters/wdk/ArkadeWdkAdapter.d.ts.map +1 -1
  41. package/dist/adapters/wdk/ArkadeWdkAdapter.js +366 -90
  42. package/dist/adapters/wdk/ArkadeWdkAdapter.js.map +1 -1
  43. package/dist/adapters/wdk/BaseWdkAdapter.d.ts +40 -0
  44. package/dist/adapters/wdk/BaseWdkAdapter.d.ts.map +1 -0
  45. package/dist/adapters/wdk/BaseWdkAdapter.js +71 -0
  46. package/dist/adapters/wdk/BaseWdkAdapter.js.map +1 -0
  47. package/dist/adapters/wdk/LiquidWdkAdapter.d.ts +6 -13
  48. package/dist/adapters/wdk/LiquidWdkAdapter.d.ts.map +1 -1
  49. package/dist/adapters/wdk/LiquidWdkAdapter.js +14 -32
  50. package/dist/adapters/wdk/LiquidWdkAdapter.js.map +1 -1
  51. package/dist/adapters/wdk/RgbCore.d.ts +64 -0
  52. package/dist/adapters/wdk/RgbCore.d.ts.map +1 -0
  53. package/dist/adapters/wdk/RgbCore.js +111 -0
  54. package/dist/adapters/wdk/RgbCore.js.map +1 -0
  55. package/dist/adapters/wdk/RgbLibWasmAdapter.d.ts +277 -0
  56. package/dist/adapters/wdk/RgbLibWasmAdapter.d.ts.map +1 -0
  57. package/dist/adapters/wdk/RgbLibWasmAdapter.js +731 -0
  58. package/dist/adapters/wdk/RgbLibWasmAdapter.js.map +1 -0
  59. package/dist/adapters/wdk/RgbLibWdkAdapter.d.ts +104 -0
  60. package/dist/adapters/wdk/RgbLibWdkAdapter.d.ts.map +1 -0
  61. package/dist/adapters/wdk/RgbLibWdkAdapter.js +249 -0
  62. package/dist/adapters/wdk/RgbLibWdkAdapter.js.map +1 -0
  63. package/dist/adapters/wdk/RlnWdkAdapter.d.ts +27 -14
  64. package/dist/adapters/wdk/RlnWdkAdapter.d.ts.map +1 -1
  65. package/dist/adapters/wdk/RlnWdkAdapter.js +124 -89
  66. package/dist/adapters/wdk/RlnWdkAdapter.js.map +1 -1
  67. package/dist/adapters/wdk/SparkWdkAdapter.d.ts +74 -41
  68. package/dist/adapters/wdk/SparkWdkAdapter.d.ts.map +1 -1
  69. package/dist/adapters/wdk/SparkWdkAdapter.js +706 -249
  70. package/dist/adapters/wdk/SparkWdkAdapter.js.map +1 -1
  71. package/dist/adapters/wdk/index.d.ts +17 -0
  72. package/dist/adapters/wdk/index.d.ts.map +1 -0
  73. package/dist/adapters/wdk/index.js +17 -0
  74. package/dist/adapters/wdk/index.js.map +1 -0
  75. package/dist/adapters/wdk/wasm-rgb.d.ts +15 -0
  76. package/dist/adapters/wdk/wasm-rgb.d.ts.map +1 -0
  77. package/dist/adapters/wdk/wasm-rgb.js +15 -0
  78. package/dist/adapters/wdk/wasm-rgb.js.map +1 -0
  79. package/dist/capabilities/index.d.ts +1 -1
  80. package/dist/capabilities/index.d.ts.map +1 -1
  81. package/dist/capabilities/index.js +17 -2
  82. package/dist/capabilities/index.js.map +1 -1
  83. package/dist/capabilities/operations.d.ts +22 -0
  84. package/dist/capabilities/operations.d.ts.map +1 -0
  85. package/dist/capabilities/operations.js +62 -0
  86. package/dist/capabilities/operations.js.map +1 -0
  87. package/dist/constants.d.ts +8 -0
  88. package/dist/constants.d.ts.map +1 -0
  89. package/dist/constants.js +8 -0
  90. package/dist/constants.js.map +1 -0
  91. package/dist/disclosure/index.d.ts +1 -1
  92. package/dist/disclosure/index.js +1 -1
  93. package/dist/disclosure/index.js.map +1 -1
  94. package/dist/format.d.ts +11 -0
  95. package/dist/format.d.ts.map +1 -0
  96. package/dist/format.js +10 -0
  97. package/dist/format.js.map +1 -0
  98. package/dist/index.d.ts +21 -31
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +32 -32
  101. package/dist/index.js.map +1 -1
  102. package/dist/lib/arkade-client-manager.d.ts +64 -24
  103. package/dist/lib/arkade-client-manager.d.ts.map +1 -1
  104. package/dist/lib/arkade-client-manager.js +240 -65
  105. package/dist/lib/arkade-client-manager.js.map +1 -1
  106. package/dist/lib/arkade-converters.d.ts +39 -0
  107. package/dist/lib/arkade-converters.d.ts.map +1 -0
  108. package/dist/lib/arkade-converters.js +148 -0
  109. package/dist/lib/arkade-converters.js.map +1 -0
  110. package/dist/lib/arkade-helpers.d.ts +110 -0
  111. package/dist/lib/arkade-helpers.d.ts.map +1 -0
  112. package/dist/lib/arkade-helpers.js +227 -0
  113. package/dist/lib/arkade-helpers.js.map +1 -0
  114. package/dist/lib/arkade-swaps-client-manager.d.ts +55 -0
  115. package/dist/lib/arkade-swaps-client-manager.d.ts.map +1 -0
  116. package/dist/lib/arkade-swaps-client-manager.js +127 -0
  117. package/dist/lib/arkade-swaps-client-manager.js.map +1 -0
  118. package/dist/lib/arkade-vtxo-lifecycle.d.ts +116 -0
  119. package/dist/lib/arkade-vtxo-lifecycle.d.ts.map +1 -0
  120. package/dist/lib/arkade-vtxo-lifecycle.js +184 -0
  121. package/dist/lib/arkade-vtxo-lifecycle.js.map +1 -0
  122. package/dist/lib/flashnet-client-manager.d.ts +26 -9
  123. package/dist/lib/flashnet-client-manager.d.ts.map +1 -1
  124. package/dist/lib/flashnet-client-manager.js +97 -13
  125. package/dist/lib/flashnet-client-manager.js.map +1 -1
  126. package/dist/lib/kaleido-client-manager.d.ts +38 -3
  127. package/dist/lib/kaleido-client-manager.d.ts.map +1 -1
  128. package/dist/lib/kaleido-client-manager.js +79 -10
  129. package/dist/lib/kaleido-client-manager.js.map +1 -1
  130. package/dist/lib/ln-message-sign.d.ts +20 -0
  131. package/dist/lib/ln-message-sign.d.ts.map +1 -0
  132. package/dist/lib/ln-message-sign.js +90 -0
  133. package/dist/lib/ln-message-sign.js.map +1 -0
  134. package/dist/lib/log.d.ts +15 -0
  135. package/dist/lib/log.d.ts.map +1 -0
  136. package/dist/lib/log.js +16 -0
  137. package/dist/lib/log.js.map +1 -0
  138. package/dist/lib/orchestra-client.d.ts +149 -0
  139. package/dist/lib/orchestra-client.d.ts.map +1 -0
  140. package/dist/lib/orchestra-client.js +178 -0
  141. package/dist/lib/orchestra-client.js.map +1 -0
  142. package/dist/lib/psbt-signer.d.ts +60 -0
  143. package/dist/lib/psbt-signer.d.ts.map +1 -0
  144. package/dist/lib/psbt-signer.js +161 -0
  145. package/dist/lib/psbt-signer.js.map +1 -0
  146. package/dist/lib/rgb-converters.d.ts +62 -0
  147. package/dist/lib/rgb-converters.d.ts.map +1 -0
  148. package/dist/lib/rgb-converters.js +179 -0
  149. package/dist/lib/rgb-converters.js.map +1 -0
  150. package/dist/lib/rgb-fee-policy.d.ts +41 -0
  151. package/dist/lib/rgb-fee-policy.d.ts.map +1 -0
  152. package/dist/lib/rgb-fee-policy.js +52 -0
  153. package/dist/lib/rgb-fee-policy.js.map +1 -0
  154. package/dist/lib/rgb-helpers.d.ts +54 -0
  155. package/dist/lib/rgb-helpers.d.ts.map +1 -0
  156. package/dist/lib/rgb-helpers.js +89 -0
  157. package/dist/lib/rgb-helpers.js.map +1 -0
  158. package/dist/lib/spark-activity.d.ts +5 -0
  159. package/dist/lib/spark-activity.d.ts.map +1 -0
  160. package/dist/lib/spark-activity.js +11 -0
  161. package/dist/lib/spark-activity.js.map +1 -0
  162. package/dist/lib/spark-balance-cache.d.ts +58 -0
  163. package/dist/lib/spark-balance-cache.d.ts.map +1 -0
  164. package/dist/lib/spark-balance-cache.js +86 -0
  165. package/dist/lib/spark-balance-cache.js.map +1 -0
  166. package/dist/lib/spark-client-manager.d.ts +64 -10
  167. package/dist/lib/spark-client-manager.d.ts.map +1 -1
  168. package/dist/lib/spark-client-manager.js +191 -35
  169. package/dist/lib/spark-client-manager.js.map +1 -1
  170. package/dist/lib/spark-converters.d.ts +64 -0
  171. package/dist/lib/spark-converters.d.ts.map +1 -0
  172. package/dist/lib/spark-converters.js +242 -0
  173. package/dist/lib/spark-converters.js.map +1 -0
  174. package/dist/lib/spark-helpers.d.ts +72 -0
  175. package/dist/lib/spark-helpers.d.ts.map +1 -0
  176. package/dist/lib/spark-helpers.js +151 -0
  177. package/dist/lib/spark-helpers.js.map +1 -0
  178. package/dist/lib/spark-sent-token-records.d.ts +43 -0
  179. package/dist/lib/spark-sent-token-records.d.ts.map +1 -0
  180. package/dist/lib/spark-sent-token-records.js +105 -0
  181. package/dist/lib/spark-sent-token-records.js.map +1 -0
  182. package/dist/lib/wallet-seed.d.ts +31 -0
  183. package/dist/lib/wallet-seed.d.ts.map +1 -0
  184. package/dist/lib/wallet-seed.js +58 -0
  185. package/dist/lib/wallet-seed.js.map +1 -0
  186. package/dist/lib/zbase32.d.ts +3 -0
  187. package/dist/lib/zbase32.d.ts.map +1 -0
  188. package/dist/lib/zbase32.js +64 -0
  189. package/dist/lib/zbase32.js.map +1 -0
  190. package/dist/manager/ProtocolManager.d.ts +54 -3
  191. package/dist/manager/ProtocolManager.d.ts.map +1 -1
  192. package/dist/manager/ProtocolManager.js +118 -41
  193. package/dist/manager/ProtocolManager.js.map +1 -1
  194. package/dist/ports/index.d.ts +20 -0
  195. package/dist/ports/index.d.ts.map +1 -1
  196. package/dist/ports/index.js +23 -1
  197. package/dist/ports/index.js.map +1 -1
  198. package/dist/receive/unifiedReceive.d.ts +12 -0
  199. package/dist/receive/unifiedReceive.d.ts.map +1 -1
  200. package/dist/receive/unifiedReceive.js +35 -4
  201. package/dist/receive/unifiedReceive.js.map +1 -1
  202. package/dist/registry/createWdkRegistry.d.ts +10 -2
  203. package/dist/registry/createWdkRegistry.d.ts.map +1 -1
  204. package/dist/registry/createWdkRegistry.js +14 -7
  205. package/dist/registry/createWdkRegistry.js.map +1 -1
  206. package/dist/router/destination.d.ts +2 -2
  207. package/dist/router/destination.d.ts.map +1 -1
  208. package/dist/router/destination.js +34 -11
  209. package/dist/router/destination.js.map +1 -1
  210. package/dist/router/index.d.ts +39 -3
  211. package/dist/router/index.d.ts.map +1 -1
  212. package/dist/router/index.js +113 -4
  213. package/dist/router/index.js.map +1 -1
  214. package/dist/router/preference.d.ts +53 -0
  215. package/dist/router/preference.d.ts.map +1 -0
  216. package/dist/router/preference.js +81 -0
  217. package/dist/router/preference.js.map +1 -0
  218. package/dist/swap/KaleidoswapSwap.d.ts +1 -1
  219. package/dist/swap/KaleidoswapSwap.d.ts.map +1 -1
  220. package/dist/swap/KaleidoswapSwap.js +37 -20
  221. package/dist/swap/KaleidoswapSwap.js.map +1 -1
  222. package/dist/swap/index.d.ts +8 -0
  223. package/dist/swap/index.d.ts.map +1 -0
  224. package/dist/swap/index.js +8 -0
  225. package/dist/swap/index.js.map +1 -0
  226. package/dist/types/arkade.d.ts +1 -1
  227. package/dist/types/base.d.ts +35 -25
  228. package/dist/types/base.d.ts.map +1 -1
  229. package/dist/types/base.js +28 -2
  230. package/dist/types/base.js.map +1 -1
  231. package/dist/types/cross-l2.d.ts +1 -1
  232. package/dist/types/flashnet.d.ts +20 -0
  233. package/dist/types/flashnet.d.ts.map +1 -1
  234. package/dist/types/flashnet.js +34 -6
  235. package/dist/types/flashnet.js.map +1 -1
  236. package/dist/types/rgb.d.ts +18 -4
  237. package/dist/types/rgb.d.ts.map +1 -1
  238. package/dist/types/spark.d.ts +1 -1
  239. package/dist/utils.d.ts +1 -1
  240. package/dist/utils.js +2 -2
  241. package/dist/utils.js.map +1 -1
  242. package/package.json +68 -14
@@ -0,0 +1,31 @@
1
+ /**
2
+ * wallet-seed
3
+ * -----------
4
+ * Resolve an extension/host wallet secret to the raw seed bytes the WDK wallet
5
+ * managers expect.
6
+ *
7
+ * The WDK base `WalletManager` validates a *string* secret with
8
+ * `bip39.validateMnemonic` and throws "The seed phrase is invalid." on failure —
9
+ * but it accepts a `Uint8Array` as raw seed bytes with NO validation. Hosts here
10
+ * support wallets rooted on an `nsec1…` Nostr key or a raw hex private key (not
11
+ * just BIP-39 phrases), which the native adapters resolved before use. Mirror that
12
+ * resolution and hand the WDK managers bytes, so nsec/hex-rooted wallets connect.
13
+ *
14
+ * Resolution (matches the native spark/arkade client-managers):
15
+ * - `nsec1…` → the decoded 32-byte private key (used as the HD master seed)
16
+ * - 64-hex-chars → those 32 bytes (used as the HD master seed)
17
+ * - otherwise → treated as a BIP-39 mnemonic → 64-byte PBKDF2 seed
18
+ *
19
+ * NOTE ON PARITY: for BIP-39 and nsec/hex wallets the Spark path reproduces the
20
+ * native addresses (spark-sdk receives the same effective seed). Arkade derives
21
+ * HD keys from the seed, so BIP-39 wallets match the native BIP-86 derivation but
22
+ * an nsec/hex-rooted Arkade wallet (native used the raw key as identity) will not.
23
+ */
24
+ /**
25
+ * Resolve a wallet secret (nsec / hex private key / BIP-39 mnemonic) to the seed
26
+ * bytes a WDK `WalletManager` consumes. Never throws on a non-BIP-39 string — it
27
+ * falls through to the mnemonic seed derivation (the host validated the secret at
28
+ * wallet creation).
29
+ */
30
+ export declare function resolveWalletSeed(secret: string): Uint8Array;
31
+ //# sourceMappingURL=wallet-seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-seed.d.ts","sourceRoot":"","sources":["../../src/lib/wallet-seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAkBH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAU5D"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * wallet-seed
3
+ * -----------
4
+ * Resolve an extension/host wallet secret to the raw seed bytes the WDK wallet
5
+ * managers expect.
6
+ *
7
+ * The WDK base `WalletManager` validates a *string* secret with
8
+ * `bip39.validateMnemonic` and throws "The seed phrase is invalid." on failure —
9
+ * but it accepts a `Uint8Array` as raw seed bytes with NO validation. Hosts here
10
+ * support wallets rooted on an `nsec1…` Nostr key or a raw hex private key (not
11
+ * just BIP-39 phrases), which the native adapters resolved before use. Mirror that
12
+ * resolution and hand the WDK managers bytes, so nsec/hex-rooted wallets connect.
13
+ *
14
+ * Resolution (matches the native spark/arkade client-managers):
15
+ * - `nsec1…` → the decoded 32-byte private key (used as the HD master seed)
16
+ * - 64-hex-chars → those 32 bytes (used as the HD master seed)
17
+ * - otherwise → treated as a BIP-39 mnemonic → 64-byte PBKDF2 seed
18
+ *
19
+ * NOTE ON PARITY: for BIP-39 and nsec/hex wallets the Spark path reproduces the
20
+ * native addresses (spark-sdk receives the same effective seed). Arkade derives
21
+ * HD keys from the seed, so BIP-39 wallets match the native BIP-86 derivation but
22
+ * an nsec/hex-rooted Arkade wallet (native used the raw key as identity) will not.
23
+ */
24
+ import { bech32 } from '@scure/base';
25
+ import { mnemonicToSeedSync } from '@scure/bip39';
26
+ import { hexToBytes } from '@noble/hashes/utils.js';
27
+ /** Decode an `nsec1…` bech32 secret into its 32 raw key bytes, or null. */
28
+ function nsecToBytes(input) {
29
+ try {
30
+ const decoded = bech32.decode(input, 1023);
31
+ if (decoded.prefix !== 'nsec')
32
+ return null;
33
+ const data = bech32.fromWords(decoded.words);
34
+ return Uint8Array.from(data);
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ /**
41
+ * Resolve a wallet secret (nsec / hex private key / BIP-39 mnemonic) to the seed
42
+ * bytes a WDK `WalletManager` consumes. Never throws on a non-BIP-39 string — it
43
+ * falls through to the mnemonic seed derivation (the host validated the secret at
44
+ * wallet creation).
45
+ */
46
+ export function resolveWalletSeed(secret) {
47
+ const trimmed = secret.trim();
48
+ if (trimmed.startsWith('nsec1')) {
49
+ const bytes = nsecToBytes(trimmed);
50
+ if (bytes)
51
+ return bytes;
52
+ }
53
+ if (/^[0-9a-fA-F]{64}$/.test(trimmed)) {
54
+ return hexToBytes(trimmed.toLowerCase());
55
+ }
56
+ return mnemonicToSeedSync(trimmed);
57
+ }
58
+ //# sourceMappingURL=wallet-seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-seed.js","sourceRoot":"","sources":["../../src/lib/wallet-seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,2EAA2E;AAC3E,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAA8B,EAAE,IAAI,CAAC,CAAA;QACnE,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5C,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;QAClC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;IACzB,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function zbase32Encode(data: Uint8Array): string;
2
+ export declare function zbase32Decode(text: string, byteLength?: number): Uint8Array;
3
+ //# sourceMappingURL=zbase32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zbase32.d.ts","sourceRoot":"","sources":["../../src/lib/zbase32.ts"],"names":[],"mappings":"AAgBA,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAuBtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAsB3E"}
@@ -0,0 +1,64 @@
1
+ // zbase32 — Phil Zimmermann's human-friendly base32 alphabet, used by LND
2
+ // for `signmessage` / `verifymessage` outputs.
3
+ //
4
+ // alphabet = "ybndrfg8ejkmcpqxot1uwisza345h769"
5
+ //
6
+ // Encoding is the same shape as base32 (5 bits per char), but the alphabet
7
+ // is reordered so the resulting strings are easier to read and transcribe.
8
+ const ALPHABET = "ybndrfg8ejkmcpqxot1uwisza345h769";
9
+ const INDEX = (() => {
10
+ const m = new Map();
11
+ for (let i = 0; i < ALPHABET.length; i++)
12
+ m.set(ALPHABET[i], i);
13
+ return m;
14
+ })();
15
+ export function zbase32Encode(data) {
16
+ if (data.length === 0)
17
+ return "";
18
+ const bitCount = data.length * 8;
19
+ const charCount = Math.ceil(bitCount / 5);
20
+ let out = "";
21
+ let buffer = 0;
22
+ let bits = 0;
23
+ let consumed = 0;
24
+ for (let i = 0; i < data.length; i++) {
25
+ buffer = (buffer << 8) | data[i];
26
+ bits += 8;
27
+ while (bits >= 5 && consumed < charCount) {
28
+ bits -= 5;
29
+ const idx = (buffer >>> bits) & 0x1f;
30
+ out += ALPHABET[idx];
31
+ consumed++;
32
+ }
33
+ }
34
+ if (bits > 0 && consumed < charCount) {
35
+ const idx = (buffer << (5 - bits)) & 0x1f;
36
+ out += ALPHABET[idx];
37
+ }
38
+ return out;
39
+ }
40
+ export function zbase32Decode(text, byteLength) {
41
+ if (text.length === 0)
42
+ return new Uint8Array(0);
43
+ const expectedBytes = byteLength ?? Math.floor((text.length * 5) / 8);
44
+ const out = new Uint8Array(expectedBytes);
45
+ let buffer = 0;
46
+ let bits = 0;
47
+ let written = 0;
48
+ for (let i = 0; i < text.length; i++) {
49
+ const idx = INDEX.get(text[i]);
50
+ if (idx === undefined) {
51
+ throw new Error(`Invalid zbase32 character at position ${i}: ${text[i]}`);
52
+ }
53
+ buffer = (buffer << 5) | idx;
54
+ bits += 5;
55
+ if (bits >= 8) {
56
+ bits -= 8;
57
+ if (written < expectedBytes) {
58
+ out[written++] = (buffer >>> bits) & 0xff;
59
+ }
60
+ }
61
+ }
62
+ return out;
63
+ }
64
+ //# sourceMappingURL=zbase32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zbase32.js","sourceRoot":"","sources":["../../src/lib/zbase32.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,42 @@
3
3
  * Central manager for all protocol operations
4
4
  * Ported from rate-extension/src/protocols/manager/ProtocolManager.ts
5
5
  */
6
- import { ProtocolType, UnifiedAsset, UnifiedTransaction, InvoiceRequest, Invoice, DecodedInvoice, PaymentRequest, PaymentResult, PaymentStatus, Address, ConnectionInfo, TransactionFilter, QuoteRequest, Quote, SwapResult } from '../types/base';
7
- import { IProtocolAdapter, BaseProtocolConfig } from '../adapters/IProtocolAdapter';
6
+ import { ProtocolType, UnifiedAsset, UnifiedTransaction, InvoiceRequest, Invoice, DecodedInvoice, KeysendRequest, PaymentRequest, PaymentResult, PaymentStatus, Address, ConnectionInfo, TransactionFilter, QuoteRequest, Quote, SwapResult } from '../types/base.js';
7
+ import { IProtocolAdapter, ProtocolConfig } from '../adapters/IProtocolAdapter.js';
8
+ import type { ProtocolCapability } from '../capabilities/operations.js';
9
+ import { type Logger } from '../ports/index.js';
8
10
  export interface ProtocolManagerConfig {
9
11
  defaultProtocol?: ProtocolType;
10
12
  autoConnect?: boolean;
11
13
  enabledProtocols?: ProtocolType[];
14
+ /** Logger override; defaults to the injected platform logger (or console). */
15
+ logger?: Logger;
16
+ /**
17
+ * Generic message-verification fallback used by `verifyMessage` when the
18
+ * active adapter does not implement `verifyMessage` itself. Hosts inject a
19
+ * recoverable-ECDSA verifier (returns the signer's hex pubkey). When absent,
20
+ * `verifyMessage` throws NOT_SUPPORTED for adapters without native support.
21
+ */
22
+ verifyMessageFallback?: (message: string, signature: string) => Promise<string>;
12
23
  }
13
24
  export declare class ProtocolManager {
14
25
  private registry;
15
26
  private activeProtocol;
27
+ private log;
28
+ private verifyMessageFallback?;
16
29
  constructor(_config?: ProtocolManagerConfig);
17
30
  registerAdapter(adapter: IProtocolAdapter): void;
18
31
  getSupportedProtocols(): ProtocolType[];
19
32
  isProtocolSupported(protocol: ProtocolType): boolean;
33
+ /**
34
+ * Static capability manifest for a registered protocol (empty if not
35
+ * registered). Capabilities are static, so this works while unconfigured.
36
+ */
37
+ getCapabilities(protocol: ProtocolType): readonly ProtocolCapability[];
38
+ /** Capability manifest for every registered protocol. */
39
+ getAllCapabilities(): Partial<Record<ProtocolType, readonly ProtocolCapability[]>>;
40
+ /** Whether a protocol declares support for a given operation. */
41
+ protocolSupports(protocol: ProtocolType, capability: ProtocolCapability): boolean;
20
42
  setActiveProtocol(protocol: ProtocolType): Promise<void>;
21
43
  getActiveProtocol(): ProtocolType | null;
22
44
  getActiveAdapter(): IProtocolAdapter;
@@ -25,25 +47,54 @@ export declare class ProtocolManager {
25
47
  * Try to get an adapter, returning undefined if not registered.
26
48
  */
27
49
  getAdapterIfAvailable(protocol: ProtocolType): IProtocolAdapter | undefined;
28
- connect(protocol: ProtocolType, config: BaseProtocolConfig): Promise<void>;
50
+ connect(protocol: ProtocolType, config: ProtocolConfig): Promise<void>;
29
51
  disconnect(protocol: ProtocolType): Promise<void>;
30
52
  disconnectAll(): Promise<void>;
31
53
  getAllConnectionInfo(): Promise<Map<ProtocolType, ConnectionInfo>>;
32
54
  listAssets(): Promise<UnifiedAsset[]>;
33
55
  getAsset(assetId: string): Promise<UnifiedAsset>;
34
56
  getAssetBalance(assetId: string): Promise<import("..").AssetBalance>;
57
+ /**
58
+ * Invalidate every connected adapter's balance cache so the next read is
59
+ * fresh. Tolerates per-adapter failures — one slow protocol can't block the
60
+ * others.
61
+ */
35
62
  refreshBalances(): Promise<void>;
36
63
  listTransactions(filter?: TransactionFilter): Promise<UnifiedTransaction[]>;
37
64
  getTransaction(txId: string, assetId?: string): Promise<UnifiedTransaction>;
38
65
  createInvoice(request: InvoiceRequest): Promise<Invoice>;
39
66
  decodeInvoice(invoice: string): Promise<DecodedInvoice>;
40
67
  sendPayment(request: PaymentRequest): Promise<PaymentResult>;
68
+ payKeysend(request: KeysendRequest): Promise<PaymentResult>;
41
69
  getPaymentStatus(paymentHash: string): Promise<PaymentStatus>;
70
+ /**
71
+ * Sign a message with the active adapter's wallet identity key (LND-style
72
+ * zbase32 recoverable ECDSA). Throws if the adapter doesn't implement it —
73
+ * callers fall back to their own mnemonic-derived signer.
74
+ */
75
+ signMessage(message: string): Promise<string>;
76
+ /**
77
+ * Verify an LND-style zbase32 signature, returning the signer's hex pubkey.
78
+ * Routes to the active adapter, else the injected generic fallback, else
79
+ * throws NOT_SUPPORTED.
80
+ */
81
+ verifyMessage(message: string, signature: string): Promise<string>;
42
82
  getReceiveAddress(assetId?: string): Promise<Address>;
43
83
  getSwapQuote(request: QuoteRequest): Promise<Quote>;
44
84
  executeSwap(quote: Quote): Promise<SwapResult>;
85
+ /**
86
+ * Assets across all connected protocols. Runs per-adapter calls in parallel
87
+ * with an 8s timeout each — a single slow/degraded backend can't freeze the
88
+ * whole list for every consumer of asset data.
89
+ */
45
90
  listAllAssets(): Promise<UnifiedAsset[]>;
91
+ /**
92
+ * Transactions across all connected protocols. Parallel + per-protocol
93
+ * timeout, for the same reason as `listAllAssets`.
94
+ */
46
95
  listAllTransactions(filter?: TransactionFilter): Promise<UnifiedTransaction[]>;
96
+ /** Race a per-protocol call against an 8s timeout, clearing the timer on settle. */
97
+ private withTimeout;
47
98
  findAsset(assetId: string): Promise<UnifiedAsset | null>;
48
99
  getPortfolioSummary(): Promise<{
49
100
  totalAssets: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ProtocolManager.d.ts","sourceRoot":"","sources":["../../src/manager/ProtocolManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProtocolManager.d.ts","sourceRoot":"","sources":["../../src/manager/ProtocolManager.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,25 @@
3
3
  * Central manager for all protocol operations
4
4
  * Ported from rate-extension/src/protocols/manager/ProtocolManager.ts
5
5
  */
6
- import { ProtocolError, } from '../types/base';
7
- import { ProtocolAdapterRegistry, } from '../adapters/IProtocolAdapter';
6
+ import { ProtocolError, } from '../types/base.js';
7
+ import { ProtocolAdapterRegistry, } from '../adapters/IProtocolAdapter.js';
8
+ import { getLogger } from '../ports/index.js';
9
+ /** Per-protocol timeout for cross-protocol fan-out reads (assets/transactions). */
10
+ const PER_PROTOCOL_TIMEOUT_MS = 8000;
8
11
  export class ProtocolManager {
9
12
  constructor(_config = {}) {
10
13
  this.activeProtocol = null;
11
14
  this.registry = new ProtocolAdapterRegistry();
12
15
  this.activeProtocol = _config.defaultProtocol || null;
16
+ this.log = _config.logger ?? getLogger();
17
+ this.verifyMessageFallback = _config.verifyMessageFallback;
13
18
  }
14
19
  // ========================================================================
15
20
  // Registry Management
16
21
  // ========================================================================
17
22
  registerAdapter(adapter) {
18
23
  this.registry.register(adapter);
19
- console.log(`[ProtocolManager] Registered ${adapter.protocolName} adapter`);
24
+ this.log.info(`[ProtocolManager] Registered ${adapter.protocolName} adapter`);
20
25
  }
21
26
  getSupportedProtocols() {
22
27
  return this.registry.getSupportedProtocols();
@@ -25,6 +30,28 @@ export class ProtocolManager {
25
30
  return this.registry.has(protocol);
26
31
  }
27
32
  // ========================================================================
33
+ // Capability Manifest
34
+ // ========================================================================
35
+ /**
36
+ * Static capability manifest for a registered protocol (empty if not
37
+ * registered). Capabilities are static, so this works while unconfigured.
38
+ */
39
+ getCapabilities(protocol) {
40
+ return this.registry.get(protocol)?.capabilities ?? [];
41
+ }
42
+ /** Capability manifest for every registered protocol. */
43
+ getAllCapabilities() {
44
+ const result = {};
45
+ for (const adapter of this.registry.getAll()) {
46
+ result[adapter.protocolName] = adapter.capabilities;
47
+ }
48
+ return result;
49
+ }
50
+ /** Whether a protocol declares support for a given operation. */
51
+ protocolSupports(protocol, capability) {
52
+ return this.getCapabilities(protocol).includes(capability);
53
+ }
54
+ // ========================================================================
28
55
  // Protocol Selection
29
56
  // ========================================================================
30
57
  async setActiveProtocol(protocol) {
@@ -36,7 +63,7 @@ export class ProtocolManager {
36
63
  throw new ProtocolError(`Protocol not connected: ${protocol}`, protocol, 'NOT_CONNECTED');
37
64
  }
38
65
  this.activeProtocol = protocol;
39
- console.log(`[ProtocolManager] Active protocol set to ${protocol}`);
66
+ this.log.info(`[ProtocolManager] Active protocol set to ${protocol}`);
40
67
  }
41
68
  getActiveProtocol() {
42
69
  return this.activeProtocol;
@@ -73,7 +100,7 @@ export class ProtocolManager {
73
100
  throw new ProtocolError(`Protocol not found: ${protocol}`, protocol, 'NOT_FOUND');
74
101
  }
75
102
  await adapter.connect(config);
76
- console.log(`[ProtocolManager] Connected to ${protocol}`);
103
+ this.log.info(`[ProtocolManager] Connected to ${protocol}`);
77
104
  // Auto-set as active if no active protocol
78
105
  if (!this.activeProtocol) {
79
106
  this.activeProtocol = protocol;
@@ -83,7 +110,7 @@ export class ProtocolManager {
83
110
  const adapter = this.registry.get(protocol);
84
111
  if (adapter) {
85
112
  await adapter.disconnect();
86
- console.log(`[ProtocolManager] Disconnected from ${protocol}`);
113
+ this.log.info(`[ProtocolManager] Disconnected from ${protocol}`);
87
114
  if (this.activeProtocol === protocol) {
88
115
  this.activeProtocol = null;
89
116
  }
@@ -95,7 +122,7 @@ export class ProtocolManager {
95
122
  await adapter.disconnect();
96
123
  }
97
124
  catch (error) {
98
- console.error(`[ProtocolManager] Error disconnecting ${adapter.protocolName}:`, error);
125
+ this.log.error(`[ProtocolManager] Error disconnecting ${adapter.protocolName}:`, error);
99
126
  }
100
127
  }
101
128
  this.activeProtocol = null;
@@ -122,8 +149,14 @@ export class ProtocolManager {
122
149
  async getAssetBalance(assetId) {
123
150
  return this.getActiveAdapter().getAssetBalance(assetId);
124
151
  }
152
+ /**
153
+ * Invalidate every connected adapter's balance cache so the next read is
154
+ * fresh. Tolerates per-adapter failures — one slow protocol can't block the
155
+ * others.
156
+ */
125
157
  async refreshBalances() {
126
- return this.getActiveAdapter().refreshBalances();
158
+ const adapters = this.registry.getAll().filter((a) => a.isConnected());
159
+ await Promise.allSettled(adapters.map((a) => a.refreshBalances()));
127
160
  }
128
161
  async listTransactions(filter) {
129
162
  return this.getActiveAdapter().listTransactions(filter);
@@ -140,9 +173,43 @@ export class ProtocolManager {
140
173
  async sendPayment(request) {
141
174
  return this.getActiveAdapter().sendPayment(request);
142
175
  }
176
+ async payKeysend(request) {
177
+ const adapter = this.getActiveAdapter();
178
+ if (!adapter.payKeysend) {
179
+ throw new ProtocolError('Keysend not supported by active protocol', adapter.protocolName, 'NOT_SUPPORTED');
180
+ }
181
+ return adapter.payKeysend(request);
182
+ }
143
183
  async getPaymentStatus(paymentHash) {
144
184
  return this.getActiveAdapter().getPaymentStatus(paymentHash);
145
185
  }
186
+ /**
187
+ * Sign a message with the active adapter's wallet identity key (LND-style
188
+ * zbase32 recoverable ECDSA). Throws if the adapter doesn't implement it —
189
+ * callers fall back to their own mnemonic-derived signer.
190
+ */
191
+ async signMessage(message) {
192
+ const adapter = this.getActiveAdapter();
193
+ if (typeof adapter.signMessage !== 'function') {
194
+ throw new ProtocolError('signMessage not supported by active protocol', adapter.protocolName, 'NOT_SUPPORTED');
195
+ }
196
+ return adapter.signMessage(message);
197
+ }
198
+ /**
199
+ * Verify an LND-style zbase32 signature, returning the signer's hex pubkey.
200
+ * Routes to the active adapter, else the injected generic fallback, else
201
+ * throws NOT_SUPPORTED.
202
+ */
203
+ async verifyMessage(message, signature) {
204
+ const adapter = this.getActiveAdapter();
205
+ if (typeof adapter.verifyMessage === 'function') {
206
+ return adapter.verifyMessage(message, signature);
207
+ }
208
+ if (this.verifyMessageFallback) {
209
+ return this.verifyMessageFallback(message, signature);
210
+ }
211
+ throw new ProtocolError('verifyMessage not supported by active protocol', adapter.protocolName, 'NOT_SUPPORTED');
212
+ }
146
213
  async getReceiveAddress(assetId) {
147
214
  return this.getActiveAdapter().getReceiveAddress(assetId);
148
215
  }
@@ -163,48 +230,58 @@ export class ProtocolManager {
163
230
  // ========================================================================
164
231
  // Cross-Protocol Operations
165
232
  // ========================================================================
233
+ /**
234
+ * Assets across all connected protocols. Runs per-adapter calls in parallel
235
+ * with an 8s timeout each — a single slow/degraded backend can't freeze the
236
+ * whole list for every consumer of asset data.
237
+ */
166
238
  async listAllAssets() {
239
+ const adapters = this.registry.getAll().filter((a) => a.isConnected());
240
+ const results = await Promise.allSettled(adapters.map((adapter) => this.withTimeout(adapter.listAssets(), adapter.protocolName, 'listAssets')));
167
241
  const allAssets = [];
168
- for (const adapter of this.registry.getAll()) {
169
- if (adapter.isConnected()) {
170
- try {
171
- const assets = await adapter.listAssets();
172
- allAssets.push(...assets);
173
- }
174
- catch (error) {
175
- console.error(`[ProtocolManager] Error listing assets for ${adapter.protocolName}:`, error);
176
- }
177
- }
178
- }
242
+ results.forEach((result, index) => {
243
+ if (result.status === 'fulfilled')
244
+ allAssets.push(...result.value);
245
+ else
246
+ this.log.error(`[ProtocolManager] Error listing assets for ${adapters[index].protocolName}:`, result.reason);
247
+ });
179
248
  return allAssets;
180
249
  }
250
+ /**
251
+ * Transactions across all connected protocols. Parallel + per-protocol
252
+ * timeout, for the same reason as `listAllAssets`.
253
+ */
181
254
  async listAllTransactions(filter) {
255
+ const adapters = this.registry.getAll().filter((a) => a.isConnected());
256
+ const results = await Promise.allSettled(adapters.map((adapter) => this.withTimeout(adapter.listTransactions(filter), adapter.protocolName, 'listTransactions')));
182
257
  const allTransactions = [];
183
- for (const adapter of this.registry.getAll()) {
184
- if (adapter.isConnected()) {
185
- try {
186
- const transactions = await adapter.listTransactions(filter);
187
- allTransactions.push(...transactions);
188
- }
189
- catch (error) {
190
- console.error(`[ProtocolManager] Error listing transactions for ${adapter.protocolName}:`, error);
191
- }
192
- }
193
- }
258
+ results.forEach((result, index) => {
259
+ if (result.status === 'fulfilled')
260
+ allTransactions.push(...result.value);
261
+ else
262
+ this.log.error(`[ProtocolManager] Error listing transactions for ${adapters[index].protocolName}:`, result.reason);
263
+ });
194
264
  return allTransactions.sort((a, b) => b.timestamp - a.timestamp);
195
265
  }
266
+ /** Race a per-protocol call against an 8s timeout, clearing the timer on settle. */
267
+ withTimeout(p, protocol, op) {
268
+ let timer;
269
+ const timeout = new Promise((_, reject) => {
270
+ timer = setTimeout(() => reject(new Error(`${op}(${protocol}) timed out after ${PER_PROTOCOL_TIMEOUT_MS}ms`)), PER_PROTOCOL_TIMEOUT_MS);
271
+ });
272
+ // Clear the timer whether p resolves or rejects, so a fast call never leaves
273
+ // an 8s timer pinning the event loop alive.
274
+ return Promise.race([p, timeout]).finally(() => clearTimeout(timer));
275
+ }
196
276
  async findAsset(assetId) {
197
- for (const adapter of this.registry.getAll()) {
198
- if (adapter.isConnected()) {
199
- try {
200
- const asset = await adapter.getAsset(assetId);
201
- if (asset)
202
- return asset;
203
- }
204
- catch (_error) {
205
- // Asset not found in this protocol, continue
206
- }
207
- }
277
+ // Query every connected protocol in parallel (with the same per-protocol
278
+ // timeout as the other fan-out reads) rather than serially awaiting each —
279
+ // a single slow backend must not stall the lookup.
280
+ const adapters = this.registry.getAll().filter((a) => a.isConnected());
281
+ const results = await Promise.allSettled(adapters.map((a) => this.withTimeout(a.getAsset(assetId), a.protocolName, 'getAsset')));
282
+ for (const result of results) {
283
+ if (result.status === 'fulfilled' && result.value)
284
+ return result.value;
208
285
  }
209
286
  return null;
210
287
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProtocolManager.js","sourceRoot":"","sources":["../../src/manager/ProtocolManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAgBL,aAAa,GACd,MAAM,eAAe,CAAA;AAEtB,OAAO,EAGL,uBAAuB,GACxB,MAAM,8BAA8B,CAAA;AAQrC,MAAM,OAAO,eAAe;IAI1B,YAAY,UAAiC,EAAE;QAFvC,mBAAc,GAAwB,IAAI,CAAA;QAGhD,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAuB,EAAE,CAAA;QAC7C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAA;IACvD,CAAC;IAED,2EAA2E;IAC3E,sBAAsB;IACtB,2EAA2E;IAE3E,eAAe,CAAC,OAAyB;QACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC/B,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,YAAY,UAAU,CAAC,CAAA;IAC7E,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAA;IAC9C,CAAC;IAED,mBAAmB,CAAC,QAAsB;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,2EAA2E;IAC3E,qBAAqB;IACrB,2EAA2E;IAE3E,KAAK,CAAC,iBAAiB,CAAC,QAAsB;QAC5C,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,aAAa,CAAC,2BAA2B,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAA;QAC5C,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,aAAa,CAAC,2BAA2B,QAAQ,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAA;QAC3F,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;QAC3E,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,UAAU,CAAC,QAAsB;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,QAAsB;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,2EAA2E;IAC3E,wBAAwB;IACxB,2EAA2E;IAE3E,KAAK,CAAC,OAAO,CAAC,QAAsB,EAAE,MAA0B;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,aAAa,CAAC,uBAAuB,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QACnF,CAAC;QAED,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAA;QAEzD,2CAA2C;QAC3C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAA;QAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAsB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;YAC1B,OAAO,CAAC,GAAG,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAA;YAE9D,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;gBACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,OAAO,CAAC,YAAY,GAAG,EAAE,KAAK,CAAC,CAAA;YACxF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAgC,CAAA;QAEpD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1B,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAA;gBACxD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2EAA2E;IAC3E,gDAAgD;IAChD,2EAA2E;IAE3E,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,eAAe,EAAE,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAA0B;QAC/C,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,OAAgB;QACjD,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAuB;QACzC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACxC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAgB;QACtC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAqB;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACtD,MAAM,IAAI,aAAa,CACrB,wCAAwC,EACxC,OAAO,CAAC,YAAY,EACpB,eAAe,CAChB,CAAA;QACH,CAAC;QACD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAY;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACrD,MAAM,IAAI,aAAa,CACrB,wCAAwC,EACxC,OAAO,CAAC,YAAY,EACpB,eAAe,CAChB,CAAA;QACH,CAAC;QACD,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,2EAA2E;IAC3E,4BAA4B;IAC5B,2EAA2E;IAE3E,KAAK,CAAC,aAAa;QACjB,MAAM,SAAS,GAAmB,EAAE,CAAA;QAEpC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;oBACzC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;gBAC3B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,8CAA8C,OAAO,CAAC,YAAY,GAAG,EAAE,KAAK,CAAC,CAAA;gBAC7F,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,MAA0B;QAClD,MAAM,eAAe,GAAyB,EAAE,CAAA;QAEhD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;oBAC3D,eAAe,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;gBACvC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,oDAAoD,OAAO,CAAC,YAAY,GAAG,EAAE,KAAK,CAAC,CAAA;gBACnG,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;oBAC7C,IAAI,KAAK;wBAAE,OAAO,KAAK,CAAA;gBACzB,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,6CAA6C;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,mBAAmB;QAKvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmD,CAAA;QAE5E,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YACxD,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAA;YAC5C,KAAK,CAAC,MAAM,EAAE,CAAA;QAChB,CAAC;QAED,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,MAAM;YAC7B,UAAU,EAAE,CAAC;YACb,iBAAiB,EAAE,SAAS;SAC7B,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"ProtocolManager.js","sourceRoot":"","sources":["../../src/manager/ProtocolManager.ts"],"names":[],"mappings":"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"}
@@ -21,9 +21,29 @@ export interface IRuntimeProvider {
21
21
  /** Epoch millis — injectable so tests/replay can be deterministic. */
22
22
  now(): number;
23
23
  }
24
+ /** Leveled logger. Hosts inject their own (extension → redacting ring buffer). */
25
+ export interface Logger {
26
+ debug(...args: unknown[]): void;
27
+ info(...args: unknown[]): void;
28
+ warn(...args: unknown[]): void;
29
+ error(...args: unknown[]): void;
30
+ }
24
31
  /** Bundle of ports handed to the engine at initialization. */
25
32
  export interface PlatformContext {
26
33
  storage: IStorageProvider;
27
34
  runtime: IRuntimeProvider;
35
+ /** Optional host logger; engine falls back to a console-backed logger. */
36
+ logger?: Logger;
28
37
  }
38
+ /**
39
+ * Console-backed logger used when a host injects none. Kept as the single place
40
+ * the engine touches `console`, so the rest of core stays host-agnostic.
41
+ */
42
+ export declare const consoleLogger: Logger;
43
+ /** Inject the host's platform ports once at startup. */
44
+ export declare function setPlatform(ctx: PlatformContext): void;
45
+ /** The injected platform context, or null if the host never called setPlatform. */
46
+ export declare function getPlatform(): PlatformContext | null;
47
+ /** The active logger: injected host logger if present, else the console logger. */
48
+ export declare function getLogger(): Logger;
29
49
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAC1B;AAED,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,CAAA;IAC5D,oDAAoD;IACpD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;IACvC,sEAAsE;IACtE,GAAG,IAAI,MAAM,CAAA;CACd;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,gBAAgB,CAAA;IACzB,OAAO,EAAE,gBAAgB,CAAA;CAC1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAC1B;AAED,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,CAAA;IAC5D,oDAAoD;IACpD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;IACvC,sEAAsE;IACtE,GAAG,IAAI,MAAM,CAAA;CACd;AAED,kFAAkF;AAClF,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC9B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CAChC;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,gBAAgB,CAAA;IACzB,OAAO,EAAE,gBAAgB,CAAA;IACzB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAK3B,CAAA;AAID,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAEtD;AAED,mFAAmF;AACnF,wBAAgB,WAAW,IAAI,eAAe,GAAG,IAAI,CAEpD;AAED,mFAAmF;AACnF,wBAAgB,SAAS,IAAI,MAAM,CAElC"}