@continuumdao/continuum-node-sdk 1.2.17 → 1.2.18

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 (241) hide show
  1. package/dist/core/agent/mcp-servers-catalog.d.ts +12 -1
  2. package/dist/core/agent/mcp-servers-catalog.d.ts.map +1 -1
  3. package/dist/core/agent/mcp-servers-catalog.js +67 -4
  4. package/dist/core/agent/mcp-servers-catalog.js.map +1 -1
  5. package/dist/core/agent/webhooks-catalog.d.ts +10 -0
  6. package/dist/core/agent/webhooks-catalog.d.ts.map +1 -0
  7. package/dist/core/agent/webhooks-catalog.js +19 -0
  8. package/dist/core/agent/webhooks-catalog.js.map +1 -0
  9. package/package.json +2 -2
  10. package/dist/core/signing-flow.d.ts +0 -9
  11. package/dist/core/signing-flow.d.ts.map +0 -1
  12. package/dist/core/signing-flow.js +0 -139
  13. package/dist/core/signing-flow.js.map +0 -1
  14. package/dist/data/mpc-keys.d.ts +0 -8
  15. package/dist/data/mpc-keys.d.ts.map +0 -1
  16. package/dist/data/mpc-keys.js +0 -38
  17. package/dist/data/mpc-keys.js.map +0 -1
  18. package/dist/detops/general.d.ts +0 -11
  19. package/dist/detops/general.d.ts.map +0 -1
  20. package/dist/detops/general.js +0 -34
  21. package/dist/detops/general.js.map +0 -1
  22. package/dist/detops/group-actions.d.ts +0 -71
  23. package/dist/detops/group-actions.d.ts.map +0 -1
  24. package/dist/detops/group-actions.js +0 -360
  25. package/dist/detops/group-actions.js.map +0 -1
  26. package/dist/detops/groups.d.ts +0 -33
  27. package/dist/detops/groups.d.ts.map +0 -1
  28. package/dist/detops/groups.js +0 -223
  29. package/dist/detops/groups.js.map +0 -1
  30. package/dist/detops/keygen.d.ts +0 -72
  31. package/dist/detops/keygen.d.ts.map +0 -1
  32. package/dist/detops/keygen.js +0 -245
  33. package/dist/detops/keygen.js.map +0 -1
  34. package/dist/detops/management-keys.d.ts +0 -44
  35. package/dist/detops/management-keys.d.ts.map +0 -1
  36. package/dist/detops/management-keys.js +0 -216
  37. package/dist/detops/management-keys.js.map +0 -1
  38. package/dist/detops/management-signer.d.ts +0 -129
  39. package/dist/detops/management-signer.d.ts.map +0 -1
  40. package/dist/detops/management-signer.js +0 -619
  41. package/dist/detops/management-signer.js.map +0 -1
  42. package/dist/detops/management-signing.d.ts +0 -11
  43. package/dist/detops/management-signing.d.ts.map +0 -1
  44. package/dist/detops/management-signing.js +0 -131
  45. package/dist/detops/management-signing.js.map +0 -1
  46. package/dist/detops/mpc/broadcast-sign-result.d.ts +0 -9
  47. package/dist/detops/mpc/broadcast-sign-result.d.ts.map +0 -1
  48. package/dist/detops/mpc/broadcast-sign-result.js +0 -147
  49. package/dist/detops/mpc/broadcast-sign-result.js.map +0 -1
  50. package/dist/detops/mpc/bump-sign-result.d.ts +0 -25
  51. package/dist/detops/mpc/bump-sign-result.d.ts.map +0 -1
  52. package/dist/detops/mpc/bump-sign-result.js +0 -314
  53. package/dist/detops/mpc/bump-sign-result.js.map +0 -1
  54. package/dist/detops/mpc/client.d.ts +0 -15
  55. package/dist/detops/mpc/client.d.ts.map +0 -1
  56. package/dist/detops/mpc/client.js +0 -62
  57. package/dist/detops/mpc/client.js.map +0 -1
  58. package/dist/detops/mpc/compose-request.d.ts +0 -6
  59. package/dist/detops/mpc/compose-request.d.ts.map +0 -1
  60. package/dist/detops/mpc/compose-request.js +0 -33
  61. package/dist/detops/mpc/compose-request.js.map +0 -1
  62. package/dist/detops/mpc/context.d.ts +0 -11
  63. package/dist/detops/mpc/context.d.ts.map +0 -1
  64. package/dist/detops/mpc/context.js +0 -43
  65. package/dist/detops/mpc/context.js.map +0 -1
  66. package/dist/detops/mpc/forge-request.d.ts +0 -6
  67. package/dist/detops/mpc/forge-request.d.ts.map +0 -1
  68. package/dist/detops/mpc/forge-request.js +0 -46
  69. package/dist/detops/mpc/forge-request.js.map +0 -1
  70. package/dist/detops/mpc/gas-preflight.d.ts +0 -25
  71. package/dist/detops/mpc/gas-preflight.d.ts.map +0 -1
  72. package/dist/detops/mpc/gas-preflight.js +0 -101
  73. package/dist/detops/mpc/gas-preflight.js.map +0 -1
  74. package/dist/detops/mpc/list-ready.d.ts +0 -10
  75. package/dist/detops/mpc/list-ready.d.ts.map +0 -1
  76. package/dist/detops/mpc/list-ready.js +0 -48
  77. package/dist/detops/mpc/list-ready.js.map +0 -1
  78. package/dist/detops/mpc/management-post-sig.d.ts +0 -11
  79. package/dist/detops/mpc/management-post-sig.d.ts.map +0 -1
  80. package/dist/detops/mpc/management-post-sig.js +0 -20
  81. package/dist/detops/mpc/management-post-sig.js.map +0 -1
  82. package/dist/detops/mpc/mpa-top-up.d.ts +0 -18
  83. package/dist/detops/mpc/mpa-top-up.d.ts.map +0 -1
  84. package/dist/detops/mpc/mpa-top-up.js +0 -213
  85. package/dist/detops/mpc/mpa-top-up.js.map +0 -1
  86. package/dist/detops/mpc/register-keygen.d.ts +0 -6
  87. package/dist/detops/mpc/register-keygen.d.ts.map +0 -1
  88. package/dist/detops/mpc/register-keygen.js +0 -41
  89. package/dist/detops/mpc/register-keygen.js.map +0 -1
  90. package/dist/detops/mpc/schemas.d.ts +0 -251
  91. package/dist/detops/mpc/schemas.d.ts.map +0 -1
  92. package/dist/detops/mpc/schemas.js +0 -163
  93. package/dist/detops/mpc/schemas.js.map +0 -1
  94. package/dist/detops/mpc/sign-request-body.d.ts +0 -10
  95. package/dist/detops/mpc/sign-request-body.d.ts.map +0 -1
  96. package/dist/detops/mpc/sign-request-body.js +0 -64
  97. package/dist/detops/mpc/sign-request-body.js.map +0 -1
  98. package/dist/detops/mpc/sign-request-utils.d.ts +0 -33
  99. package/dist/detops/mpc/sign-request-utils.d.ts.map +0 -1
  100. package/dist/detops/mpc/sign-request-utils.js +0 -467
  101. package/dist/detops/mpc/sign-request-utils.js.map +0 -1
  102. package/dist/detops/mpc/transfer-native.d.ts +0 -6
  103. package/dist/detops/mpc/transfer-native.d.ts.map +0 -1
  104. package/dist/detops/mpc/transfer-native.js +0 -167
  105. package/dist/detops/mpc/transfer-native.js.map +0 -1
  106. package/dist/detops/mpc/transfer-tokens.d.ts +0 -15
  107. package/dist/detops/mpc/transfer-tokens.d.ts.map +0 -1
  108. package/dist/detops/mpc/transfer-tokens.js +0 -110
  109. package/dist/detops/mpc/transfer-tokens.js.map +0 -1
  110. package/dist/detops/mpc/trigger-sign-result.d.ts +0 -8
  111. package/dist/detops/mpc/trigger-sign-result.d.ts.map +0 -1
  112. package/dist/detops/mpc/trigger-sign-result.js +0 -244
  113. package/dist/detops/mpc/trigger-sign-result.js.map +0 -1
  114. package/dist/detops/mpc/types.d.ts +0 -62
  115. package/dist/detops/mpc/types.d.ts.map +0 -1
  116. package/dist/detops/mpc/types.js +0 -2
  117. package/dist/detops/mpc/types.js.map +0 -1
  118. package/dist/detops/node-info.d.ts +0 -27
  119. package/dist/detops/node-info.d.ts.map +0 -1
  120. package/dist/detops/node-info.js +0 -96
  121. package/dist/detops/node-info.js.map +0 -1
  122. package/dist/detops/registry/address-book.d.ts +0 -25
  123. package/dist/detops/registry/address-book.d.ts.map +0 -1
  124. package/dist/detops/registry/address-book.js +0 -83
  125. package/dist/detops/registry/address-book.js.map +0 -1
  126. package/dist/detops/registry/networks.d.ts +0 -20
  127. package/dist/detops/registry/networks.d.ts.map +0 -1
  128. package/dist/detops/registry/networks.js +0 -154
  129. package/dist/detops/registry/networks.js.map +0 -1
  130. package/dist/detops/registry/tokens.d.ts +0 -29
  131. package/dist/detops/registry/tokens.d.ts.map +0 -1
  132. package/dist/detops/registry/tokens.js +0 -142
  133. package/dist/detops/registry/tokens.js.map +0 -1
  134. package/dist/detops/result.d.ts +0 -21
  135. package/dist/detops/result.d.ts.map +0 -1
  136. package/dist/detops/result.js +0 -2
  137. package/dist/detops/result.js.map +0 -1
  138. package/dist/detops/schemas.d.ts +0 -153
  139. package/dist/detops/schemas.d.ts.map +0 -1
  140. package/dist/detops/schemas.js +0 -82
  141. package/dist/detops/schemas.js.map +0 -1
  142. package/dist/detops/signing-flow.d.ts +0 -9
  143. package/dist/detops/signing-flow.d.ts.map +0 -1
  144. package/dist/detops/signing-flow.js +0 -139
  145. package/dist/detops/signing-flow.js.map +0 -1
  146. package/dist/detops/types.d.ts +0 -58
  147. package/dist/detops/types.d.ts.map +0 -1
  148. package/dist/detops/types.js +0 -46
  149. package/dist/detops/types.js.map +0 -1
  150. package/dist/internal/ed25519/management-signing.d.ts +0 -51
  151. package/dist/internal/ed25519/management-signing.d.ts.map +0 -1
  152. package/dist/internal/ed25519/management-signing.js +0 -198
  153. package/dist/internal/ed25519/management-signing.js.map +0 -1
  154. package/dist/internal/ed25519/openssh-ed25519.d.ts +0 -20
  155. package/dist/internal/ed25519/openssh-ed25519.d.ts.map +0 -1
  156. package/dist/internal/ed25519/openssh-ed25519.js +0 -129
  157. package/dist/internal/ed25519/openssh-ed25519.js.map +0 -1
  158. package/dist/internal/management-request-signing.d.ts +0 -32
  159. package/dist/internal/management-request-signing.d.ts.map +0 -1
  160. package/dist/internal/management-request-signing.js +0 -186
  161. package/dist/internal/management-request-signing.js.map +0 -1
  162. package/dist/mcp/detops/registry/address-book.d.ts +0 -4
  163. package/dist/mcp/detops/registry/address-book.d.ts.map +0 -1
  164. package/dist/mcp/detops/registry/address-book.js +0 -39
  165. package/dist/mcp/detops/registry/address-book.js.map +0 -1
  166. package/dist/mcp/detops/registry/networks.d.ts +0 -4
  167. package/dist/mcp/detops/registry/networks.d.ts.map +0 -1
  168. package/dist/mcp/detops/registry/networks.js +0 -32
  169. package/dist/mcp/detops/registry/networks.js.map +0 -1
  170. package/dist/mcp/detops/registry/tokens.d.ts +0 -4
  171. package/dist/mcp/detops/registry/tokens.d.ts.map +0 -1
  172. package/dist/mcp/detops/registry/tokens.js +0 -43
  173. package/dist/mcp/detops/registry/tokens.js.map +0 -1
  174. package/dist/mcp/ed25519/management-signing.d.ts +0 -51
  175. package/dist/mcp/ed25519/management-signing.d.ts.map +0 -1
  176. package/dist/mcp/ed25519/management-signing.js +0 -198
  177. package/dist/mcp/ed25519/management-signing.js.map +0 -1
  178. package/dist/mcp/ed25519/openssh-ed25519.d.ts +0 -20
  179. package/dist/mcp/ed25519/openssh-ed25519.d.ts.map +0 -1
  180. package/dist/mcp/ed25519/openssh-ed25519.js +0 -129
  181. package/dist/mcp/ed25519/openssh-ed25519.js.map +0 -1
  182. package/dist/mcp/groups.d.ts +0 -71
  183. package/dist/mcp/groups.d.ts.map +0 -1
  184. package/dist/mcp/groups.js +0 -360
  185. package/dist/mcp/groups.js.map +0 -1
  186. package/dist/mcp/management-keys.d.ts +0 -4
  187. package/dist/mcp/management-keys.d.ts.map +0 -1
  188. package/dist/mcp/management-keys.js +0 -75
  189. package/dist/mcp/management-keys.js.map +0 -1
  190. package/dist/mcp/normalize.d.ts +0 -15
  191. package/dist/mcp/normalize.d.ts.map +0 -1
  192. package/dist/mcp/normalize.js +0 -204
  193. package/dist/mcp/normalize.js.map +0 -1
  194. package/dist/mcp/schemas.d.ts +0 -360
  195. package/dist/mcp/schemas.d.ts.map +0 -1
  196. package/dist/mcp/schemas.js +0 -263
  197. package/dist/mcp/schemas.js.map +0 -1
  198. package/dist/mcp/signing.d.ts +0 -32
  199. package/dist/mcp/signing.d.ts.map +0 -1
  200. package/dist/mcp/signing.js +0 -186
  201. package/dist/mcp/signing.js.map +0 -1
  202. package/dist/ops/general.d.ts +0 -11
  203. package/dist/ops/general.d.ts.map +0 -1
  204. package/dist/ops/general.js +0 -34
  205. package/dist/ops/general.js.map +0 -1
  206. package/dist/ops/groups.d.ts +0 -17
  207. package/dist/ops/groups.d.ts.map +0 -1
  208. package/dist/ops/groups.js +0 -105
  209. package/dist/ops/groups.js.map +0 -1
  210. package/dist/ops/management-signing.d.ts +0 -11
  211. package/dist/ops/management-signing.d.ts.map +0 -1
  212. package/dist/ops/management-signing.js +0 -131
  213. package/dist/ops/management-signing.js.map +0 -1
  214. package/dist/ops/result.d.ts +0 -21
  215. package/dist/ops/result.d.ts.map +0 -1
  216. package/dist/ops/result.js +0 -2
  217. package/dist/ops/result.js.map +0 -1
  218. package/dist/ops/schemas.d.ts +0 -153
  219. package/dist/ops/schemas.d.ts.map +0 -1
  220. package/dist/ops/schemas.js +0 -82
  221. package/dist/ops/schemas.js.map +0 -1
  222. package/dist/ops/signing-flow.d.ts +0 -8
  223. package/dist/ops/signing-flow.d.ts.map +0 -1
  224. package/dist/ops/signing-flow.js +0 -125
  225. package/dist/ops/signing-flow.js.map +0 -1
  226. package/dist/ops/types.d.ts +0 -58
  227. package/dist/ops/types.d.ts.map +0 -1
  228. package/dist/ops/types.js +0 -46
  229. package/dist/ops/types.js.map +0 -1
  230. package/dist/registry/address-book.d.ts +0 -25
  231. package/dist/registry/address-book.d.ts.map +0 -1
  232. package/dist/registry/address-book.js +0 -103
  233. package/dist/registry/address-book.js.map +0 -1
  234. package/dist/registry/networks.d.ts +0 -18
  235. package/dist/registry/networks.d.ts.map +0 -1
  236. package/dist/registry/networks.js +0 -180
  237. package/dist/registry/networks.js.map +0 -1
  238. package/dist/registry/tokens.d.ts +0 -29
  239. package/dist/registry/tokens.d.ts.map +0 -1
  240. package/dist/registry/tokens.js +0 -157
  241. 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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"}