@scriptmasterlabs/mcp-x402 2.0.2 → 2.1.1

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 (323) hide show
  1. package/.well-known/x402.json +37 -0
  2. package/LICENSE +57 -21
  3. package/README.md +262 -304
  4. package/dist/index.d.ts +12 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +9 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/mcp-wrapper.d.ts +71 -0
  9. package/dist/mcp-wrapper.d.ts.map +1 -0
  10. package/dist/mcp-wrapper.js +104 -0
  11. package/dist/mcp-wrapper.js.map +1 -0
  12. package/dist/x402-middleware.d.ts +76 -0
  13. package/dist/x402-middleware.d.ts.map +1 -0
  14. package/dist/x402-middleware.js +113 -0
  15. package/dist/x402-middleware.js.map +1 -0
  16. package/dist/xrpl-facilitator.d.ts +77 -0
  17. package/dist/xrpl-facilitator.d.ts.map +1 -0
  18. package/dist/xrpl-facilitator.js +156 -0
  19. package/dist/xrpl-facilitator.js.map +1 -0
  20. package/llms.txt +108 -70
  21. package/package.json +65 -78
  22. package/schema.jsonld +97 -0
  23. package/.env.example +0 -35
  24. package/.github/workflows/ci.yml +0 -59
  25. package/.github/workflows/keepalive.yml +0 -31
  26. package/.well-known/agentcard.json +0 -34
  27. package/CONTRIBUTING.md +0 -76
  28. package/Dockerfile +0 -19
  29. package/agents.json +0 -67
  30. package/dist/lib/chains/base.d.ts +0 -10
  31. package/dist/lib/chains/base.d.ts.map +0 -1
  32. package/dist/lib/chains/base.js +0 -73
  33. package/dist/lib/chains/base.js.map +0 -1
  34. package/dist/lib/chains/solana.d.ts +0 -10
  35. package/dist/lib/chains/solana.d.ts.map +0 -1
  36. package/dist/lib/chains/solana.js +0 -49
  37. package/dist/lib/chains/solana.js.map +0 -1
  38. package/dist/lib/chains/xrpl.d.ts +0 -10
  39. package/dist/lib/chains/xrpl.d.ts.map +0 -1
  40. package/dist/lib/chains/xrpl.js +0 -55
  41. package/dist/lib/chains/xrpl.js.map +0 -1
  42. package/dist/lib/credit/bureau.d.ts +0 -10
  43. package/dist/lib/credit/bureau.d.ts.map +0 -1
  44. package/dist/lib/credit/bureau.js +0 -58
  45. package/dist/lib/credit/bureau.js.map +0 -1
  46. package/dist/lib/sml-api/agentcard.d.ts +0 -17
  47. package/dist/lib/sml-api/agentcard.d.ts.map +0 -1
  48. package/dist/lib/sml-api/agentcard.js +0 -30
  49. package/dist/lib/sml-api/agentcard.js.map +0 -1
  50. package/dist/lib/sml-api/backtest.d.ts +0 -22
  51. package/dist/lib/sml-api/backtest.d.ts.map +0 -1
  52. package/dist/lib/sml-api/backtest.js +0 -28
  53. package/dist/lib/sml-api/backtest.js.map +0 -1
  54. package/dist/lib/sml-api/brokers.d.ts +0 -40
  55. package/dist/lib/sml-api/brokers.d.ts.map +0 -1
  56. package/dist/lib/sml-api/brokers.js +0 -128
  57. package/dist/lib/sml-api/brokers.js.map +0 -1
  58. package/dist/lib/sml-api/copytrader.d.ts +0 -11
  59. package/dist/lib/sml-api/copytrader.d.ts.map +0 -1
  60. package/dist/lib/sml-api/copytrader.js +0 -30
  61. package/dist/lib/sml-api/copytrader.js.map +0 -1
  62. package/dist/lib/sml-api/crawl.d.ts +0 -20
  63. package/dist/lib/sml-api/crawl.d.ts.map +0 -1
  64. package/dist/lib/sml-api/crawl.js +0 -32
  65. package/dist/lib/sml-api/crawl.js.map +0 -1
  66. package/dist/lib/sml-api/echo.d.ts +0 -10
  67. package/dist/lib/sml-api/echo.d.ts.map +0 -1
  68. package/dist/lib/sml-api/echo.js +0 -23
  69. package/dist/lib/sml-api/echo.js.map +0 -1
  70. package/dist/lib/sml-api/forge.d.ts +0 -11
  71. package/dist/lib/sml-api/forge.d.ts.map +0 -1
  72. package/dist/lib/sml-api/forge.js +0 -29
  73. package/dist/lib/sml-api/forge.js.map +0 -1
  74. package/dist/lib/sml-api/ftd.d.ts +0 -18
  75. package/dist/lib/sml-api/ftd.d.ts.map +0 -1
  76. package/dist/lib/sml-api/ftd.js +0 -43
  77. package/dist/lib/sml-api/ftd.js.map +0 -1
  78. package/dist/lib/sml-api/ghost.d.ts +0 -13
  79. package/dist/lib/sml-api/ghost.d.ts.map +0 -1
  80. package/dist/lib/sml-api/ghost.js +0 -29
  81. package/dist/lib/sml-api/ghost.js.map +0 -1
  82. package/dist/lib/sml-api/launchpad.d.ts +0 -20
  83. package/dist/lib/sml-api/launchpad.d.ts.map +0 -1
  84. package/dist/lib/sml-api/launchpad.js +0 -31
  85. package/dist/lib/sml-api/launchpad.js.map +0 -1
  86. package/dist/lib/sml-api/leviathan.d.ts +0 -22
  87. package/dist/lib/sml-api/leviathan.d.ts.map +0 -1
  88. package/dist/lib/sml-api/leviathan.js +0 -33
  89. package/dist/lib/sml-api/leviathan.js.map +0 -1
  90. package/dist/lib/sml-api/nexus.d.ts +0 -18
  91. package/dist/lib/sml-api/nexus.d.ts.map +0 -1
  92. package/dist/lib/sml-api/nexus.js +0 -40
  93. package/dist/lib/sml-api/nexus.js.map +0 -1
  94. package/dist/lib/sml-api/proof402.d.ts +0 -6
  95. package/dist/lib/sml-api/proof402.d.ts.map +0 -1
  96. package/dist/lib/sml-api/proof402.js +0 -30
  97. package/dist/lib/sml-api/proof402.js.map +0 -1
  98. package/dist/lib/sml-api/rails.d.ts +0 -12
  99. package/dist/lib/sml-api/rails.d.ts.map +0 -1
  100. package/dist/lib/sml-api/rails.js +0 -29
  101. package/dist/lib/sml-api/rails.js.map +0 -1
  102. package/dist/lib/sml-api/shadow.d.ts +0 -15
  103. package/dist/lib/sml-api/shadow.d.ts.map +0 -1
  104. package/dist/lib/sml-api/shadow.js +0 -27
  105. package/dist/lib/sml-api/shadow.js.map +0 -1
  106. package/dist/lib/sml-api/squeezeos.d.ts +0 -21
  107. package/dist/lib/sml-api/squeezeos.d.ts.map +0 -1
  108. package/dist/lib/sml-api/squeezeos.js +0 -97
  109. package/dist/lib/sml-api/squeezeos.js.map +0 -1
  110. package/dist/lib/sml-api/xdeo.d.ts +0 -13
  111. package/dist/lib/sml-api/xdeo.d.ts.map +0 -1
  112. package/dist/lib/sml-api/xdeo.js +0 -34
  113. package/dist/lib/sml-api/xdeo.js.map +0 -1
  114. package/dist/lib/sml-api/xmit.d.ts +0 -13
  115. package/dist/lib/sml-api/xmit.d.ts.map +0 -1
  116. package/dist/lib/sml-api/xmit.js +0 -34
  117. package/dist/lib/sml-api/xmit.js.map +0 -1
  118. package/dist/server/health.d.ts +0 -16
  119. package/dist/server/health.d.ts.map +0 -1
  120. package/dist/server/health.js +0 -39
  121. package/dist/server/health.js.map +0 -1
  122. package/dist/server/index.d.ts +0 -3
  123. package/dist/server/index.d.ts.map +0 -1
  124. package/dist/server/index.js +0 -199
  125. package/dist/server/index.js.map +0 -1
  126. package/dist/server/payments/ap2.d.ts +0 -17
  127. package/dist/server/payments/ap2.d.ts.map +0 -1
  128. package/dist/server/payments/ap2.js +0 -77
  129. package/dist/server/payments/ap2.js.map +0 -1
  130. package/dist/server/payments/receipt.d.ts +0 -28
  131. package/dist/server/payments/receipt.d.ts.map +0 -1
  132. package/dist/server/payments/receipt.js +0 -60
  133. package/dist/server/payments/receipt.js.map +0 -1
  134. package/dist/server/payments/router.d.ts +0 -23
  135. package/dist/server/payments/router.d.ts.map +0 -1
  136. package/dist/server/payments/router.js +0 -69
  137. package/dist/server/payments/router.js.map +0 -1
  138. package/dist/server/payments/wallet.d.ts +0 -18
  139. package/dist/server/payments/wallet.d.ts.map +0 -1
  140. package/dist/server/payments/wallet.js +0 -107
  141. package/dist/server/payments/wallet.js.map +0 -1
  142. package/dist/server/payments/x402.d.ts +0 -29
  143. package/dist/server/payments/x402.d.ts.map +0 -1
  144. package/dist/server/payments/x402.js +0 -138
  145. package/dist/server/payments/x402.js.map +0 -1
  146. package/dist/server/registry/catalog.d.ts +0 -12
  147. package/dist/server/registry/catalog.d.ts.map +0 -1
  148. package/dist/server/registry/catalog.js +0 -55
  149. package/dist/server/registry/catalog.js.map +0 -1
  150. package/dist/server/registry/discovery.d.ts +0 -16
  151. package/dist/server/registry/discovery.d.ts.map +0 -1
  152. package/dist/server/registry/discovery.js +0 -33
  153. package/dist/server/registry/discovery.js.map +0 -1
  154. package/dist/server/registry/pricing.d.ts +0 -10
  155. package/dist/server/registry/pricing.d.ts.map +0 -1
  156. package/dist/server/registry/pricing.js +0 -123
  157. package/dist/server/registry/pricing.js.map +0 -1
  158. package/dist/server/security/acl.d.ts +0 -28
  159. package/dist/server/security/acl.d.ts.map +0 -1
  160. package/dist/server/security/acl.js +0 -36
  161. package/dist/server/security/acl.js.map +0 -1
  162. package/dist/server/security/audit.d.ts +0 -15
  163. package/dist/server/security/audit.d.ts.map +0 -1
  164. package/dist/server/security/audit.js +0 -77
  165. package/dist/server/security/audit.js.map +0 -1
  166. package/dist/server/security/rate-limit.d.ts +0 -12
  167. package/dist/server/security/rate-limit.d.ts.map +0 -1
  168. package/dist/server/security/rate-limit.js +0 -72
  169. package/dist/server/security/rate-limit.js.map +0 -1
  170. package/dist/server/security/sandbox.d.ts +0 -7
  171. package/dist/server/security/sandbox.d.ts.map +0 -1
  172. package/dist/server/security/sandbox.js +0 -42
  173. package/dist/server/security/sandbox.js.map +0 -1
  174. package/dist/server/tools/agentcard.d.ts +0 -3
  175. package/dist/server/tools/agentcard.d.ts.map +0 -1
  176. package/dist/server/tools/agentcard.js +0 -118
  177. package/dist/server/tools/agentcard.js.map +0 -1
  178. package/dist/server/tools/backtest.d.ts +0 -3
  179. package/dist/server/tools/backtest.d.ts.map +0 -1
  180. package/dist/server/tools/backtest.js +0 -112
  181. package/dist/server/tools/backtest.js.map +0 -1
  182. package/dist/server/tools/brokers.d.ts +0 -3
  183. package/dist/server/tools/brokers.d.ts.map +0 -1
  184. package/dist/server/tools/brokers.js +0 -223
  185. package/dist/server/tools/brokers.js.map +0 -1
  186. package/dist/server/tools/copytrader.d.ts +0 -3
  187. package/dist/server/tools/copytrader.d.ts.map +0 -1
  188. package/dist/server/tools/copytrader.js +0 -90
  189. package/dist/server/tools/copytrader.js.map +0 -1
  190. package/dist/server/tools/crawl.d.ts +0 -3
  191. package/dist/server/tools/crawl.d.ts.map +0 -1
  192. package/dist/server/tools/crawl.js +0 -60
  193. package/dist/server/tools/crawl.js.map +0 -1
  194. package/dist/server/tools/discovery.d.ts +0 -3
  195. package/dist/server/tools/discovery.d.ts.map +0 -1
  196. package/dist/server/tools/discovery.js +0 -188
  197. package/dist/server/tools/discovery.js.map +0 -1
  198. package/dist/server/tools/echo.d.ts +0 -3
  199. package/dist/server/tools/echo.d.ts.map +0 -1
  200. package/dist/server/tools/echo.js +0 -48
  201. package/dist/server/tools/echo.js.map +0 -1
  202. package/dist/server/tools/forge.d.ts +0 -3
  203. package/dist/server/tools/forge.d.ts.map +0 -1
  204. package/dist/server/tools/forge.js +0 -77
  205. package/dist/server/tools/forge.js.map +0 -1
  206. package/dist/server/tools/ftd.d.ts +0 -3
  207. package/dist/server/tools/ftd.d.ts.map +0 -1
  208. package/dist/server/tools/ftd.js +0 -70
  209. package/dist/server/tools/ftd.js.map +0 -1
  210. package/dist/server/tools/ghost.d.ts +0 -3
  211. package/dist/server/tools/ghost.d.ts.map +0 -1
  212. package/dist/server/tools/ghost.js +0 -83
  213. package/dist/server/tools/ghost.js.map +0 -1
  214. package/dist/server/tools/index.d.ts +0 -3
  215. package/dist/server/tools/index.d.ts.map +0 -1
  216. package/dist/server/tools/index.js +0 -44
  217. package/dist/server/tools/index.js.map +0 -1
  218. package/dist/server/tools/launchpad.d.ts +0 -3
  219. package/dist/server/tools/launchpad.d.ts.map +0 -1
  220. package/dist/server/tools/launchpad.js +0 -151
  221. package/dist/server/tools/launchpad.js.map +0 -1
  222. package/dist/server/tools/leviathan.d.ts +0 -3
  223. package/dist/server/tools/leviathan.d.ts.map +0 -1
  224. package/dist/server/tools/leviathan.js +0 -73
  225. package/dist/server/tools/leviathan.js.map +0 -1
  226. package/dist/server/tools/nexus.d.ts +0 -3
  227. package/dist/server/tools/nexus.d.ts.map +0 -1
  228. package/dist/server/tools/nexus.js +0 -65
  229. package/dist/server/tools/nexus.js.map +0 -1
  230. package/dist/server/tools/proof402.d.ts +0 -3
  231. package/dist/server/tools/proof402.d.ts.map +0 -1
  232. package/dist/server/tools/proof402.js +0 -74
  233. package/dist/server/tools/proof402.js.map +0 -1
  234. package/dist/server/tools/rails.d.ts +0 -3
  235. package/dist/server/tools/rails.d.ts.map +0 -1
  236. package/dist/server/tools/rails.js +0 -82
  237. package/dist/server/tools/rails.js.map +0 -1
  238. package/dist/server/tools/shadow.d.ts +0 -3
  239. package/dist/server/tools/shadow.d.ts.map +0 -1
  240. package/dist/server/tools/shadow.js +0 -114
  241. package/dist/server/tools/shadow.js.map +0 -1
  242. package/dist/server/tools/squeezeos.d.ts +0 -3
  243. package/dist/server/tools/squeezeos.d.ts.map +0 -1
  244. package/dist/server/tools/squeezeos.js +0 -231
  245. package/dist/server/tools/squeezeos.js.map +0 -1
  246. package/dist/server/tools/xdeo.d.ts +0 -3
  247. package/dist/server/tools/xdeo.d.ts.map +0 -1
  248. package/dist/server/tools/xdeo.js +0 -58
  249. package/dist/server/tools/xdeo.js.map +0 -1
  250. package/dist/server/tools/xmit.d.ts +0 -3
  251. package/dist/server/tools/xmit.d.ts.map +0 -1
  252. package/dist/server/tools/xmit.js +0 -59
  253. package/dist/server/tools/xmit.js.map +0 -1
  254. package/docker-compose.yml +0 -50
  255. package/mcp-publisher.exe +0 -0
  256. package/render.yaml +0 -39
  257. package/sdk/mcp-x402-sdk/package.json +0 -18
  258. package/sdk/mcp-x402-sdk/src/index.ts +0 -118
  259. package/sdk/mcp-x402-sdk/tsconfig.json +0 -14
  260. package/server.json +0 -48
  261. package/services/backtest_service.py +0 -176
  262. package/src/lib/chains/base.ts +0 -77
  263. package/src/lib/chains/solana.ts +0 -59
  264. package/src/lib/chains/xrpl.ts +0 -63
  265. package/src/lib/credit/bureau.ts +0 -65
  266. package/src/lib/sml-api/agentcard.ts +0 -40
  267. package/src/lib/sml-api/backtest.ts +0 -47
  268. package/src/lib/sml-api/brokers.ts +0 -160
  269. package/src/lib/sml-api/copytrader.ts +0 -33
  270. package/src/lib/sml-api/crawl.ts +0 -44
  271. package/src/lib/sml-api/echo.ts +0 -28
  272. package/src/lib/sml-api/forge.ts +0 -33
  273. package/src/lib/sml-api/ftd.ts +0 -53
  274. package/src/lib/sml-api/ghost.ts +0 -35
  275. package/src/lib/sml-api/launchpad.ts +0 -43
  276. package/src/lib/sml-api/leviathan.ts +0 -49
  277. package/src/lib/sml-api/nexus.ts +0 -50
  278. package/src/lib/sml-api/proof402.ts +0 -27
  279. package/src/lib/sml-api/rails.ts +0 -34
  280. package/src/lib/sml-api/shadow.ts +0 -35
  281. package/src/lib/sml-api/squeezeos.ts +0 -95
  282. package/src/lib/sml-api/xdeo.ts +0 -40
  283. package/src/lib/sml-api/xmit.ts +0 -40
  284. package/src/server/health.ts +0 -52
  285. package/src/server/index.ts +0 -213
  286. package/src/server/payments/ap2.ts +0 -101
  287. package/src/server/payments/receipt.ts +0 -85
  288. package/src/server/payments/router.ts +0 -110
  289. package/src/server/payments/wallet.ts +0 -123
  290. package/src/server/payments/x402.ts +0 -177
  291. package/src/server/registry/catalog.ts +0 -61
  292. package/src/server/registry/discovery.ts +0 -39
  293. package/src/server/registry/pricing.ts +0 -133
  294. package/src/server/security/acl.ts +0 -42
  295. package/src/server/security/audit.ts +0 -94
  296. package/src/server/security/rate-limit.ts +0 -84
  297. package/src/server/security/sandbox.ts +0 -40
  298. package/src/server/tools/agentcard.ts +0 -134
  299. package/src/server/tools/backtest.ts +0 -119
  300. package/src/server/tools/brokers.ts +0 -250
  301. package/src/server/tools/copytrader.ts +0 -104
  302. package/src/server/tools/crawl.ts +0 -70
  303. package/src/server/tools/discovery.ts +0 -202
  304. package/src/server/tools/echo.ts +0 -58
  305. package/src/server/tools/forge.ts +0 -87
  306. package/src/server/tools/ftd.ts +0 -88
  307. package/src/server/tools/ghost.ts +0 -93
  308. package/src/server/tools/index.ts +0 -42
  309. package/src/server/tools/launchpad.ts +0 -173
  310. package/src/server/tools/leviathan.ts +0 -81
  311. package/src/server/tools/nexus.ts +0 -76
  312. package/src/server/tools/proof402.ts +0 -87
  313. package/src/server/tools/rails.ts +0 -92
  314. package/src/server/tools/shadow.ts +0 -128
  315. package/src/server/tools/squeezeos.ts +0 -312
  316. package/src/server/tools/xdeo.ts +0 -67
  317. package/src/server/tools/xmit.ts +0 -68
  318. package/tests/integration/e2e.test.ts +0 -51
  319. package/tests/unit/payments.test.ts +0 -49
  320. package/tests/unit/security.test.ts +0 -92
  321. package/tests/unit/tools.test.ts +0 -42
  322. package/tsconfig.json +0 -21
  323. package/vitest.config.ts +0 -20
package/Dockerfile DELETED
@@ -1,19 +0,0 @@
1
- FROM node:22-alpine AS builder
2
- WORKDIR /app
3
- COPY package*.json ./
4
- RUN npm ci --ignore-scripts
5
- COPY tsconfig.json ./
6
- COPY src/ ./src/
7
- RUN npm run build
8
-
9
- FROM node:22-alpine AS runner
10
- WORKDIR /app
11
- RUN apk add --no-cache dbus libsecret
12
- COPY package*.json ./
13
- RUN npm ci --omit=dev --ignore-scripts
14
- COPY --from=builder /app/dist ./dist
15
- COPY agents.json llms.txt .well-known/ ./
16
- EXPOSE 3402
17
- ENV NODE_ENV=production
18
- USER node
19
- CMD ["node", "dist/server/index.js"]
package/agents.json DELETED
@@ -1,67 +0,0 @@
1
- {
2
- "schema_version": "v1",
3
- "name": "mcp-x402",
4
- "description": "ScriptMasterLabs MCP server. AI agents pay for institutional financial intelligence autonomously via x402 stablecoin payments on Base, XRPL, and Solana.",
5
- "url": "https://github.com/timwal78/sml_portfolio/tree/main/mcp-x402",
6
- "provider": {
7
- "name": "ScriptMasterLabs",
8
- "url": "https://scriptmasterlabs.com",
9
- "contact": "timothy.walton45@gmail.com"
10
- },
11
- "version": "1.0.0",
12
- "mcp": {
13
- "transport": ["stdio", "sse"],
14
- "endpoint": "https://mcp-x402.scriptmasterlabs.com"
15
- },
16
- "payment": {
17
- "protocol": "x402",
18
- "chains": ["base", "xrpl", "solana"],
19
- "currencies": ["USDC", "RLUSD"],
20
- "mandate": "ap2",
21
- "credit_bureau": "https://four02proof.onrender.com/v1/score"
22
- },
23
- "tools": [
24
- {
25
- "name": "leviathan_signal",
26
- "description": "Institutional-grade squeeze signals. Proprietary multi-engine verdict for any ticker.",
27
- "price": "0.05",
28
- "currency": "USDC",
29
- "ap2_required": true
30
- },
31
- {
32
- "name": "xmit_edgar_decode",
33
- "description": "Parse SEC DEF 14A / 13F / 13D filings. Raw text never leaves SML servers.",
34
- "price": "0.02",
35
- "currency": "USDC",
36
- "ap2_required": true
37
- },
38
- {
39
- "name": "xdeo_earnings_estimate",
40
- "description": "Decentralized earnings oracle. +2 bureau_score on success.",
41
- "price": "0.02",
42
- "currency": "USDC",
43
- "ap2_required": true
44
- },
45
- {
46
- "name": "ftd_threshold_scan",
47
- "description": "SEC Reg SHO FTD data. Alerts free; full data 0.05 USDC.",
48
- "price": "0.05",
49
- "currency": "USDC",
50
- "free_tier": "alerts_only",
51
- "cache_ttl": 900
52
- },
53
- {
54
- "name": "nexus_agent_hire",
55
- "description": "Agent marketplace. Query free; hire charges 5% commission.",
56
- "price": "commission_5pct",
57
- "currency": "USDC",
58
- "free_tier": "query_only"
59
- },
60
- {
61
- "name": "crawl_paid_fetch",
62
- "description": "Pay-per-fetch scraping. Humans bypass free.",
63
- "price": "0.005",
64
- "currency": "USDC"
65
- }
66
- ]
67
- }
@@ -1,10 +0,0 @@
1
- import type { RouteParams } from '../../server/payments/router.js';
2
- export declare class BaseChain {
3
- private static instance;
4
- private readonly testnet;
5
- private constructor();
6
- static getInstance(): BaseChain;
7
- sendPayment(params: RouteParams): Promise<string>;
8
- private getPrivateKey;
9
- }
10
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/lib/chains/base.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAoBnE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAElC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,SAAS;IAOzB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YA2BzC,aAAa;CAQ5B"}
@@ -1,73 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BaseChain = void 0;
7
- const viem_1 = require("viem");
8
- const chains_1 = require("viem/chains");
9
- const accounts_1 = require("viem/accounts");
10
- const bip39_1 = require("bip39");
11
- const hdkey_1 = __importDefault(require("hdkey"));
12
- const wallet_js_1 = require("../../server/payments/wallet.js");
13
- // USDC contract on Base mainnet
14
- const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
15
- // USDC contract on Base Sepolia
16
- const USDC_BASE_SEPOLIA = '0x036CbD53842c5426634e7929541eC2318f3dCF7e';
17
- const ERC20_TRANSFER_ABI = [
18
- {
19
- name: 'transfer',
20
- type: 'function',
21
- inputs: [
22
- { name: 'to', type: 'address' },
23
- { name: 'amount', type: 'uint256' },
24
- ],
25
- outputs: [{ name: '', type: 'bool' }],
26
- stateMutability: 'nonpayable',
27
- },
28
- ];
29
- class BaseChain {
30
- static instance;
31
- testnet;
32
- constructor() {
33
- this.testnet = process.env['TESTNET'] === 'true';
34
- }
35
- static getInstance() {
36
- if (!BaseChain.instance) {
37
- BaseChain.instance = new BaseChain();
38
- }
39
- return BaseChain.instance;
40
- }
41
- async sendPayment(params) {
42
- const chain = this.testnet ? chains_1.baseSepolia : chains_1.base;
43
- const rpcUrl = this.testnet
44
- ? (process.env['BASE_SEPOLIA_RPC_URL'] ?? 'https://sepolia.base.org')
45
- : (process.env['BASE_RPC_URL'] ?? 'https://mainnet.base.org');
46
- const privateKey = await this.getPrivateKey();
47
- const account = (0, accounts_1.privateKeyToAccount)(privateKey);
48
- const walletClient = (0, viem_1.createWalletClient)({ account, chain, transport: (0, viem_1.http)(rpcUrl) });
49
- const publicClient = (0, viem_1.createPublicClient)({ chain, transport: (0, viem_1.http)(rpcUrl) });
50
- const usdcAddress = this.testnet ? USDC_BASE_SEPOLIA : USDC_BASE;
51
- const amount = (0, viem_1.parseUnits)(params.amount, 6); // USDC has 6 decimals
52
- const hash = await walletClient.writeContract({
53
- address: usdcAddress,
54
- abi: ERC20_TRANSFER_ABI,
55
- functionName: 'transfer',
56
- args: [params.to, amount],
57
- });
58
- // Wait for confirmation
59
- await publicClient.waitForTransactionReceipt({ hash });
60
- return hash;
61
- }
62
- async getPrivateKey() {
63
- const mnemonic = await wallet_js_1.WalletManager.getInstance().getSeed();
64
- const seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic);
65
- const hdkey = hdkey_1.default.fromMasterSeed(seed);
66
- const child = hdkey.derive("m/44'/60'/0'/0/0");
67
- if (!child.privateKey)
68
- throw new Error('Key derivation failed');
69
- return `0x${child.privateKey.toString('hex')}`;
70
- }
71
- }
72
- exports.BaseChain = BaseChain;
73
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/lib/chains/base.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { RouteParams } from '../../server/payments/router.js';
2
- export declare class SolanaChain {
3
- private static instance;
4
- private readonly rpcUrl;
5
- private constructor();
6
- static getInstance(): SolanaChain;
7
- sendPayment(params: RouteParams): Promise<string>;
8
- private getKeypair;
9
- }
10
- //# sourceMappingURL=solana.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../src/lib/chains/solana.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAKnE,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,WAAW;IAO3B,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YAkBzC,UAAU;CASzB"}
@@ -1,49 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SolanaChain = void 0;
7
- const web3_js_1 = require("@solana/web3.js");
8
- const spl_token_1 = require("@solana/spl-token");
9
- const bip39_1 = require("bip39");
10
- const hdkey_1 = __importDefault(require("hdkey"));
11
- const wallet_js_1 = require("../../server/payments/wallet.js");
12
- // USDC mint on Solana mainnet
13
- const USDC_MINT = new web3_js_1.PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');
14
- class SolanaChain {
15
- static instance;
16
- rpcUrl;
17
- constructor() {
18
- this.rpcUrl = process.env['SOLANA_RPC_URL'] ?? 'https://api.mainnet-beta.solana.com';
19
- }
20
- static getInstance() {
21
- if (!SolanaChain.instance) {
22
- SolanaChain.instance = new SolanaChain();
23
- }
24
- return SolanaChain.instance;
25
- }
26
- async sendPayment(params) {
27
- const connection = new web3_js_1.Connection(this.rpcUrl, 'confirmed');
28
- const payer = await this.getKeypair();
29
- const destination = new web3_js_1.PublicKey(params.to);
30
- const fromATA = await (0, spl_token_1.getAssociatedTokenAddress)(USDC_MINT, payer.publicKey);
31
- const toATA = await (0, spl_token_1.getAssociatedTokenAddress)(USDC_MINT, destination);
32
- const lamports = Math.round(parseFloat(params.amount) * 1_000_000); // USDC 6 decimals
33
- const tx = new web3_js_1.Transaction().add((0, spl_token_1.createTransferInstruction)(fromATA, toATA, payer.publicKey, BigInt(lamports)));
34
- const sig = await (0, web3_js_1.sendAndConfirmTransaction)(connection, tx, [payer]);
35
- return sig;
36
- }
37
- async getKeypair() {
38
- const mnemonic = await wallet_js_1.WalletManager.getInstance().getSeed();
39
- const seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic);
40
- const hdkey = hdkey_1.default.fromMasterSeed(seed);
41
- // BIP-44 for Solana: m/44'/501'/0'/0'
42
- const child = hdkey.derive("m/44'/501'/0'/0'");
43
- if (!child.privateKey)
44
- throw new Error('Solana key derivation failed');
45
- return web3_js_1.Keypair.fromSeed(child.privateKey.slice(0, 32));
46
- }
47
- }
48
- exports.SolanaChain = SolanaChain;
49
- //# sourceMappingURL=solana.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../src/lib/chains/solana.ts"],"names":[],"mappings":";;;;;;AAAA,6CAMyB;AACzB,iDAAyF;AACzF,iCAA2C;AAC3C,kDAA0B;AAC1B,+DAAgE;AAGhE,8BAA8B;AAC9B,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC,8CAA8C,CAAC,CAAC;AAEhF,MAAa,WAAW;IACd,MAAM,CAAC,QAAQ,CAAc;IACpB,MAAM,CAAS;IAEhC;QACE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,qCAAqC,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1B,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAmB;QACnC,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,mBAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,MAAM,IAAA,qCAAyB,EAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,MAAM,IAAA,qCAAyB,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,kBAAkB;QAEtF,MAAM,EAAE,GAAG,IAAI,qBAAW,EAAE,CAAC,GAAG,CAC9B,IAAA,qCAAyB,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC7E,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,IAAA,mCAAyB,EAAC,UAAU,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,QAAQ,GAAG,MAAM,yBAAa,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAA,0BAAkB,EAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,eAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,sCAAsC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACvE,OAAO,iBAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CACF;AA1CD,kCA0CC"}
@@ -1,10 +0,0 @@
1
- import type { RouteParams } from '../../server/payments/router.js';
2
- export declare class XRPLChain {
3
- private static instance;
4
- private readonly rpcUrl;
5
- private constructor();
6
- static getInstance(): XRPLChain;
7
- sendPayment(params: RouteParams): Promise<string>;
8
- private getWallet;
9
- }
10
- //# sourceMappingURL=xrpl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xrpl.d.ts","sourceRoot":"","sources":["../../../src/lib/chains/xrpl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,SAAS;IAOzB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YAuCzC,SAAS;CAIxB"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.XRPLChain = void 0;
4
- const xrpl_1 = require("xrpl");
5
- const wallet_js_1 = require("../../server/payments/wallet.js");
6
- class XRPLChain {
7
- static instance;
8
- rpcUrl;
9
- constructor() {
10
- this.rpcUrl = process.env['XRPL_RPC_URL'] ?? 'wss://xrplcluster.com';
11
- }
12
- static getInstance() {
13
- if (!XRPLChain.instance) {
14
- XRPLChain.instance = new XRPLChain();
15
- }
16
- return XRPLChain.instance;
17
- }
18
- async sendPayment(params) {
19
- const client = new xrpl_1.Client(this.rpcUrl);
20
- await client.connect();
21
- try {
22
- const wallet = await this.getWallet();
23
- // RLUSD on XRPL or XRP-denominated drop equivalent
24
- const tx = await client.submitAndWait({
25
- TransactionType: 'Payment',
26
- Account: wallet.address,
27
- Destination: params.to,
28
- Amount: params.currency === 'RLUSD'
29
- ? {
30
- currency: 'USD',
31
- issuer: process.env['RLUSD_ISSUER'] ?? 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh',
32
- value: params.amount,
33
- }
34
- : (0, xrpl_1.xrpToDrops)(params.amount),
35
- }, { wallet });
36
- if (tx.result.meta && typeof tx.result.meta === 'object' && 'TransactionResult' in tx.result.meta) {
37
- const meta = tx.result.meta;
38
- if (meta.TransactionResult !== 'tesSUCCESS') {
39
- throw new Error(`XRPL transaction failed: ${meta.TransactionResult}`);
40
- }
41
- }
42
- const txResult = tx.result;
43
- return txResult.hash ?? 'unknown';
44
- }
45
- finally {
46
- await client.disconnect();
47
- }
48
- }
49
- async getWallet() {
50
- const mnemonic = await wallet_js_1.WalletManager.getInstance().getSeed();
51
- return xrpl_1.Wallet.fromMnemonic(mnemonic, { mnemonicEncoding: 'bip39' });
52
- }
53
- }
54
- exports.XRPLChain = XRPLChain;
55
- //# sourceMappingURL=xrpl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xrpl.js","sourceRoot":"","sources":["../../../src/lib/chains/xrpl.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;AAClD,+DAAgE;AAGhE,MAAa,SAAS;IACZ,MAAM,CAAC,QAAQ,CAAY;IAClB,MAAM,CAAS;IAEhC;QACE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,uBAAuB,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACxB,SAAS,CAAC,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAmB;QACnC,MAAM,MAAM,GAAG,IAAI,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEtC,mDAAmD;YACnD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CACnC;gBACE,eAAe,EAAE,SAAS;gBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,EAAE;gBACtB,MAAM,EACJ,MAAM,CAAC,QAAQ,KAAK,OAAO;oBACzB,CAAC,CAAC;wBACE,QAAQ,EAAE,KAAK;wBACf,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,oCAAoC;wBAC3E,KAAK,EAAE,MAAM,CAAC,MAAM;qBACrB;oBACH,CAAC,CAAC,IAAA,iBAAU,EAAC,MAAM,CAAC,MAAM,CAAC;aAChC,EACD,EAAE,MAAM,EAAE,CACX,CAAC;YAEF,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,mBAAmB,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClG,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,IAAqC,CAAC;gBAC7D,IAAI,IAAI,CAAC,iBAAiB,KAAK,YAAY,EAAE,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAsC,CAAC;YAC3D,OAAO,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC;QACpC,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,MAAM,QAAQ,GAAG,MAAM,yBAAa,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7D,OAAO,aAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;CACF;AA1DD,8BA0DC"}
@@ -1,10 +0,0 @@
1
- export declare class CreditBureau {
2
- private static instance;
3
- private readonly cache;
4
- private readonly baseUrl;
5
- private constructor();
6
- static getInstance(): CreditBureau;
7
- getScore(wallet: string): Promise<number>;
8
- incrementScore(wallet: string, delta: number): Promise<void>;
9
- }
10
- //# sourceMappingURL=bureau.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bureau.d.ts","sourceRoot":"","sources":["../../../src/lib/credit/bureau.ts"],"names":[],"mappings":"AAOA,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,YAAY;IAO5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAanE"}
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CreditBureau = void 0;
4
- const SCORE_CACHE_TTL = 300_000; // 5 minutes
5
- class CreditBureau {
6
- static instance;
7
- cache = new Map();
8
- baseUrl;
9
- constructor() {
10
- this.baseUrl = process.env['PROOF402_URL'] ?? 'https://four02proof.onrender.com';
11
- }
12
- static getInstance() {
13
- if (!CreditBureau.instance) {
14
- CreditBureau.instance = new CreditBureau();
15
- }
16
- return CreditBureau.instance;
17
- }
18
- async getScore(wallet) {
19
- const now = Date.now();
20
- const cached = this.cache.get(wallet);
21
- if (cached && now - cached.fetchedAt < SCORE_CACHE_TTL) {
22
- return cached.score;
23
- }
24
- try {
25
- const res = await fetch(`${this.baseUrl}/v1/score/${wallet}`, {
26
- signal: AbortSignal.timeout(5000),
27
- });
28
- if (res.ok) {
29
- const body = (await res.json());
30
- this.cache.set(wallet, { score: body.score, fetchedAt: now });
31
- return body.score;
32
- }
33
- }
34
- catch {
35
- // Fall through to default
36
- }
37
- // Default score for new/unknown agents
38
- const defaultScore = 300;
39
- this.cache.set(wallet, { score: defaultScore, fetchedAt: now });
40
- return defaultScore;
41
- }
42
- async incrementScore(wallet, delta) {
43
- try {
44
- await fetch(`${this.baseUrl}/v1/score/${wallet}/increment`, {
45
- method: 'POST',
46
- headers: { 'Content-Type': 'application/json' },
47
- body: JSON.stringify({ delta }),
48
- });
49
- // Invalidate cache
50
- this.cache.delete(wallet);
51
- }
52
- catch {
53
- // Non-fatal
54
- }
55
- }
56
- }
57
- exports.CreditBureau = CreditBureau;
58
- //# sourceMappingURL=bureau.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bureau.js","sourceRoot":"","sources":["../../../src/lib/credit/bureau.ts"],"names":[],"mappings":";;;AAKA,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,YAAY;AAE7C,MAAa,YAAY;IACf,MAAM,CAAC,QAAQ,CAAe;IACrB,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,OAAO,CAAS;IAEjC;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kCAAkC,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,YAAY,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEtC,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,eAAe,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,MAAM,EAAE,EAAE;gBAC5D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YAEH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsB,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC9D,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QAED,uCAAuC;QACvC,MAAM,YAAY,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAChE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,KAAa;QAChD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,MAAM,YAAY,EAAE;gBAC1D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;aAChC,CAAC,CAAC;YACH,mBAAmB;YACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;CACF;AAzDD,oCAyDC"}
@@ -1,17 +0,0 @@
1
- export interface AgentCardMintParams {
2
- walletAddress: string;
3
- name: string;
4
- did?: string;
5
- metadata?: Record<string, unknown>;
6
- }
7
- export interface AgentCardVerifyParams {
8
- walletAddress: string;
9
- message: string;
10
- signature: string;
11
- }
12
- export declare const AgentCardAPI: {
13
- lookup: (walletOrDid: string) => Promise<unknown>;
14
- verify: (params: AgentCardVerifyParams) => Promise<unknown>;
15
- mint: (params: AgentCardMintParams) => Promise<unknown>;
16
- };
17
- //# sourceMappingURL=agentcard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentcard.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/agentcard.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD,eAAO,MAAM,YAAY;0BACD,MAAM;qBACX,qBAAqB;mBACvB,mBAAmB;CACnC,CAAC"}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AgentCardAPI = void 0;
4
- const AGENTCARD_BASE = process.env['AGENTCARD_URL'] ?? 'https://agentcard.onrender.com';
5
- async function acGet(path) {
6
- const res = await fetch(`${AGENTCARD_BASE}${path}`, {
7
- headers: { 'Accept': 'application/json' },
8
- signal: AbortSignal.timeout(10_000),
9
- });
10
- if (!res.ok)
11
- throw new Error(`AgentCard GET ${path}: HTTP ${res.status}`);
12
- return res.json();
13
- }
14
- async function acPost(path, body) {
15
- const res = await fetch(`${AGENTCARD_BASE}${path}`, {
16
- method: 'POST',
17
- headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },
18
- body: JSON.stringify(body),
19
- signal: AbortSignal.timeout(15_000),
20
- });
21
- if (!res.ok)
22
- throw new Error(`AgentCard POST ${path}: HTTP ${res.status}`);
23
- return res.json();
24
- }
25
- exports.AgentCardAPI = {
26
- lookup: (walletOrDid) => acGet(`/v1/card/${encodeURIComponent(walletOrDid)}`),
27
- verify: (params) => acPost('/v1/verify', params),
28
- mint: (params) => acPost('/v1/mint', params),
29
- };
30
- //# sourceMappingURL=agentcard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentcard.js","sourceRoot":"","sources":["../../../src/lib/sml-api/agentcard.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,gCAAgC,CAAC;AAExF,KAAK,UAAU,KAAK,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,GAAG,IAAI,EAAE,EAAE;QAClD,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;QACzC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAeD,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,IAAa;IAC/C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,GAAG,IAAI,EAAE,EAAE;QAClD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC7E,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAEY,QAAA,YAAY,GAAG;IAC1B,MAAM,EAAE,CAAC,WAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;IACrF,MAAM,EAAE,CAAC,MAA6B,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC;IACvE,IAAI,EAAE,CAAC,MAA2B,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;CAClE,CAAC"}
@@ -1,22 +0,0 @@
1
- export interface BacktestParams {
2
- ticker: string;
3
- lookback_days?: number;
4
- signals?: number[];
5
- fees?: number;
6
- slippage?: number;
7
- momentum_window?: number;
8
- momentum_threshold?: number;
9
- }
10
- export interface ValidateParams {
11
- ticker: string;
12
- lookback_days?: number;
13
- train_ratio?: number;
14
- fees?: number;
15
- slippage?: number;
16
- }
17
- export declare const BacktestAPI: {
18
- health: () => Promise<unknown>;
19
- backtest: (params: BacktestParams) => Promise<unknown>;
20
- walkForward: (params: ValidateParams) => Promise<unknown>;
21
- };
22
- //# sourceMappingURL=backtest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backtest.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/backtest.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgBD,eAAO,MAAM,WAAW;kBACJ,OAAO,CAAC,OAAO,CAAC;uBAKf,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC;0BAE9B,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC;CACxD,CAAC"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- // backtester-mcp microservice client
3
- // Wraps the Python backtest_service.py running at BACKTEST_BASE_URL
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.BacktestAPI = void 0;
6
- const BASE = process.env.BACKTEST_BASE_URL ?? 'http://localhost:8300';
7
- async function post(path, body) {
8
- const res = await fetch(`${BASE}${path}`, {
9
- method: 'POST',
10
- headers: { 'Content-Type': 'application/json' },
11
- body: JSON.stringify(body),
12
- signal: AbortSignal.timeout(30_000),
13
- });
14
- if (!res.ok) {
15
- const err = await res.json().catch(() => ({ error: res.statusText }));
16
- throw new Error(err.error ?? res.statusText);
17
- }
18
- return res.json();
19
- }
20
- exports.BacktestAPI = {
21
- health: async () => {
22
- const res = await fetch(`${BASE}/health`, { signal: AbortSignal.timeout(5_000) });
23
- return res.json();
24
- },
25
- backtest: (params) => post('/backtest', params),
26
- walkForward: (params) => post('/validate', params),
27
- };
28
- //# sourceMappingURL=backtest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backtest.js","sourceRoot":"","sources":["../../../src/lib/sml-api/backtest.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,oEAAoE;;;AAEpE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,uBAAuB,CAAC;AAoBtE,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,IAAY;IAC5C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE;QACxC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CAAE,GAA0B,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAEY,QAAA,WAAW,GAAG;IACzB,MAAM,EAAE,KAAK,IAAsB,EAAE;QACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,QAAQ,EAAE,CAAC,MAAsB,EAAoB,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;IAEjF,WAAW,EAAE,CAAC,MAAsB,EAAoB,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;CACrF,CAAC"}
@@ -1,40 +0,0 @@
1
- export interface TradierQuoteParams {
2
- symbols: string;
3
- }
4
- export interface TradierOrderParams {
5
- account_id: string;
6
- symbol: string;
7
- side: 'buy' | 'sell';
8
- quantity: number;
9
- type: 'market' | 'limit' | 'stop' | 'stop_limit';
10
- duration: 'day' | 'gtc' | 'pre' | 'post';
11
- price?: number;
12
- stop?: number;
13
- }
14
- export declare const TradierAPI: {
15
- quote: (params: TradierQuoteParams) => Promise<unknown>;
16
- optionChain: (symbol: string, expiration: string) => Promise<unknown>;
17
- order: (params: TradierOrderParams) => Promise<unknown>;
18
- positions: (account_id: string) => Promise<unknown>;
19
- balances: (account_id: string) => Promise<unknown>;
20
- orderStatus: (account_id: string, order_id: string) => Promise<unknown>;
21
- };
22
- export interface RobinhoodOrderParams {
23
- symbol: string;
24
- side: 'buy' | 'sell';
25
- quantity: number;
26
- type: 'market' | 'limit';
27
- time_in_force: 'gfd' | 'gtc' | 'ioc' | 'opg';
28
- price?: number;
29
- }
30
- export declare const RobinhoodAPI: {
31
- quote: (symbol: string) => Promise<{}>;
32
- instruments: (symbol: string) => Promise<{
33
- url: string;
34
- } | undefined>;
35
- order: (params: RobinhoodOrderParams) => Promise<unknown>;
36
- portfolio: () => Promise<unknown>;
37
- positions: () => Promise<unknown>;
38
- orderHistory: () => Promise<unknown>;
39
- };
40
- //# sourceMappingURL=brokers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"brokers.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/brokers.ts"],"names":[],"mappings":"AAwEA,MAAM,WAAW,kBAAkB;IAAG,OAAO,EAAE,MAAM,CAAA;CAAE;AACvD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC;IACjD,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,UAAU;oBACL,kBAAkB;0BAGZ,MAAM,cAAc,MAAM;oBAGhC,kBAAkB;4BAcV,MAAM;2BAGP,MAAM;8BAGH,MAAM,YAAY,MAAM;CAEnD,CAAC;AAIF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,aAAa,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,YAAY;oBACD,MAAM;0BAKA,MAAM;aACwD,MAAM;;oBAI1E,oBAAoB;;;;CAsB3C,CAAC"}