@continuumdao/continuum-node-sdk 1.2.11 → 1.2.12

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 (266) hide show
  1. package/dist/api/node-read.d.ts +1 -1
  2. package/dist/api/node-read.d.ts.map +1 -1
  3. package/dist/api/node-read.js +2 -1
  4. package/dist/api/node-read.js.map +1 -1
  5. package/dist/core/agent/mcp-servers-catalog.d.ts +12 -1
  6. package/dist/core/agent/mcp-servers-catalog.d.ts.map +1 -1
  7. package/dist/core/agent/mcp-servers-catalog.js +48 -1
  8. package/dist/core/agent/mcp-servers-catalog.js.map +1 -1
  9. package/dist/core/agent/mcp-servers.d.ts.map +1 -1
  10. package/dist/core/agent/mcp-servers.js +1 -0
  11. package/dist/core/agent/mcp-servers.js.map +1 -1
  12. package/dist/core/keygen-messaging.d.ts +31 -0
  13. package/dist/core/keygen-messaging.d.ts.map +1 -0
  14. package/dist/core/keygen-messaging.js +454 -0
  15. package/dist/core/keygen-messaging.js.map +1 -0
  16. package/dist/index.d.ts +2 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/mcp/agent-mcp-servers.js +1 -1
  21. package/dist/mcp/agent-mcp-servers.js.map +1 -1
  22. package/dist/mcp/keygen-messaging.d.ts +4 -0
  23. package/dist/mcp/keygen-messaging.d.ts.map +1 -0
  24. package/dist/mcp/keygen-messaging.js +54 -0
  25. package/dist/mcp/keygen-messaging.js.map +1 -0
  26. package/dist/mcp/register.d.ts +1 -0
  27. package/dist/mcp/register.d.ts.map +1 -1
  28. package/dist/mcp/register.js +3 -0
  29. package/dist/mcp/register.js.map +1 -1
  30. package/dist/schemas/extended.d.ts +162 -1
  31. package/dist/schemas/extended.d.ts.map +1 -1
  32. package/dist/schemas/extended.js +149 -2
  33. package/dist/schemas/extended.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/core/signing-flow.d.ts +0 -9
  36. package/dist/core/signing-flow.d.ts.map +0 -1
  37. package/dist/core/signing-flow.js +0 -139
  38. package/dist/core/signing-flow.js.map +0 -1
  39. package/dist/data/mpc-keys.d.ts +0 -8
  40. package/dist/data/mpc-keys.d.ts.map +0 -1
  41. package/dist/data/mpc-keys.js +0 -38
  42. package/dist/data/mpc-keys.js.map +0 -1
  43. package/dist/detops/general.d.ts +0 -11
  44. package/dist/detops/general.d.ts.map +0 -1
  45. package/dist/detops/general.js +0 -34
  46. package/dist/detops/general.js.map +0 -1
  47. package/dist/detops/group-actions.d.ts +0 -71
  48. package/dist/detops/group-actions.d.ts.map +0 -1
  49. package/dist/detops/group-actions.js +0 -360
  50. package/dist/detops/group-actions.js.map +0 -1
  51. package/dist/detops/groups.d.ts +0 -33
  52. package/dist/detops/groups.d.ts.map +0 -1
  53. package/dist/detops/groups.js +0 -223
  54. package/dist/detops/groups.js.map +0 -1
  55. package/dist/detops/keygen.d.ts +0 -72
  56. package/dist/detops/keygen.d.ts.map +0 -1
  57. package/dist/detops/keygen.js +0 -245
  58. package/dist/detops/keygen.js.map +0 -1
  59. package/dist/detops/management-keys.d.ts +0 -44
  60. package/dist/detops/management-keys.d.ts.map +0 -1
  61. package/dist/detops/management-keys.js +0 -216
  62. package/dist/detops/management-keys.js.map +0 -1
  63. package/dist/detops/management-signer.d.ts +0 -129
  64. package/dist/detops/management-signer.d.ts.map +0 -1
  65. package/dist/detops/management-signer.js +0 -619
  66. package/dist/detops/management-signer.js.map +0 -1
  67. package/dist/detops/management-signing.d.ts +0 -11
  68. package/dist/detops/management-signing.d.ts.map +0 -1
  69. package/dist/detops/management-signing.js +0 -131
  70. package/dist/detops/management-signing.js.map +0 -1
  71. package/dist/detops/mpc/broadcast-sign-result.d.ts +0 -9
  72. package/dist/detops/mpc/broadcast-sign-result.d.ts.map +0 -1
  73. package/dist/detops/mpc/broadcast-sign-result.js +0 -147
  74. package/dist/detops/mpc/broadcast-sign-result.js.map +0 -1
  75. package/dist/detops/mpc/bump-sign-result.d.ts +0 -25
  76. package/dist/detops/mpc/bump-sign-result.d.ts.map +0 -1
  77. package/dist/detops/mpc/bump-sign-result.js +0 -314
  78. package/dist/detops/mpc/bump-sign-result.js.map +0 -1
  79. package/dist/detops/mpc/client.d.ts +0 -15
  80. package/dist/detops/mpc/client.d.ts.map +0 -1
  81. package/dist/detops/mpc/client.js +0 -62
  82. package/dist/detops/mpc/client.js.map +0 -1
  83. package/dist/detops/mpc/compose-request.d.ts +0 -6
  84. package/dist/detops/mpc/compose-request.d.ts.map +0 -1
  85. package/dist/detops/mpc/compose-request.js +0 -33
  86. package/dist/detops/mpc/compose-request.js.map +0 -1
  87. package/dist/detops/mpc/context.d.ts +0 -11
  88. package/dist/detops/mpc/context.d.ts.map +0 -1
  89. package/dist/detops/mpc/context.js +0 -43
  90. package/dist/detops/mpc/context.js.map +0 -1
  91. package/dist/detops/mpc/forge-request.d.ts +0 -6
  92. package/dist/detops/mpc/forge-request.d.ts.map +0 -1
  93. package/dist/detops/mpc/forge-request.js +0 -46
  94. package/dist/detops/mpc/forge-request.js.map +0 -1
  95. package/dist/detops/mpc/gas-preflight.d.ts +0 -25
  96. package/dist/detops/mpc/gas-preflight.d.ts.map +0 -1
  97. package/dist/detops/mpc/gas-preflight.js +0 -101
  98. package/dist/detops/mpc/gas-preflight.js.map +0 -1
  99. package/dist/detops/mpc/list-ready.d.ts +0 -10
  100. package/dist/detops/mpc/list-ready.d.ts.map +0 -1
  101. package/dist/detops/mpc/list-ready.js +0 -48
  102. package/dist/detops/mpc/list-ready.js.map +0 -1
  103. package/dist/detops/mpc/management-post-sig.d.ts +0 -11
  104. package/dist/detops/mpc/management-post-sig.d.ts.map +0 -1
  105. package/dist/detops/mpc/management-post-sig.js +0 -20
  106. package/dist/detops/mpc/management-post-sig.js.map +0 -1
  107. package/dist/detops/mpc/mpa-top-up.d.ts +0 -18
  108. package/dist/detops/mpc/mpa-top-up.d.ts.map +0 -1
  109. package/dist/detops/mpc/mpa-top-up.js +0 -213
  110. package/dist/detops/mpc/mpa-top-up.js.map +0 -1
  111. package/dist/detops/mpc/register-keygen.d.ts +0 -6
  112. package/dist/detops/mpc/register-keygen.d.ts.map +0 -1
  113. package/dist/detops/mpc/register-keygen.js +0 -41
  114. package/dist/detops/mpc/register-keygen.js.map +0 -1
  115. package/dist/detops/mpc/schemas.d.ts +0 -251
  116. package/dist/detops/mpc/schemas.d.ts.map +0 -1
  117. package/dist/detops/mpc/schemas.js +0 -163
  118. package/dist/detops/mpc/schemas.js.map +0 -1
  119. package/dist/detops/mpc/sign-request-body.d.ts +0 -10
  120. package/dist/detops/mpc/sign-request-body.d.ts.map +0 -1
  121. package/dist/detops/mpc/sign-request-body.js +0 -64
  122. package/dist/detops/mpc/sign-request-body.js.map +0 -1
  123. package/dist/detops/mpc/sign-request-utils.d.ts +0 -33
  124. package/dist/detops/mpc/sign-request-utils.d.ts.map +0 -1
  125. package/dist/detops/mpc/sign-request-utils.js +0 -467
  126. package/dist/detops/mpc/sign-request-utils.js.map +0 -1
  127. package/dist/detops/mpc/transfer-native.d.ts +0 -6
  128. package/dist/detops/mpc/transfer-native.d.ts.map +0 -1
  129. package/dist/detops/mpc/transfer-native.js +0 -167
  130. package/dist/detops/mpc/transfer-native.js.map +0 -1
  131. package/dist/detops/mpc/transfer-tokens.d.ts +0 -15
  132. package/dist/detops/mpc/transfer-tokens.d.ts.map +0 -1
  133. package/dist/detops/mpc/transfer-tokens.js +0 -110
  134. package/dist/detops/mpc/transfer-tokens.js.map +0 -1
  135. package/dist/detops/mpc/trigger-sign-result.d.ts +0 -8
  136. package/dist/detops/mpc/trigger-sign-result.d.ts.map +0 -1
  137. package/dist/detops/mpc/trigger-sign-result.js +0 -244
  138. package/dist/detops/mpc/trigger-sign-result.js.map +0 -1
  139. package/dist/detops/mpc/types.d.ts +0 -62
  140. package/dist/detops/mpc/types.d.ts.map +0 -1
  141. package/dist/detops/mpc/types.js +0 -2
  142. package/dist/detops/mpc/types.js.map +0 -1
  143. package/dist/detops/node-info.d.ts +0 -27
  144. package/dist/detops/node-info.d.ts.map +0 -1
  145. package/dist/detops/node-info.js +0 -96
  146. package/dist/detops/node-info.js.map +0 -1
  147. package/dist/detops/registry/address-book.d.ts +0 -25
  148. package/dist/detops/registry/address-book.d.ts.map +0 -1
  149. package/dist/detops/registry/address-book.js +0 -83
  150. package/dist/detops/registry/address-book.js.map +0 -1
  151. package/dist/detops/registry/networks.d.ts +0 -20
  152. package/dist/detops/registry/networks.d.ts.map +0 -1
  153. package/dist/detops/registry/networks.js +0 -154
  154. package/dist/detops/registry/networks.js.map +0 -1
  155. package/dist/detops/registry/tokens.d.ts +0 -29
  156. package/dist/detops/registry/tokens.d.ts.map +0 -1
  157. package/dist/detops/registry/tokens.js +0 -142
  158. package/dist/detops/registry/tokens.js.map +0 -1
  159. package/dist/detops/result.d.ts +0 -21
  160. package/dist/detops/result.d.ts.map +0 -1
  161. package/dist/detops/result.js +0 -2
  162. package/dist/detops/result.js.map +0 -1
  163. package/dist/detops/schemas.d.ts +0 -153
  164. package/dist/detops/schemas.d.ts.map +0 -1
  165. package/dist/detops/schemas.js +0 -82
  166. package/dist/detops/schemas.js.map +0 -1
  167. package/dist/detops/signing-flow.d.ts +0 -9
  168. package/dist/detops/signing-flow.d.ts.map +0 -1
  169. package/dist/detops/signing-flow.js +0 -139
  170. package/dist/detops/signing-flow.js.map +0 -1
  171. package/dist/detops/types.d.ts +0 -58
  172. package/dist/detops/types.d.ts.map +0 -1
  173. package/dist/detops/types.js +0 -46
  174. package/dist/detops/types.js.map +0 -1
  175. package/dist/internal/ed25519/management-signing.d.ts +0 -51
  176. package/dist/internal/ed25519/management-signing.d.ts.map +0 -1
  177. package/dist/internal/ed25519/management-signing.js +0 -198
  178. package/dist/internal/ed25519/management-signing.js.map +0 -1
  179. package/dist/internal/ed25519/openssh-ed25519.d.ts +0 -20
  180. package/dist/internal/ed25519/openssh-ed25519.d.ts.map +0 -1
  181. package/dist/internal/ed25519/openssh-ed25519.js +0 -129
  182. package/dist/internal/ed25519/openssh-ed25519.js.map +0 -1
  183. package/dist/internal/management-request-signing.d.ts +0 -32
  184. package/dist/internal/management-request-signing.d.ts.map +0 -1
  185. package/dist/internal/management-request-signing.js +0 -186
  186. package/dist/internal/management-request-signing.js.map +0 -1
  187. package/dist/mcp/detops/registry/address-book.d.ts +0 -4
  188. package/dist/mcp/detops/registry/address-book.d.ts.map +0 -1
  189. package/dist/mcp/detops/registry/address-book.js +0 -39
  190. package/dist/mcp/detops/registry/address-book.js.map +0 -1
  191. package/dist/mcp/detops/registry/networks.d.ts +0 -4
  192. package/dist/mcp/detops/registry/networks.d.ts.map +0 -1
  193. package/dist/mcp/detops/registry/networks.js +0 -32
  194. package/dist/mcp/detops/registry/networks.js.map +0 -1
  195. package/dist/mcp/detops/registry/tokens.d.ts +0 -4
  196. package/dist/mcp/detops/registry/tokens.d.ts.map +0 -1
  197. package/dist/mcp/detops/registry/tokens.js +0 -43
  198. package/dist/mcp/detops/registry/tokens.js.map +0 -1
  199. package/dist/mcp/ed25519/management-signing.d.ts +0 -51
  200. package/dist/mcp/ed25519/management-signing.d.ts.map +0 -1
  201. package/dist/mcp/ed25519/management-signing.js +0 -198
  202. package/dist/mcp/ed25519/management-signing.js.map +0 -1
  203. package/dist/mcp/ed25519/openssh-ed25519.d.ts +0 -20
  204. package/dist/mcp/ed25519/openssh-ed25519.d.ts.map +0 -1
  205. package/dist/mcp/ed25519/openssh-ed25519.js +0 -129
  206. package/dist/mcp/ed25519/openssh-ed25519.js.map +0 -1
  207. package/dist/mcp/groups.d.ts +0 -71
  208. package/dist/mcp/groups.d.ts.map +0 -1
  209. package/dist/mcp/groups.js +0 -360
  210. package/dist/mcp/groups.js.map +0 -1
  211. package/dist/mcp/management-keys.d.ts +0 -4
  212. package/dist/mcp/management-keys.d.ts.map +0 -1
  213. package/dist/mcp/management-keys.js +0 -75
  214. package/dist/mcp/management-keys.js.map +0 -1
  215. package/dist/mcp/normalize.d.ts +0 -15
  216. package/dist/mcp/normalize.d.ts.map +0 -1
  217. package/dist/mcp/normalize.js +0 -204
  218. package/dist/mcp/normalize.js.map +0 -1
  219. package/dist/mcp/schemas.d.ts +0 -360
  220. package/dist/mcp/schemas.d.ts.map +0 -1
  221. package/dist/mcp/schemas.js +0 -263
  222. package/dist/mcp/schemas.js.map +0 -1
  223. package/dist/mcp/signing.d.ts +0 -32
  224. package/dist/mcp/signing.d.ts.map +0 -1
  225. package/dist/mcp/signing.js +0 -186
  226. package/dist/mcp/signing.js.map +0 -1
  227. package/dist/ops/general.d.ts +0 -11
  228. package/dist/ops/general.d.ts.map +0 -1
  229. package/dist/ops/general.js +0 -34
  230. package/dist/ops/general.js.map +0 -1
  231. package/dist/ops/groups.d.ts +0 -17
  232. package/dist/ops/groups.d.ts.map +0 -1
  233. package/dist/ops/groups.js +0 -105
  234. package/dist/ops/groups.js.map +0 -1
  235. package/dist/ops/management-signing.d.ts +0 -11
  236. package/dist/ops/management-signing.d.ts.map +0 -1
  237. package/dist/ops/management-signing.js +0 -131
  238. package/dist/ops/management-signing.js.map +0 -1
  239. package/dist/ops/result.d.ts +0 -21
  240. package/dist/ops/result.d.ts.map +0 -1
  241. package/dist/ops/result.js +0 -2
  242. package/dist/ops/result.js.map +0 -1
  243. package/dist/ops/schemas.d.ts +0 -153
  244. package/dist/ops/schemas.d.ts.map +0 -1
  245. package/dist/ops/schemas.js +0 -82
  246. package/dist/ops/schemas.js.map +0 -1
  247. package/dist/ops/signing-flow.d.ts +0 -8
  248. package/dist/ops/signing-flow.d.ts.map +0 -1
  249. package/dist/ops/signing-flow.js +0 -125
  250. package/dist/ops/signing-flow.js.map +0 -1
  251. package/dist/ops/types.d.ts +0 -58
  252. package/dist/ops/types.d.ts.map +0 -1
  253. package/dist/ops/types.js +0 -46
  254. package/dist/ops/types.js.map +0 -1
  255. package/dist/registry/address-book.d.ts +0 -25
  256. package/dist/registry/address-book.d.ts.map +0 -1
  257. package/dist/registry/address-book.js +0 -103
  258. package/dist/registry/address-book.js.map +0 -1
  259. package/dist/registry/networks.d.ts +0 -18
  260. package/dist/registry/networks.d.ts.map +0 -1
  261. package/dist/registry/networks.js +0 -180
  262. package/dist/registry/networks.js.map +0 -1
  263. package/dist/registry/tokens.d.ts +0 -29
  264. package/dist/registry/tokens.d.ts.map +0 -1
  265. package/dist/registry/tokens.js +0 -157
  266. package/dist/registry/tokens.js.map +0 -1
@@ -1,39 +0,0 @@
1
- import { z } from 'zod';
2
- import { addToAddressBookRegistry, getAddressBookRegistry, removeFromAddressBookRegistry, } from '../../../detops/registry/address-book.js';
3
- import { GetKnownAddressesDataSchema, GetKnownAddressesQuerySchema, SelectedSigningKeySchema, } from '../../../schemas/extended.js';
4
- import { camelToSnake, wrapSdk } from '../../tool-utils.js';
5
- export function registerAddressBookTools(server, config) {
6
- server.registerTool(camelToSnake('getAddressBookRegistry'), {
7
- description: 'Get known addresses from the address book registry.',
8
- inputSchema: GetKnownAddressesQuerySchema,
9
- outputSchema: GetKnownAddressesDataSchema,
10
- }, async (query) => wrapSdk(getAddressBookRegistry(config, query)));
11
- server.registerTool(camelToSnake('addToAddressBookRegistry'), {
12
- description: 'Add an address to the address book registry.',
13
- inputSchema: z.object({
14
- chainType: z.string().min(1),
15
- address: z.string().min(1),
16
- name: z.string().optional(),
17
- chainIds: z.array(z.string()).optional(),
18
- isContract: z.boolean().optional(),
19
- }),
20
- outputSchema: z.object({
21
- message: z.string(),
22
- selectedSigningKey: SelectedSigningKeySchema,
23
- signingMessage: z.string(),
24
- }),
25
- }, async (input) => wrapSdk(addToAddressBookRegistry(config, input)));
26
- server.registerTool(camelToSnake('removeFromAddressBookRegistry'), {
27
- description: 'Remove an address from the address book registry.',
28
- inputSchema: z.object({
29
- chainType: z.string().min(1),
30
- address: z.string().min(1),
31
- }),
32
- outputSchema: z.object({
33
- message: z.string(),
34
- selectedSigningKey: SelectedSigningKeySchema,
35
- signingMessage: z.string(),
36
- }),
37
- }, async (input) => wrapSdk(removeFromAddressBookRegistry(config, input)));
38
- }
39
- //# sourceMappingURL=address-book.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"address-book.js","sourceRoot":"","sources":["../../../../src/mcp/detops/registry/address-book.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EACN,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,GAC7B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACN,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,wBAAwB,CACvC,MAAiB,EACjB,MAAqB;IAErB,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,wBAAwB,CAAC,EACtC;QACC,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE,4BAA4B;QACzC,YAAY,EAAE,2BAA2B;KACzC,EACD,KAAK,EAAE,KAAmD,EAAE,EAAE,CAC7D,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAC/C,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,0BAA0B,CAAC,EACxC;QACC,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;YACxC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAClC,CAAC;QACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,kBAAkB,EAAE,wBAAwB;YAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;SAC1B,CAAC;KACF,EACD,KAAK,EAAE,KAMN,EAAE,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CACtD,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,+BAA+B,CAAC,EAC7C;QACC,WAAW,EAAE,mDAAmD;QAChE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1B,CAAC;QACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,kBAAkB,EAAE,wBAAwB;YAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;SAC1B,CAAC;KACF,EACD,KAAK,EAAE,KAA2C,EAAE,EAAE,CACrD,OAAO,CAAC,6BAA6B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CACtD,CAAC;AACH,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { NodeSdkConfig } from '../../../config/schema.js';
3
- export declare function registerChainRegistryTools(server: McpServer, config: NodeSdkConfig): void;
4
- //# sourceMappingURL=networks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../../../../src/mcp/detops/registry/networks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAEvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAc7D,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,aAAa,GACnB,IAAI,CA2CN"}
@@ -1,32 +0,0 @@
1
- import { z } from 'zod';
2
- import { addToChainRegistry, getChainRegistry, removeFromChainRegistry, } from '../../../detops/registry/networks.js';
3
- import { AddChainRegistryInputSchema, GetChainRegistryDataSchema, GetChainRegistryQuerySchema, SelectedSigningKeySchema, } from '../../../schemas/extended.js';
4
- import { camelToSnake, wrapSdk } from '../../tool-utils.js';
5
- export function registerChainRegistryTools(server, config) {
6
- server.registerTool(camelToSnake('getChainRegistry'), {
7
- description: 'Get chain registry entries.',
8
- inputSchema: GetChainRegistryQuerySchema,
9
- outputSchema: GetChainRegistryDataSchema,
10
- }, async (query) => wrapSdk(getChainRegistry(config, query)));
11
- server.registerTool(camelToSnake('addToChainRegistry'), {
12
- description: 'Add chain details to the chain registry.',
13
- inputSchema: AddChainRegistryInputSchema,
14
- outputSchema: z.object({
15
- message: z.string(),
16
- selectedSigningKey: SelectedSigningKeySchema,
17
- signingMessage: z.string(),
18
- }),
19
- }, async (input) => wrapSdk(addToChainRegistry(config, input)));
20
- server.registerTool(camelToSnake('removeFromChainRegistry'), {
21
- description: 'Remove chain details from the chain registry.',
22
- inputSchema: z.object({
23
- chainId: z.union([z.string().min(1), z.number().int().nonnegative()]),
24
- }),
25
- outputSchema: z.object({
26
- message: z.string(),
27
- selectedSigningKey: SelectedSigningKeySchema,
28
- signingMessage: z.string(),
29
- }),
30
- }, async ({ chainId }) => wrapSdk(removeFromChainRegistry(config, { chainId })));
31
- }
32
- //# sourceMappingURL=networks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"networks.js","sourceRoot":"","sources":["../../../../src/mcp/detops/registry/networks.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACN,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,0BAA0B,CACzC,MAAiB,EACjB,MAAqB;IAErB,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,kBAAkB,CAAC,EAChC;QACC,WAAW,EAAE,6BAA6B;QAC1C,WAAW,EAAE,2BAA2B;QACxC,YAAY,EAAE,0BAA0B;KACxC,EACD,KAAK,EAAE,KAAkD,EAAE,EAAE,CAC5D,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CACzC,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,oBAAoB,CAAC,EAClC;QACC,WAAW,EAAE,0CAA0C;QACvD,WAAW,EAAE,2BAA2B;QACxC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,kBAAkB,EAAE,wBAAwB;YAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;SAC1B,CAAC;KACF,EACD,KAAK,EAAE,KAAkD,EAAE,EAAE,CAC5D,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAC3C,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,yBAAyB,CAAC,EACvC;QACC,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;SACrE,CAAC;QACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,kBAAkB,EAAE,wBAAwB;YAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;SAC1B,CAAC;KACF,EACD,KAAK,EAAE,EAAC,OAAO,EAA6B,EAAE,EAAE,CAC/C,OAAO,CAAC,uBAAuB,CAAC,MAAM,EAAE,EAAC,OAAO,EAAC,CAAC,CAAC,CACpD,CAAC;AACH,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { NodeSdkConfig } from '../../../config/schema.js';
3
- export declare function registerTokenRegistryTools(server: McpServer, config: NodeSdkConfig): void;
4
- //# sourceMappingURL=tokens.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/mcp/detops/registry/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAEvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAe7D,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,aAAa,GACnB,IAAI,CAiEN"}
@@ -1,43 +0,0 @@
1
- import { z } from 'zod';
2
- import { addToTokenRegistry, getTokenRegistry, removeFromTokenRegistry, } from '../../../detops/registry/tokens.js';
3
- import { GetTokenRegistryDataSchema, GetTokenRegistryQuerySchema, SelectedSigningKeySchema, TokenContractInputSchema, TokenTypeSchema, } from '../../../schemas/extended.js';
4
- import { camelToSnake, wrapSdk } from '../../tool-utils.js';
5
- export function registerTokenRegistryTools(server, config) {
6
- server.registerTool(camelToSnake('getTokenRegistry'), {
7
- description: 'Get token registry entries.',
8
- inputSchema: GetTokenRegistryQuerySchema,
9
- outputSchema: GetTokenRegistryDataSchema,
10
- }, async (query) => wrapSdk(getTokenRegistry(config, query)));
11
- server.registerTool(camelToSnake('addToTokenRegistry'), {
12
- description: 'Add a token to the token registry.',
13
- inputSchema: z.object({
14
- chainType: z.string().min(1),
15
- chainId: z.union([z.string().min(1), z.number().int().nonnegative()]),
16
- tokenType: TokenTypeSchema,
17
- contract: TokenContractInputSchema,
18
- transferSig: z.string().optional(),
19
- transferNames: z.array(z.string()).optional(),
20
- }),
21
- outputSchema: z.object({
22
- message: z.string(),
23
- selectedSigningKey: SelectedSigningKeySchema,
24
- signingMessage: z.string(),
25
- }),
26
- }, async (input) => wrapSdk(addToTokenRegistry(config, input)));
27
- server.registerTool(camelToSnake('removeFromTokenRegistry'), {
28
- description: 'Remove a token from the token registry.',
29
- inputSchema: z.object({
30
- chainType: z.string().min(1),
31
- chainId: z.union([z.string().min(1), z.number().int().nonnegative()]),
32
- tokenType: TokenTypeSchema,
33
- contractAddress: z.string().min(1),
34
- tokenId: z.string().optional(),
35
- }),
36
- outputSchema: z.object({
37
- message: z.string(),
38
- selectedSigningKey: SelectedSigningKeySchema,
39
- signingMessage: z.string(),
40
- }),
41
- }, async (input) => wrapSdk(removeFromTokenRegistry(config, input)));
42
- }
43
- //# sourceMappingURL=tokens.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../src/mcp/detops/registry/tokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,0BAA0B,CACzC,MAAiB,EACjB,MAAqB;IAErB,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,kBAAkB,CAAC,EAChC;QACC,WAAW,EAAE,6BAA6B;QAC1C,WAAW,EAAE,2BAA2B;QACxC,YAAY,EAAE,0BAA0B;KACxC,EACD,KAAK,EAAE,KAAkD,EAAE,EAAE,CAC5D,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CACzC,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,oBAAoB,CAAC,EAClC;QACC,WAAW,EAAE,oCAAoC;QACjD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACrE,SAAS,EAAE,eAAe;YAC1B,QAAQ,EAAE,wBAAwB;YAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAClC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SAC7C,CAAC;QACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,kBAAkB,EAAE,wBAAwB;YAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;SAC1B,CAAC;KACF,EACD,KAAK,EAAE,KAON,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAChD,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,yBAAyB,CAAC,EACvC;QACC,WAAW,EAAE,yCAAyC;QACtD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACrE,SAAS,EAAE,eAAe;YAC1B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC9B,CAAC;QACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,kBAAkB,EAAE,wBAAwB;YAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;SAC1B,CAAC;KACF,EACD,KAAK,EAAE,KAMN,EAAE,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CACrD,CAAC;AACH,CAAC"}
@@ -1,51 +0,0 @@
1
- import type { NodeSdkConfig } from '../../config/schema.js';
2
- import { MPA_HOME_DIR, MANAGEMENT_KEYS_DIR } from '../../config/paths.js';
3
- import type { ManagementKeyOption } from '../schemas.js';
4
- export type { ManagementKeyOption } from '../schemas.js';
5
- export type LocalManagementKeyEntry = {
6
- fileName: string;
7
- publicKeyRaw: string;
8
- publicKeyHex?: string;
9
- };
10
- type ToMcpApiError = (message: string, data?: unknown) => Error;
11
- type MgtGet = <T>(route: string, params?: Record<string, string>) => Promise<T>;
12
- export declare function normalizeEd25519PublicKeyToHex(value: string, toMcpApiError: ToMcpApiError): string;
13
- export declare function buildManagementSigningMessage(bodyWithEmptySig: Record<string, unknown>): string;
14
- export declare function getPreferredSignerPublicKeyHex(deps: {
15
- mgtGET: MgtGet;
16
- toMcpApiError: ToMcpApiError;
17
- }): Promise<string | undefined>;
18
- export declare function listLocalManagementPublicKeys(keyRoot: string, toMcpApiError: ToMcpApiError): Promise<LocalManagementKeyEntry[]>;
19
- export declare function ensureLocalKeyPairForPublicKey(publicKey: string, deps: {
20
- keyRoot: string;
21
- toMcpApiError: ToMcpApiError;
22
- }): Promise<{
23
- fileName: string;
24
- publicKeyPath: string;
25
- privateKeyPath: string;
26
- }>;
27
- export declare function resolvePreferredManagementKeyOption(keyOptions: ManagementKeyOption[], deps: {
28
- keyRoot: string;
29
- toMcpApiError: ToMcpApiError;
30
- mgtGET: MgtGet;
31
- }): Promise<ManagementKeyOption>;
32
- export declare function getPrivateKeyStatus(option: ManagementKeyOption, deps: {
33
- keyRoot: string;
34
- toMcpApiError: ToMcpApiError;
35
- }): Promise<{
36
- available: boolean;
37
- reason?: string;
38
- }>;
39
- export declare function assertAgentCanSignManagementRequests(deps: {
40
- keyRoot: string;
41
- mgtGET: MgtGet;
42
- toMcpApiError: ToMcpApiError;
43
- }): Promise<void>;
44
- export declare function signManagementMessage(option: ManagementKeyOption, message: string, deps: {
45
- keyRoot: string;
46
- toMcpApiError: ToMcpApiError;
47
- assertAgentCanSignManagementRequests: () => Promise<void>;
48
- config?: NodeSdkConfig;
49
- }): Promise<string>;
50
- export { MANAGEMENT_KEYS_DIR, MPA_HOME_DIR };
51
- //# sourceMappingURL=management-signing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"management-signing.d.ts","sourceRoot":"","sources":["../../../src/mcp/ed25519/management-signing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,YAAY,EAAE,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAGxE,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAEvD,YAAY,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAEvD,MAAM,MAAM,uBAAuB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC;AAChE,KAAK,MAAM,GAAG,CAAC,CAAC,EACf,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,aAAa,GAC1B,MAAM,CASR;AAED,wBAAgB,6BAA6B,CAC5C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,MAAM,CAER;AAED,wBAAsB,8BAA8B,CAAC,IAAI,EAAE;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;CAC7B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsB9B;AAED,wBAAsB,6BAA6B,CAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,GAC1B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA4BpC;AAkDD,wBAAsB,8BAA8B,CACnD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAC,GACnD,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAC,CAAC,CA6B5E;AAED,wBAAsB,mCAAmC,CACxD,UAAU,EAAE,mBAAmB,EAAE,EACjC,IAAI,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CACf,GACC,OAAO,CAAC,mBAAmB,CAAC,CAyD9B;AAED,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAC,GACnD,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CAUhD;AAED,wBAAsB,oCAAoC,CAAC,IAAI,EAAE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBhB;AAED,wBAAsB,qBAAqB,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,aAAa,CAAC;IAC7B,oCAAoC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,EAAE,aAAa,CAAC;CACvB,GACC,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,OAAO,EAAC,mBAAmB,EAAE,YAAY,EAAC,CAAC"}
@@ -1,198 +0,0 @@
1
- import { promises as fs } from 'node:fs';
2
- import path from 'node:path';
3
- import { MPA_HOME_DIR, MANAGEMENT_KEYS_DIR } from '../../config/paths.js';
4
- import { discoverKeys, resolveKeyPath } from '../../config/keys.js';
5
- import { signUtf8Message, readPublicKeyHex } from '../../api/management-key.js';
6
- export function normalizeEd25519PublicKeyToHex(value, toMcpApiError) {
7
- const trimmed = value.trim();
8
- const normalizedHex = trimmed.toLowerCase().replace(/^0x/, '');
9
- if (/^[a-f0-9]{64}$/.test(normalizedHex)) {
10
- return normalizedHex;
11
- }
12
- throw toMcpApiError('Unsupported public key format; expected 64-character hex Ed25519 key');
13
- }
14
- export function buildManagementSigningMessage(bodyWithEmptySig) {
15
- return JSON.stringify(bodyWithEmptySig);
16
- }
17
- export async function getPreferredSignerPublicKeyHex(deps) {
18
- const { mgtGET, toMcpApiError } = deps;
19
- try {
20
- const raw = await mgtGET('/getPreferredSigner');
21
- if (typeof raw === 'string') {
22
- const s = raw.trim();
23
- return s ? normalizeEd25519PublicKeyToHex(s, toMcpApiError) : undefined;
24
- }
25
- if (raw && typeof raw === 'object') {
26
- const obj = raw;
27
- const candidate = [obj.publicKeyHex, obj.publicKey, obj.key].find(v => typeof v === 'string');
28
- if (!candidate || candidate.trim().length === 0) {
29
- return undefined;
30
- }
31
- return normalizeEd25519PublicKeyToHex(candidate, toMcpApiError);
32
- }
33
- return undefined;
34
- }
35
- catch {
36
- return undefined;
37
- }
38
- }
39
- export async function listLocalManagementPublicKeys(keyRoot, toMcpApiError) {
40
- const keyDir = path.join(keyRoot, 'management_keys');
41
- let entries = [];
42
- try {
43
- entries = await fs.readdir(keyDir);
44
- }
45
- catch {
46
- return [];
47
- }
48
- const pubFiles = entries.filter(entry => entry.endsWith('.pub'));
49
- const results = [];
50
- for (const pubFile of pubFiles) {
51
- const fileName = pubFile.slice(0, -4);
52
- const pubPath = path.join(keyDir, pubFile);
53
- try {
54
- const raw = (await fs.readFile(pubPath, 'utf8')).trim();
55
- let publicKeyHex;
56
- try {
57
- publicKeyHex = normalizeEd25519PublicKeyToHex(raw, toMcpApiError);
58
- }
59
- catch {
60
- publicKeyHex = undefined;
61
- }
62
- results.push({ fileName, publicKeyRaw: raw, publicKeyHex });
63
- }
64
- catch {
65
- // ignore unreadable keys
66
- }
67
- }
68
- return results;
69
- }
70
- async function resolvePrivateKeyPathForPublicKey(publicKey, keyRoot, config, toMcpApiError) {
71
- const normalized = publicKey.replace(/^0x/i, '').toLowerCase();
72
- const managementDir = path.join(keyRoot, 'management_keys');
73
- if (toMcpApiError) {
74
- const localKeys = await listLocalManagementPublicKeys(keyRoot, toMcpApiError);
75
- for (const entry of localKeys) {
76
- if (entry.publicKeyHex?.toLowerCase() === normalized) {
77
- return path.join(managementDir, entry.fileName);
78
- }
79
- }
80
- }
81
- if (config) {
82
- const keys = discoverKeys(config.node.mpcConfigPath);
83
- for (const key of keys) {
84
- const pub = readPublicKeyHex(key.path)?.toLowerCase();
85
- if (pub === normalized) {
86
- return key.path;
87
- }
88
- }
89
- const defaultPath = resolveKeyPath(config.signer.defaultKey, config.signer.defaultKeyPath, config.node.mpcConfigPath);
90
- if (defaultPath) {
91
- const defaultPub = readPublicKeyHex(defaultPath)?.toLowerCase();
92
- if (defaultPub === normalized) {
93
- return defaultPath;
94
- }
95
- }
96
- }
97
- throw new Error(`No local private key found for management public key ${publicKey}`);
98
- }
99
- export async function ensureLocalKeyPairForPublicKey(publicKey, deps) {
100
- const { keyRoot, toMcpApiError } = deps;
101
- const keyDir = path.join(keyRoot, 'management_keys');
102
- const normalizedTarget = normalizeEd25519PublicKeyToHex(publicKey, toMcpApiError);
103
- const localKeys = await listLocalManagementPublicKeys(keyRoot, toMcpApiError);
104
- const match = localKeys.find(k => k.publicKeyHex === normalizedTarget);
105
- if (!match) {
106
- throw toMcpApiError('Preferred signer key does not exist locally in management_keys', { preferredKey: normalizedTarget, keyDirectory: keyDir });
107
- }
108
- const privateKeyPath = path.join(keyDir, match.fileName);
109
- try {
110
- await fs.access(privateKeyPath);
111
- }
112
- catch {
113
- throw toMcpApiError('Preferred signer key does not have a corresponding private key', { preferredKey: normalizedTarget, expectedPrivateKeyPath: privateKeyPath });
114
- }
115
- return {
116
- fileName: match.fileName,
117
- publicKeyPath: path.join(keyDir, `${match.fileName}.pub`),
118
- privateKeyPath,
119
- };
120
- }
121
- export async function resolvePreferredManagementKeyOption(keyOptions, deps) {
122
- const { keyRoot, toMcpApiError, mgtGET } = deps;
123
- const preferred = await getPreferredSignerPublicKeyHex({ mgtGET, toMcpApiError });
124
- const failures = [];
125
- if (preferred) {
126
- try {
127
- const normalizedPreferred = normalizeEd25519PublicKeyToHex(preferred, toMcpApiError);
128
- const selected = keyOptions.find(opt => normalizeEd25519PublicKeyToHex(opt.value, toMcpApiError) ===
129
- normalizedPreferred);
130
- if (!selected) {
131
- throw toMcpApiError('Preferred signer is not in allowed management keys', {
132
- preferredSigner: normalizedPreferred,
133
- allowedKeys: keyOptions.map(k => k.value),
134
- });
135
- }
136
- await ensureLocalKeyPairForPublicKey(normalizedPreferred, {
137
- keyRoot,
138
- toMcpApiError,
139
- });
140
- return selected;
141
- }
142
- catch (error) {
143
- failures.push({
144
- key: preferred,
145
- reason: error instanceof Error ? error.message : String(error),
146
- });
147
- }
148
- }
149
- for (const opt of keyOptions) {
150
- try {
151
- await ensureLocalKeyPairForPublicKey(opt.value, {
152
- keyRoot,
153
- toMcpApiError,
154
- });
155
- return opt;
156
- }
157
- catch (error) {
158
- failures.push({
159
- key: opt.value,
160
- reason: error instanceof Error ? error.message : String(error),
161
- });
162
- }
163
- }
164
- throw toMcpApiError('No preferred signer is set, and no allowed management key has a usable local private key', { failures });
165
- }
166
- export async function getPrivateKeyStatus(option, deps) {
167
- try {
168
- await ensureLocalKeyPairForPublicKey(option.value, deps);
169
- return { available: true };
170
- }
171
- catch (error) {
172
- return {
173
- available: false,
174
- reason: error instanceof Error ? error.message : String(error),
175
- };
176
- }
177
- }
178
- export async function assertAgentCanSignManagementRequests(deps) {
179
- const { keyRoot, mgtGET, toMcpApiError } = deps;
180
- const configuredKeys = await mgtGET('/getAllowedEd25519MgtKeys');
181
- if (configuredKeys.length === 0) {
182
- throw toMcpApiError('No EdDSA management keys are configured. Configure a bootstrap Ed25519 key before agent-signed management requests.');
183
- }
184
- if (configuredKeys.length === 1) {
185
- const bootstrap = configuredKeys[0];
186
- await ensureLocalKeyPairForPublicKey(bootstrap.publicKey, {
187
- keyRoot,
188
- toMcpApiError,
189
- });
190
- }
191
- }
192
- export async function signManagementMessage(option, message, deps) {
193
- await deps.assertAgentCanSignManagementRequests();
194
- const keyPath = await resolvePrivateKeyPathForPublicKey(option.value, deps.keyRoot, deps.config, deps.toMcpApiError);
195
- return signUtf8Message(keyPath, message);
196
- }
197
- export { MANAGEMENT_KEYS_DIR, MPA_HOME_DIR };
198
- //# sourceMappingURL=management-signing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"management-signing.js","sourceRoot":"","sources":["../../../src/mcp/ed25519/management-signing.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- /**
2
- * OpenSSH "openssh-key-v1" unencrypted Ed25519 PEM ("BEGIN OPENSSH PRIVATE KEY") import.
3
- * Node.js + OpenSSL 3.6+ commonly reject this envelope via createPrivateKey(); we decode wire
4
- * format per OpenSSH PROTOCOL.key and import via JWK.
5
- */
6
- import { KeyObject } from "crypto";
7
- export declare const OPENSSH_V1_MAGIC: Buffer<ArrayBuffer>;
8
- export declare function readSshString(buf: Buffer, offset: number): {
9
- value: Buffer;
10
- next: number;
11
- };
12
- /** @returns first 32-byte seed and 32-byte public key (from private pair string). */
13
- export declare function parseUnencryptedOpenSshEd25519FromV1Blob(blob: Buffer): {
14
- seed32: Buffer;
15
- pub32: Buffer;
16
- comment: string;
17
- };
18
- /** Import unencrypted ssh-keygen/OpenSSH PEM into a native KeyObject (Ed25519 only). */
19
- export declare function importUnencryptedOpenSshEd25519PrivateKeyFromPem(pemArmored: string): KeyObject;
20
- //# sourceMappingURL=openssh-ed25519.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openssh-ed25519.d.ts","sourceRoot":"","sources":["../../../src/mcp/ed25519/openssh-ed25519.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAoB,SAAS,EAAE,MAAM,QAAQ,CAAA;AAEpD,eAAO,MAAM,gBAAgB,qBAAkC,CAAA;AAE/D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAU1F;AAoBD,qFAAqF;AACrF,wBAAgB,wCAAwC,CAAC,IAAI,EAAE,MAAM,GAAG;IACtE,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CA4FA;AAMD,wFAAwF;AACxF,wBAAgB,gDAAgD,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAY9F"}
@@ -1,129 +0,0 @@
1
- /**
2
- * OpenSSH "openssh-key-v1" unencrypted Ed25519 PEM ("BEGIN OPENSSH PRIVATE KEY") import.
3
- * Node.js + OpenSSL 3.6+ commonly reject this envelope via createPrivateKey(); we decode wire
4
- * format per OpenSSH PROTOCOL.key and import via JWK.
5
- */
6
- import { createPrivateKey } from "crypto";
7
- export const OPENSSH_V1_MAGIC = Buffer.from("openssh-key-v1\0");
8
- export function readSshString(buf, offset) {
9
- if (offset + 4 > buf.length) {
10
- throw new Error(`SSH string header EOF at offset ${offset}`);
11
- }
12
- const len = buf.readUInt32BE(offset);
13
- const next = offset + 4 + len;
14
- if (next > buf.length || len < 0) {
15
- throw new Error(`SSH string length ${len} out of range at offset ${offset}`);
16
- }
17
- return { value: buf.subarray(offset + 4, next), next };
18
- }
19
- function pemBase64BodyForOpenSshBlock(pemArmored) {
20
- const m = pemArmored.match(/-----BEGIN OPENSSH PRIVATE KEY-----([\s\S]*?)-----END OPENSSH PRIVATE KEY-----/i);
21
- if (!m) {
22
- throw new Error("missing -----BEGIN/END OPENSSH PRIVATE KEY----- PEM block");
23
- }
24
- const compact = m[1].replace(/\s+/g, "");
25
- return Buffer.from(compact, "base64");
26
- }
27
- function assertOpenSshPadding(privList, offsetAfterComment) {
28
- for (let pad = 1, o = offsetAfterComment; o < privList.length; pad++, o++) {
29
- const expected = pad & 0xff;
30
- if (privList[o] !== expected) {
31
- throw new Error("invalid OpenSSH private key padding (file may be truncated or encrypted incorrectly)");
32
- }
33
- }
34
- }
35
- /** @returns first 32-byte seed and 32-byte public key (from private pair string). */
36
- export function parseUnencryptedOpenSshEd25519FromV1Blob(blob) {
37
- if (blob.length < OPENSSH_V1_MAGIC.length || !blob.subarray(0, OPENSSH_V1_MAGIC.length).equals(OPENSSH_V1_MAGIC)) {
38
- throw new Error("not an openssh-key-v1 blob");
39
- }
40
- let offset = OPENSSH_V1_MAGIC.length;
41
- const cipherName = readSshString(blob, offset);
42
- offset = cipherName.next;
43
- const kdfName = readSshString(blob, offset);
44
- offset = kdfName.next;
45
- const kdfOptions = readSshString(blob, offset);
46
- offset = kdfOptions.next;
47
- if (cipherName.value.toString("utf8") !== "none" || kdfName.value.toString("utf8") !== "none") {
48
- throw new Error("OpenSSH private key is encrypted; use `ssh-keygen -p -N '' -m PKCS8 -f <keyfile>` to write an importable PKCS#8 PEM, or provide an unencrypted key");
49
- }
50
- const nKeys = blob.readUInt32BE(offset);
51
- offset += 4;
52
- if (nKeys !== 1) {
53
- throw new Error(`OpenSSH file has ${nKeys} keys; only single-key Ed25519 files are supported`);
54
- }
55
- /** Public ssh wire blobs (validated against private material). */
56
- const pubBlob = readSshString(blob, offset);
57
- offset = pubBlob.next;
58
- const encryptedPrivateListMaybe = readSshString(blob, offset);
59
- offset = encryptedPrivateListMaybe.next;
60
- const privList = encryptedPrivateListMaybe.value;
61
- if (privList.length < 16) {
62
- throw new Error("OpenSSH private key list too short");
63
- }
64
- const check1 = privList.readUInt32BE(0);
65
- const check2 = privList.readUInt32BE(4);
66
- if (check1 !== check2) {
67
- throw new Error("OpenSSH private key checkints mismatch (wrong passphrase or corrupted file)");
68
- }
69
- let inner = 8;
70
- const algo = readSshString(privList, inner);
71
- inner = algo.next;
72
- const ak = algo.value.toString("utf8");
73
- if (ak !== "ssh-ed25519") {
74
- throw new Error(`OpenSSH private key algorithm is ${JSON.stringify(ak)}, expected "ssh-ed25519"`);
75
- }
76
- const pubFromPrivate = readSshString(privList, inner);
77
- inner = pubFromPrivate.next;
78
- if (pubFromPrivate.value.length !== 32) {
79
- throw new Error(`invalid Ed25519 public key length ${pubFromPrivate.value.length}`);
80
- }
81
- const pair = readSshString(privList, inner);
82
- inner = pair.next;
83
- if (pair.value.length !== 64) {
84
- throw new Error(`invalid Ed25519 secret+public concat length ${pair.value.length}`);
85
- }
86
- const seed32 = Buffer.from(pair.value.subarray(0, 32));
87
- const duplicatePub32 = Buffer.from(pair.value.subarray(32, 64));
88
- if (!duplicatePub32.equals(pubFromPrivate.value)) {
89
- throw new Error("OpenSSH Ed25519 public key mismatch inside private pair (corrupted key)");
90
- }
91
- const cm = readSshString(privList, inner);
92
- inner = cm.next;
93
- /** Wire-format public blob should match pubkey from private serialization. */
94
- const pubOuter = pubBlob.value;
95
- let po = 0;
96
- const pubAlgo = readSshString(pubOuter, po);
97
- po = pubAlgo.next;
98
- if (pubAlgo.value.toString("utf8") !== "ssh-ed25519") {
99
- throw new Error("OpenSSH outer public blob algorithm mismatch");
100
- }
101
- const pubOuterKeyBytes = readSshString(pubOuter, po).value;
102
- if (!pubOuterKeyBytes.equals(pubFromPrivate.value)) {
103
- throw new Error("OpenSSH outer public blob does not match embedded private pubkey (corrupted key)");
104
- }
105
- assertOpenSshPadding(privList, inner);
106
- return {
107
- seed32,
108
- pub32: pubFromPrivate.value,
109
- comment: cm.value.toString("utf8"),
110
- };
111
- }
112
- function b64Url(buf) {
113
- return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
114
- }
115
- /** Import unencrypted ssh-keygen/OpenSSH PEM into a native KeyObject (Ed25519 only). */
116
- export function importUnencryptedOpenSshEd25519PrivateKeyFromPem(pemArmored) {
117
- const blob = pemBase64BodyForOpenSshBlock(pemArmored.trim());
118
- const { seed32, pub32 } = parseUnencryptedOpenSshEd25519FromV1Blob(blob);
119
- return createPrivateKey({
120
- format: "jwk",
121
- key: {
122
- kty: "OKP",
123
- crv: "Ed25519",
124
- d: b64Url(seed32),
125
- x: b64Url(pub32),
126
- },
127
- });
128
- }
129
- //# sourceMappingURL=openssh-ed25519.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openssh-ed25519.js","sourceRoot":"","sources":["../../../src/mcp/ed25519/openssh-ed25519.ts"],"names":[],"mappings":"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"}