envoy-pay 0.1.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 (364) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/LICENSE +200 -0
  3. package/README.md +529 -0
  4. package/dist/cjs/adapters/base.js +174 -0
  5. package/dist/cjs/adapters/base.js.map +1 -0
  6. package/dist/cjs/adapters/evm.js +339 -0
  7. package/dist/cjs/adapters/evm.js.map +1 -0
  8. package/dist/cjs/adapters/index.js +15 -0
  9. package/dist/cjs/adapters/index.js.map +1 -0
  10. package/dist/cjs/adapters/ows.js +204 -0
  11. package/dist/cjs/adapters/ows.js.map +1 -0
  12. package/dist/cjs/adapters/solana.js +210 -0
  13. package/dist/cjs/adapters/solana.js.map +1 -0
  14. package/dist/cjs/adapters/stellar.js +173 -0
  15. package/dist/cjs/adapters/stellar.js.map +1 -0
  16. package/dist/cjs/adapters/stripe.js +338 -0
  17. package/dist/cjs/adapters/stripe.js.map +1 -0
  18. package/dist/cjs/adapters/types.js +3 -0
  19. package/dist/cjs/adapters/types.js.map +1 -0
  20. package/dist/cjs/client.js +309 -0
  21. package/dist/cjs/client.js.map +1 -0
  22. package/dist/cjs/contracts/abis/EnvoyFacilitator.js +197 -0
  23. package/dist/cjs/contracts/abis/EnvoyFacilitator.js.map +1 -0
  24. package/dist/cjs/contracts/addresses.js +42 -0
  25. package/dist/cjs/contracts/addresses.js.map +1 -0
  26. package/dist/cjs/contracts/facilitator.js +225 -0
  27. package/dist/cjs/contracts/facilitator.js.map +1 -0
  28. package/dist/cjs/contracts/index.js +21 -0
  29. package/dist/cjs/contracts/index.js.map +1 -0
  30. package/dist/cjs/facilitator/facilitator-service.js +305 -0
  31. package/dist/cjs/facilitator/facilitator-service.js.map +1 -0
  32. package/dist/cjs/facilitator/fee-calculator.js +134 -0
  33. package/dist/cjs/facilitator/fee-calculator.js.map +1 -0
  34. package/dist/cjs/facilitator/index.js +12 -0
  35. package/dist/cjs/facilitator/index.js.map +1 -0
  36. package/dist/cjs/facilitator/types.js +99 -0
  37. package/dist/cjs/facilitator/types.js.map +1 -0
  38. package/dist/cjs/identity/agent-card.js +143 -0
  39. package/dist/cjs/identity/agent-card.js.map +1 -0
  40. package/dist/cjs/identity/agent-identity.js +166 -0
  41. package/dist/cjs/identity/agent-identity.js.map +1 -0
  42. package/dist/cjs/identity/did-resolver.js +149 -0
  43. package/dist/cjs/identity/did-resolver.js.map +1 -0
  44. package/dist/cjs/identity/erc8004/abis.js +218 -0
  45. package/dist/cjs/identity/erc8004/abis.js.map +1 -0
  46. package/dist/cjs/identity/erc8004/identity.js +268 -0
  47. package/dist/cjs/identity/erc8004/identity.js.map +1 -0
  48. package/dist/cjs/identity/erc8004/index.js +36 -0
  49. package/dist/cjs/identity/erc8004/index.js.map +1 -0
  50. package/dist/cjs/identity/erc8004/reputation.js +110 -0
  51. package/dist/cjs/identity/erc8004/reputation.js.map +1 -0
  52. package/dist/cjs/identity/erc8004/types.js +3 -0
  53. package/dist/cjs/identity/erc8004/types.js.map +1 -0
  54. package/dist/cjs/identity/index.js +61 -0
  55. package/dist/cjs/identity/index.js.map +1 -0
  56. package/dist/cjs/identity/owner-registry.js +140 -0
  57. package/dist/cjs/identity/owner-registry.js.map +1 -0
  58. package/dist/cjs/identity/reputation.js +193 -0
  59. package/dist/cjs/identity/reputation.js.map +1 -0
  60. package/dist/cjs/identity/types.js +16 -0
  61. package/dist/cjs/identity/types.js.map +1 -0
  62. package/dist/cjs/index.js +72 -0
  63. package/dist/cjs/index.js.map +1 -0
  64. package/dist/cjs/logger.js +7 -0
  65. package/dist/cjs/logger.js.map +1 -0
  66. package/dist/cjs/monitor/evm-watcher.js +165 -0
  67. package/dist/cjs/monitor/evm-watcher.js.map +1 -0
  68. package/dist/cjs/monitor/index.js +32 -0
  69. package/dist/cjs/monitor/index.js.map +1 -0
  70. package/dist/cjs/monitor/multi-watcher.js +94 -0
  71. package/dist/cjs/monitor/multi-watcher.js.map +1 -0
  72. package/dist/cjs/monitor/solana-watcher.js +172 -0
  73. package/dist/cjs/monitor/solana-watcher.js.map +1 -0
  74. package/dist/cjs/monitor/stellar-watcher.js +125 -0
  75. package/dist/cjs/monitor/stellar-watcher.js.map +1 -0
  76. package/dist/cjs/mpp.js +187 -0
  77. package/dist/cjs/mpp.js.map +1 -0
  78. package/dist/cjs/policy.js +71 -0
  79. package/dist/cjs/policy.js.map +1 -0
  80. package/dist/cjs/providers/bridge.js +323 -0
  81. package/dist/cjs/providers/bridge.js.map +1 -0
  82. package/dist/cjs/providers/onchainos.js +210 -0
  83. package/dist/cjs/providers/onchainos.js.map +1 -0
  84. package/dist/cjs/requests/eip681.js +77 -0
  85. package/dist/cjs/requests/eip681.js.map +1 -0
  86. package/dist/cjs/requests/index.js +18 -0
  87. package/dist/cjs/requests/index.js.map +1 -0
  88. package/dist/cjs/requests/sep7.js +61 -0
  89. package/dist/cjs/requests/sep7.js.map +1 -0
  90. package/dist/cjs/requests/solana-pay.js +51 -0
  91. package/dist/cjs/requests/solana-pay.js.map +1 -0
  92. package/dist/cjs/requests/universal.js +40 -0
  93. package/dist/cjs/requests/universal.js.map +1 -0
  94. package/dist/cjs/server/index.js +35 -0
  95. package/dist/cjs/server/index.js.map +1 -0
  96. package/dist/cjs/server/mpp-gate.js +118 -0
  97. package/dist/cjs/server/mpp-gate.js.map +1 -0
  98. package/dist/cjs/server/payment-gate.js +92 -0
  99. package/dist/cjs/server/payment-gate.js.map +1 -0
  100. package/dist/cjs/server/receipt.js +52 -0
  101. package/dist/cjs/server/receipt.js.map +1 -0
  102. package/dist/cjs/server/webhook.js +122 -0
  103. package/dist/cjs/server/webhook.js.map +1 -0
  104. package/dist/cjs/server/x402-gate.js +103 -0
  105. package/dist/cjs/server/x402-gate.js.map +1 -0
  106. package/dist/cjs/solana.js +14 -0
  107. package/dist/cjs/solana.js.map +1 -0
  108. package/dist/cjs/stellar.js +14 -0
  109. package/dist/cjs/stellar.js.map +1 -0
  110. package/dist/cjs/wallet/balance-aggregator.js +149 -0
  111. package/dist/cjs/wallet/balance-aggregator.js.map +1 -0
  112. package/dist/cjs/wallet/chain-router.js +254 -0
  113. package/dist/cjs/wallet/chain-router.js.map +1 -0
  114. package/dist/cjs/wallet/index.js +15 -0
  115. package/dist/cjs/wallet/index.js.map +1 -0
  116. package/dist/cjs/wallet/intent-resolver.js +145 -0
  117. package/dist/cjs/wallet/intent-resolver.js.map +1 -0
  118. package/dist/cjs/wallet/session-manager.js +170 -0
  119. package/dist/cjs/wallet/session-manager.js.map +1 -0
  120. package/dist/cjs/wallet/types.js +14 -0
  121. package/dist/cjs/wallet/types.js.map +1 -0
  122. package/dist/cjs/wallet/unified-wallet.js +253 -0
  123. package/dist/cjs/wallet/unified-wallet.js.map +1 -0
  124. package/dist/esm/adapters/base.js +170 -0
  125. package/dist/esm/adapters/base.js.map +1 -0
  126. package/dist/esm/adapters/evm.js +334 -0
  127. package/dist/esm/adapters/evm.js.map +1 -0
  128. package/dist/esm/adapters/index.js +6 -0
  129. package/dist/esm/adapters/index.js.map +1 -0
  130. package/dist/esm/adapters/ows.js +194 -0
  131. package/dist/esm/adapters/ows.js.map +1 -0
  132. package/dist/esm/adapters/solana.js +206 -0
  133. package/dist/esm/adapters/solana.js.map +1 -0
  134. package/dist/esm/adapters/stellar.js +136 -0
  135. package/dist/esm/adapters/stellar.js.map +1 -0
  136. package/dist/esm/adapters/stripe.js +334 -0
  137. package/dist/esm/adapters/stripe.js.map +1 -0
  138. package/dist/esm/adapters/types.js +2 -0
  139. package/dist/esm/adapters/types.js.map +1 -0
  140. package/dist/esm/client.js +302 -0
  141. package/dist/esm/client.js.map +1 -0
  142. package/dist/esm/contracts/abis/EnvoyFacilitator.js +194 -0
  143. package/dist/esm/contracts/abis/EnvoyFacilitator.js.map +1 -0
  144. package/dist/esm/contracts/addresses.js +38 -0
  145. package/dist/esm/contracts/addresses.js.map +1 -0
  146. package/dist/esm/contracts/facilitator.js +218 -0
  147. package/dist/esm/contracts/facilitator.js.map +1 -0
  148. package/dist/esm/contracts/index.js +8 -0
  149. package/dist/esm/contracts/index.js.map +1 -0
  150. package/dist/esm/facilitator/facilitator-service.js +301 -0
  151. package/dist/esm/facilitator/facilitator-service.js.map +1 -0
  152. package/dist/esm/facilitator/fee-calculator.js +130 -0
  153. package/dist/esm/facilitator/fee-calculator.js.map +1 -0
  154. package/dist/esm/facilitator/index.js +5 -0
  155. package/dist/esm/facilitator/index.js.map +1 -0
  156. package/dist/esm/facilitator/types.js +96 -0
  157. package/dist/esm/facilitator/types.js.map +1 -0
  158. package/dist/esm/identity/agent-card.js +139 -0
  159. package/dist/esm/identity/agent-card.js.map +1 -0
  160. package/dist/esm/identity/agent-identity.js +162 -0
  161. package/dist/esm/identity/agent-identity.js.map +1 -0
  162. package/dist/esm/identity/did-resolver.js +145 -0
  163. package/dist/esm/identity/did-resolver.js.map +1 -0
  164. package/dist/esm/identity/erc8004/abis.js +215 -0
  165. package/dist/esm/identity/erc8004/abis.js.map +1 -0
  166. package/dist/esm/identity/erc8004/identity.js +250 -0
  167. package/dist/esm/identity/erc8004/identity.js.map +1 -0
  168. package/dist/esm/identity/erc8004/index.js +13 -0
  169. package/dist/esm/identity/erc8004/index.js.map +1 -0
  170. package/dist/esm/identity/erc8004/reputation.js +105 -0
  171. package/dist/esm/identity/erc8004/reputation.js.map +1 -0
  172. package/dist/esm/identity/erc8004/types.js +2 -0
  173. package/dist/esm/identity/erc8004/types.js.map +1 -0
  174. package/dist/esm/identity/index.js +19 -0
  175. package/dist/esm/identity/index.js.map +1 -0
  176. package/dist/esm/identity/owner-registry.js +136 -0
  177. package/dist/esm/identity/owner-registry.js.map +1 -0
  178. package/dist/esm/identity/reputation.js +189 -0
  179. package/dist/esm/identity/reputation.js.map +1 -0
  180. package/dist/esm/identity/types.js +15 -0
  181. package/dist/esm/identity/types.js.map +1 -0
  182. package/dist/esm/index.js +37 -0
  183. package/dist/esm/index.js.map +1 -0
  184. package/dist/esm/logger.js +3 -0
  185. package/dist/esm/logger.js.map +1 -0
  186. package/dist/esm/monitor/evm-watcher.js +162 -0
  187. package/dist/esm/monitor/evm-watcher.js.map +1 -0
  188. package/dist/esm/monitor/index.js +25 -0
  189. package/dist/esm/monitor/index.js.map +1 -0
  190. package/dist/esm/monitor/multi-watcher.js +91 -0
  191. package/dist/esm/monitor/multi-watcher.js.map +1 -0
  192. package/dist/esm/monitor/solana-watcher.js +169 -0
  193. package/dist/esm/monitor/solana-watcher.js.map +1 -0
  194. package/dist/esm/monitor/stellar-watcher.js +122 -0
  195. package/dist/esm/monitor/stellar-watcher.js.map +1 -0
  196. package/dist/esm/mpp.js +175 -0
  197. package/dist/esm/mpp.js.map +1 -0
  198. package/dist/esm/policy.js +67 -0
  199. package/dist/esm/policy.js.map +1 -0
  200. package/dist/esm/providers/bridge.js +319 -0
  201. package/dist/esm/providers/bridge.js.map +1 -0
  202. package/dist/esm/providers/onchainos.js +172 -0
  203. package/dist/esm/providers/onchainos.js.map +1 -0
  204. package/dist/esm/requests/eip681.js +74 -0
  205. package/dist/esm/requests/eip681.js.map +1 -0
  206. package/dist/esm/requests/index.js +11 -0
  207. package/dist/esm/requests/index.js.map +1 -0
  208. package/dist/esm/requests/sep7.js +58 -0
  209. package/dist/esm/requests/sep7.js.map +1 -0
  210. package/dist/esm/requests/solana-pay.js +48 -0
  211. package/dist/esm/requests/solana-pay.js.map +1 -0
  212. package/dist/esm/requests/universal.js +37 -0
  213. package/dist/esm/requests/universal.js.map +1 -0
  214. package/dist/esm/server/index.js +27 -0
  215. package/dist/esm/server/index.js.map +1 -0
  216. package/dist/esm/server/mpp-gate.js +115 -0
  217. package/dist/esm/server/mpp-gate.js.map +1 -0
  218. package/dist/esm/server/payment-gate.js +89 -0
  219. package/dist/esm/server/payment-gate.js.map +1 -0
  220. package/dist/esm/server/receipt.js +48 -0
  221. package/dist/esm/server/receipt.js.map +1 -0
  222. package/dist/esm/server/webhook.js +119 -0
  223. package/dist/esm/server/webhook.js.map +1 -0
  224. package/dist/esm/server/x402-gate.js +100 -0
  225. package/dist/esm/server/x402-gate.js.map +1 -0
  226. package/dist/esm/solana.js +8 -0
  227. package/dist/esm/solana.js.map +1 -0
  228. package/dist/esm/stellar.js +8 -0
  229. package/dist/esm/stellar.js.map +1 -0
  230. package/dist/esm/wallet/balance-aggregator.js +145 -0
  231. package/dist/esm/wallet/balance-aggregator.js.map +1 -0
  232. package/dist/esm/wallet/chain-router.js +250 -0
  233. package/dist/esm/wallet/chain-router.js.map +1 -0
  234. package/dist/esm/wallet/index.js +7 -0
  235. package/dist/esm/wallet/index.js.map +1 -0
  236. package/dist/esm/wallet/intent-resolver.js +141 -0
  237. package/dist/esm/wallet/intent-resolver.js.map +1 -0
  238. package/dist/esm/wallet/session-manager.js +166 -0
  239. package/dist/esm/wallet/session-manager.js.map +1 -0
  240. package/dist/esm/wallet/types.js +13 -0
  241. package/dist/esm/wallet/types.js.map +1 -0
  242. package/dist/esm/wallet/unified-wallet.js +249 -0
  243. package/dist/esm/wallet/unified-wallet.js.map +1 -0
  244. package/dist/types/adapters/base.d.ts +53 -0
  245. package/dist/types/adapters/base.d.ts.map +1 -0
  246. package/dist/types/adapters/evm.d.ts +93 -0
  247. package/dist/types/adapters/evm.d.ts.map +1 -0
  248. package/dist/types/adapters/index.d.ts +7 -0
  249. package/dist/types/adapters/index.d.ts.map +1 -0
  250. package/dist/types/adapters/ows.d.ts +123 -0
  251. package/dist/types/adapters/ows.d.ts.map +1 -0
  252. package/dist/types/adapters/solana.d.ts +77 -0
  253. package/dist/types/adapters/solana.d.ts.map +1 -0
  254. package/dist/types/adapters/stellar.d.ts +67 -0
  255. package/dist/types/adapters/stellar.d.ts.map +1 -0
  256. package/dist/types/adapters/stripe.d.ts +206 -0
  257. package/dist/types/adapters/stripe.d.ts.map +1 -0
  258. package/dist/types/adapters/types.d.ts +110 -0
  259. package/dist/types/adapters/types.d.ts.map +1 -0
  260. package/dist/types/client.d.ts +89 -0
  261. package/dist/types/client.d.ts.map +1 -0
  262. package/dist/types/contracts/abis/EnvoyFacilitator.d.ts +296 -0
  263. package/dist/types/contracts/abis/EnvoyFacilitator.d.ts.map +1 -0
  264. package/dist/types/contracts/addresses.d.ts +24 -0
  265. package/dist/types/contracts/addresses.d.ts.map +1 -0
  266. package/dist/types/contracts/facilitator.d.ts +172 -0
  267. package/dist/types/contracts/facilitator.d.ts.map +1 -0
  268. package/dist/types/contracts/index.d.ts +6 -0
  269. package/dist/types/contracts/index.d.ts.map +1 -0
  270. package/dist/types/facilitator/facilitator-service.d.ts +69 -0
  271. package/dist/types/facilitator/facilitator-service.d.ts.map +1 -0
  272. package/dist/types/facilitator/fee-calculator.d.ts +48 -0
  273. package/dist/types/facilitator/fee-calculator.d.ts.map +1 -0
  274. package/dist/types/facilitator/index.d.ts +5 -0
  275. package/dist/types/facilitator/index.d.ts.map +1 -0
  276. package/dist/types/facilitator/types.d.ts +221 -0
  277. package/dist/types/facilitator/types.d.ts.map +1 -0
  278. package/dist/types/identity/agent-card.d.ts +83 -0
  279. package/dist/types/identity/agent-card.d.ts.map +1 -0
  280. package/dist/types/identity/agent-identity.d.ts +102 -0
  281. package/dist/types/identity/agent-identity.d.ts.map +1 -0
  282. package/dist/types/identity/did-resolver.d.ts +70 -0
  283. package/dist/types/identity/did-resolver.d.ts.map +1 -0
  284. package/dist/types/identity/erc8004/abis.d.ts +336 -0
  285. package/dist/types/identity/erc8004/abis.d.ts.map +1 -0
  286. package/dist/types/identity/erc8004/identity.d.ts +109 -0
  287. package/dist/types/identity/erc8004/identity.d.ts.map +1 -0
  288. package/dist/types/identity/erc8004/index.d.ts +15 -0
  289. package/dist/types/identity/erc8004/index.d.ts.map +1 -0
  290. package/dist/types/identity/erc8004/reputation.d.ts +52 -0
  291. package/dist/types/identity/erc8004/reputation.d.ts.map +1 -0
  292. package/dist/types/identity/erc8004/types.d.ts +31 -0
  293. package/dist/types/identity/erc8004/types.d.ts.map +1 -0
  294. package/dist/types/identity/index.d.ts +10 -0
  295. package/dist/types/identity/index.d.ts.map +1 -0
  296. package/dist/types/identity/owner-registry.d.ts +68 -0
  297. package/dist/types/identity/owner-registry.d.ts.map +1 -0
  298. package/dist/types/identity/reputation.d.ts +66 -0
  299. package/dist/types/identity/reputation.d.ts.map +1 -0
  300. package/dist/types/identity/types.d.ts +182 -0
  301. package/dist/types/identity/types.d.ts.map +1 -0
  302. package/dist/types/index.d.ts +17 -0
  303. package/dist/types/index.d.ts.map +1 -0
  304. package/dist/types/logger.d.ts +10 -0
  305. package/dist/types/logger.d.ts.map +1 -0
  306. package/dist/types/monitor/evm-watcher.d.ts +40 -0
  307. package/dist/types/monitor/evm-watcher.d.ts.map +1 -0
  308. package/dist/types/monitor/index.d.ts +25 -0
  309. package/dist/types/monitor/index.d.ts.map +1 -0
  310. package/dist/types/monitor/multi-watcher.d.ts +48 -0
  311. package/dist/types/monitor/multi-watcher.d.ts.map +1 -0
  312. package/dist/types/monitor/solana-watcher.d.ts +36 -0
  313. package/dist/types/monitor/solana-watcher.d.ts.map +1 -0
  314. package/dist/types/monitor/stellar-watcher.d.ts +34 -0
  315. package/dist/types/monitor/stellar-watcher.d.ts.map +1 -0
  316. package/dist/types/mpp.d.ts +153 -0
  317. package/dist/types/mpp.d.ts.map +1 -0
  318. package/dist/types/policy.d.ts +40 -0
  319. package/dist/types/policy.d.ts.map +1 -0
  320. package/dist/types/providers/bridge.d.ts +162 -0
  321. package/dist/types/providers/bridge.d.ts.map +1 -0
  322. package/dist/types/providers/onchainos.d.ts +128 -0
  323. package/dist/types/providers/onchainos.d.ts.map +1 -0
  324. package/dist/types/requests/eip681.d.ts +51 -0
  325. package/dist/types/requests/eip681.d.ts.map +1 -0
  326. package/dist/types/requests/index.d.ts +11 -0
  327. package/dist/types/requests/index.d.ts.map +1 -0
  328. package/dist/types/requests/sep7.d.ts +56 -0
  329. package/dist/types/requests/sep7.d.ts.map +1 -0
  330. package/dist/types/requests/solana-pay.d.ts +50 -0
  331. package/dist/types/requests/solana-pay.d.ts.map +1 -0
  332. package/dist/types/requests/universal.d.ts +28 -0
  333. package/dist/types/requests/universal.d.ts.map +1 -0
  334. package/dist/types/server/index.d.ts +27 -0
  335. package/dist/types/server/index.d.ts.map +1 -0
  336. package/dist/types/server/mpp-gate.d.ts +66 -0
  337. package/dist/types/server/mpp-gate.d.ts.map +1 -0
  338. package/dist/types/server/payment-gate.d.ts +33 -0
  339. package/dist/types/server/payment-gate.d.ts.map +1 -0
  340. package/dist/types/server/receipt.d.ts +52 -0
  341. package/dist/types/server/receipt.d.ts.map +1 -0
  342. package/dist/types/server/webhook.d.ts +46 -0
  343. package/dist/types/server/webhook.d.ts.map +1 -0
  344. package/dist/types/server/x402-gate.d.ts +70 -0
  345. package/dist/types/server/x402-gate.d.ts.map +1 -0
  346. package/dist/types/solana.d.ts +7 -0
  347. package/dist/types/solana.d.ts.map +1 -0
  348. package/dist/types/stellar.d.ts +7 -0
  349. package/dist/types/stellar.d.ts.map +1 -0
  350. package/dist/types/wallet/balance-aggregator.d.ts +51 -0
  351. package/dist/types/wallet/balance-aggregator.d.ts.map +1 -0
  352. package/dist/types/wallet/chain-router.d.ts +44 -0
  353. package/dist/types/wallet/chain-router.d.ts.map +1 -0
  354. package/dist/types/wallet/index.d.ts +7 -0
  355. package/dist/types/wallet/index.d.ts.map +1 -0
  356. package/dist/types/wallet/intent-resolver.d.ts +39 -0
  357. package/dist/types/wallet/intent-resolver.d.ts.map +1 -0
  358. package/dist/types/wallet/session-manager.d.ts +57 -0
  359. package/dist/types/wallet/session-manager.d.ts.map +1 -0
  360. package/dist/types/wallet/types.d.ts +161 -0
  361. package/dist/types/wallet/types.d.ts.map +1 -0
  362. package/dist/types/wallet/unified-wallet.d.ts +122 -0
  363. package/dist/types/wallet/unified-wallet.d.ts.map +1 -0
  364. package/package.json +194 -0
@@ -0,0 +1,139 @@
1
+ /**
2
+ * AgentCard — Capability and metadata registry for AI agents.
3
+ *
4
+ * Implements the ERC-8004 Identity Registry concept: each agent has
5
+ * a structured card describing its capabilities, service endpoints,
6
+ * owner, and multi-chain addresses.
7
+ *
8
+ * AgentCards are portable — they can be serialized to JSON and stored
9
+ * on IPFS, or registered on-chain as NFT metadata (ERC-721).
10
+ *
11
+ * @see ERC-8004 — Identity Registry (NFT-based agent IDs)
12
+ * @see Google A2A Protocol — AgentCard discovery
13
+ */
14
+ export class AgentCard {
15
+ data;
16
+ createdAt;
17
+ updatedAt;
18
+ constructor(data) {
19
+ this.validateCard(data);
20
+ this.data = { ...data };
21
+ this.createdAt = new Date();
22
+ this.updatedAt = new Date();
23
+ }
24
+ // ═══ Getters ══════════════════════════════════════════════════════
25
+ get name() { return this.data.name; }
26
+ get version() { return this.data.version; }
27
+ get description() { return this.data.description; }
28
+ get capabilities() { return [...this.data.capabilities]; }
29
+ get owner() { return this.data.owner; }
30
+ get endpoints() { return this.data.endpoints ? { ...this.data.endpoints } : undefined; }
31
+ get addresses() { return this.data.addresses ? [...this.data.addresses] : undefined; }
32
+ get tags() { return this.data.tags ? [...this.data.tags] : []; }
33
+ get iconUrl() { return this.data.iconUrl; }
34
+ // ═══ Capability Checks ════════════════════════════════════════════
35
+ /**
36
+ * Check if this agent has a specific capability.
37
+ */
38
+ hasCapability(capability) {
39
+ return this.data.capabilities.includes(capability.toLowerCase());
40
+ }
41
+ /**
42
+ * Check if this agent has ALL of the specified capabilities.
43
+ */
44
+ hasAllCapabilities(capabilities) {
45
+ return capabilities.every((c) => this.hasCapability(c));
46
+ }
47
+ /**
48
+ * Check if this agent has ANY of the specified capabilities.
49
+ */
50
+ hasAnyCapability(capabilities) {
51
+ return capabilities.some((c) => this.hasCapability(c));
52
+ }
53
+ // ═══ Updates ══════════════════════════════════════════════════════
54
+ /**
55
+ * Add a capability to the agent card.
56
+ */
57
+ addCapability(capability) {
58
+ const lower = capability.toLowerCase();
59
+ if (!this.data.capabilities.includes(lower)) {
60
+ this.data.capabilities.push(lower);
61
+ this.updatedAt = new Date();
62
+ }
63
+ }
64
+ /**
65
+ * Remove a capability from the agent card.
66
+ */
67
+ removeCapability(capability) {
68
+ const lower = capability.toLowerCase();
69
+ const index = this.data.capabilities.indexOf(lower);
70
+ if (index === -1)
71
+ return false;
72
+ this.data.capabilities.splice(index, 1);
73
+ this.updatedAt = new Date();
74
+ return true;
75
+ }
76
+ /**
77
+ * Update a service endpoint.
78
+ */
79
+ setEndpoint(type, url) {
80
+ if (!this.data.endpoints) {
81
+ this.data.endpoints = {};
82
+ }
83
+ this.data.endpoints[type] = url;
84
+ this.updatedAt = new Date();
85
+ }
86
+ /**
87
+ * Add a chain address to the agent card.
88
+ */
89
+ addAddress(chain, caip2Id, address) {
90
+ if (!this.data.addresses) {
91
+ this.data.addresses = [];
92
+ }
93
+ // Don't add duplicates
94
+ const exists = this.data.addresses.some((a) => a.caip2Id === caip2Id && a.address === address);
95
+ if (!exists) {
96
+ this.data.addresses.push({ chain, caip2Id, address });
97
+ this.updatedAt = new Date();
98
+ }
99
+ }
100
+ // ═══ Serialization ════════════════════════════════════════════════
101
+ /**
102
+ * Serialize to JSON (for IPFS, on-chain storage, etc.)
103
+ */
104
+ toJSON() {
105
+ return {
106
+ ...this.data,
107
+ createdAt: this.createdAt.toISOString(),
108
+ updatedAt: this.updatedAt.toISOString(),
109
+ };
110
+ }
111
+ /**
112
+ * Create an AgentCard from JSON.
113
+ */
114
+ static fromJSON(json) {
115
+ return new AgentCard(json);
116
+ }
117
+ /**
118
+ * Get the raw data.
119
+ */
120
+ getData() {
121
+ return { ...this.data };
122
+ }
123
+ // ═══ Validation ═══════════════════════════════════════════════════
124
+ validateCard(data) {
125
+ if (!data.name || data.name.trim().length === 0) {
126
+ throw new Error('Agent name is required');
127
+ }
128
+ if (!data.version || !/^\d+\.\d+\.\d+/.test(data.version)) {
129
+ throw new Error('Agent version must be semver (e.g., "1.0.0")');
130
+ }
131
+ if (!data.capabilities || data.capabilities.length === 0) {
132
+ throw new Error('Agent must have at least one capability');
133
+ }
134
+ if (!data.owner || data.owner.trim().length === 0) {
135
+ throw new Error('Agent owner address is required');
136
+ }
137
+ }
138
+ }
139
+ //# sourceMappingURL=agent-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-card.js","sourceRoot":"","sources":["../../../src/identity/agent-card.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * AgentIdentity — Main facade for the identity layer.
3
+ *
4
+ * Orchestrates DIDResolver, AgentCard, Reputation, and OwnerRegistry
5
+ * into a single, cohesive interface. This is the primary object that
6
+ * agents and the EnvoyClient interact with.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const identity = new AgentIdentity({
11
+ * metadata: {
12
+ * name: 'Trading Bot Alpha',
13
+ * version: '1.0.0',
14
+ * capabilities: ['trade', 'analyze'],
15
+ * owner: '0xOwner...',
16
+ * },
17
+ * signerAddress: '0xAgent...',
18
+ * signerChainId: 'eip155:8453',
19
+ * });
20
+ *
21
+ * // Other agents can verify:
22
+ * const score = identity.getReputationScore();
23
+ * const canTrust = identity.meetsThreshold(70);
24
+ * ```
25
+ */
26
+ import { DIDResolver } from './did-resolver.js';
27
+ import { AgentCard } from './agent-card.js';
28
+ import { Reputation } from './reputation.js';
29
+ import { OwnerRegistry } from './owner-registry.js';
30
+ export class AgentIdentity {
31
+ /** The agent's DID. */
32
+ did;
33
+ /** The agent's DID Document. */
34
+ didDocument;
35
+ /** The agent's card (capabilities, metadata). */
36
+ card;
37
+ /** Shared modules (can be used across multiple agents). */
38
+ didResolver;
39
+ reputation;
40
+ ownerRegistry;
41
+ log;
42
+ constructor(options) {
43
+ this.log = options.logger ?? (() => { });
44
+ // Initialize modules
45
+ this.didResolver = new DIDResolver();
46
+ this.reputation = new Reputation();
47
+ this.ownerRegistry = new OwnerRegistry();
48
+ // Create agent card
49
+ this.card = new AgentCard(options.metadata);
50
+ // Register DID
51
+ const { did, document } = this.didResolver.create(options.signerAddress, options.signerChainId, options.metadata);
52
+ this.did = did;
53
+ this.didDocument = document;
54
+ // Register ownership
55
+ this.ownerRegistry.register(this.did, options.metadata.owner, 'supervised');
56
+ this.log(`[Identity] 🆔 Agent identity created: ${this.did}`);
57
+ this.log(`[Identity] 🏷️ Name: ${options.metadata.name} v${options.metadata.version}`);
58
+ this.log(`[Identity] 🎯 Capabilities: ${options.metadata.capabilities.join(', ')}`);
59
+ }
60
+ // ═══ Identity API ═════════════════════════════════════════════════
61
+ /**
62
+ * Get the agent's DID string.
63
+ */
64
+ getDID() {
65
+ return this.did;
66
+ }
67
+ /**
68
+ * Get the agent's card data.
69
+ */
70
+ getCard() {
71
+ return this.card.getData();
72
+ }
73
+ /**
74
+ * Check if this agent has a specific capability.
75
+ */
76
+ hasCapability(capability) {
77
+ return this.card.hasCapability(capability);
78
+ }
79
+ // ═══ Reputation API ═══════════════════════════════════════════════
80
+ /**
81
+ * Get this agent's reputation score (0-100).
82
+ */
83
+ getReputationScore() {
84
+ return this.reputation.getScore(this.did);
85
+ }
86
+ /**
87
+ * Get this agent's full reputation profile.
88
+ */
89
+ getReputationProfile() {
90
+ return this.reputation.getProfile(this.did);
91
+ }
92
+ /**
93
+ * Check if this agent meets a minimum trust threshold.
94
+ */
95
+ meetsThreshold(minScore) {
96
+ return this.reputation.meetsThreshold(this.did, minScore);
97
+ }
98
+ /**
99
+ * Create a reputation attestation for ANOTHER agent.
100
+ */
101
+ attestAgent(options) {
102
+ this.log(`[Identity] ⭐ Attesting ${options.subject}: ${options.score}/100 (${options.category})`);
103
+ return this.reputation.attest(this.didDocument.controller, options);
104
+ }
105
+ // ═══ Ownership API ════════════════════════════════════════════════
106
+ /**
107
+ * Get this agent's owner.
108
+ */
109
+ getOwner() {
110
+ return this.ownerRegistry.getOwner(this.did);
111
+ }
112
+ /**
113
+ * Get this agent's delegation level.
114
+ */
115
+ getDelegationLevel() {
116
+ return this.ownerRegistry.getDelegationLevel(this.did);
117
+ }
118
+ /**
119
+ * Check if this agent can transact (not readonly).
120
+ */
121
+ canTransact() {
122
+ return this.ownerRegistry.canTransact(this.did);
123
+ }
124
+ // ═══ Resolution API (for discovering other agents) ════════════════
125
+ /**
126
+ * Resolve another agent's identity by DID.
127
+ */
128
+ resolveAgent(agentDid, options) {
129
+ const didDoc = this.didResolver.resolve(agentDid);
130
+ if (!didDoc)
131
+ return null;
132
+ const includeRep = options?.includeReputation ?? true;
133
+ const includeOwner = options?.includeOwnership ?? true;
134
+ // We don't have the card in this context — return a minimal version
135
+ const resolved = {
136
+ did: didDoc,
137
+ card: {
138
+ name: 'Unknown',
139
+ version: '0.0.0',
140
+ capabilities: [],
141
+ owner: didDoc.controller,
142
+ },
143
+ reputation: includeRep ? this.reputation.getProfile(agentDid) : undefined,
144
+ ownership: includeOwner ? this.ownerRegistry.getOwner(agentDid) ?? undefined : undefined,
145
+ };
146
+ return resolved;
147
+ }
148
+ // ═══ Serialization ════════════════════════════════════════════════
149
+ /**
150
+ * Export the full identity as a portable JSON object.
151
+ */
152
+ toJSON() {
153
+ return {
154
+ did: this.did,
155
+ didDocument: this.didDocument,
156
+ card: this.card.toJSON(),
157
+ reputation: this.reputation.getProfile(this.did),
158
+ ownership: this.ownerRegistry.getOwner(this.did),
159
+ };
160
+ }
161
+ }
162
+ //# sourceMappingURL=agent-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-identity.js","sourceRoot":"","sources":["../../../src/identity/agent-identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * DIDResolver — W3C Decentralized Identifier resolution for envoy agents.
3
+ *
4
+ * Implements a custom DID method `did:asg:agent:<chain>:<address>` that
5
+ * resolves to a DID Document containing the agent's public keys,
6
+ * service endpoints, and ownership information.
7
+ *
8
+ * Format: did:asg:agent:<caip2-chain>:<address>
9
+ * @example "did:asg:agent:eip155:8453:0x1234abcd..."
10
+ * @example "did:asg:agent:stellar:pubnet:GABC..."
11
+ * @example "did:asg:agent:solana:mainnet:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp..."
12
+ *
13
+ * @see https://www.w3.org/TR/did-core/
14
+ * @see ERC-8004 — Identity Registry
15
+ */
16
+ export class DIDResolver {
17
+ /** In-memory registry (production: on-chain or IPFS). */
18
+ registry = new Map();
19
+ /**
20
+ * Create a DID for an agent.
21
+ *
22
+ * @param address - The agent's primary address
23
+ * @param chainId - CAIP-2 chain identifier
24
+ * @param card - Agent card metadata
25
+ * @returns The generated DID and DID Document
26
+ */
27
+ create(address, chainId, card) {
28
+ const did = this.buildDID(address, chainId);
29
+ const verificationMethod = {
30
+ id: `${did}#key-1`,
31
+ type: this.getKeyType(chainId),
32
+ controller: did,
33
+ publicKeyMultibase: this.addressToMultibase(address),
34
+ };
35
+ const services = [];
36
+ if (card.endpoints?.a2a) {
37
+ services.push({
38
+ id: `${did}#a2a`,
39
+ type: 'A2AEndpoint',
40
+ serviceEndpoint: card.endpoints.a2a,
41
+ });
42
+ }
43
+ if (card.endpoints?.mcp) {
44
+ services.push({
45
+ id: `${did}#mcp`,
46
+ type: 'MCPEndpoint',
47
+ serviceEndpoint: card.endpoints.mcp,
48
+ });
49
+ }
50
+ if (card.endpoints?.payment) {
51
+ services.push({
52
+ id: `${did}#payment`,
53
+ type: 'PaymentEndpoint',
54
+ serviceEndpoint: card.endpoints.payment,
55
+ });
56
+ }
57
+ const document = {
58
+ id: did,
59
+ controller: card.owner,
60
+ verificationMethod: [verificationMethod],
61
+ service: services,
62
+ created: new Date(),
63
+ updated: new Date(),
64
+ };
65
+ this.registry.set(did, document);
66
+ return { did, document };
67
+ }
68
+ /**
69
+ * Resolve a DID to its DID Document.
70
+ */
71
+ resolve(did) {
72
+ return this.registry.get(did) ?? null;
73
+ }
74
+ /**
75
+ * Parse a DID string into its components.
76
+ */
77
+ parse(did) {
78
+ const parts = did.split(':');
79
+ // did:asg:agent:<chainType>:<chainId>:<address>
80
+ // Minimum: did:asg:agent:chain:address = 5 parts
81
+ if (parts.length < 5 || parts[0] !== 'did' || parts[1] !== 'asg') {
82
+ return null;
83
+ }
84
+ const method = parts[1]; // "asg"
85
+ const submethod = parts[2]; // "agent"
86
+ // Chain can be multi-part (e.g., "eip155:8453")
87
+ // Address is always the last part
88
+ const address = parts[parts.length - 1];
89
+ const chain = parts.slice(3, parts.length - 1).join(':');
90
+ return { method, submethod, chain, address };
91
+ }
92
+ /**
93
+ * Validate that a DID string is well-formed.
94
+ */
95
+ validate(did) {
96
+ const parsed = this.parse(did);
97
+ if (!parsed)
98
+ return false;
99
+ return (parsed.method === 'asg' &&
100
+ parsed.submethod === 'agent' &&
101
+ parsed.chain.length > 0 &&
102
+ parsed.address.length > 0);
103
+ }
104
+ /**
105
+ * Update a DID Document's service endpoints.
106
+ */
107
+ updateServices(did, services) {
108
+ const doc = this.registry.get(did);
109
+ if (!doc)
110
+ return false;
111
+ doc.service = services;
112
+ doc.updated = new Date();
113
+ return true;
114
+ }
115
+ /**
116
+ * Deactivate (delete) a DID Document.
117
+ */
118
+ deactivate(did) {
119
+ return this.registry.delete(did);
120
+ }
121
+ /**
122
+ * List all registered DIDs.
123
+ */
124
+ listAll() {
125
+ return Array.from(this.registry.keys());
126
+ }
127
+ // ─── Internal ──────────────────────────────────────────────────────
128
+ buildDID(address, chainId) {
129
+ return `did:asg:agent:${chainId}:${address}`;
130
+ }
131
+ getKeyType(chainId) {
132
+ if (chainId.startsWith('eip155'))
133
+ return 'EcdsaSecp256k1VerificationKey2019';
134
+ if (chainId.startsWith('stellar'))
135
+ return 'Ed25519VerificationKey2020';
136
+ if (chainId.startsWith('solana'))
137
+ return 'Ed25519VerificationKey2020';
138
+ return 'JsonWebKey2020';
139
+ }
140
+ addressToMultibase(address) {
141
+ // Multibase-encode the address (simplified: just prefix with 'z' for base58btc)
142
+ return `z${address}`;
143
+ }
144
+ }
145
+ //# sourceMappingURL=did-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-resolver.js","sourceRoot":"","sources":["../../../src/identity/did-resolver.ts"],"names":[],"mappings":"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"}