@opendatalabs/personal-server-ts-core 0.2.0 → 1.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 (340) hide show
  1. package/dist/api/index.d.ts +160 -0
  2. package/dist/api/index.d.ts.map +1 -0
  3. package/dist/api/index.js +774 -0
  4. package/dist/api/index.js.map +1 -0
  5. package/dist/auth/index.d.ts +2 -0
  6. package/dist/auth/index.d.ts.map +1 -0
  7. package/dist/auth/index.js +2 -0
  8. package/dist/auth/index.js.map +1 -0
  9. package/dist/auth/request.d.ts +28 -0
  10. package/dist/auth/request.d.ts.map +1 -0
  11. package/dist/auth/request.js +106 -0
  12. package/dist/auth/request.js.map +1 -0
  13. package/dist/client.d.ts +233 -0
  14. package/dist/client.d.ts.map +1 -0
  15. package/dist/client.js +243 -0
  16. package/dist/client.js.map +1 -0
  17. package/dist/config/defaults.d.ts +5 -5
  18. package/dist/config/defaults.d.ts.map +1 -1
  19. package/dist/config/defaults.js +3 -5
  20. package/dist/config/defaults.js.map +1 -1
  21. package/dist/config/index.d.ts +0 -1
  22. package/dist/config/index.d.ts.map +1 -1
  23. package/dist/config/index.js +0 -1
  24. package/dist/config/index.js.map +1 -1
  25. package/dist/config/paths.d.ts.map +1 -1
  26. package/dist/config/paths.js +1 -9
  27. package/dist/config/paths.js.map +1 -1
  28. package/dist/contracts/access-logs.d.ts +8 -0
  29. package/dist/contracts/access-logs.d.ts.map +1 -0
  30. package/dist/contracts/access-logs.js +7 -0
  31. package/dist/contracts/access-logs.js.map +1 -0
  32. package/dist/contracts/auth-device.d.ts +70 -0
  33. package/dist/contracts/auth-device.d.ts.map +1 -0
  34. package/dist/contracts/auth-device.js +163 -0
  35. package/dist/contracts/auth-device.js.map +1 -0
  36. package/dist/contracts/binary.d.ts +54 -0
  37. package/dist/contracts/binary.d.ts.map +1 -0
  38. package/dist/contracts/binary.js +92 -0
  39. package/dist/contracts/binary.js.map +1 -0
  40. package/dist/contracts/config.d.ts +5 -0
  41. package/dist/contracts/config.d.ts.map +1 -0
  42. package/dist/contracts/config.js +30 -0
  43. package/dist/contracts/config.js.map +1 -0
  44. package/dist/contracts/data.d.ts +115 -0
  45. package/dist/contracts/data.d.ts.map +1 -0
  46. package/dist/contracts/data.js +237 -0
  47. package/dist/contracts/data.js.map +1 -0
  48. package/dist/contracts/grants.d.ts +45 -0
  49. package/dist/contracts/grants.d.ts.map +1 -0
  50. package/dist/contracts/grants.js +177 -0
  51. package/dist/contracts/grants.js.map +1 -0
  52. package/dist/contracts/http.d.ts +21 -0
  53. package/dist/contracts/http.d.ts.map +1 -0
  54. package/dist/contracts/http.js +49 -0
  55. package/dist/contracts/http.js.map +1 -0
  56. package/dist/contracts/index.d.ts +16 -0
  57. package/dist/contracts/index.d.ts.map +1 -0
  58. package/dist/contracts/index.js +10 -0
  59. package/dist/contracts/index.js.map +1 -0
  60. package/dist/contracts/oauth.d.ts +38 -0
  61. package/dist/contracts/oauth.d.ts.map +1 -0
  62. package/dist/contracts/oauth.js +130 -0
  63. package/dist/contracts/oauth.js.map +1 -0
  64. package/dist/contracts/sync.d.ts +10 -0
  65. package/dist/contracts/sync.d.ts.map +1 -0
  66. package/dist/contracts/sync.js +34 -0
  67. package/dist/contracts/sync.js.map +1 -0
  68. package/dist/errors/catalog.d.ts +9 -0
  69. package/dist/errors/catalog.d.ts.map +1 -1
  70. package/dist/errors/catalog.js +15 -0
  71. package/dist/errors/catalog.js.map +1 -1
  72. package/dist/grants/index.d.ts +2 -4
  73. package/dist/grants/index.d.ts.map +1 -1
  74. package/dist/grants/index.js +1 -2
  75. package/dist/grants/index.js.map +1 -1
  76. package/dist/keys/index.d.ts +1 -2
  77. package/dist/keys/index.d.ts.map +1 -1
  78. package/dist/keys/index.js +1 -2
  79. package/dist/keys/index.js.map +1 -1
  80. package/dist/keys/server-account.d.ts +5 -9
  81. package/dist/keys/server-account.d.ts.map +1 -1
  82. package/dist/keys/server-account.js +1 -47
  83. package/dist/keys/server-account.js.map +1 -1
  84. package/dist/logger/index.d.ts +6 -2
  85. package/dist/logger/index.d.ts.map +1 -1
  86. package/dist/logger/index.js +2 -6
  87. package/dist/logger/index.js.map +1 -1
  88. package/dist/logging/access-log.d.ts +0 -1
  89. package/dist/logging/access-log.d.ts.map +1 -1
  90. package/dist/logging/access-log.js +1 -24
  91. package/dist/logging/access-log.js.map +1 -1
  92. package/dist/logging/access-reader.d.ts +0 -5
  93. package/dist/logging/access-reader.d.ts.map +1 -1
  94. package/dist/logging/access-reader.js +1 -49
  95. package/dist/logging/access-reader.js.map +1 -1
  96. package/dist/mcp/activity.d.ts +68 -0
  97. package/dist/mcp/activity.d.ts.map +1 -0
  98. package/dist/mcp/activity.js +111 -0
  99. package/dist/mcp/activity.js.map +1 -0
  100. package/dist/mcp/builder-registration.d.ts +24 -0
  101. package/dist/mcp/builder-registration.d.ts.map +1 -0
  102. package/dist/mcp/builder-registration.js +89 -0
  103. package/dist/mcp/builder-registration.js.map +1 -0
  104. package/dist/mcp/connection-api.d.ts +170 -0
  105. package/dist/mcp/connection-api.d.ts.map +1 -0
  106. package/dist/mcp/connection-api.js +379 -0
  107. package/dist/mcp/connection-api.js.map +1 -0
  108. package/dist/mcp/grantee.d.ts +52 -0
  109. package/dist/mcp/grantee.d.ts.map +1 -0
  110. package/dist/mcp/grantee.js +91 -0
  111. package/dist/mcp/grantee.js.map +1 -0
  112. package/dist/mcp/index.d.ts +10 -0
  113. package/dist/mcp/index.d.ts.map +1 -0
  114. package/dist/mcp/index.js +10 -0
  115. package/dist/mcp/index.js.map +1 -0
  116. package/dist/mcp/read-client.d.ts +136 -0
  117. package/dist/mcp/read-client.d.ts.map +1 -0
  118. package/dist/mcp/read-client.js +306 -0
  119. package/dist/mcp/read-client.js.map +1 -0
  120. package/dist/mcp/resources.d.ts +37 -0
  121. package/dist/mcp/resources.d.ts.map +1 -0
  122. package/dist/mcp/resources.js +114 -0
  123. package/dist/mcp/resources.js.map +1 -0
  124. package/dist/mcp/search/index.d.ts +34 -0
  125. package/dist/mcp/search/index.d.ts.map +1 -0
  126. package/dist/mcp/search/index.js +69 -0
  127. package/dist/mcp/search/index.js.map +1 -0
  128. package/dist/mcp/server.d.ts +53 -0
  129. package/dist/mcp/server.d.ts.map +1 -0
  130. package/dist/mcp/server.js +308 -0
  131. package/dist/mcp/server.js.map +1 -0
  132. package/dist/mcp/store.d.ts +13 -0
  133. package/dist/mcp/store.d.ts.map +1 -0
  134. package/dist/mcp/store.js +98 -0
  135. package/dist/mcp/store.js.map +1 -0
  136. package/dist/mcp/tools.d.ts +60 -0
  137. package/dist/mcp/tools.d.ts.map +1 -0
  138. package/dist/mcp/tools.js +1058 -0
  139. package/dist/mcp/tools.js.map +1 -0
  140. package/dist/mcp/types.d.ts +97 -0
  141. package/dist/mcp/types.d.ts.map +1 -0
  142. package/dist/mcp/types.js +24 -0
  143. package/dist/mcp/types.js.map +1 -0
  144. package/dist/payment/index.d.ts +2 -0
  145. package/dist/payment/index.d.ts.map +1 -0
  146. package/dist/payment/index.js +2 -0
  147. package/dist/payment/index.js.map +1 -0
  148. package/dist/payment/x402.d.ts +155 -0
  149. package/dist/payment/x402.d.ts.map +1 -0
  150. package/dist/payment/x402.js +402 -0
  151. package/dist/payment/x402.js.map +1 -0
  152. package/dist/policy/data-read.d.ts +15 -0
  153. package/dist/policy/data-read.d.ts.map +1 -0
  154. package/dist/policy/data-read.js +84 -0
  155. package/dist/policy/data-read.js.map +1 -0
  156. package/dist/policy/index.d.ts +2 -0
  157. package/dist/policy/index.d.ts.map +1 -0
  158. package/dist/policy/index.js +2 -0
  159. package/dist/policy/index.js.map +1 -0
  160. package/dist/ports/index.d.ts +95 -0
  161. package/dist/ports/index.d.ts.map +1 -0
  162. package/dist/ports/index.js +7 -0
  163. package/dist/ports/index.js.map +1 -0
  164. package/dist/schemas/server-config.d.ts +12 -0
  165. package/dist/schemas/server-config.d.ts.map +1 -1
  166. package/dist/schemas/server-config.js +34 -4
  167. package/dist/schemas/server-config.js.map +1 -1
  168. package/dist/signing/index.d.ts +0 -1
  169. package/dist/signing/index.d.ts.map +1 -1
  170. package/dist/signing/index.js +0 -1
  171. package/dist/signing/index.js.map +1 -1
  172. package/dist/signing/request-signer.d.ts +8 -2
  173. package/dist/signing/request-signer.d.ts.map +1 -1
  174. package/dist/signing/request-signer.js +5 -31
  175. package/dist/signing/request-signer.js.map +1 -1
  176. package/dist/signing/signer.d.ts +20 -2
  177. package/dist/signing/signer.d.ts.map +1 -1
  178. package/dist/signing/signer.js +23 -13
  179. package/dist/signing/signer.js.map +1 -1
  180. package/dist/storage/adapters/index.d.ts +2 -1
  181. package/dist/storage/adapters/index.d.ts.map +1 -1
  182. package/dist/storage/adapters/index.js +2 -1
  183. package/dist/storage/adapters/index.js.map +1 -1
  184. package/dist/storage/adapters/interface.d.ts +10 -0
  185. package/dist/storage/adapters/interface.d.ts.map +1 -1
  186. package/dist/storage/adapters/sdk.d.ts +23 -0
  187. package/dist/storage/adapters/sdk.d.ts.map +1 -0
  188. package/dist/storage/adapters/sdk.js +73 -0
  189. package/dist/storage/adapters/sdk.js.map +1 -0
  190. package/dist/storage/adapters/vana.d.ts +7 -30
  191. package/dist/storage/adapters/vana.d.ts.map +1 -1
  192. package/dist/storage/adapters/vana.js +37 -92
  193. package/dist/storage/adapters/vana.js.map +1 -1
  194. package/dist/storage/blocks/build.d.ts +20 -0
  195. package/dist/storage/blocks/build.d.ts.map +1 -0
  196. package/dist/storage/blocks/build.js +378 -0
  197. package/dist/storage/blocks/build.js.map +1 -0
  198. package/dist/storage/blocks/cursor.d.ts +33 -0
  199. package/dist/storage/blocks/cursor.d.ts.map +1 -0
  200. package/dist/storage/blocks/cursor.js +142 -0
  201. package/dist/storage/blocks/cursor.js.map +1 -0
  202. package/dist/storage/blocks/errors.d.ts +6 -0
  203. package/dist/storage/blocks/errors.d.ts.map +1 -0
  204. package/dist/storage/blocks/errors.js +9 -0
  205. package/dist/storage/blocks/errors.js.map +1 -0
  206. package/dist/storage/blocks/index.d.ts +5 -0
  207. package/dist/storage/blocks/index.d.ts.map +1 -0
  208. package/dist/storage/blocks/index.js +4 -0
  209. package/dist/storage/blocks/index.js.map +1 -0
  210. package/dist/storage/blocks/types.d.ts +49 -0
  211. package/dist/storage/blocks/types.d.ts.map +1 -0
  212. package/dist/storage/blocks/types.js +2 -0
  213. package/dist/{grants → storage/blocks}/types.js.map +1 -1
  214. package/dist/storage/hierarchy/index.d.ts +0 -1
  215. package/dist/storage/hierarchy/index.d.ts.map +1 -1
  216. package/dist/storage/hierarchy/index.js +0 -1
  217. package/dist/storage/hierarchy/index.js.map +1 -1
  218. package/dist/storage/hierarchy/manager.d.ts +0 -14
  219. package/dist/storage/hierarchy/manager.d.ts.map +1 -1
  220. package/dist/storage/hierarchy/manager.js +1 -59
  221. package/dist/storage/hierarchy/manager.js.map +1 -1
  222. package/dist/storage/hierarchy/paths.d.ts.map +1 -1
  223. package/dist/storage/hierarchy/paths.js +11 -4
  224. package/dist/storage/hierarchy/paths.js.map +1 -1
  225. package/dist/storage/index/index.d.ts +2 -3
  226. package/dist/storage/index/index.d.ts.map +1 -1
  227. package/dist/storage/index/index.js +1 -2
  228. package/dist/storage/index/index.js.map +1 -1
  229. package/dist/storage/index/manager.d.ts +26 -6
  230. package/dist/storage/index/manager.d.ts.map +1 -1
  231. package/dist/storage/index/manager.js +1 -131
  232. package/dist/storage/index/manager.js.map +1 -1
  233. package/dist/storage/index/schema.d.ts +1 -3
  234. package/dist/storage/index/schema.d.ts.map +1 -1
  235. package/dist/storage/index/schema.js +1 -26
  236. package/dist/storage/index/schema.js.map +1 -1
  237. package/dist/storage/index/types.d.ts +16 -0
  238. package/dist/storage/index/types.d.ts.map +1 -1
  239. package/dist/storage/preview.d.ts +12 -0
  240. package/dist/storage/preview.d.ts.map +1 -0
  241. package/dist/storage/preview.js +239 -0
  242. package/dist/storage/preview.js.map +1 -0
  243. package/dist/sync/cursor.d.ts +5 -7
  244. package/dist/sync/cursor.d.ts.map +1 -1
  245. package/dist/sync/cursor.js +1 -18
  246. package/dist/sync/cursor.js.map +1 -1
  247. package/dist/sync/engine/sync-manager.d.ts +17 -0
  248. package/dist/sync/engine/sync-manager.d.ts.map +1 -1
  249. package/dist/sync/engine/sync-manager.js +104 -43
  250. package/dist/sync/engine/sync-manager.js.map +1 -1
  251. package/dist/sync/index.d.ts +4 -2
  252. package/dist/sync/index.d.ts.map +1 -1
  253. package/dist/sync/index.js +1 -1
  254. package/dist/sync/index.js.map +1 -1
  255. package/dist/sync/issues.d.ts +55 -0
  256. package/dist/sync/issues.d.ts.map +1 -0
  257. package/dist/sync/issues.js +168 -0
  258. package/dist/sync/issues.js.map +1 -0
  259. package/dist/sync/retry-memory.d.ts +33 -0
  260. package/dist/sync/retry-memory.d.ts.map +1 -0
  261. package/dist/sync/retry-memory.js +68 -0
  262. package/dist/sync/retry-memory.js.map +1 -0
  263. package/dist/sync/types.d.ts +9 -24
  264. package/dist/sync/types.d.ts.map +1 -1
  265. package/dist/sync/workers/delete.d.ts +42 -0
  266. package/dist/sync/workers/delete.d.ts.map +1 -0
  267. package/dist/sync/workers/delete.js +40 -0
  268. package/dist/sync/workers/delete.js.map +1 -0
  269. package/dist/sync/workers/download.d.ts +64 -18
  270. package/dist/sync/workers/download.d.ts.map +1 -1
  271. package/dist/sync/workers/download.js +396 -54
  272. package/dist/sync/workers/download.js.map +1 -1
  273. package/dist/sync/workers/upload.d.ts +29 -18
  274. package/dist/sync/workers/upload.d.ts.map +1 -1
  275. package/dist/sync/workers/upload.js +163 -46
  276. package/dist/sync/workers/upload.js.map +1 -1
  277. package/dist/test-utils/wallet.d.ts +1 -0
  278. package/dist/test-utils/wallet.d.ts.map +1 -1
  279. package/dist/test-utils/wallet.js +9 -31
  280. package/dist/test-utils/wallet.js.map +1 -1
  281. package/package.json +51 -27
  282. package/dist/auth/web3-signed.d.ts +0 -48
  283. package/dist/auth/web3-signed.d.ts.map +0 -1
  284. package/dist/auth/web3-signed.js +0 -110
  285. package/dist/auth/web3-signed.js.map +0 -1
  286. package/dist/config/loader.d.ts +0 -8
  287. package/dist/config/loader.d.ts.map +0 -1
  288. package/dist/config/loader.js +0 -38
  289. package/dist/config/loader.js.map +0 -1
  290. package/dist/gateway/client.d.ts +0 -98
  291. package/dist/gateway/client.d.ts.map +0 -1
  292. package/dist/gateway/client.js +0 -171
  293. package/dist/gateway/client.js.map +0 -1
  294. package/dist/grants/eip712.d.ts +0 -28
  295. package/dist/grants/eip712.d.ts.map +0 -1
  296. package/dist/grants/eip712.js +0 -30
  297. package/dist/grants/eip712.js.map +0 -1
  298. package/dist/grants/types.d.ts +0 -29
  299. package/dist/grants/types.d.ts.map +0 -1
  300. package/dist/grants/types.js +0 -6
  301. package/dist/grants/verify.d.ts +0 -24
  302. package/dist/grants/verify.d.ts.map +0 -1
  303. package/dist/grants/verify.js +0 -71
  304. package/dist/grants/verify.js.map +0 -1
  305. package/dist/keys/derive.d.ts +0 -18
  306. package/dist/keys/derive.d.ts.map +0 -1
  307. package/dist/keys/derive.js +0 -43
  308. package/dist/keys/derive.js.map +0 -1
  309. package/dist/schemas/data-file.d.ts +0 -20
  310. package/dist/schemas/data-file.d.ts.map +0 -1
  311. package/dist/schemas/data-file.js +0 -23
  312. package/dist/schemas/data-file.js.map +0 -1
  313. package/dist/scopes/index.d.ts +0 -3
  314. package/dist/scopes/index.d.ts.map +0 -1
  315. package/dist/scopes/index.js +0 -3
  316. package/dist/scopes/index.js.map +0 -1
  317. package/dist/scopes/match.d.ts +0 -13
  318. package/dist/scopes/match.d.ts.map +0 -1
  319. package/dist/scopes/match.js +0 -23
  320. package/dist/scopes/match.js.map +0 -1
  321. package/dist/scopes/parse.d.ts +0 -12
  322. package/dist/scopes/parse.d.ts.map +0 -1
  323. package/dist/scopes/parse.js +0 -29
  324. package/dist/scopes/parse.js.map +0 -1
  325. package/dist/signing/eip712.d.ts +0 -69
  326. package/dist/signing/eip712.d.ts.map +0 -1
  327. package/dist/signing/eip712.js +0 -68
  328. package/dist/signing/eip712.js.map +0 -1
  329. package/dist/storage/encryption/decrypt.d.ts +0 -10
  330. package/dist/storage/encryption/decrypt.d.ts.map +0 -1
  331. package/dist/storage/encryption/decrypt.js +0 -19
  332. package/dist/storage/encryption/decrypt.js.map +0 -1
  333. package/dist/storage/encryption/encrypt.d.ts +0 -10
  334. package/dist/storage/encryption/encrypt.d.ts.map +0 -1
  335. package/dist/storage/encryption/encrypt.js +0 -19
  336. package/dist/storage/encryption/encrypt.js.map +0 -1
  337. package/dist/storage/encryption/index.d.ts +0 -3
  338. package/dist/storage/encryption/index.d.ts.map +0 -1
  339. package/dist/storage/encryption/index.js +0 -3
  340. package/dist/storage/encryption/index.js.map +0 -1
@@ -1,3 +1,2 @@
1
- export { GRANT_DOMAIN, GRANT_TYPES, grantToEip712Message } from "./eip712.js";
2
- export { verifyGrantLocal } from "./verify.js";
1
+ export { GRANT_REGISTRATION_TYPES, GRANT_REVOCATION_TYPES, grantRegistrationDomain, grantRevocationDomain, isDataPortabilityGatewayConfig, verifyGrantRegistration, } from "@opendatalabs/vana-sdk/browser";
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/grants/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/grants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,8BAA8B,EAC9B,uBAAuB,GAMxB,MAAM,gCAAgC,CAAC"}
@@ -1,3 +1,2 @@
1
- export { deriveMasterKey, deriveScopeKey, recoverServerOwner, } from "./derive.js";
2
- export { loadOrCreateServerAccount, type ServerAccount, type SignTypedDataParams, } from "./server-account.js";
1
+ export type { KeyFileData, ServerAccount, SignTypedDataParams, } from "./server-account.js";
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,yBAAyB,EACzB,KAAK,aAAa,EAClB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,aAAa,EACb,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
@@ -1,3 +1,2 @@
1
- export { deriveMasterKey, deriveScopeKey, recoverServerOwner, } from "./derive.js";
2
- export { loadOrCreateServerAccount, } from "./server-account.js";
1
+ export {};
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,yBAAyB,GAG1B,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":""}
@@ -1,7 +1,3 @@
1
- /**
2
- * ServerAccount wraps a randomly generated private key for EIP-712 signing.
3
- * The key is persisted to disk so the same address survives restarts.
4
- */
5
1
  import type { TypedDataDomain } from "viem";
6
2
  export interface SignTypedDataParams {
7
3
  domain: TypedDataDomain;
@@ -20,9 +16,9 @@ export interface ServerAccount {
20
16
  /** Sign a personal message (EIP-191). */
21
17
  signMessage(message: string): Promise<`0x${string}`>;
22
18
  }
23
- /**
24
- * Loads an existing server keypair from disk, or generates a new random one
25
- * and persists it. Returns a ServerAccount suitable for EIP-712 signing.
26
- */
27
- export declare function loadOrCreateServerAccount(keyPath: string): ServerAccount;
19
+ export interface KeyFileData {
20
+ address: string;
21
+ publicKey: string;
22
+ privateKey: string;
23
+ }
28
24
  //# sourceMappingURL=server-account.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-account.d.ts","sourceRoot":"","sources":["../../src/keys/server-account.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE5C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,uDAAuD;IACvD,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IACnE,yCAAyC;IACzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;CACtD;AAQD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CA2CxE"}
1
+ {"version":3,"file":"server-account.d.ts","sourceRoot":"","sources":["../../src/keys/server-account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE5C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,uDAAuD;IACvD,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IACnE,yCAAyC;IACzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -1,48 +1,2 @@
1
- /**
2
- * ServerAccount wraps a randomly generated private key for EIP-712 signing.
3
- * The key is persisted to disk so the same address survives restarts.
4
- */
5
- import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
6
- import { dirname } from "node:path";
7
- import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
8
- /**
9
- * Loads an existing server keypair from disk, or generates a new random one
10
- * and persists it. Returns a ServerAccount suitable for EIP-712 signing.
11
- */
12
- export function loadOrCreateServerAccount(keyPath) {
13
- let privateKey;
14
- if (existsSync(keyPath)) {
15
- const raw = readFileSync(keyPath, "utf-8");
16
- const data = JSON.parse(raw);
17
- privateKey = data.privateKey;
18
- }
19
- else {
20
- privateKey = generatePrivateKey();
21
- const account = privateKeyToAccount(privateKey);
22
- // Ensure parent directories exist
23
- mkdirSync(dirname(keyPath), { recursive: true });
24
- const data = {
25
- address: account.address,
26
- publicKey: account.publicKey,
27
- privateKey,
28
- };
29
- writeFileSync(keyPath, JSON.stringify(data, null, 2), { mode: 0o600 });
30
- }
31
- const account = privateKeyToAccount(privateKey);
32
- return {
33
- address: account.address,
34
- publicKey: account.publicKey,
35
- async signTypedData(params) {
36
- return account.signTypedData({
37
- domain: params.domain,
38
- types: params.types,
39
- primaryType: params.primaryType,
40
- message: params.message,
41
- });
42
- },
43
- async signMessage(message) {
44
- return account.signMessage({ message });
45
- },
46
- };
47
- }
1
+ export {};
48
2
  //# sourceMappingURL=server-account.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-account.js","sourceRoot":"","sources":["../../src/keys/server-account.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAyBxE;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,IAAI,UAAyB,CAAC;IAE9B,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,UAAU,GAAG,IAAI,CAAC,UAA2B,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,kBAAkB,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEhD,kCAAkC;QAClC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,MAAM,IAAI,GAAgB;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU;SACX,CAAC;QACF,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEhD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,CAAC,aAAa,CAAC,MAA2B;YAC7C,OAAO,OAAO,CAAC,aAAa,CAAC;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAED;gBACd,KAAK,EAAE,MAAM,CAAC,KAED;gBACb,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,OAAe;YAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"server-account.js","sourceRoot":"","sources":["../../src/keys/server-account.ts"],"names":[],"mappings":""}
@@ -1,5 +1,9 @@
1
- import { type Logger } from "pino";
2
1
  import type { LoggingConfig } from "../schemas/server-config.js";
3
- export type { Logger } from "pino";
2
+ export interface Logger {
3
+ debug(payloadOrMessage?: unknown, message?: string): void;
4
+ info(payloadOrMessage?: unknown, message?: string): void;
5
+ warn(payloadOrMessage?: unknown, message?: string): void;
6
+ error(payloadOrMessage?: unknown, message?: string): void;
7
+ }
4
8
  export declare function createLogger(config: LoggingConfig): Logger;
5
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,YAAY,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAO1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,IAAI,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,KAAK,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAG1D"}
@@ -1,9 +1,5 @@
1
- import pino from "pino";
2
1
  export function createLogger(config) {
3
- const usePretty = config.pretty || process.env.NODE_ENV !== "production";
4
- return pino({
5
- level: config.level,
6
- ...(usePretty ? { transport: { target: "pino-pretty" } } : {}),
7
- });
2
+ void config;
3
+ return console;
8
4
  }
9
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAqB,MAAM,MAAM,CAAC;AAKzC,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAEzE,OAAO,IAAI,CAAC;QACV,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,KAAK,MAAM,CAAC;IACZ,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -11,5 +11,4 @@ export interface AccessLogEntry {
11
11
  export interface AccessLogWriter {
12
12
  write(entry: AccessLogEntry): Promise<void>;
13
13
  }
14
- export declare function createAccessLogWriter(logsDir: string): AccessLogWriter;
15
14
  //# sourceMappingURL=access-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"access-log.d.ts","sourceRoot":"","sources":["../../src/logging/access-log.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAUD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAiBtE"}
1
+ {"version":3,"file":"access-log.d.ts","sourceRoot":"","sources":["../../src/logging/access-log.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C"}
@@ -1,25 +1,2 @@
1
- import { mkdir, appendFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- function formatDateForFilename(isoTimestamp) {
4
- const date = new Date(isoTimestamp);
5
- const yyyy = date.getUTCFullYear();
6
- const mm = String(date.getUTCMonth() + 1).padStart(2, "0");
7
- const dd = String(date.getUTCDate()).padStart(2, "0");
8
- return `${yyyy}-${mm}-${dd}`;
9
- }
10
- export function createAccessLogWriter(logsDir) {
11
- let dirCreated = false;
12
- return {
13
- async write(entry) {
14
- if (!dirCreated) {
15
- await mkdir(logsDir, { recursive: true });
16
- dirCreated = true;
17
- }
18
- const dateStr = formatDateForFilename(entry.timestamp);
19
- const filename = `access-${dateStr}.log`;
20
- const filepath = join(logsDir, filename);
21
- await appendFile(filepath, JSON.stringify(entry) + "\n", "utf-8");
22
- },
23
- };
24
- }
1
+ export {};
25
2
  //# sourceMappingURL=access-log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"access-log.js","sourceRoot":"","sources":["../../src/logging/access-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiBjC,SAAS,qBAAqB,CAAC,YAAoB;IACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,KAAqB;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1C,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YAED,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,UAAU,OAAO,MAAM,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAEzC,MAAM,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QACpE,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"access-log.js","sourceRoot":"","sources":["../../src/logging/access-log.ts"],"names":[],"mappings":""}
@@ -11,9 +11,4 @@ export interface AccessLogReader {
11
11
  offset?: number;
12
12
  }): Promise<AccessLogReadResult>;
13
13
  }
14
- /**
15
- * Reads all access-*.log files from logsDir, merges entries,
16
- * sorts by timestamp DESC, and paginates.
17
- */
18
- export declare function createAccessLogReader(logsDir: string): AccessLogReader;
19
14
  //# sourceMappingURL=access-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"access-reader.d.ts","sourceRoot":"","sources":["../../src/logging/access-reader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,OAAO,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAqDtE"}
1
+ {"version":3,"file":"access-reader.d.ts","sourceRoot":"","sources":["../../src/logging/access-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,OAAO,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAClC"}
@@ -1,50 +1,2 @@
1
- import { readdir, readFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- /**
4
- * Reads all access-*.log files from logsDir, merges entries,
5
- * sorts by timestamp DESC, and paginates.
6
- */
7
- export function createAccessLogReader(logsDir) {
8
- return {
9
- async read(options) {
10
- const limit = options?.limit ?? 50;
11
- const offset = options?.offset ?? 0;
12
- let filenames;
13
- try {
14
- filenames = await readdir(logsDir);
15
- }
16
- catch {
17
- // Directory doesn't exist — return empty result
18
- return { logs: [], total: 0, limit, offset };
19
- }
20
- const logFiles = filenames.filter((f) => f.startsWith("access-") && f.endsWith(".log"));
21
- const allEntries = [];
22
- for (const filename of logFiles) {
23
- const filepath = join(logsDir, filename);
24
- const content = await readFile(filepath, "utf-8");
25
- const lines = content
26
- .split("\n")
27
- .filter((line) => line.trim().length > 0);
28
- for (const line of lines) {
29
- try {
30
- const entry = JSON.parse(line);
31
- allEntries.push(entry);
32
- }
33
- catch {
34
- // Skip malformed lines
35
- }
36
- }
37
- }
38
- // Sort by timestamp DESC (newest first)
39
- allEntries.sort((a, b) => {
40
- const ta = new Date(a.timestamp).getTime();
41
- const tb = new Date(b.timestamp).getTime();
42
- return tb - ta;
43
- });
44
- const total = allEntries.length;
45
- const paginated = allEntries.slice(offset, offset + limit);
46
- return { logs: paginated, total, limit, offset };
47
- },
48
- };
49
- }
1
+ export {};
50
2
  //# sourceMappingURL=access-reader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"access-reader.js","sourceRoot":"","sources":["../../src/logging/access-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiBjC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAGV;YACC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;YAEpC,IAAI,SAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;gBAChD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC/C,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CACrD,CAAC;YAEF,MAAM,UAAU,GAAqB,EAAE,CAAC;YAExC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,OAAO;qBAClB,KAAK,CAAC,IAAI,CAAC;qBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC;wBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;wBACjD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;oBAAC,MAAM,CAAC;wBACP,uBAAuB;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,wCAAwC;YACxC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvB,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC3C,OAAO,EAAE,GAAG,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;YAChC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;YAE3D,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"access-reader.js","sourceRoot":"","sources":["../../src/logging/access-reader.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * In-memory MCP activity recorder/ring buffer.
3
+ *
4
+ * Records start/end of every MCP tool call so the /mcp UI page can poll for
5
+ * live and recent activity. No raw data payloads are stored — only metadata
6
+ * about the call (tool name, scopes, counts, error code, timing).
7
+ *
8
+ * The ring buffer is bounded by `maxEvents`; oldest entries are evicted when
9
+ * full. Running calls occupy a slot; the slot is updated in-place when the
10
+ * call finishes.
11
+ */
12
+ export type McpActivityStatus = "running" | "succeeded" | "failed" | "timed_out" | "aborted";
13
+ export type McpActivityPhase = "tool_running" | "response_preparing" | "response_ready";
14
+ export interface McpActivityEvent {
15
+ id: string;
16
+ tool: string;
17
+ status: McpActivityStatus;
18
+ /** Current server-side phase. This is PS-side only, not a client receipt ack. */
19
+ phase: McpActivityPhase;
20
+ startedAt: string;
21
+ finishedAt?: string;
22
+ durationMs?: number;
23
+ handlerDurationMs?: number;
24
+ payloadBytes?: number;
25
+ textBytes?: number;
26
+ structuredContentBytes?: number;
27
+ /** Scopes involved in the call, where applicable. */
28
+ scopes?: string[];
29
+ /** Clipped query preview for search calls only. */
30
+ queryPreview?: string;
31
+ resultCount?: number;
32
+ skippedCount?: number;
33
+ errorCode?: string;
34
+ errorMessage?: string;
35
+ }
36
+ export interface McpActivitySnapshot {
37
+ events: McpActivityEvent[];
38
+ running: number;
39
+ total: number;
40
+ }
41
+ export declare class McpActivityRecorder {
42
+ private readonly _events;
43
+ private readonly _maxEvents;
44
+ constructor(maxEvents?: number);
45
+ /** Start recording a tool call. Returns the activity id. */
46
+ start(params: {
47
+ tool: string;
48
+ scopes?: string[];
49
+ queryPreview?: string;
50
+ }): string;
51
+ /** Update metadata for an in-flight call. No-op if the id is not found. */
52
+ update(id: string, patch: Partial<Pick<McpActivityEvent, "phase" | "handlerDurationMs" | "payloadBytes" | "textBytes" | "structuredContentBytes" | "resultCount" | "skippedCount" | "errorCode" | "errorMessage">>): void;
53
+ /** Finish a running call by id. No-op if the id is not found. */
54
+ finish(id: string, result: {
55
+ status: Exclude<McpActivityStatus, "running">;
56
+ handlerDurationMs?: number;
57
+ payloadBytes?: number;
58
+ textBytes?: number;
59
+ structuredContentBytes?: number;
60
+ resultCount?: number;
61
+ skippedCount?: number;
62
+ errorCode?: string;
63
+ errorMessage?: string;
64
+ }): void;
65
+ /** Read the current snapshot, newest first. */
66
+ snapshot(): McpActivitySnapshot;
67
+ }
68
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/mcp/activity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,iBAAiB,GAC3B,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAC1B,cAAc,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,iFAAiF;IACjF,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AASD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,SAAS,SAAqB;IAI1C,4DAA4D;IAC5D,KAAK,CAAC,MAAM,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,MAAM;IAiCV,2EAA2E;IAC3E,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CACZ,IAAI,CACF,gBAAgB,EACd,OAAO,GACP,mBAAmB,GACnB,cAAc,GACd,WAAW,GACX,wBAAwB,GACxB,aAAa,GACb,cAAc,GACd,WAAW,GACX,cAAc,CACjB,CACF,GACA,IAAI;IAMP,iEAAiE;IACjE,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,IAAI;IA6CP,+CAA+C;IAC/C,QAAQ,IAAI,mBAAmB;CAKhC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * In-memory MCP activity recorder/ring buffer.
3
+ *
4
+ * Records start/end of every MCP tool call so the /mcp UI page can poll for
5
+ * live and recent activity. No raw data payloads are stored — only metadata
6
+ * about the call (tool name, scopes, counts, error code, timing).
7
+ *
8
+ * The ring buffer is bounded by `maxEvents`; oldest entries are evicted when
9
+ * full. Running calls occupy a slot; the slot is updated in-place when the
10
+ * call finishes.
11
+ */
12
+ const DEFAULT_MAX_EVENTS = 50;
13
+ const QUERY_PREVIEW_MAX_CHARS = 120;
14
+ function generateId() {
15
+ return `act-${crypto.randomUUID().replace(/-/g, "").slice(0, 12)}`;
16
+ }
17
+ export class McpActivityRecorder {
18
+ _events = [];
19
+ _maxEvents;
20
+ constructor(maxEvents = DEFAULT_MAX_EVENTS) {
21
+ this._maxEvents = maxEvents;
22
+ }
23
+ /** Start recording a tool call. Returns the activity id. */
24
+ start(params) {
25
+ const id = generateId();
26
+ const event = {
27
+ id,
28
+ tool: params.tool,
29
+ status: "running",
30
+ phase: "tool_running",
31
+ startedAt: new Date().toISOString(),
32
+ ...(params.scopes && params.scopes.length > 0
33
+ ? { scopes: params.scopes }
34
+ : {}),
35
+ ...(params.queryPreview
36
+ ? {
37
+ queryPreview: params.queryPreview.slice(0, QUERY_PREVIEW_MAX_CHARS),
38
+ }
39
+ : {}),
40
+ };
41
+ if (this._events.length >= this._maxEvents) {
42
+ // Evict the oldest finished event. If all are running, evict the oldest.
43
+ const oldestFinishedIndex = this._events.findIndex((e) => e.status !== "running");
44
+ if (oldestFinishedIndex >= 0) {
45
+ this._events.splice(oldestFinishedIndex, 1);
46
+ }
47
+ else {
48
+ this._events.shift();
49
+ }
50
+ }
51
+ this._events.push(event);
52
+ console.info(`[mcp-activity] start id=${id} tool=${params.tool}`);
53
+ return id;
54
+ }
55
+ /** Update metadata for an in-flight call. No-op if the id is not found. */
56
+ update(id, patch) {
57
+ const event = this._events.find((e) => e.id === id);
58
+ if (!event)
59
+ return;
60
+ Object.assign(event, patch);
61
+ }
62
+ /** Finish a running call by id. No-op if the id is not found. */
63
+ finish(id, result) {
64
+ const event = this._events.find((e) => e.id === id);
65
+ if (!event)
66
+ return;
67
+ const finishedAt = new Date().toISOString();
68
+ const durationMs = Date.parse(finishedAt) - Date.parse(event.startedAt);
69
+ event.status = result.status;
70
+ event.phase = "response_ready";
71
+ event.finishedAt = finishedAt;
72
+ event.durationMs = durationMs;
73
+ if (result.handlerDurationMs !== undefined) {
74
+ event.handlerDurationMs = result.handlerDurationMs;
75
+ }
76
+ if (result.payloadBytes !== undefined) {
77
+ event.payloadBytes = result.payloadBytes;
78
+ }
79
+ if (result.textBytes !== undefined) {
80
+ event.textBytes = result.textBytes;
81
+ }
82
+ if (result.structuredContentBytes !== undefined) {
83
+ event.structuredContentBytes = result.structuredContentBytes;
84
+ }
85
+ if (result.resultCount !== undefined) {
86
+ event.resultCount = result.resultCount;
87
+ }
88
+ if (result.skippedCount !== undefined) {
89
+ event.skippedCount = result.skippedCount;
90
+ }
91
+ if (result.errorCode) {
92
+ event.errorCode = result.errorCode;
93
+ }
94
+ if (result.errorMessage) {
95
+ event.errorMessage = result.errorMessage;
96
+ }
97
+ if (result.status === "succeeded") {
98
+ console.info(`[mcp-activity] finish id=${id} tool=${event.tool} status=${result.status} durationMs=${durationMs}`);
99
+ }
100
+ else {
101
+ console.warn(`[mcp-activity] finish id=${id} tool=${event.tool} status=${result.status} durationMs=${durationMs}${result.errorCode ? ` errorCode=${result.errorCode}` : ""}`);
102
+ }
103
+ }
104
+ /** Read the current snapshot, newest first. */
105
+ snapshot() {
106
+ const events = [...this._events].reverse();
107
+ const running = events.filter((e) => e.status === "running").length;
108
+ return { events, running, total: events.length };
109
+ }
110
+ }
111
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/mcp/activity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Builder, DataPortabilityGatewayConfig, GatewayClient } from "@opendatalabs/vana-sdk/browser";
2
+ import type { McpConnectionRecord } from "./types.js";
3
+ export interface EnsureMcpGranteeRegisteredInput {
4
+ connection: McpConnectionRecord;
5
+ gateway: Pick<GatewayClient, "getBuilder">;
6
+ gatewayConfig: DataPortabilityGatewayConfig;
7
+ gatewayUrl: string;
8
+ appUrl: string;
9
+ fetch?: typeof fetch;
10
+ }
11
+ export interface EnsureMcpGranteeRegisteredOutput {
12
+ alreadyRegistered: boolean;
13
+ builder: Builder | null;
14
+ granteeAddress: `0x${string}`;
15
+ }
16
+ export declare class McpGranteeRegistrationError extends Error {
17
+ code: string;
18
+ status?: number | undefined;
19
+ body?: unknown | undefined;
20
+ constructor(code: string, message: string, status?: number | undefined, body?: unknown | undefined);
21
+ }
22
+ export declare function ensureMcpGranteeRegistered(input: EnsureMcpGranteeRegisteredInput): Promise<EnsureMcpGranteeRegisteredOutput>;
23
+ export declare function appUrlFromOAuthRedirectUri(redirectUri: string, fallback: string): string;
24
+ //# sourceMappingURL=builder-registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-registration.d.ts","sourceRoot":"","sources":["../../src/mcp/builder-registration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,4BAA4B,EAC5B,aAAa,EACd,MAAM,gCAAgC,CAAC;AAOxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC3C,aAAa,EAAE,4BAA4B,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;CAC/B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IAE3C,IAAI,EAAE,MAAM;IAEZ,MAAM,CAAC,EAAE,MAAM;IACf,IAAI,CAAC,EAAE,OAAO;gBAHd,IAAI,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACR,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,IAAI,CAAC,EAAE,OAAO,YAAA;CAKxB;AAED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,gCAAgC,CAAC,CAuE3C;AAED,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,MAAM,CAMR"}
@@ -0,0 +1,89 @@
1
+ import { BUILDER_REGISTRATION_TYPES, builderRegistrationDomain, } from "@opendatalabs/vana-sdk/browser";
2
+ import { loadMcpGranteeAccount } from "./grantee.js";
3
+ export class McpGranteeRegistrationError extends Error {
4
+ code;
5
+ status;
6
+ body;
7
+ constructor(code, message, status, body) {
8
+ super(message);
9
+ this.code = code;
10
+ this.status = status;
11
+ this.body = body;
12
+ this.name = "McpGranteeRegistrationError";
13
+ }
14
+ }
15
+ export async function ensureMcpGranteeRegistered(input) {
16
+ const existing = await input.gateway.getBuilder(input.connection.granteeAddress);
17
+ if (existing) {
18
+ return {
19
+ alreadyRegistered: true,
20
+ builder: existing,
21
+ granteeAddress: input.connection.granteeAddress,
22
+ };
23
+ }
24
+ const account = loadMcpGranteeAccount({
25
+ address: input.connection.granteeAddress,
26
+ publicKey: input.connection.granteePublicKey,
27
+ encryptedPrivateKey: input.connection.encryptedGranteePrivateKey,
28
+ });
29
+ const message = {
30
+ ownerAddress: account.address,
31
+ granteeAddress: account.address,
32
+ publicKey: account.publicKey,
33
+ appUrl: input.appUrl,
34
+ };
35
+ const signature = await account.signTypedData({
36
+ domain: builderRegistrationDomain(input.gatewayConfig),
37
+ types: BUILDER_REGISTRATION_TYPES,
38
+ primaryType: "BuilderRegistration",
39
+ message: message,
40
+ });
41
+ const doFetch = input.fetch ?? globalThis.fetch;
42
+ const response = await doFetch(`${input.gatewayUrl.replace(/\/+$/u, "")}/v1/builders`, {
43
+ method: "POST",
44
+ headers: {
45
+ "content-type": "application/json",
46
+ authorization: `Web3Signed ${signature}`,
47
+ },
48
+ body: JSON.stringify(message),
49
+ });
50
+ const body = await parseJsonResponse(response);
51
+ if (response.status === 201) {
52
+ return {
53
+ alreadyRegistered: false,
54
+ builder: null,
55
+ granteeAddress: input.connection.granteeAddress,
56
+ };
57
+ }
58
+ if (response.status === 409) {
59
+ const registered = await input.gateway.getBuilder(input.connection.granteeAddress);
60
+ if (registered) {
61
+ return {
62
+ alreadyRegistered: true,
63
+ builder: registered,
64
+ granteeAddress: input.connection.granteeAddress,
65
+ };
66
+ }
67
+ }
68
+ throw new McpGranteeRegistrationError(response.status === 409 ? "registration_conflict" : "gateway_error", `Data Gateway rejected MCP grantee registration (${response.status})`, response.status, body);
69
+ }
70
+ export function appUrlFromOAuthRedirectUri(redirectUri, fallback) {
71
+ try {
72
+ return new URL(redirectUri).origin;
73
+ }
74
+ catch {
75
+ return fallback;
76
+ }
77
+ }
78
+ async function parseJsonResponse(response) {
79
+ const text = await response.text();
80
+ if (!text)
81
+ return null;
82
+ try {
83
+ return JSON.parse(text);
84
+ }
85
+ catch {
86
+ return { raw: text };
87
+ }
88
+ }
89
+ //# sourceMappingURL=builder-registration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-registration.js","sourceRoot":"","sources":["../../src/mcp/builder-registration.ts"],"names":[],"mappings":"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"}