run402-mcp 4.120.0 → 4.122.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/core/dist/profiles.d.ts +2 -0
  2. package/core/dist/profiles.d.ts.map +1 -1
  3. package/core/dist/profiles.js.map +1 -1
  4. package/core/dist/wallet-auth.d.ts +30 -0
  5. package/core/dist/wallet-auth.d.ts.map +1 -1
  6. package/core/dist/wallet-auth.js +77 -38
  7. package/core/dist/wallet-auth.js.map +1 -1
  8. package/core/dist/wallet.d.ts +22 -1
  9. package/core/dist/wallet.d.ts.map +1 -1
  10. package/core/dist/wallet.js +21 -0
  11. package/core/dist/wallet.js.map +1 -1
  12. package/dist/docs/llms-sdk.txt +34 -6
  13. package/dist/wallet-auth.d.ts +4 -2
  14. package/dist/wallet-auth.d.ts.map +1 -1
  15. package/dist/wallet-auth.js +6 -1
  16. package/dist/wallet-auth.js.map +1 -1
  17. package/package.json +2 -1
  18. package/schemas/release-spec.v1.json +4 -2
  19. package/sdk/README.md +1 -1
  20. package/sdk/core-dist/profiles.d.ts +2 -0
  21. package/sdk/core-dist/wallet-auth.d.ts +30 -0
  22. package/sdk/core-dist/wallet-auth.js +77 -38
  23. package/sdk/core-dist/wallet.d.ts +22 -1
  24. package/sdk/core-dist/wallet.js +21 -0
  25. package/sdk/dist/credentials.d.ts +15 -1
  26. package/sdk/dist/credentials.d.ts.map +1 -1
  27. package/sdk/dist/errors.d.ts +14 -0
  28. package/sdk/dist/errors.d.ts.map +1 -1
  29. package/sdk/dist/errors.js +22 -0
  30. package/sdk/dist/errors.js.map +1 -1
  31. package/sdk/dist/index.d.ts +1 -1
  32. package/sdk/dist/index.d.ts.map +1 -1
  33. package/sdk/dist/index.js +1 -1
  34. package/sdk/dist/index.js.map +1 -1
  35. package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
  36. package/sdk/dist/namespaces/deploy.js +3 -0
  37. package/sdk/dist/namespaces/deploy.js.map +1 -1
  38. package/sdk/dist/namespaces/deploy.types.d.ts +4 -2
  39. package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -1
  40. package/sdk/dist/namespaces/deploy.types.js +4 -0
  41. package/sdk/dist/namespaces/deploy.types.js.map +1 -1
  42. package/sdk/dist/namespaces/pay.d.ts +7 -0
  43. package/sdk/dist/namespaces/pay.d.ts.map +1 -1
  44. package/sdk/dist/namespaces/pay.js +5 -0
  45. package/sdk/dist/namespaces/pay.js.map +1 -1
  46. package/sdk/dist/node/_paid-stack.d.ts +26 -3
  47. package/sdk/dist/node/_paid-stack.d.ts.map +1 -1
  48. package/sdk/dist/node/_paid-stack.js +19 -0
  49. package/sdk/dist/node/_paid-stack.js.map +1 -1
  50. package/sdk/dist/node/ci.d.ts +1 -1
  51. package/sdk/dist/node/ci.d.ts.map +1 -1
  52. package/sdk/dist/node/ci.js +8 -6
  53. package/sdk/dist/node/ci.js.map +1 -1
  54. package/sdk/dist/node/credentials.d.ts.map +1 -1
  55. package/sdk/dist/node/credentials.js +5 -4
  56. package/sdk/dist/node/credentials.js.map +1 -1
  57. package/sdk/dist/node/index.d.ts +2 -1
  58. package/sdk/dist/node/index.d.ts.map +1 -1
  59. package/sdk/dist/node/index.js +2 -1
  60. package/sdk/dist/node/index.js.map +1 -1
  61. package/sdk/dist/node/lightning-paid-fetch.d.ts.map +1 -1
  62. package/sdk/dist/node/lightning-paid-fetch.js +2 -0
  63. package/sdk/dist/node/lightning-paid-fetch.js.map +1 -1
  64. package/sdk/dist/node/mpp-pay-executor.d.ts +40 -0
  65. package/sdk/dist/node/mpp-pay-executor.d.ts.map +1 -0
  66. package/sdk/dist/node/mpp-pay-executor.js +352 -0
  67. package/sdk/dist/node/mpp-pay-executor.js.map +1 -0
  68. package/sdk/dist/node/org-adopt.d.ts +1 -1
  69. package/sdk/dist/node/org-adopt.d.ts.map +1 -1
  70. package/sdk/dist/node/org-adopt.js +9 -7
  71. package/sdk/dist/node/org-adopt.js.map +1 -1
  72. package/sdk/dist/node/paid-fetch.d.ts +2 -1
  73. package/sdk/dist/node/paid-fetch.d.ts.map +1 -1
  74. package/sdk/dist/node/paid-fetch.js +50 -22
  75. package/sdk/dist/node/paid-fetch.js.map +1 -1
  76. package/sdk/dist/node/payment-attempts.d.ts +2 -2
  77. package/sdk/dist/node/payment-attempts.d.ts.map +1 -1
  78. package/sdk/dist/node/payment-attempts.js +2 -2
  79. package/sdk/dist/node/payment-attempts.js.map +1 -1
  80. package/sdk/dist/node/payment-offers.d.ts +35 -0
  81. package/sdk/dist/node/payment-offers.d.ts.map +1 -0
  82. package/sdk/dist/node/payment-offers.js +145 -0
  83. package/sdk/dist/node/payment-offers.js.map +1 -0
  84. package/sdk/dist/node/signers/index.d.ts +26 -0
  85. package/sdk/dist/node/signers/index.d.ts.map +1 -0
  86. package/sdk/dist/node/signers/index.js +35 -0
  87. package/sdk/dist/node/signers/index.js.map +1 -0
  88. package/sdk/dist/node/signers/kms.d.ts +54 -0
  89. package/sdk/dist/node/signers/kms.d.ts.map +1 -0
  90. package/sdk/dist/node/signers/kms.js +236 -0
  91. package/sdk/dist/node/signers/kms.js.map +1 -0
  92. package/sdk/dist/node/wallets-send.d.ts +62 -0
  93. package/sdk/dist/node/wallets-send.d.ts.map +1 -0
  94. package/sdk/dist/node/wallets-send.js +149 -0
  95. package/sdk/dist/node/wallets-send.js.map +1 -0
  96. package/sdk/dist/node/wallets.d.ts +33 -5
  97. package/sdk/dist/node/wallets.d.ts.map +1 -1
  98. package/sdk/dist/node/wallets.js +78 -12
  99. package/sdk/dist/node/wallets.js.map +1 -1
  100. package/sdk/dist/secret-gate.d.ts +1 -1
  101. package/sdk/dist/secret-gate.d.ts.map +1 -1
  102. package/sdk/dist/secret-gate.js +7 -2
  103. package/sdk/dist/secret-gate.js.map +1 -1
@@ -24,6 +24,8 @@ export interface ProfileMeta {
24
24
  label?: string | null;
25
25
  rail?: "x402" | "mpp";
26
26
  created?: string;
27
+ /** How the wallet signs: a local key, or a signer reference (an AWS KMS key). Absent means local. */
28
+ signer?: "local" | "aws_kms";
27
29
  }
28
30
  export declare function readBaseConfig(): BaseConfig;
29
31
  export declare function writeBaseConfig(cfg: BaseConfig): void;
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwBH,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAqBD,wBAAgB,cAAc,IAAI,UAAU,CAU3C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAErD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAGzC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAInD;AAID,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBrD;AAMD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAUzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAG/D;AAID,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAc3C;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA0CpE"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwBH,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qGAAqG;IACrG,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAqBD,wBAAgB,cAAc,IAAI,UAAU,CAU3C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAErD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAGzC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAInD;AAID,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBrD;AAMD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAUzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAG/D;AAID,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAc3C;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA0CpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,MAAM,GACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAepD,SAAS,WAAW,CAAC,CAAS,EAAE,OAAe,EAAE,IAAY;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;AACH,CAAC;AAED,2DAA2D;AAE3D,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,aAAa,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAoB,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAe;IAC7C,WAAW,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC,aAAa,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,eAAe,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,4CAA4C;AAE5C,sFAAsF;AACtF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;AACtF,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC;QACH,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAqB,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAiB;IACvD,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,kCAAkC;AAElC,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,eAAe,EAAE,CAAC;IAClB,OAAO,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,eAAe,EAAE,CAAC;IAClB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3E,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAe;IAC5D,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,6CAA6C;QAC7C,sEAAsE;QACtE,oCAAoC;QACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,mBAAmB,CAAC,CAAC;IACjE,CAAC;IACD,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,SAAS,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC;YACjE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,UAAU,CAAC,GAAG,CAAC;gBAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,cAAc,CAAC,CAAC;IACpD,CAAC;IACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,MAAM,GACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAiBpD,SAAS,WAAW,CAAC,CAAS,EAAE,OAAe,EAAE,IAAY;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;AACH,CAAC;AAED,2DAA2D;AAE3D,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,aAAa,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAoB,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAe;IAC7C,WAAW,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC,aAAa,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,eAAe,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,4CAA4C;AAE5C,sFAAsF;AACtF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;AACtF,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC;QACH,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAqB,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAiB;IACvD,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,kCAAkC;AAElC,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,eAAe,EAAE,CAAC;IAClB,OAAO,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,eAAe,EAAE,CAAC;IAClB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3E,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAe;IAC5D,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,6CAA6C;QAC7C,sEAAsE;QACtE,oCAAoC;QACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,mBAAmB,CAAC,CAAC;IACjE,CAAC;IACD,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,SAAS,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC;YACjE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,UAAU,CAAC,GAAG,CAAC;gBAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,cAAc,CAAC,CAAC;IACpD,CAAC;IACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC"}
@@ -25,12 +25,42 @@ export interface SIWxAuthOptions extends SIWEMessageOpts {
25
25
  wallet: Pick<WalletData, "address" | "privateKey">;
26
26
  type?: "eip191";
27
27
  }
28
+ /** Signs an EIP-191 personal message for `address`; resolves to a 65-byte 0x hex signature. */
29
+ export type PersonalMessageSigner = (message: string) => Promise<string>;
30
+ /**
31
+ * A SIWX header waiting for its signature: `message` is the exact EIP-4361
32
+ * text to sign (EIP-191), `finish` turns the signature into the header. This
33
+ * is how a signer-backed wallet, whose signature is asynchronous, signs in.
34
+ */
35
+ export interface PreparedSIWx {
36
+ message: string;
37
+ finish(signature: string): SIWxAuthHeaders;
38
+ }
39
+ export declare function prepareSIWx(opts: SIWEMessageOpts & {
40
+ address: string;
41
+ type?: "eip191";
42
+ }): PreparedSIWx;
28
43
  /**
29
44
  * Format an EIP-4361 (SIWE) message. Must be byte-for-byte compatible
30
45
  * with the `siwe` library's message format used server-side for verification.
31
46
  */
32
47
  export declare function formatSIWEMessage(opts: SIWEMessageOpts, address: string): string;
48
+ /** SIWX headers signed with a local private key (synchronous). */
33
49
  export declare function buildSIWxAuthHeaders(opts: SIWxAuthOptions): SIWxAuthHeaders;
50
+ /**
51
+ * Thrown where a synchronous signature is required but the wallet signs
52
+ * through a signer (`wallet.json` `signer`). Callers that can wait use
53
+ * `getWalletAuthHeadersAsync` with the SDK's signer instead.
54
+ */
55
+ export declare class SignerWalletError extends Error {
56
+ readonly code = "SIGNER_WALLET_ASYNC";
57
+ constructor();
58
+ }
59
+ /**
60
+ * SIWX headers for any wallet: a key-backed wallet signs locally; a
61
+ * signer-backed one through `signerFor(wallet)`. Null when no wallet exists.
62
+ */
63
+ export declare function getWalletAuthHeadersAsync(path: string, walletPath: string | undefined, signerFor: (wallet: WalletData) => Promise<PersonalMessageSigner>): Promise<SIWxAuthHeaders | null>;
34
64
  /**
35
65
  * Get SIWX auth headers for the Run402 API.
36
66
  * Returns null if no local wallet is configured.
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQzD;AA4CD,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBhF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAwB3E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA4B9F"}
1
+ {"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQzD;AA4CD,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,+FAA+F;AAC/F,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;CAC5C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,GAAG,YAAY,CA0BtG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBhF;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAM3E;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,yBAAyB;;CAKvC;AAiBD;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,qBAAqB,CAAC,GAChE,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAOjC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAW9F"}
@@ -6,7 +6,7 @@ import { randomBytes } from "node:crypto";
6
6
  import { secp256k1 } from "@noble/curves/secp256k1.js";
7
7
  import { keccak_256 } from "@noble/hashes/sha3.js";
8
8
  import { bytesToHex } from "@noble/hashes/utils.js";
9
- import { readWallet } from "./wallet.js";
9
+ import { isSignerWallet, readWallet } from "./wallet.js";
10
10
  import { getApiBase } from "./config.js";
11
11
  /**
12
12
  * EIP-55 mixed-case checksum encoding.
@@ -57,6 +57,33 @@ function personalSign(privateKeyHex, address, message) {
57
57
  const vHex = (recovery + 27).toString(16).padStart(2, "0");
58
58
  return "0x" + r + s + vHex;
59
59
  }
60
+ export function prepareSIWx(opts) {
61
+ const message = formatSIWEMessage(opts, opts.address);
62
+ return {
63
+ message,
64
+ finish(signature) {
65
+ const payload = {
66
+ domain: opts.domain,
67
+ address: toChecksumAddress(opts.address),
68
+ statement: opts.statement,
69
+ uri: opts.uri,
70
+ version: opts.version ?? "1",
71
+ chainId: payloadChainId(opts.chainId),
72
+ type: opts.type ?? "eip191",
73
+ nonce: opts.nonce,
74
+ issuedAt: opts.issuedAt,
75
+ expirationTime: opts.expirationTime,
76
+ signature,
77
+ };
78
+ if (opts.resources !== undefined) {
79
+ payload.resources = opts.resources;
80
+ }
81
+ return {
82
+ "SIGN-IN-WITH-X": Buffer.from(JSON.stringify(payload)).toString("base64"),
83
+ };
84
+ },
85
+ };
86
+ }
60
87
  /**
61
88
  * Format an EIP-4361 (SIWE) message. Must be byte-for-byte compatible
62
89
  * with the `siwe` library's message format used server-side for verification.
@@ -85,29 +112,54 @@ export function formatSIWEMessage(opts, address) {
85
112
  }
86
113
  return lines.join("\n");
87
114
  }
115
+ /** SIWX headers signed with a local private key (synchronous). */
88
116
  export function buildSIWxAuthHeaders(opts) {
89
- const message = formatSIWEMessage(opts, opts.wallet.address);
90
- const signature = personalSign(opts.wallet.privateKey, opts.wallet.address, message);
91
- const payload = {
92
- domain: opts.domain,
93
- address: toChecksumAddress(opts.wallet.address),
94
- statement: opts.statement,
95
- uri: opts.uri,
96
- version: opts.version ?? "1",
97
- chainId: payloadChainId(opts.chainId),
98
- type: opts.type ?? "eip191",
99
- nonce: opts.nonce,
100
- issuedAt: opts.issuedAt,
101
- expirationTime: opts.expirationTime,
102
- signature,
103
- };
104
- if (opts.resources !== undefined) {
105
- payload.resources = opts.resources;
117
+ if (!opts.wallet.privateKey) {
118
+ throw new SignerWalletError();
106
119
  }
120
+ const prepared = prepareSIWx({ ...opts, address: opts.wallet.address });
121
+ return prepared.finish(personalSign(opts.wallet.privateKey, opts.wallet.address, prepared.message));
122
+ }
123
+ /**
124
+ * Thrown where a synchronous signature is required but the wallet signs
125
+ * through a signer (`wallet.json` `signer`). Callers that can wait use
126
+ * `getWalletAuthHeadersAsync` with the SDK's signer instead.
127
+ */
128
+ export class SignerWalletError extends Error {
129
+ code = "SIGNER_WALLET_ASYNC";
130
+ constructor() {
131
+ super("This wallet signs through a signer (wallet.json 'signer'), which this synchronous path cannot use.");
132
+ this.name = "SignerWalletError";
133
+ }
134
+ }
135
+ function walletSIWxOptions(path) {
136
+ const apiBase = getApiBase();
137
+ const url = new URL(apiBase);
138
+ const now = new Date();
107
139
  return {
108
- "SIGN-IN-WITH-X": Buffer.from(JSON.stringify(payload)).toString("base64"),
140
+ domain: url.hostname,
141
+ uri: `${apiBase}${path}`,
142
+ statement: "Sign in to Run402",
143
+ chainId: "eip155:84532",
144
+ nonce: randomBytes(16).toString("hex"),
145
+ issuedAt: now.toISOString(),
146
+ expirationTime: new Date(now.getTime() + 5 * 60 * 1000).toISOString(),
109
147
  };
110
148
  }
149
+ /**
150
+ * SIWX headers for any wallet: a key-backed wallet signs locally; a
151
+ * signer-backed one through `signerFor(wallet)`. Null when no wallet exists.
152
+ */
153
+ export async function getWalletAuthHeadersAsync(path, walletPath, signerFor) {
154
+ const localWallet = readWallet(walletPath);
155
+ if (!localWallet || !localWallet.address)
156
+ return null;
157
+ if (!isSignerWallet(localWallet))
158
+ return getWalletAuthHeaders(path, walletPath);
159
+ const prepared = prepareSIWx({ ...walletSIWxOptions(path), address: localWallet.address });
160
+ const sign = await signerFor(localWallet);
161
+ return prepared.finish(await sign(prepared.message));
162
+ }
111
163
  /**
112
164
  * Get SIWX auth headers for the Run402 API.
113
165
  * Returns null if no local wallet is configured.
@@ -121,26 +173,13 @@ export function getWalletAuthHeaders(path, walletPath) {
121
173
  // this helper returns SIWxAuthHeaders | null. Re-throw so callers above
122
174
  // the CLI's wrapper (e.g. SDK paid-fetch) can decide whether to swallow it.
123
175
  const localWallet = readWallet(walletPath);
124
- if (!localWallet || !localWallet.address || !localWallet.privateKey)
176
+ if (!localWallet || !localWallet.address)
125
177
  return null;
126
- const apiBase = getApiBase();
127
- const url = new URL(apiBase);
128
- const domain = url.hostname;
129
- const uri = `${apiBase}${path}`;
130
- const nonce = randomBytes(16).toString("hex");
131
- const now = new Date();
132
- const issuedAt = now.toISOString();
133
- const expirationTime = new Date(now.getTime() + 5 * 60 * 1000).toISOString();
134
- return buildSIWxAuthHeaders({
135
- wallet: localWallet,
136
- domain,
137
- uri,
138
- statement: "Sign in to Run402",
139
- chainId: "eip155:84532",
140
- nonce,
141
- issuedAt,
142
- expirationTime,
143
- });
178
+ if (isSignerWallet(localWallet))
179
+ throw new SignerWalletError();
180
+ if (!localWallet.privateKey)
181
+ return null;
182
+ return buildSIWxAuthHeaders({ wallet: localWallet, ...walletSIWxOptions(path) });
144
183
  }
145
184
  function messageChainId(chainId) {
146
185
  if (typeof chainId === "number")
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,aAAqB,EAAE,OAAe,EAAE,OAAe;IAC3E,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CACrC,iCAAiC,QAAQ,CAAC,MAAM,EAAE,CACnD,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC;QAC1C,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC,aAAa,CAAC;IAClB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAElD,iEAAiE;IACjE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;YACnF,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC3D,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;YACR,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC7B,CAAC;AAgCD,MAAM,UAAU,WAAW,CAAC,IAA4D;IACtF,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,OAAO;QACL,OAAO;QACP,MAAM,CAAC,SAAiB;YACtB,MAAM,OAAO,GAA4B;gBACvC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;gBACxC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG;gBAC5B,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;gBACrC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,QAAQ;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,SAAS;aACV,CAAC;YACF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACrC,CAAC;YACD,OAAO;gBACL,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAC1E,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAqB,EAAE,OAAe;IACtE,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG;QACZ,GAAG,IAAI,CAAC,MAAM,mDAAmD;QACjE,WAAW;QACX,EAAE;QACF,IAAI,CAAC,SAAS;QACd,EAAE;QACF,QAAQ,IAAI,CAAC,GAAG,EAAE;QAClB,YAAY,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE;QACjC,aAAa,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC3C,UAAU,IAAI,CAAC,KAAK,EAAE;QACtB,cAAc,IAAI,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,oBAAoB,CAAC,IAAqB;IACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,iBAAiB,EAAE,CAAC;IAChC,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACtG,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,GAAG,qBAAqB,CAAC;IACtC;QACE,KAAK,CAAC,oGAAoG,CAAC,CAAC;QAC5G,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,QAAQ;QACpB,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,EAAE;QACxB,SAAS,EAAE,mBAAmB;QAC9B,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtC,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;QAC3B,cAAc,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;KACtE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAAY,EACZ,UAA8B,EAC9B,SAAiE;IAEjE,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAAE,OAAO,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1C,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,UAAmB;IACpE,0DAA0D;IAC1D,sEAAsE;IACtE,sEAAsE;IACtE,wEAAwE;IACxE,4EAA4E;IAC5E,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,cAAc,CAAC,WAAW,CAAC;QAAE,MAAM,IAAI,iBAAiB,EAAE,CAAC;IAC/D,IAAI,CAAC,WAAW,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,cAAc,CAAC,OAAwB;IAC9C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACrC,CAAC;AAED,SAAS,cAAc,CAAC,OAAwB;IAC9C,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACrE,CAAC"}
@@ -1,6 +1,14 @@
1
+ /**
2
+ * A wallet is backed by exactly one of: a local private key (`privateKey`),
3
+ * or a signer reference (`signer`) naming where the key lives. A signer
4
+ * reference holds no secret.
5
+ */
1
6
  export interface WalletData {
2
7
  address: string;
3
- privateKey: string;
8
+ /** Local signing key. Absent on a signer-backed wallet. */
9
+ privateKey?: string;
10
+ /** Where a signer-backed wallet's key lives. Absent on a key-backed wallet. */
11
+ signer?: WalletSigner;
4
12
  created?: string;
5
13
  funded?: boolean;
6
14
  lastFaucet?: string;
@@ -8,6 +16,14 @@ export interface WalletData {
8
16
  /** The Lightning wallet (`run402 init lightning`): a budgeted wallet on Run402's Hub. `nwc` is the pairing secret. */
9
17
  lightning?: WalletLightning;
10
18
  }
19
+ /** An AWS KMS `ECC_SECG_P256K1` / `SIGN_VERIFY` key, adopted by reference. */
20
+ export interface WalletSigner {
21
+ kind: "aws_kms";
22
+ key_arn: string;
23
+ region: string;
24
+ /** The AWS profile used to reach the key (an SSO profile); default credential chain when absent. */
25
+ aws_profile?: string;
26
+ }
11
27
  export interface WalletLightning {
12
28
  wallet_id: string;
13
29
  nwc: string;
@@ -17,6 +33,11 @@ export interface WalletLightning {
17
33
  custody: "run402_hub";
18
34
  minted_at: string;
19
35
  }
36
+ export declare const KMS_KEY_ARN_RE: RegExp;
37
+ /** True when the wallet signs through a signer instead of a local key. */
38
+ export declare function isSignerWallet(wallet: Pick<WalletData, "signer">): wallet is WalletData & {
39
+ signer: WalletSigner;
40
+ };
20
41
  export declare function readWallet(path?: string): WalletData | null;
21
42
  export declare function saveWallet(data: WalletData, path?: string): void;
22
43
  //# sourceMappingURL=wallet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;IACpC,sHAAsH;IACtH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAkDD,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAwC3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAQhE"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;IACpC,sHAAsH;IACtH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,oGAAoG;IACpG,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD,eAAO,MAAM,cAAc,QAAgE,CAAC;AAE5F,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,IAAI,UAAU,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAElH;AA6CD,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA6D3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAQhE"}
@@ -6,6 +6,12 @@ import { getWalletPath } from "./config.js";
6
6
  const ADDRESS_RE = /^0x[a-fA-F0-9]{40}$/;
7
7
  // 0x-prefixed 64-hex secp256k1 private key (32 bytes).
8
8
  const PRIVATE_KEY_RE = /^0x[a-fA-F0-9]{64}$/;
9
+ // arn:aws:kms:<region>:<account>:key/<id>
10
+ export const KMS_KEY_ARN_RE = /^arn:aws[a-z-]*:kms:([a-z0-9-]+):\d{12}:key\/[A-Za-z0-9-]+$/;
11
+ /** True when the wallet signs through a signer instead of a local key. */
12
+ export function isSignerWallet(wallet) {
13
+ return wallet.signer !== undefined;
14
+ }
9
15
  /**
10
16
  * Load the agent wallet from disk.
11
17
  *
@@ -78,6 +84,21 @@ export function readWallet(path) {
78
84
  throw new Error("wallet.json missing valid 'address' (expected 0x-prefixed 40-hex string). " +
79
85
  "Back up the file and run 'run402 init' to recreate it.");
80
86
  }
87
+ if (data.privateKey !== undefined && data.signer !== undefined) {
88
+ throw new Error(`${p} has both 'privateKey' and 'signer'; a wallet is backed by exactly one. ` +
89
+ "Remove the one that does not belong to this wallet.");
90
+ }
91
+ if (data.signer !== undefined) {
92
+ const signer = data.signer;
93
+ if (!signer || typeof signer !== "object" || signer.kind !== "aws_kms" ||
94
+ typeof signer.key_arn !== "string" || !KMS_KEY_ARN_RE.test(signer.key_arn) ||
95
+ typeof signer.region !== "string" || signer.region.length === 0 ||
96
+ (signer.aws_profile !== undefined && (typeof signer.aws_profile !== "string" || signer.aws_profile.length === 0))) {
97
+ throw new Error(`${p} has a malformed 'signer' (expected { kind: "aws_kms", key_arn, region, aws_profile? }). ` +
98
+ "Re-import the wallet with 'run402 wallets import <name> --kms <key-arn>'.");
99
+ }
100
+ return data;
101
+ }
81
102
  if (typeof data.privateKey !== "string" || !PRIVATE_KEY_RE.test(data.privateKey)) {
82
103
  throw new Error("wallet.json missing valid 'privateKey' (expected 0x-prefixed 64-hex string). " +
83
104
  "Back up the file and run 'run402 init' to recreate it.");
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
@@ -227,7 +227,31 @@ or the rail's ceiling, and refuses an entry on another network with
227
227
  `nostr+walletconnect://` URI, a bearer secret the MCP sandbox refuses with
228
228
  `SECRET_REQUIRES_CLI`) pays with that pairing on its node's network instead.
229
229
  The receipt of a Lightning payment reports the `lnbtc:` network, the payment
230
- hash as `transaction`, `amountMsat`, and no payer:
230
+ hash as `transaction`, `amountMsat`, and no payer.
231
+
232
+ On the `mpp` rail it pays a 402 that carries an MPP Tempo charge
233
+ (`WWW-Authenticate: Payment`, method `tempo`, intent `charge`) in pathUSD on
234
+ the first offered Tempo chain the wallet covers (price plus fee headroom),
235
+ applying `maxUsdMicros` to the selected challenge before anything is signed,
236
+ then retries the identical request with `Authorization: Payment`. Its receipt
237
+ reports `protocol: "mpp"`, `method: "tempo"`, the `eip155:4217` /
238
+ `eip155:42431` network, pathUSD as `asset`, the Tempo transaction hash as
239
+ `transaction`, and the seller's decoded `Payment-Receipt` as
240
+ `evidence.protocolReceipt`; `offer.status` and `merchantReceipt.status` are
241
+ `"unavailable"` (MPP carries no wallet-rooted merchant evidence, so
242
+ `requireReceipt` fails `MERCHANT_RECEIPT_REQUIRED` before signing). An x402
243
+ receipt reports `protocol: "x402"`, `method: "exact"`. Over MPP a payment's
244
+ identity is its credential, not the caller key: `idempotencyKey` is forwarded
245
+ for correlation only, and an ambiguous or pending outcome is resolved by
246
+ repeating the identical request on the same SDK instance, which re-presents
247
+ the same credential; the seller resolves it to the original payment
248
+ (`deduplicated: true`, `fundsMoved: false`) and never charges twice.
249
+
250
+ When the wallet's rail cannot pay anything the 402 offers, the buyer fails
251
+ `PAYMENT_NETWORK_UNSUPPORTED` before signing, with `details.offers[]` listing
252
+ every offer it saw (`{ protocol, method, intent?, network }`, x402 entries and
253
+ MPP challenges alike) and a `run402 init <rail> --switch-rail` next action
254
+ naming the rail that pays the first offer:
231
255
 
232
256
  ```ts
233
257
  import { run402 } from "@run402/sdk/node";
@@ -259,7 +283,8 @@ validity, settlement, payer, transaction, and signer relationship. Branch on
259
283
  lifetime/key-reuse codes, or `PAYMENT_SETTLEMENT_FAILED`. The error preserves
260
284
  `fundsMoved`, `paymentId`, intent/delivery events, and canonical `nextActions`.
261
285
  Successful results preserve `paymentId`, `deduplicated`, `fundsMoved`,
262
- `delivery`, `settledAt`, and `intentState` when supplied.
286
+ `delivery`, `settledAt`, and `intentState` when supplied. Every receipt names
287
+ the `protocol` (`x402` | `mpp`) and `method` (`exact` | `tempo`) that paid.
263
288
  A seller may settle and then deliberately answer a non-2xx (for example a
264
289
  400 refusing the paid action). When that response carries a valid standard
265
290
  `PAYMENT-RESPONSE` receipt for the accepted challenge, `r.pay.fetch` returns a
@@ -585,7 +610,7 @@ await r.wallets.unbind();
585
610
  await r.wallets.remove("ci-deploy", { confirm: true });
586
611
  ```
587
612
 
588
- `r.wallets.import(name, privateKey)` adopts an existing key; `privateKey` may be a function, called only after the name checks pass. `resolveWalletSelection()`, `assertWalletExists()`, and `selectWallet()` (which also publishes the selection to the environment for the rest of the process) are exported for programs that choose a wallet before building a client.
613
+ `r.wallets.import(name, privateKey)` adopts an existing key; `privateKey` may be a function, called only after the name checks pass. `r.wallets.import(name, { kms: { keyId, awsProfile? } })` adopts an AWS KMS key by reference (`keyId` is the key ARN; read-only `GetPublicKey`): the profile's `wallet.json` holds `signer: { kind: "aws_kms", key_arn, region, aws_profile? }` and no secret, and every signature (SIWX, x402, MPP, transactions) is made by KMS. `@aws-sdk/client-kms` is an optional peer loaded only for such a wallet. `r.wallets.list()` / `current()` report `signer: "local" | "aws_kms"`. `r.wallets.send({ amount, to, from?, network?, confirm? })` sends USDC on `base` / `base-sepolia` (optionally `from` an owned CoinbaseSmartWallet) or pathUSD on `tempo` / `tempo-moderato`; without `confirm: true` it returns the checked preview. On the sandbox surface `import` refuses with `SECRET_REQUIRES_CLI` and `send` with `VALUE_TRANSFER_REQUIRES_CLI`. `resolveWalletSelection()`, `assertWalletExists()`, and `selectWallet()` (which also publishes the selection to the environment for the rest of the process) are exported for programs that choose a wallet before building a client.
589
614
 
590
615
  ### Organization context
591
616
 
@@ -1206,7 +1231,7 @@ const r = run402({ disablePaidFetch: true });
1206
1231
  await r.ci.createBinding({
1207
1232
  ...values,
1208
1233
  provider: CI_GITHUB_ACTIONS_PROVIDER,
1209
- signed_delegation: signCiDelegation(values),
1234
+ signed_delegation: await signCiDelegation(values),
1210
1235
  });
1211
1236
  ```
1212
1237
 
@@ -1335,7 +1360,10 @@ The `Run402` class exposes focused namespaces. Click into the SDK source for ful
1335
1360
  r.pay.fetch(url, init?, { maxUsdMicros?, idempotencyKey?, requireReceipt?, maxSats?, lightningPairing? }): Promise<PayFetchResult>
1336
1361
  ```
1337
1362
 
1338
- Node automatically supplies the configured wallet/signer. Isomorphic hosts
1363
+ Node automatically supplies the configured wallet/signer and pays on its rail:
1364
+ x402 `exact` on Base, Lightning on the `lightning` rail, and an MPP Tempo charge
1365
+ in pathUSD on the `mpp` rail. The receipt names `protocol` (`x402` | `mpp`) and
1366
+ `method` (`exact` | `tempo`). Isomorphic hosts
1339
1367
  may inject `payExecutor` in `Run402Options`; without one, unpriced URLs pass
1340
1368
  through and a 402 fails locally with `PAYMENT_WALLET_UNFUNDED`.
1341
1369
 
@@ -1592,7 +1620,7 @@ Node-only CI exports from `@run402/sdk/node`:
1592
1620
  ```
1593
1621
  signCiDelegation(values, opts?: {
1594
1622
  apiBase?, walletPath?, chainId?, issuedAt?, expirationTime?, nonce?
1595
- }): string
1623
+ }): Promise<string>
1596
1624
 
1597
1625
  createCiSessionCredentials({
1598
1626
  projectId, accessToken?, getAccessToken?
@@ -6,10 +6,12 @@ import { type ToolResult } from "./structured.js";
6
6
  export type { SIWxAuthHeaders };
7
7
  export declare const getWalletAuthHeaders: typeof _getWalletAuthHeaders;
8
8
  /**
9
- * Get SIWX auth headers or return an MCP error result.
9
+ * Check a wallet is configured (and, for a key-backed wallet, return its SIWX
10
+ * headers), or return an MCP error result. A signer-backed wallet (KMS) signs
11
+ * asynchronously inside the SDK, so it returns no headers here.
10
12
  */
11
13
  export declare function requireWalletAuth(path: string): {
12
- headers: SIWxAuthHeaders;
14
+ headers: SIWxAuthHeaders | null;
13
15
  } | {
14
16
  error: ToolResult;
15
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAElH,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/D,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,eAAO,MAAM,oBAAoB,8BAAwB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAC/C,OAAO,EAAE,eAAe,CAAC;CAC1B,GAAG;IACF,KAAK,EAAE,UAAU,CAAC;CACnB,CAmBA"}
1
+ {"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGlH,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/D,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,eAAO,MAAM,oBAAoB,8BAAwB,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAC/C,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC,GAAG;IACF,KAAK,EAAE,UAAU,CAAC;CACnB,CAoBA"}
@@ -2,12 +2,17 @@
2
2
  * SIWX auth helper — re-exports core signing + adds MCP-specific error wrapper.
3
3
  */
4
4
  import { getWalletAuthHeaders as _getWalletAuthHeaders } from "../core/dist/wallet-auth.js";
5
+ import { readWallet } from "../core/dist/wallet.js";
5
6
  import { errorResult } from "./structured.js";
6
7
  export const getWalletAuthHeaders = _getWalletAuthHeaders;
7
8
  /**
8
- * Get SIWX auth headers or return an MCP error result.
9
+ * Check a wallet is configured (and, for a key-backed wallet, return its SIWX
10
+ * headers), or return an MCP error result. A signer-backed wallet (KMS) signs
11
+ * asynchronously inside the SDK, so it returns no headers here.
9
12
  */
10
13
  export function requireWalletAuth(path) {
14
+ if (readWallet()?.signer)
15
+ return { headers: null };
11
16
  const headers = getWalletAuthHeaders(path);
12
17
  if (!headers) {
13
18
  // Creating a wallet writes a private key, which only the CLI hands to a
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAwB,MAAM,6BAA6B,CAAC;AAElH,OAAO,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAI/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAK5C,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,wEAAwE;QACxE,yDAAyD;QACzD,OAAO;YACL,KAAK,EAAE,WAAW,CAChB,sIAAsI,EACtI;gBACE,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,6BAA6B;gBACtC,YAAY,EAAE;oBACZ,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,qGAAqG,EAAE;iBAChK;aACF,CACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAwB,MAAM,6BAA6B,CAAC;AAClH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAI/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAK5C,IAAI,UAAU,EAAE,EAAE,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,wEAAwE;QACxE,yDAAyD;QACzD,OAAO;YACL,KAAK,EAAE,WAAW,CAChB,sIAAsI,EACtI;gBACE,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,6BAA6B;gBACtC,YAAY,EAAE;oBACZ,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,qGAAqG,EAAE;iBAChK;aACF,CACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "run402-mcp",
3
- "version": "4.120.0",
3
+ "version": "4.122.0",
4
4
  "packageManager": "npm@11.19.0",
5
5
  "mcpName": "com.run402/mcp",
6
6
  "description": "MCP server for Run402 — full-stack backend infrastructure for AI agents: Postgres, auth, storage, serverless functions and atomic deploys. Paid with x402/MPP. Includes $0.03 image generation.",
@@ -70,6 +70,7 @@
70
70
  "node": ">=22.13.0"
71
71
  },
72
72
  "dependencies": {
73
+ "@aws-sdk/client-kms": "^3.1147.0",
73
74
  "@hpke/chacha20poly1305": "^1.8.0",
74
75
  "@hpke/core": "^1.9.0",
75
76
  "@humanwhocodes/momoa": "3.3.10",
@@ -751,10 +751,12 @@
751
751
  "mainnet",
752
752
  "testnet",
753
753
  "lightning",
754
- "lightning-testnet"
754
+ "lightning-testnet",
755
+ "tempo",
756
+ "tempo-testnet"
755
757
  ]
756
758
  },
757
- "description": "Omit to accept production mainnet only. Include testnet explicitly for testnet payments. `lightning` / `lightning-testnet` sell for sats over x402 `exact` on `lnbtc`, settled to the org's Lightning receiver (`run402 orgs lightning-receiver set`); `receipt` cannot be combined with them."
759
+ "description": "Omit to accept production mainnet only. Include testnet explicitly for testnet payments. `lightning` / `lightning-testnet` sell for sats over x402 `exact` on `lnbtc`, settled to the org's Lightning receiver (`run402 orgs lightning-receiver set`). `tempo` / `tempo-testnet` also take an MPP Tempo charge in pathUSD on Tempo mainnet (chain 4217) / Moderato (42431), paid to the org's payout address. `receipt` cannot be combined with Lightning or Tempo networks."
758
760
  }
759
761
  }
760
762
  },
package/sdk/README.md CHANGED
@@ -886,7 +886,7 @@ const values = {
886
886
  };
887
887
 
888
888
  const r = run402({ disablePaidFetch: true });
889
- const signed_delegation = signCiDelegation(values);
889
+ const signed_delegation = await signCiDelegation(values);
890
890
  await r.ci.createBinding({
891
891
  ...values,
892
892
  provider: CI_GITHUB_ACTIONS_PROVIDER,
@@ -24,6 +24,8 @@ export interface ProfileMeta {
24
24
  label?: string | null;
25
25
  rail?: "x402" | "mpp";
26
26
  created?: string;
27
+ /** How the wallet signs: a local key, or a signer reference (an AWS KMS key). Absent means local. */
28
+ signer?: "local" | "aws_kms";
27
29
  }
28
30
  export declare function readBaseConfig(): BaseConfig;
29
31
  export declare function writeBaseConfig(cfg: BaseConfig): void;
@@ -25,12 +25,42 @@ export interface SIWxAuthOptions extends SIWEMessageOpts {
25
25
  wallet: Pick<WalletData, "address" | "privateKey">;
26
26
  type?: "eip191";
27
27
  }
28
+ /** Signs an EIP-191 personal message for `address`; resolves to a 65-byte 0x hex signature. */
29
+ export type PersonalMessageSigner = (message: string) => Promise<string>;
30
+ /**
31
+ * A SIWX header waiting for its signature: `message` is the exact EIP-4361
32
+ * text to sign (EIP-191), `finish` turns the signature into the header. This
33
+ * is how a signer-backed wallet, whose signature is asynchronous, signs in.
34
+ */
35
+ export interface PreparedSIWx {
36
+ message: string;
37
+ finish(signature: string): SIWxAuthHeaders;
38
+ }
39
+ export declare function prepareSIWx(opts: SIWEMessageOpts & {
40
+ address: string;
41
+ type?: "eip191";
42
+ }): PreparedSIWx;
28
43
  /**
29
44
  * Format an EIP-4361 (SIWE) message. Must be byte-for-byte compatible
30
45
  * with the `siwe` library's message format used server-side for verification.
31
46
  */
32
47
  export declare function formatSIWEMessage(opts: SIWEMessageOpts, address: string): string;
48
+ /** SIWX headers signed with a local private key (synchronous). */
33
49
  export declare function buildSIWxAuthHeaders(opts: SIWxAuthOptions): SIWxAuthHeaders;
50
+ /**
51
+ * Thrown where a synchronous signature is required but the wallet signs
52
+ * through a signer (`wallet.json` `signer`). Callers that can wait use
53
+ * `getWalletAuthHeadersAsync` with the SDK's signer instead.
54
+ */
55
+ export declare class SignerWalletError extends Error {
56
+ readonly code = "SIGNER_WALLET_ASYNC";
57
+ constructor();
58
+ }
59
+ /**
60
+ * SIWX headers for any wallet: a key-backed wallet signs locally; a
61
+ * signer-backed one through `signerFor(wallet)`. Null when no wallet exists.
62
+ */
63
+ export declare function getWalletAuthHeadersAsync(path: string, walletPath: string | undefined, signerFor: (wallet: WalletData) => Promise<PersonalMessageSigner>): Promise<SIWxAuthHeaders | null>;
34
64
  /**
35
65
  * Get SIWX auth headers for the Run402 API.
36
66
  * Returns null if no local wallet is configured.