@oobe-protocol-labs/sap-mcp-server 0.9.1 → 0.9.3

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 (703) hide show
  1. package/.env.example +8 -7
  2. package/CHANGELOG.md +732 -1
  3. package/README.md +9 -3
  4. package/USER_DOCS/00_START_HERE.md +51 -4
  5. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
  6. package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +32 -3
  7. package/USER_DOCS/04_CLIENT_CONFIGS.md +14 -7
  8. package/USER_DOCS/05_SKILLS_AND_TOOLS.md +68 -8
  9. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +20 -14
  10. package/USER_DOCS/07_SMITHERY_AND_MARKETPLACES.md +7 -0
  11. package/config.example.json +5 -4
  12. package/config.schema.json +9 -4
  13. package/config.secure-example.json +5 -4
  14. package/dist/adapters/index.d.ts +7 -1
  15. package/dist/adapters/index.d.ts.map +1 -1
  16. package/dist/adapters/index.js +7 -1
  17. package/dist/adapters/index.js.map +1 -1
  18. package/dist/adapters/mcp/errors.d.ts +13 -1
  19. package/dist/adapters/mcp/errors.d.ts.map +1 -1
  20. package/dist/adapters/mcp/errors.js +13 -1
  21. package/dist/adapters/mcp/errors.js.map +1 -1
  22. package/dist/adapters/mcp/index.d.ts +7 -1
  23. package/dist/adapters/mcp/index.d.ts.map +1 -1
  24. package/dist/adapters/mcp/index.js +7 -1
  25. package/dist/adapters/mcp/index.js.map +1 -1
  26. package/dist/adapters/mcp/prompt-response.d.ts +13 -1
  27. package/dist/adapters/mcp/prompt-response.d.ts.map +1 -1
  28. package/dist/adapters/mcp/prompt-response.js +13 -1
  29. package/dist/adapters/mcp/prompt-response.js.map +1 -1
  30. package/dist/adapters/mcp/resource-response.d.ts +14 -1
  31. package/dist/adapters/mcp/resource-response.d.ts.map +1 -1
  32. package/dist/adapters/mcp/resource-response.js +14 -1
  33. package/dist/adapters/mcp/resource-response.js.map +1 -1
  34. package/dist/adapters/mcp/sdk-compat.d.ts +11 -3
  35. package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -1
  36. package/dist/adapters/mcp/sdk-compat.js +232 -25
  37. package/dist/adapters/mcp/sdk-compat.js.map +1 -1
  38. package/dist/adapters/mcp/tool-response.d.ts +51 -3
  39. package/dist/adapters/mcp/tool-response.d.ts.map +1 -1
  40. package/dist/adapters/mcp/tool-response.js +48 -3
  41. package/dist/adapters/mcp/tool-response.js.map +1 -1
  42. package/dist/adapters/solana/commitment.d.ts +14 -2
  43. package/dist/adapters/solana/commitment.d.ts.map +1 -1
  44. package/dist/adapters/solana/commitment.js +14 -2
  45. package/dist/adapters/solana/commitment.js.map +1 -1
  46. package/dist/adapters/solana/connection.d.ts +11 -2
  47. package/dist/adapters/solana/connection.d.ts.map +1 -1
  48. package/dist/adapters/solana/connection.js +11 -2
  49. package/dist/adapters/solana/connection.js.map +1 -1
  50. package/dist/adapters/solana/index.d.ts +7 -1
  51. package/dist/adapters/solana/index.d.ts.map +1 -1
  52. package/dist/adapters/solana/index.js +7 -1
  53. package/dist/adapters/solana/index.js.map +1 -1
  54. package/dist/adapters/solana/public-key.d.ts +11 -2
  55. package/dist/adapters/solana/public-key.d.ts.map +1 -1
  56. package/dist/adapters/solana/public-key.js +11 -2
  57. package/dist/adapters/solana/public-key.js.map +1 -1
  58. package/dist/config/defaults.d.ts +5 -0
  59. package/dist/config/defaults.d.ts.map +1 -1
  60. package/dist/config/defaults.js +5 -0
  61. package/dist/config/defaults.js.map +1 -1
  62. package/dist/config/env.d.ts +4 -0
  63. package/dist/config/env.d.ts.map +1 -1
  64. package/dist/config/env.js +15 -10
  65. package/dist/config/env.js.map +1 -1
  66. package/dist/config/index.d.ts +5 -0
  67. package/dist/config/index.d.ts.map +1 -1
  68. package/dist/config/index.js +5 -0
  69. package/dist/config/index.js.map +1 -1
  70. package/dist/config/mcp-client-injection.d.ts.map +1 -1
  71. package/dist/config/mcp-client-injection.js +136 -33
  72. package/dist/config/mcp-client-injection.js.map +1 -1
  73. package/dist/config/paths.d.ts +14 -1
  74. package/dist/config/paths.d.ts.map +1 -1
  75. package/dist/config/paths.js +20 -1
  76. package/dist/config/paths.js.map +1 -1
  77. package/dist/config/profiles.d.ts +3 -10
  78. package/dist/config/profiles.d.ts.map +1 -1
  79. package/dist/config/profiles.js +5 -0
  80. package/dist/config/profiles.js.map +1 -1
  81. package/dist/config/schema.d.ts +5 -0
  82. package/dist/config/schema.d.ts.map +1 -1
  83. package/dist/config/schema.js +5 -0
  84. package/dist/config/schema.js.map +1 -1
  85. package/dist/config/secure-config.d.ts +5 -0
  86. package/dist/config/secure-config.d.ts.map +1 -1
  87. package/dist/config/secure-config.js +5 -0
  88. package/dist/config/secure-config.js.map +1 -1
  89. package/dist/config/setup.d.ts +5 -0
  90. package/dist/config/setup.d.ts.map +1 -1
  91. package/dist/config/setup.js +5 -0
  92. package/dist/config/setup.js.map +1 -1
  93. package/dist/config/wizard.d.ts +6 -0
  94. package/dist/config/wizard.d.ts.map +1 -1
  95. package/dist/config/wizard.js +102 -18
  96. package/dist/config/wizard.js.map +1 -1
  97. package/dist/config-cli.d.ts +3 -13
  98. package/dist/config-cli.d.ts.map +1 -1
  99. package/dist/config-cli.js +14 -1
  100. package/dist/config-cli.js.map +1 -1
  101. package/dist/core/constants.d.ts +38 -6
  102. package/dist/core/constants.d.ts.map +1 -1
  103. package/dist/core/constants.js +49 -6
  104. package/dist/core/constants.js.map +1 -1
  105. package/dist/core/errors.d.ts +5 -0
  106. package/dist/core/errors.d.ts.map +1 -1
  107. package/dist/core/errors.js +5 -0
  108. package/dist/core/errors.js.map +1 -1
  109. package/dist/core/guards.d.ts +5 -0
  110. package/dist/core/guards.d.ts.map +1 -1
  111. package/dist/core/guards.js +3 -1
  112. package/dist/core/guards.js.map +1 -1
  113. package/dist/core/index.d.ts +7 -1
  114. package/dist/core/index.d.ts.map +1 -1
  115. package/dist/core/index.js +7 -1
  116. package/dist/core/index.js.map +1 -1
  117. package/dist/core/logger.js +1 -1
  118. package/dist/core/result.d.ts +77 -9
  119. package/dist/core/result.d.ts.map +1 -1
  120. package/dist/core/result.js +68 -9
  121. package/dist/core/result.js.map +1 -1
  122. package/dist/core/types.d.ts +5 -0
  123. package/dist/core/types.d.ts.map +1 -1
  124. package/dist/core/types.js +3 -4
  125. package/dist/core/types.js.map +1 -1
  126. package/dist/index.d.ts +5 -0
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +5 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/memory/async-processor.d.ts +107 -0
  131. package/dist/memory/async-processor.d.ts.map +1 -0
  132. package/dist/memory/async-processor.js +204 -0
  133. package/dist/memory/async-processor.js.map +1 -0
  134. package/dist/memory/auto-record.d.ts +47 -0
  135. package/dist/memory/auto-record.d.ts.map +1 -0
  136. package/dist/memory/auto-record.js +133 -0
  137. package/dist/memory/auto-record.js.map +1 -0
  138. package/dist/memory/database.d.ts +103 -0
  139. package/dist/memory/database.d.ts.map +1 -0
  140. package/dist/memory/database.js +337 -0
  141. package/dist/memory/database.js.map +1 -0
  142. package/dist/memory/hermes-bridge.d.ts +70 -0
  143. package/dist/memory/hermes-bridge.d.ts.map +1 -0
  144. package/dist/memory/hermes-bridge.js +155 -0
  145. package/dist/memory/hermes-bridge.js.map +1 -0
  146. package/dist/memory/index.d.ts +23 -0
  147. package/dist/memory/index.d.ts.map +1 -0
  148. package/dist/memory/index.js +22 -0
  149. package/dist/memory/index.js.map +1 -0
  150. package/dist/memory/memory-store.d.ts +76 -0
  151. package/dist/memory/memory-store.d.ts.map +1 -0
  152. package/dist/memory/memory-store.js +231 -0
  153. package/dist/memory/memory-store.js.map +1 -0
  154. package/dist/memory/stream-buffer-store.d.ts +69 -0
  155. package/dist/memory/stream-buffer-store.d.ts.map +1 -0
  156. package/dist/memory/stream-buffer-store.js +182 -0
  157. package/dist/memory/stream-buffer-store.js.map +1 -0
  158. package/dist/memory/tool-call-store.d.ts +68 -0
  159. package/dist/memory/tool-call-store.d.ts.map +1 -0
  160. package/dist/memory/tool-call-store.js +189 -0
  161. package/dist/memory/tool-call-store.js.map +1 -0
  162. package/dist/memory/types.d.ts +197 -0
  163. package/dist/memory/types.d.ts.map +1 -0
  164. package/dist/memory/types.js +15 -0
  165. package/dist/memory/types.js.map +1 -0
  166. package/dist/memory/utils.d.ts +30 -0
  167. package/dist/memory/utils.d.ts.map +1 -0
  168. package/dist/memory/utils.js +47 -0
  169. package/dist/memory/utils.js.map +1 -0
  170. package/dist/payments/facilitator-rpc-fallback.d.ts.map +1 -1
  171. package/dist/payments/facilitator-rpc-fallback.js +95 -0
  172. package/dist/payments/facilitator-rpc-fallback.js.map +1 -1
  173. package/dist/payments/hosted-tool-eligibility.d.ts +22 -0
  174. package/dist/payments/hosted-tool-eligibility.d.ts.map +1 -0
  175. package/dist/payments/hosted-tool-eligibility.js +173 -0
  176. package/dist/payments/hosted-tool-eligibility.js.map +1 -0
  177. package/dist/payments/index.d.ts +2 -2
  178. package/dist/payments/index.d.ts.map +1 -1
  179. package/dist/payments/index.js +1 -1
  180. package/dist/payments/index.js.map +1 -1
  181. package/dist/payments/mcp-session-cache.d.ts +35 -0
  182. package/dist/payments/mcp-session-cache.d.ts.map +1 -0
  183. package/dist/payments/mcp-session-cache.js +83 -0
  184. package/dist/payments/mcp-session-cache.js.map +1 -0
  185. package/dist/payments/monetization-gate.d.ts +33 -0
  186. package/dist/payments/monetization-gate.d.ts.map +1 -1
  187. package/dist/payments/monetization-gate.js +124 -12
  188. package/dist/payments/monetization-gate.js.map +1 -1
  189. package/dist/payments/pricing.d.ts +31 -0
  190. package/dist/payments/pricing.d.ts.map +1 -1
  191. package/dist/payments/pricing.js +317 -19
  192. package/dist/payments/pricing.js.map +1 -1
  193. package/dist/payments/usage-ledger.d.ts +36 -2
  194. package/dist/payments/usage-ledger.d.ts.map +1 -1
  195. package/dist/payments/usage-ledger.js +121 -4
  196. package/dist/payments/usage-ledger.js.map +1 -1
  197. package/dist/payments/x402-paid-call.d.ts +121 -0
  198. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  199. package/dist/payments/x402-paid-call.js +428 -1
  200. package/dist/payments/x402-paid-call.js.map +1 -1
  201. package/dist/policy/default-policies.d.ts +18 -2
  202. package/dist/policy/default-policies.d.ts.map +1 -1
  203. package/dist/policy/default-policies.js +18 -2
  204. package/dist/policy/default-policies.js.map +1 -1
  205. package/dist/policy/index.d.ts +6 -3
  206. package/dist/policy/index.d.ts.map +1 -1
  207. package/dist/policy/index.js +6 -3
  208. package/dist/policy/index.js.map +1 -1
  209. package/dist/policy/local-policy-engine.d.ts +71 -13
  210. package/dist/policy/local-policy-engine.d.ts.map +1 -1
  211. package/dist/policy/local-policy-engine.js +33 -11
  212. package/dist/policy/local-policy-engine.js.map +1 -1
  213. package/dist/policy/permission-checks.d.ts +29 -3
  214. package/dist/policy/permission-checks.d.ts.map +1 -1
  215. package/dist/policy/permission-checks.js +29 -3
  216. package/dist/policy/permission-checks.js.map +1 -1
  217. package/dist/policy/policy-engine.d.ts +22 -2
  218. package/dist/policy/policy-engine.d.ts.map +1 -1
  219. package/dist/policy/policy-engine.js +22 -2
  220. package/dist/policy/policy-engine.js.map +1 -1
  221. package/dist/policy/policy-types.d.ts +55 -5
  222. package/dist/policy/policy-types.d.ts.map +1 -1
  223. package/dist/policy/policy-types.js +8 -1
  224. package/dist/policy/policy-types.js.map +1 -1
  225. package/dist/policy/risk-level.d.ts +32 -3
  226. package/dist/policy/risk-level.d.ts.map +1 -1
  227. package/dist/policy/risk-level.js +32 -3
  228. package/dist/policy/risk-level.js.map +1 -1
  229. package/dist/policy/spending-limits.d.ts +29 -3
  230. package/dist/policy/spending-limits.d.ts.map +1 -1
  231. package/dist/policy/spending-limits.js +29 -3
  232. package/dist/policy/spending-limits.js.map +1 -1
  233. package/dist/premium/activation-manager.d.ts +43 -0
  234. package/dist/premium/activation-manager.d.ts.map +1 -0
  235. package/dist/premium/activation-manager.js +131 -0
  236. package/dist/premium/activation-manager.js.map +1 -0
  237. package/dist/premium/builtin-plugins.d.ts +165 -0
  238. package/dist/premium/builtin-plugins.d.ts.map +1 -0
  239. package/dist/premium/builtin-plugins.js +422 -0
  240. package/dist/premium/builtin-plugins.js.map +1 -0
  241. package/dist/premium/event-store.d.ts +61 -0
  242. package/dist/premium/event-store.d.ts.map +1 -0
  243. package/dist/premium/event-store.js +130 -0
  244. package/dist/premium/event-store.js.map +1 -0
  245. package/dist/premium/index.d.ts +54 -0
  246. package/dist/premium/index.d.ts.map +1 -0
  247. package/dist/premium/index.js +54 -0
  248. package/dist/premium/index.js.map +1 -0
  249. package/dist/premium/manifest-builder.d.ts +65 -0
  250. package/dist/premium/manifest-builder.d.ts.map +1 -0
  251. package/dist/premium/manifest-builder.js +182 -0
  252. package/dist/premium/manifest-builder.js.map +1 -0
  253. package/dist/premium/meme-radar-capabilities.d.ts +38 -0
  254. package/dist/premium/meme-radar-capabilities.d.ts.map +1 -0
  255. package/dist/premium/meme-radar-capabilities.js +306 -0
  256. package/dist/premium/meme-radar-capabilities.js.map +1 -0
  257. package/dist/premium/metrics.d.ts +27 -0
  258. package/dist/premium/metrics.d.ts.map +1 -0
  259. package/dist/premium/metrics.js +65 -0
  260. package/dist/premium/metrics.js.map +1 -0
  261. package/dist/premium/plugin-validator.d.ts +39 -0
  262. package/dist/premium/plugin-validator.d.ts.map +1 -0
  263. package/dist/premium/plugin-validator.js +325 -0
  264. package/dist/premium/plugin-validator.js.map +1 -0
  265. package/dist/premium/private-manifest-loader.d.ts +111 -0
  266. package/dist/premium/private-manifest-loader.d.ts.map +1 -0
  267. package/dist/premium/private-manifest-loader.js +285 -0
  268. package/dist/premium/private-manifest-loader.js.map +1 -0
  269. package/dist/premium/provider-bridge.d.ts +133 -0
  270. package/dist/premium/provider-bridge.d.ts.map +1 -0
  271. package/dist/premium/provider-bridge.js +349 -0
  272. package/dist/premium/provider-bridge.js.map +1 -0
  273. package/dist/premium/session-manager.d.ts +125 -0
  274. package/dist/premium/session-manager.d.ts.map +1 -0
  275. package/dist/premium/session-manager.js +337 -0
  276. package/dist/premium/session-manager.js.map +1 -0
  277. package/dist/premium/stream-broker.d.ts +98 -0
  278. package/dist/premium/stream-broker.d.ts.map +1 -0
  279. package/dist/premium/stream-broker.js +199 -0
  280. package/dist/premium/stream-broker.js.map +1 -0
  281. package/dist/premium/tech-fundamentals-capabilities.d.ts +37 -0
  282. package/dist/premium/tech-fundamentals-capabilities.d.ts.map +1 -0
  283. package/dist/premium/tech-fundamentals-capabilities.js +283 -0
  284. package/dist/premium/tech-fundamentals-capabilities.js.map +1 -0
  285. package/dist/premium/trading-capabilities.d.ts +36 -0
  286. package/dist/premium/trading-capabilities.d.ts.map +1 -0
  287. package/dist/premium/trading-capabilities.js +205 -0
  288. package/dist/premium/trading-capabilities.js.map +1 -0
  289. package/dist/premium/types.d.ts +518 -0
  290. package/dist/premium/types.d.ts.map +1 -0
  291. package/dist/premium/types.js +23 -0
  292. package/dist/premium/types.js.map +1 -0
  293. package/dist/premium/webhook-engine.d.ts +138 -0
  294. package/dist/premium/webhook-engine.d.ts.map +1 -0
  295. package/dist/premium/webhook-engine.js +516 -0
  296. package/dist/premium/webhook-engine.js.map +1 -0
  297. package/dist/prompts/context/sap-agent-context.prompt.d.ts +5 -0
  298. package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -1
  299. package/dist/prompts/context/sap-agent-context.prompt.js +20 -16
  300. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  301. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts +14 -0
  302. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts.map +1 -0
  303. package/dist/prompts/context/sap-agent-intent-router.prompt.js +155 -0
  304. package/dist/prompts/context/sap-agent-intent-router.prompt.js.map +1 -0
  305. package/dist/prompts/context/sap-agent-start.prompt.js +7 -0
  306. package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -1
  307. package/dist/prompts/developer/debug-sap-error.prompt.d.ts +5 -0
  308. package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -1
  309. package/dist/prompts/developer/debug-sap-error.prompt.js +3 -4
  310. package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -1
  311. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +5 -0
  312. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -1
  313. package/dist/prompts/developer/generate-sap-integration.prompt.js +3 -4
  314. package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
  315. package/dist/prompts/developer/index.d.ts +4 -1
  316. package/dist/prompts/developer/index.d.ts.map +1 -1
  317. package/dist/prompts/developer/index.js +4 -1
  318. package/dist/prompts/developer/index.js.map +1 -1
  319. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +5 -0
  320. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -1
  321. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +3 -4
  322. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -1
  323. package/dist/prompts/execution-proof/index.d.ts +4 -1
  324. package/dist/prompts/execution-proof/index.d.ts.map +1 -1
  325. package/dist/prompts/execution-proof/index.js +4 -1
  326. package/dist/prompts/execution-proof/index.js.map +1 -1
  327. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +5 -0
  328. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -1
  329. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +3 -4
  330. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -1
  331. package/dist/prompts/index.d.ts +4 -1
  332. package/dist/prompts/index.d.ts.map +1 -1
  333. package/dist/prompts/index.js +4 -1
  334. package/dist/prompts/index.js.map +1 -1
  335. package/dist/prompts/payments/create-paid-api.prompt.d.ts +5 -0
  336. package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -1
  337. package/dist/prompts/payments/create-paid-api.prompt.js +3 -4
  338. package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -1
  339. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +5 -0
  340. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -1
  341. package/dist/prompts/payments/explain-x402-settlement.prompt.js +16 -14
  342. package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
  343. package/dist/prompts/payments/index.d.ts +4 -1
  344. package/dist/prompts/payments/index.d.ts.map +1 -1
  345. package/dist/prompts/payments/index.js +4 -1
  346. package/dist/prompts/payments/index.js.map +1 -1
  347. package/dist/prompts/register-prompts.d.ts +18 -2
  348. package/dist/prompts/register-prompts.d.ts.map +1 -1
  349. package/dist/prompts/register-prompts.js +21 -3
  350. package/dist/prompts/register-prompts.js.map +1 -1
  351. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +5 -0
  352. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -1
  353. package/dist/prompts/registry/analyze-sap-agent.prompt.js +3 -4
  354. package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -1
  355. package/dist/prompts/registry/index.d.ts +4 -1
  356. package/dist/prompts/registry/index.d.ts.map +1 -1
  357. package/dist/prompts/registry/index.js +4 -1
  358. package/dist/prompts/registry/index.js.map +1 -1
  359. package/dist/prompts/registry/register-sap-agent.prompt.d.ts +5 -0
  360. package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -1
  361. package/dist/prompts/registry/register-sap-agent.prompt.js +22 -23
  362. package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -1
  363. package/dist/remote/premium-memory.d.ts +90 -0
  364. package/dist/remote/premium-memory.d.ts.map +1 -0
  365. package/dist/remote/premium-memory.js +161 -0
  366. package/dist/remote/premium-memory.js.map +1 -0
  367. package/dist/remote/premium-routes.d.ts +99 -0
  368. package/dist/remote/premium-routes.d.ts.map +1 -0
  369. package/dist/remote/premium-routes.js +347 -0
  370. package/dist/remote/premium-routes.js.map +1 -0
  371. package/dist/remote/public-home/sections.d.ts.map +1 -1
  372. package/dist/remote/public-home/sections.js +23 -4
  373. package/dist/remote/public-home/sections.js.map +1 -1
  374. package/dist/remote/public-home/types.d.ts +9 -0
  375. package/dist/remote/public-home/types.d.ts.map +1 -1
  376. package/dist/remote/server.d.ts +20 -0
  377. package/dist/remote/server.d.ts.map +1 -1
  378. package/dist/remote/server.js +370 -9
  379. package/dist/remote/server.js.map +1 -1
  380. package/dist/remote/tx-relay.d.ts +42 -0
  381. package/dist/remote/tx-relay.d.ts.map +1 -0
  382. package/dist/remote/tx-relay.js +118 -0
  383. package/dist/remote/tx-relay.js.map +1 -0
  384. package/dist/resources/current/sap-current-config.resource.d.ts +5 -0
  385. package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -1
  386. package/dist/resources/current/sap-current-config.resource.js +2 -5
  387. package/dist/resources/current/sap-current-config.resource.js.map +1 -1
  388. package/dist/resources/execution-proof/index.d.ts +5 -0
  389. package/dist/resources/execution-proof/index.d.ts.map +1 -1
  390. package/dist/resources/execution-proof/index.js +5 -0
  391. package/dist/resources/execution-proof/index.js.map +1 -1
  392. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +5 -0
  393. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -1
  394. package/dist/resources/execution-proof/sap-execution-record.resource.js +3 -4
  395. package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -1
  396. package/dist/resources/index.d.ts +5 -0
  397. package/dist/resources/index.d.ts.map +1 -1
  398. package/dist/resources/index.js +5 -0
  399. package/dist/resources/index.js.map +1 -1
  400. package/dist/resources/memory/index.d.ts +5 -0
  401. package/dist/resources/memory/index.d.ts.map +1 -1
  402. package/dist/resources/memory/index.js +5 -0
  403. package/dist/resources/memory/index.js.map +1 -1
  404. package/dist/resources/memory/sap-memory.resource.d.ts +5 -0
  405. package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -1
  406. package/dist/resources/memory/sap-memory.resource.js +3 -4
  407. package/dist/resources/memory/sap-memory.resource.js.map +1 -1
  408. package/dist/resources/profile/sap-active-profile.resource.d.ts +5 -0
  409. package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -1
  410. package/dist/resources/profile/sap-active-profile.resource.js +2 -5
  411. package/dist/resources/profile/sap-active-profile.resource.js.map +1 -1
  412. package/dist/resources/register-resources.d.ts +5 -0
  413. package/dist/resources/register-resources.d.ts.map +1 -1
  414. package/dist/resources/register-resources.js +3 -1
  415. package/dist/resources/register-resources.js.map +1 -1
  416. package/dist/resources/registry/index.d.ts +5 -0
  417. package/dist/resources/registry/index.d.ts.map +1 -1
  418. package/dist/resources/registry/index.js +5 -0
  419. package/dist/resources/registry/index.js.map +1 -1
  420. package/dist/resources/registry/sap-agent.resource.d.ts +5 -0
  421. package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -1
  422. package/dist/resources/registry/sap-agent.resource.js +3 -4
  423. package/dist/resources/registry/sap-agent.resource.js.map +1 -1
  424. package/dist/resources/registry/sap-global-registry.resource.d.ts +18 -4
  425. package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -1
  426. package/dist/resources/registry/sap-global-registry.resource.js +18 -4
  427. package/dist/resources/registry/sap-global-registry.resource.js.map +1 -1
  428. package/dist/resources/reputation/index.d.ts +4 -1
  429. package/dist/resources/reputation/index.d.ts.map +1 -1
  430. package/dist/resources/reputation/index.js +4 -1
  431. package/dist/resources/reputation/index.js.map +1 -1
  432. package/dist/resources/reputation/sap-reputation.resource.d.ts +18 -4
  433. package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -1
  434. package/dist/resources/reputation/sap-reputation.resource.js +18 -4
  435. package/dist/resources/reputation/sap-reputation.resource.js.map +1 -1
  436. package/dist/resources/tool-schema/index.d.ts +4 -1
  437. package/dist/resources/tool-schema/index.d.ts.map +1 -1
  438. package/dist/resources/tool-schema/index.js +4 -1
  439. package/dist/resources/tool-schema/index.js.map +1 -1
  440. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +18 -4
  441. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -1
  442. package/dist/resources/tool-schema/sap-tool-schema.resource.js +18 -4
  443. package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -1
  444. package/dist/sap/index.d.ts +7 -1
  445. package/dist/sap/index.d.ts.map +1 -1
  446. package/dist/sap/index.js +7 -1
  447. package/dist/sap/index.js.map +1 -1
  448. package/dist/sap/sap-client-manager.d.ts +80 -13
  449. package/dist/sap/sap-client-manager.d.ts.map +1 -1
  450. package/dist/sap/sap-client-manager.js +80 -13
  451. package/dist/sap/sap-client-manager.js.map +1 -1
  452. package/dist/sap/sap-errors.d.ts +22 -3
  453. package/dist/sap/sap-errors.d.ts.map +1 -1
  454. package/dist/sap/sap-errors.js +22 -3
  455. package/dist/sap/sap-errors.js.map +1 -1
  456. package/dist/sap/sap-types.d.ts +75 -6
  457. package/dist/sap/sap-types.d.ts.map +1 -1
  458. package/dist/sap/sap-types.js +11 -1
  459. package/dist/sap/sap-types.js.map +1 -1
  460. package/dist/schemas/common.schema.d.ts +45 -8
  461. package/dist/schemas/common.schema.d.ts.map +1 -1
  462. package/dist/schemas/common.schema.js +45 -8
  463. package/dist/schemas/common.schema.js.map +1 -1
  464. package/dist/schemas/developer.schema.d.ts +22 -3
  465. package/dist/schemas/developer.schema.d.ts.map +1 -1
  466. package/dist/schemas/developer.schema.js +22 -3
  467. package/dist/schemas/developer.schema.js.map +1 -1
  468. package/dist/schemas/execution-proof.schema.d.ts +29 -4
  469. package/dist/schemas/execution-proof.schema.d.ts.map +1 -1
  470. package/dist/schemas/execution-proof.schema.js +29 -4
  471. package/dist/schemas/execution-proof.schema.js.map +1 -1
  472. package/dist/schemas/identity.schema.d.ts +23 -3
  473. package/dist/schemas/identity.schema.d.ts.map +1 -1
  474. package/dist/schemas/identity.schema.js +23 -3
  475. package/dist/schemas/identity.schema.js.map +1 -1
  476. package/dist/schemas/index.d.ts +11 -1
  477. package/dist/schemas/index.d.ts.map +1 -1
  478. package/dist/schemas/index.js +11 -1
  479. package/dist/schemas/index.js.map +1 -1
  480. package/dist/schemas/memory.schema.d.ts +23 -3
  481. package/dist/schemas/memory.schema.d.ts.map +1 -1
  482. package/dist/schemas/memory.schema.js +23 -3
  483. package/dist/schemas/memory.schema.js.map +1 -1
  484. package/dist/schemas/payments.schema.d.ts +24 -3
  485. package/dist/schemas/payments.schema.d.ts.map +1 -1
  486. package/dist/schemas/payments.schema.js +24 -3
  487. package/dist/schemas/payments.schema.js.map +1 -1
  488. package/dist/schemas/registry.schema.d.ts +38 -6
  489. package/dist/schemas/registry.schema.d.ts.map +1 -1
  490. package/dist/schemas/registry.schema.js +36 -4
  491. package/dist/schemas/registry.schema.js.map +1 -1
  492. package/dist/schemas/reputation.schema.d.ts +22 -3
  493. package/dist/schemas/reputation.schema.d.ts.map +1 -1
  494. package/dist/schemas/reputation.schema.js +22 -3
  495. package/dist/schemas/reputation.schema.js.map +1 -1
  496. package/dist/schemas/settlement.schema.d.ts +31 -4
  497. package/dist/schemas/settlement.schema.d.ts.map +1 -1
  498. package/dist/schemas/settlement.schema.js +31 -4
  499. package/dist/schemas/settlement.schema.js.map +1 -1
  500. package/dist/schemas/tool-schema.schema.d.ts +29 -3
  501. package/dist/schemas/tool-schema.schema.d.ts.map +1 -1
  502. package/dist/schemas/tool-schema.schema.js +29 -3
  503. package/dist/schemas/tool-schema.schema.js.map +1 -1
  504. package/dist/schemas/transaction.schema.d.ts +23 -3
  505. package/dist/schemas/transaction.schema.d.ts.map +1 -1
  506. package/dist/schemas/transaction.schema.js +23 -3
  507. package/dist/schemas/transaction.schema.js.map +1 -1
  508. package/dist/security/approval-required.d.ts +19 -2
  509. package/dist/security/approval-required.d.ts.map +1 -1
  510. package/dist/security/approval-required.js +19 -2
  511. package/dist/security/approval-required.js.map +1 -1
  512. package/dist/security/index.d.ts +7 -1
  513. package/dist/security/index.d.ts.map +1 -1
  514. package/dist/security/index.js +7 -1
  515. package/dist/security/index.js.map +1 -1
  516. package/dist/security/private-key-guard.d.ts +18 -2
  517. package/dist/security/private-key-guard.d.ts.map +1 -1
  518. package/dist/security/private-key-guard.js +19 -2
  519. package/dist/security/private-key-guard.js.map +1 -1
  520. package/dist/security/prompt-injection-notes.d.ts +10 -1
  521. package/dist/security/prompt-injection-notes.d.ts.map +1 -1
  522. package/dist/security/prompt-injection-notes.js +10 -1
  523. package/dist/security/prompt-injection-notes.js.map +1 -1
  524. package/dist/security/tool-permissions.d.ts.map +1 -1
  525. package/dist/security/tool-permissions.js +12 -0
  526. package/dist/security/tool-permissions.js.map +1 -1
  527. package/dist/security/unsafe-action-guard.d.ts +36 -10
  528. package/dist/security/unsafe-action-guard.d.ts.map +1 -1
  529. package/dist/security/unsafe-action-guard.js +67 -15
  530. package/dist/security/unsafe-action-guard.js.map +1 -1
  531. package/dist/server/create-server.d.ts +18 -3
  532. package/dist/server/create-server.d.ts.map +1 -1
  533. package/dist/server/create-server.js +20 -4
  534. package/dist/server/create-server.js.map +1 -1
  535. package/dist/server/index.d.ts +6 -1
  536. package/dist/server/index.d.ts.map +1 -1
  537. package/dist/server/index.js +6 -1
  538. package/dist/server/index.js.map +1 -1
  539. package/dist/server/register-capabilities.d.ts +17 -2
  540. package/dist/server/register-capabilities.d.ts.map +1 -1
  541. package/dist/server/register-capabilities.js +17 -2
  542. package/dist/server/register-capabilities.js.map +1 -1
  543. package/dist/server/server-metadata.d.ts +35 -1
  544. package/dist/server/server-metadata.d.ts.map +1 -1
  545. package/dist/server/server-metadata.js +36 -2
  546. package/dist/server/server-metadata.js.map +1 -1
  547. package/dist/session/agent-session.d.ts +35 -4
  548. package/dist/session/agent-session.d.ts.map +1 -1
  549. package/dist/session/agent-session.js +35 -4
  550. package/dist/session/agent-session.js.map +1 -1
  551. package/dist/session/delegated-session.d.ts +31 -3
  552. package/dist/session/delegated-session.d.ts.map +1 -1
  553. package/dist/session/delegated-session.js +31 -3
  554. package/dist/session/delegated-session.js.map +1 -1
  555. package/dist/session/index.d.ts +7 -1
  556. package/dist/session/index.d.ts.map +1 -1
  557. package/dist/session/index.js +7 -1
  558. package/dist/session/index.js.map +1 -1
  559. package/dist/session/redis-session-store.d.ts +94 -21
  560. package/dist/session/redis-session-store.d.ts.map +1 -1
  561. package/dist/session/redis-session-store.js +87 -20
  562. package/dist/session/redis-session-store.js.map +1 -1
  563. package/dist/session/session-limits.d.ts +34 -4
  564. package/dist/session/session-limits.d.ts.map +1 -1
  565. package/dist/session/session-limits.js +34 -4
  566. package/dist/session/session-limits.js.map +1 -1
  567. package/dist/session/session-permissions.d.ts +57 -7
  568. package/dist/session/session-permissions.d.ts.map +1 -1
  569. package/dist/session/session-permissions.js +57 -7
  570. package/dist/session/session-permissions.js.map +1 -1
  571. package/dist/session/session-store.d.ts +9 -1
  572. package/dist/session/session-store.d.ts.map +1 -1
  573. package/dist/session/session-store.js +18 -3
  574. package/dist/session/session-store.js.map +1 -1
  575. package/dist/session/session-types.d.ts +33 -4
  576. package/dist/session/session-types.d.ts.map +1 -1
  577. package/dist/session/session-types.js +9 -1
  578. package/dist/session/session-types.js.map +1 -1
  579. package/dist/signer/index.d.ts +7 -1
  580. package/dist/signer/index.d.ts.map +1 -1
  581. package/dist/signer/index.js +7 -1
  582. package/dist/signer/index.js.map +1 -1
  583. package/dist/signer/load-keypair.d.ts +25 -4
  584. package/dist/signer/load-keypair.d.ts.map +1 -1
  585. package/dist/signer/load-keypair.js +25 -4
  586. package/dist/signer/load-keypair.js.map +1 -1
  587. package/dist/signer/local-keypair-signer.d.ts +19 -3
  588. package/dist/signer/local-keypair-signer.d.ts.map +1 -1
  589. package/dist/signer/local-keypair-signer.js +24 -4
  590. package/dist/signer/local-keypair-signer.js.map +1 -1
  591. package/dist/signer/signer-resolver.d.ts +19 -2
  592. package/dist/signer/signer-resolver.d.ts.map +1 -1
  593. package/dist/signer/signer-resolver.js +26 -3
  594. package/dist/signer/signer-resolver.js.map +1 -1
  595. package/dist/signer/signer-types.d.ts +47 -5
  596. package/dist/signer/signer-types.d.ts.map +1 -1
  597. package/dist/signer/signer-types.js +13 -1
  598. package/dist/signer/signer-types.js.map +1 -1
  599. package/dist/strategies/strategy-store.d.ts +82 -0
  600. package/dist/strategies/strategy-store.d.ts.map +1 -0
  601. package/dist/strategies/strategy-store.js +165 -0
  602. package/dist/strategies/strategy-store.js.map +1 -0
  603. package/dist/tools/agent-start-tool.d.ts.map +1 -1
  604. package/dist/tools/agent-start-tool.js +481 -5
  605. package/dist/tools/agent-start-tool.js.map +1 -1
  606. package/dist/tools/client-sdk-tools.d.ts.map +1 -1
  607. package/dist/tools/client-sdk-tools.js +32 -7
  608. package/dist/tools/client-sdk-tools.js.map +1 -1
  609. package/dist/tools/estimate-tool-cost.d.ts +13 -0
  610. package/dist/tools/estimate-tool-cost.d.ts.map +1 -0
  611. package/dist/tools/estimate-tool-cost.js +139 -0
  612. package/dist/tools/estimate-tool-cost.js.map +1 -0
  613. package/dist/tools/index.d.ts +8 -0
  614. package/dist/tools/index.d.ts.map +1 -1
  615. package/dist/tools/index.js +11 -0
  616. package/dist/tools/index.js.map +1 -1
  617. package/dist/tools/magicblock-tools.d.ts +31 -6
  618. package/dist/tools/magicblock-tools.d.ts.map +1 -1
  619. package/dist/tools/magicblock-tools.js +178 -53
  620. package/dist/tools/magicblock-tools.js.map +1 -1
  621. package/dist/tools/memory-tools.d.ts +26 -0
  622. package/dist/tools/memory-tools.d.ts.map +1 -0
  623. package/dist/tools/memory-tools.js +533 -0
  624. package/dist/tools/memory-tools.js.map +1 -0
  625. package/dist/tools/perp-tools.d.ts +39 -0
  626. package/dist/tools/perp-tools.d.ts.map +1 -0
  627. package/dist/tools/perp-tools.js +1110 -0
  628. package/dist/tools/perp-tools.js.map +1 -0
  629. package/dist/tools/premium-tools.d.ts +8 -0
  630. package/dist/tools/premium-tools.d.ts.map +1 -0
  631. package/dist/tools/premium-tools.js +1102 -0
  632. package/dist/tools/premium-tools.js.map +1 -0
  633. package/dist/tools/profile-tools.d.ts.map +1 -1
  634. package/dist/tools/profile-tools.js +18 -1
  635. package/dist/tools/profile-tools.js.map +1 -1
  636. package/dist/tools/quick-context-tool.d.ts +16 -0
  637. package/dist/tools/quick-context-tool.d.ts.map +1 -0
  638. package/dist/tools/quick-context-tool.js +304 -0
  639. package/dist/tools/quick-context-tool.js.map +1 -0
  640. package/dist/tools/register-tools.d.ts.map +1 -1
  641. package/dist/tools/register-tools.js +17 -0
  642. package/dist/tools/register-tools.js.map +1 -1
  643. package/dist/tools/sap-sdk-tools.d.ts +420 -1
  644. package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
  645. package/dist/tools/sap-sdk-tools.js +1548 -127
  646. package/dist/tools/sap-sdk-tools.js.map +1 -1
  647. package/dist/tools/sap-sns-tools.d.ts +2 -2
  648. package/dist/tools/sap-sns-tools.d.ts.map +1 -1
  649. package/dist/tools/sap-sns-tools.js +12 -8
  650. package/dist/tools/sap-sns-tools.js.map +1 -1
  651. package/dist/tools/skills-tools.d.ts +16 -0
  652. package/dist/tools/skills-tools.d.ts.map +1 -1
  653. package/dist/tools/skills-tools.js +282 -5
  654. package/dist/tools/skills-tools.js.map +1 -1
  655. package/dist/tools/tool-aliases.d.ts.map +1 -1
  656. package/dist/tools/tool-aliases.js +7 -0
  657. package/dist/tools/tool-aliases.js.map +1 -1
  658. package/dist/tools/transaction-tools.d.ts +135 -0
  659. package/dist/tools/transaction-tools.d.ts.map +1 -1
  660. package/dist/tools/transaction-tools.js +515 -16
  661. package/dist/tools/transaction-tools.js.map +1 -1
  662. package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
  663. package/dist/tools/x402-paid-call-tool.js +756 -23
  664. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  665. package/dist/transports/index.d.ts +6 -1
  666. package/dist/transports/index.d.ts.map +1 -1
  667. package/dist/transports/index.js +6 -1
  668. package/dist/transports/index.js.map +1 -1
  669. package/dist/transports/stdio.d.ts +17 -5
  670. package/dist/transports/stdio.d.ts.map +1 -1
  671. package/dist/transports/stdio.js +17 -5
  672. package/dist/transports/stdio.js.map +1 -1
  673. package/dist/tui/wizard-save.d.ts +88 -8
  674. package/dist/tui/wizard-save.d.ts.map +1 -1
  675. package/dist/tui/wizard-save.js +77 -8
  676. package/dist/tui/wizard-save.js.map +1 -1
  677. package/dist/wizard-core/desktop-flow.d.ts.map +1 -1
  678. package/dist/wizard-core/desktop-flow.js +4 -2
  679. package/dist/wizard-core/desktop-flow.js.map +1 -1
  680. package/docs/03_CONFIGURATION_AND_WIZARD.md +5 -3
  681. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +82 -4
  682. package/docs/07_ENDPOINTS_AND_CLIENTS.md +7 -3
  683. package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +21 -3
  684. package/docs/14_DESKTOP_WIZARD_RELEASE.md +8 -6
  685. package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +304 -0
  686. package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
  687. package/docs/BRANCH_AND_CI.md +67 -0
  688. package/docs/README.md +19 -2
  689. package/docs/magicblock-tools.md +70 -29
  690. package/package.json +10 -6
  691. package/server.json +3 -3
  692. package/skills/README.md +12 -2
  693. package/skills/sap-agent-registry/SKILL.md +99 -4
  694. package/skills/sap-defi/SKILL.md +8 -4
  695. package/skills/sap-discovery-indexing/SKILL.md +26 -4
  696. package/skills/sap-escrow-settlement/SKILL.md +22 -4
  697. package/skills/sap-mcp/SKILL.md +140 -22
  698. package/skills/sap-mcp/TOOL_REFERENCE.md +47 -7
  699. package/skills/sap-nft-metaplex/SKILL.md +22 -0
  700. package/skills/sap-operations/SKILL.md +32 -3
  701. package/skills/sap-payments-x402/SKILL.md +85 -8
  702. package/skills/sap-sns/SKILL.md +32 -10
  703. package/smithery.config.schema.json +7 -0
@@ -0,0 +1,161 @@
1
+ /**
2
+ * @name remote/premium-memory
3
+ * @description Background memory management for the premium subsystem.
4
+ *
5
+ * Runs periodic cleanup intervals that prune expired sessions, stale events,
6
+ * orphaned delivery records, and idle provider connections. Designed for
7
+ * long-running production servers with large memory budgets (e.g. 312GB RAM).
8
+ *
9
+ * The manager is intentionally conservative: every interval is configurable via
10
+ * env vars and defaults are safe for a single-process Node.js server.
11
+ *
12
+ * @env SAP_MCP_PREMIUM_GC_INTERVAL_MS — Prune interval in ms (default: 30_000)
13
+ * @env SAP_MCP_PREMIUM_MAX_SESSIONS — Max in-memory sessions (default: 10_000)
14
+ * @env SAP_MCP_PREMIUM_MAX_EVENTS — Max stored events (default: 500_000)
15
+ * @env SAP_MCP_PREMIUM_MAX_DELIVERIES — Max delivery records (default: 100_000)
16
+ *
17
+ * @module remote/premium-memory
18
+ */
19
+ import { listPremiumSessions } from '../premium/session-manager.js';
20
+ import { getEventCount, clearAllEvents } from '../premium/event-store.js';
21
+ import { disconnectAllProviders } from '../premium/provider-bridge.js';
22
+ import { stopAllStreams } from '../premium/stream-broker.js';
23
+ import { stopAllWebhooks } from '../premium/webhook-engine.js';
24
+ import { clearAllSessions } from '../premium/session-manager.js';
25
+ /**
26
+ * @description Default prune interval: 30 seconds.
27
+ */
28
+ const DEFAULT_GC_INTERVAL_MS = 30_000;
29
+ /**
30
+ * @description Default max sessions for a 312GB machine: 10_000.
31
+ */
32
+ const DEFAULT_MAX_SESSIONS = 10_000;
33
+ /**
34
+ * @description Default max events in the event store: 500_000.
35
+ * Each event is ~1KB, so 500K events ≈ 500MB.
36
+ */
37
+ const DEFAULT_MAX_EVENTS = 500_000;
38
+ /**
39
+ * @description Default max delivery records: 100_000.
40
+ * Each record is ~512B, so 100K records ≈ 50MB.
41
+ */
42
+ const DEFAULT_MAX_DELIVERIES = 100_000;
43
+ /**
44
+ * @name resolveMemoryConfig
45
+ * @description Resolve memory config from env vars with safe defaults.
46
+ *
47
+ * @returns `PremiumMemoryConfig` populated from env or defaults.
48
+ *
49
+ * @internal
50
+ */
51
+ export function resolveMemoryConfig() {
52
+ const parse = (name, fallback) => {
53
+ const raw = process.env[name];
54
+ const parsed = Number(raw);
55
+ return Number.isFinite(parsed) && parsed > 0 ? Math.trunc(parsed) : fallback;
56
+ };
57
+ return {
58
+ gcIntervalMs: parse('SAP_MCP_PREMIUM_GC_INTERVAL_MS', DEFAULT_GC_INTERVAL_MS),
59
+ maxSessions: parse('SAP_MCP_PREMIUM_MAX_SESSIONS', DEFAULT_MAX_SESSIONS),
60
+ maxEvents: parse('SAP_MCP_PREMIUM_MAX_EVENTS', DEFAULT_MAX_EVENTS),
61
+ maxDeliveries: parse('SAP_MCP_PREMIUM_MAX_DELIVERIES', DEFAULT_MAX_DELIVERIES),
62
+ };
63
+ }
64
+ /**
65
+ * @name PremiumMemoryManager
66
+ * @description Background memory manager for the premium subsystem.
67
+ *
68
+ * Runs a periodic GC interval that:
69
+ * 1. Counts active sessions, events, and deliveries.
70
+ * 2. Logs a memory snapshot at INFO level.
71
+ * 3. If any store exceeds its cap, triggers aggressive pruning.
72
+ *
73
+ * The manager does NOT own the pruning logic — each store prunes itself
74
+ * internally (e.g. `pruneExpiredSessions` in session-manager). The manager
75
+ * ensures they are called periodically even without traffic.
76
+ *
77
+ * The class also exposes `shutdown()` for graceful cleanup during server stop.
78
+ */
79
+ export class PremiumMemoryManager {
80
+ interval;
81
+ config;
82
+ constructor(config) {
83
+ this.config = config ?? resolveMemoryConfig();
84
+ }
85
+ /**
86
+ * @name start
87
+ * @description Start the background GC interval.
88
+ *
89
+ * The first prune runs immediately, then on every `gcIntervalMs`.
90
+ */
91
+ start() {
92
+ if (this.interval)
93
+ return;
94
+ // Run immediately on start.
95
+ void this.prune();
96
+ this.interval = setInterval(() => {
97
+ void this.prune();
98
+ }, this.config.gcIntervalMs);
99
+ // Don't keep the process alive just for GC.
100
+ this.interval.unref();
101
+ }
102
+ /**
103
+ * @name prune
104
+ * @description Run one prune cycle. Logs a memory snapshot.
105
+ *
106
+ * This calls `listPremiumSessions()` which internally prunes expired
107
+ * sessions, and checks event/delivery counts against caps.
108
+ */
109
+ async prune() {
110
+ const sessions = listPremiumSessions();
111
+ const eventCount = getEventCount();
112
+ // If the event store exceeds its cap, flush oldest events.
113
+ // The event store self-prunes on append, but in low-traffic periods
114
+ // we want to ensure the store doesn't hold stale data indefinitely.
115
+ if (eventCount > this.config.maxEvents) {
116
+ // The event store's internal pruneOldEvents runs on appendEvent.
117
+ // Here we just log the overflow — the next append will evict.
118
+ }
119
+ // Log a memory snapshot for operational visibility.
120
+ const memUsage = process.memoryUsage();
121
+ const sessionCount = sessions.length;
122
+ if (sessionCount > 0 || eventCount > 0) {
123
+ // Use console.info instead of the logger to avoid circular import.
124
+ console.info(JSON.stringify({
125
+ level: 'info',
126
+ time: new Date().toISOString(),
127
+ msg: 'Premium memory snapshot',
128
+ sessions: sessionCount,
129
+ events: eventCount,
130
+ maxSessions: this.config.maxSessions,
131
+ maxEvents: this.config.maxEvents,
132
+ rssMb: Math.round(memUsage.rss / 1024 / 1024),
133
+ heapUsedMb: Math.round(memUsage.heapUsed / 1024 / 1024),
134
+ heapTotalMb: Math.round(memUsage.heapTotal / 1024 / 1024),
135
+ }));
136
+ }
137
+ }
138
+ /**
139
+ * @name shutdown
140
+ * @description Stop the GC interval and clean up all premium stores.
141
+ *
142
+ * Called during server graceful shutdown. This:
143
+ * 1. Stops the GC interval.
144
+ * 2. Stops all active SSE streams.
145
+ * 3. Deactivates all webhook subscriptions.
146
+ * 4. Disconnects all provider adapters.
147
+ * 5. Clears the session store and event store.
148
+ */
149
+ async shutdown() {
150
+ if (this.interval) {
151
+ clearInterval(this.interval);
152
+ this.interval = undefined;
153
+ }
154
+ stopAllStreams();
155
+ stopAllWebhooks();
156
+ await disconnectAllProviders();
157
+ clearAllSessions();
158
+ clearAllEvents();
159
+ }
160
+ }
161
+ //# sourceMappingURL=premium-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premium-memory.js","sourceRoot":"","sources":["../../src/remote/premium-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @name remote/premium-routes
3
+ * @description HTTP route handlers for the premium delivery rail.
4
+ *
5
+ * This module owns the 4 premium delivery endpoints that the `RemoteMCPServer`
6
+ * delegates to. Each handler is an async function that receives the raw
7
+ * Node.js `IncomingMessage` / `ServerResponse` pair and returns nothing
8
+ * (the response is written directly).
9
+ *
10
+ * Endpoints:
11
+ * POST /premium/activate — Activate a session with x402 receipt.
12
+ * GET /premium/stream/:sessionId — SSE stream for an active session.
13
+ * POST /premium/webhook/register — Register a webhook target.
14
+ * GET /premium/webhook/:subId/status — Check webhook delivery status.
15
+ *
16
+ * Design principles:
17
+ * - Each handler is pure async — no shared mutable state outside the premium modules.
18
+ * - SSE streams use keep-alive with `X-Accel-Buffering: no` for nginx proxies.
19
+ * - Webhook delivery runs in the background via `setImmediate` to not block the
20
+ * HTTP response — the response returns the subscription immediately.
21
+ * - All errors return structured JSON with `error` and `message` fields.
22
+ *
23
+ * @module remote/premium-routes
24
+ */
25
+ import * as http from 'node:http';
26
+ /**
27
+ * @name handlePremiumActivation
28
+ * @description Activate a pending premium session with a payment receipt.
29
+ *
30
+ * Expects a JSON body:
31
+ * { "sessionId": string, "paymentReceipt": string, "payerAddress"?: string }
32
+ *
33
+ * Returns:
34
+ * - 200 + `{ activation: PremiumActivationResult }` on success.
35
+ * - 400 if required fields are missing.
36
+ * - 402 if the session is not in `pending_payment` status.
37
+ *
38
+ * @param req - HTTP request.
39
+ * @param res - HTTP response.
40
+ */
41
+ export declare function handlePremiumActivation(req: http.IncomingMessage, res: http.ServerResponse): Promise<void>;
42
+ /**
43
+ * @name handlePremiumStream
44
+ * @description Open an SSE stream for an active premium session.
45
+ *
46
+ * The client must send `Accept: text/event-stream`. The server:
47
+ * 1. Validates the session is active.
48
+ * 2. Replays past events within the replay window (if `since` query param is set).
49
+ * 3. Opens a live provider subscription and streams events as SSE.
50
+ * 4. Closes the stream when the client disconnects or the unit quota is exhausted.
51
+ *
52
+ * SSE format per event:
53
+ * event: <eventType>\n
54
+ * data: {<JSON payload>}\n\n
55
+ *
56
+ * @param req - HTTP request.
57
+ * @param res - HTTP response.
58
+ * @param sessionId - The session id extracted from the URL path.
59
+ */
60
+ export declare function handlePremiumStream(req: http.IncomingMessage, res: http.ServerResponse, sessionId: string): Promise<void>;
61
+ /**
62
+ * @name handlePremiumWebhookRegister
63
+ * @description Register an HTTPS webhook target for signed event delivery.
64
+ *
65
+ * Expects a JSON body:
66
+ * { "sessionId": string, "targetUrl": string, "events": string[],
67
+ * "signingPublicKey"?: string }
68
+ *
69
+ * Returns 201 with the subscription record. The delivery worker starts in the
70
+ * background via `setImmediate` — the response does not wait for delivery.
71
+ *
72
+ * @param req - HTTP request.
73
+ * @param res - HTTP response.
74
+ */
75
+ export declare function handlePremiumWebhookRegister(req: http.IncomingMessage, res: http.ServerResponse): Promise<void>;
76
+ /**
77
+ * @name handlePremiumWebhookStatus
78
+ * @description Return the status of a webhook subscription with recent delivery records.
79
+ *
80
+ * @param req - HTTP request.
81
+ * @param res - HTTP response.
82
+ * @param subscriptionId - The subscription id extracted from the URL path.
83
+ */
84
+ export declare function handlePremiumWebhookStatus(req: http.IncomingMessage, res: http.ServerResponse, subscriptionId: string): Promise<void>;
85
+ /**
86
+ * @name tryPremiumRoute
87
+ * @description Check if a request targets a premium delivery endpoint and handle it.
88
+ *
89
+ * This is the single entry point called by the `RemoteMCPServer` request handler.
90
+ * If the request matches a premium route, the handler runs and `true` is returned
91
+ * (indicating the response was written). If no route matches, `false` is returned
92
+ * and the caller continues to the next route handler.
93
+ *
94
+ * @param req - HTTP request.
95
+ * @param res - HTTP response.
96
+ * @returns `true` if a premium route handled the request, `false` otherwise.
97
+ */
98
+ export declare function tryPremiumRoute(req: http.IncomingMessage, res: http.ServerResponse): Promise<boolean>;
99
+ //# sourceMappingURL=premium-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premium-routes.d.ts","sourceRoot":"","sources":["../../src/remote/premium-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAkElC;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAmFf;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAgDf;AAMD;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAcf;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,OAAO,CAAC,CAmClB"}
@@ -0,0 +1,347 @@
1
+ /**
2
+ * @name remote/premium-routes
3
+ * @description HTTP route handlers for the premium delivery rail.
4
+ *
5
+ * This module owns the 4 premium delivery endpoints that the `RemoteMCPServer`
6
+ * delegates to. Each handler is an async function that receives the raw
7
+ * Node.js `IncomingMessage` / `ServerResponse` pair and returns nothing
8
+ * (the response is written directly).
9
+ *
10
+ * Endpoints:
11
+ * POST /premium/activate — Activate a session with x402 receipt.
12
+ * GET /premium/stream/:sessionId — SSE stream for an active session.
13
+ * POST /premium/webhook/register — Register a webhook target.
14
+ * GET /premium/webhook/:subId/status — Check webhook delivery status.
15
+ *
16
+ * Design principles:
17
+ * - Each handler is pure async — no shared mutable state outside the premium modules.
18
+ * - SSE streams use keep-alive with `X-Accel-Buffering: no` for nginx proxies.
19
+ * - Webhook delivery runs in the background via `setImmediate` to not block the
20
+ * HTTP response — the response returns the subscription immediately.
21
+ * - All errors return structured JSON with `error` and `message` fields.
22
+ *
23
+ * @module remote/premium-routes
24
+ */
25
+ import { readRequestBody, parseJsonBody } from '../payments/http-adapter.js';
26
+ import { activatePremiumSession, startStream, streamEvents, replayEvents, stopStream, getPremiumSession, registerWebhook, startWebhookDelivery, getWebhookSubscription, getWebhookDeliveries, } from '../premium/index.js';
27
+ /* -------------------------------------------------------------------------- */
28
+ /* Internal HTTP helpers */
29
+ /* -------------------------------------------------------------------------- */
30
+ /**
31
+ * @name writeJsonResponse
32
+ * @description Write a JSON HTTP response with standard headers.
33
+ *
34
+ * @param res - The HTTP response object.
35
+ * @param status - HTTP status code.
36
+ * @param body - The response body (will be JSON-serialized).
37
+ * @param headers - Optional additional headers.
38
+ *
39
+ * @internal
40
+ */
41
+ function writeJsonResponse(res, status, body, headers = {}) {
42
+ const serialized = JSON.stringify(body);
43
+ res.writeHead(status, {
44
+ 'Content-Type': 'application/json',
45
+ 'Content-Length': Buffer.byteLength(serialized),
46
+ ...headers,
47
+ });
48
+ res.end(serialized);
49
+ }
50
+ /**
51
+ * @name readJsonBody
52
+ * @description Read and parse a JSON request body with bounds checking.
53
+ *
54
+ * @param req - The HTTP request object.
55
+ * @returns Parsed JSON body, or `undefined` if the body is empty.
56
+ * @throws {Error} If the body exceeds 256KB or is invalid JSON.
57
+ *
58
+ * @internal
59
+ */
60
+ async function readJsonBody(req) {
61
+ const raw = await readRequestBody(req);
62
+ const parsed = parseJsonBody(raw);
63
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
64
+ return undefined;
65
+ return parsed;
66
+ }
67
+ /* -------------------------------------------------------------------------- */
68
+ /* 1. POST /premium/activate — Payment Gate */
69
+ /* -------------------------------------------------------------------------- */
70
+ /**
71
+ * @name handlePremiumActivation
72
+ * @description Activate a pending premium session with a payment receipt.
73
+ *
74
+ * Expects a JSON body:
75
+ * { "sessionId": string, "paymentReceipt": string, "payerAddress"?: string }
76
+ *
77
+ * Returns:
78
+ * - 200 + `{ activation: PremiumActivationResult }` on success.
79
+ * - 400 if required fields are missing.
80
+ * - 402 if the session is not in `pending_payment` status.
81
+ *
82
+ * @param req - HTTP request.
83
+ * @param res - HTTP response.
84
+ */
85
+ export async function handlePremiumActivation(req, res) {
86
+ if (req.method !== 'POST') {
87
+ writeJsonResponse(res, 405, { error: 'method_not_allowed', message: 'Use POST.' });
88
+ return;
89
+ }
90
+ let body;
91
+ try {
92
+ body = await readJsonBody(req);
93
+ }
94
+ catch {
95
+ writeJsonResponse(res, 400, { error: 'invalid_body', message: 'Request body must be valid JSON under 256KB.' });
96
+ return;
97
+ }
98
+ const sessionId = typeof body?.sessionId === 'string' ? body.sessionId.trim() : '';
99
+ const paymentReceipt = typeof body?.paymentReceipt === 'string' ? body.paymentReceipt.trim() : '';
100
+ const payerAddress = typeof body?.payerAddress === 'string' ? body.payerAddress.trim() : undefined;
101
+ if (!sessionId || !paymentReceipt) {
102
+ writeJsonResponse(res, 400, {
103
+ error: 'missing_required_fields',
104
+ message: 'sessionId and paymentReceipt are required.',
105
+ });
106
+ return;
107
+ }
108
+ const activation = activatePremiumSession({
109
+ sessionId,
110
+ paymentReceipt,
111
+ payerAddress: payerAddress || undefined,
112
+ });
113
+ const httpStatus = activation.status === 'active' ? 200 : 402;
114
+ writeJsonResponse(res, httpStatus, { activation });
115
+ }
116
+ /* -------------------------------------------------------------------------- */
117
+ /* 2. GET /premium/stream/:sessionId — SSE Stream Broker */
118
+ /* -------------------------------------------------------------------------- */
119
+ /**
120
+ * @name handlePremiumStream
121
+ * @description Open an SSE stream for an active premium session.
122
+ *
123
+ * The client must send `Accept: text/event-stream`. The server:
124
+ * 1. Validates the session is active.
125
+ * 2. Replays past events within the replay window (if `since` query param is set).
126
+ * 3. Opens a live provider subscription and streams events as SSE.
127
+ * 4. Closes the stream when the client disconnects or the unit quota is exhausted.
128
+ *
129
+ * SSE format per event:
130
+ * event: <eventType>\n
131
+ * data: {<JSON payload>}\n\n
132
+ *
133
+ * @param req - HTTP request.
134
+ * @param res - HTTP response.
135
+ * @param sessionId - The session id extracted from the URL path.
136
+ */
137
+ export async function handlePremiumStream(req, res, sessionId) {
138
+ if (req.method !== 'GET') {
139
+ writeJsonResponse(res, 405, { error: 'method_not_allowed', message: 'Use GET with Accept: text/event-stream.' });
140
+ return;
141
+ }
142
+ const accept = req.headers.accept ?? '';
143
+ if (!accept.includes('text/event-stream')) {
144
+ writeJsonResponse(res, 406, {
145
+ error: 'not_acceptable',
146
+ message: 'This endpoint requires Accept: text/event-stream.',
147
+ });
148
+ return;
149
+ }
150
+ const session = getPremiumSession(sessionId);
151
+ if (!session || session.status !== 'active') {
152
+ writeJsonResponse(res, 403, {
153
+ error: 'session_not_active',
154
+ message: 'Session not found or not activated. Call POST /premium/activate first.',
155
+ });
156
+ return;
157
+ }
158
+ // Parse subscription parameters from the query string.
159
+ const url = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`);
160
+ const subscriptionKey = url.searchParams.get('subscriptionKey') ?? sessionId;
161
+ const since = url.searchParams.get('since') ?? undefined;
162
+ const filters = {};
163
+ for (const [key, value] of url.searchParams) {
164
+ if (!['subscriptionKey', 'since'].includes(key)) {
165
+ filters[key] = value;
166
+ }
167
+ }
168
+ // Start the stream subscription.
169
+ const subscription = await startStream(sessionId, subscriptionKey, filters);
170
+ if (!subscription) {
171
+ writeJsonResponse(res, 503, {
172
+ error: 'stream_start_failed',
173
+ message: 'Provider adapter not available or stream already active for this session.',
174
+ });
175
+ return;
176
+ }
177
+ // Write SSE headers — disable nginx/proxy buffering for real-time delivery.
178
+ res.writeHead(200, {
179
+ 'Content-Type': 'text/event-stream',
180
+ 'Cache-Control': 'no-cache, no-transform',
181
+ 'Connection': 'keep-alive',
182
+ 'X-Accel-Buffering': 'no',
183
+ });
184
+ // Replay past events within the replay window.
185
+ for (const event of replayEvents(sessionId, since)) {
186
+ res.write(`event: ${event.eventType}\n`);
187
+ res.write(`data: ${JSON.stringify(event)}\n\n`);
188
+ }
189
+ // Live stream — the async generator yields enriched events until quota or disconnect.
190
+ try {
191
+ for await (const event of streamEvents(sessionId)) {
192
+ if (res.writableEnded)
193
+ break;
194
+ res.write(`event: ${event.eventType}\n`);
195
+ res.write(`data: ${JSON.stringify(event)}\n\n`);
196
+ }
197
+ }
198
+ catch {
199
+ // Provider errors are logged by the bridge — just end the stream cleanly.
200
+ }
201
+ finally {
202
+ stopStream(sessionId);
203
+ if (!res.writableEnded) {
204
+ res.end();
205
+ }
206
+ }
207
+ // Clean up on client disconnect.
208
+ req.on('close', () => {
209
+ stopStream(sessionId);
210
+ if (!res.writableEnded) {
211
+ res.end();
212
+ }
213
+ });
214
+ }
215
+ /* -------------------------------------------------------------------------- */
216
+ /* 3. POST /premium/webhook/register — Webhook Registration */
217
+ /* -------------------------------------------------------------------------- */
218
+ /**
219
+ * @name handlePremiumWebhookRegister
220
+ * @description Register an HTTPS webhook target for signed event delivery.
221
+ *
222
+ * Expects a JSON body:
223
+ * { "sessionId": string, "targetUrl": string, "events": string[],
224
+ * "signingPublicKey"?: string }
225
+ *
226
+ * Returns 201 with the subscription record. The delivery worker starts in the
227
+ * background via `setImmediate` — the response does not wait for delivery.
228
+ *
229
+ * @param req - HTTP request.
230
+ * @param res - HTTP response.
231
+ */
232
+ export async function handlePremiumWebhookRegister(req, res) {
233
+ if (req.method !== 'POST') {
234
+ writeJsonResponse(res, 405, { error: 'method_not_allowed', message: 'Use POST.' });
235
+ return;
236
+ }
237
+ let body;
238
+ try {
239
+ body = await readJsonBody(req);
240
+ }
241
+ catch {
242
+ writeJsonResponse(res, 400, { error: 'invalid_body', message: 'Request body must be valid JSON under 256KB.' });
243
+ return;
244
+ }
245
+ const sessionId = typeof body?.sessionId === 'string' ? body.sessionId.trim() : '';
246
+ const targetUrl = typeof body?.targetUrl === 'string' ? body.targetUrl.trim() : '';
247
+ const events = Array.isArray(body?.events)
248
+ ? body.events.filter((e) => typeof e === 'string' && e.trim().length > 0)
249
+ : [];
250
+ const signingPublicKey = typeof body?.signingPublicKey === 'string' ? body.signingPublicKey.trim() : undefined;
251
+ if (!sessionId || !targetUrl || events.length === 0) {
252
+ writeJsonResponse(res, 400, {
253
+ error: 'missing_required_fields',
254
+ message: 'sessionId, targetUrl, and a non-empty events array are required.',
255
+ });
256
+ return;
257
+ }
258
+ const subscription = await registerWebhook(sessionId, targetUrl, events, signingPublicKey || undefined);
259
+ if (!subscription) {
260
+ writeJsonResponse(res, 402, {
261
+ error: 'webhook_registration_failed',
262
+ message: 'Session not active, URL is invalid (HTTPS required, no private networks), or no matching events.',
263
+ });
264
+ return;
265
+ }
266
+ // Start the delivery worker in the background — fire-and-forget.
267
+ // Errors are tracked in delivery records and don't crash the HTTP response.
268
+ setImmediate(() => {
269
+ void startWebhookDelivery(subscription).catch(error => {
270
+ const msg = error instanceof Error ? error.message : String(error);
271
+ console.error(`[premium-routes] Webhook delivery error for ${subscription.subscriptionId}: ${msg}`);
272
+ });
273
+ });
274
+ writeJsonResponse(res, 201, { subscription });
275
+ }
276
+ /* -------------------------------------------------------------------------- */
277
+ /* 4. GET /premium/webhook/:subId/status — Webhook Delivery Status */
278
+ /* -------------------------------------------------------------------------- */
279
+ /**
280
+ * @name handlePremiumWebhookStatus
281
+ * @description Return the status of a webhook subscription with recent delivery records.
282
+ *
283
+ * @param req - HTTP request.
284
+ * @param res - HTTP response.
285
+ * @param subscriptionId - The subscription id extracted from the URL path.
286
+ */
287
+ export async function handlePremiumWebhookStatus(req, res, subscriptionId) {
288
+ if (req.method !== 'GET') {
289
+ writeJsonResponse(res, 405, { error: 'method_not_allowed', message: 'Use GET.' });
290
+ return;
291
+ }
292
+ const subscription = getWebhookSubscription(subscriptionId);
293
+ if (!subscription) {
294
+ writeJsonResponse(res, 404, { error: 'subscription_not_found' });
295
+ return;
296
+ }
297
+ const deliveries = getWebhookDeliveries(subscriptionId);
298
+ writeJsonResponse(res, 200, { subscription, deliveries });
299
+ }
300
+ /* -------------------------------------------------------------------------- */
301
+ /* Route matching helper */
302
+ /* -------------------------------------------------------------------------- */
303
+ /**
304
+ * @name tryPremiumRoute
305
+ * @description Check if a request targets a premium delivery endpoint and handle it.
306
+ *
307
+ * This is the single entry point called by the `RemoteMCPServer` request handler.
308
+ * If the request matches a premium route, the handler runs and `true` is returned
309
+ * (indicating the response was written). If no route matches, `false` is returned
310
+ * and the caller continues to the next route handler.
311
+ *
312
+ * @param req - HTTP request.
313
+ * @param res - HTTP response.
314
+ * @returns `true` if a premium route handled the request, `false` otherwise.
315
+ */
316
+ export async function tryPremiumRoute(req, res) {
317
+ const url = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`);
318
+ const pathname = url.pathname;
319
+ // POST /premium/activate
320
+ if (req.method === 'POST' && pathname === '/premium/activate') {
321
+ await handlePremiumActivation(req, res);
322
+ return true;
323
+ }
324
+ // GET /premium/stream/:sessionId
325
+ if (req.method === 'GET' && pathname.startsWith('/premium/stream/')) {
326
+ const sessionId = pathname.slice('/premium/stream/'.length);
327
+ if (sessionId.length > 0) {
328
+ await handlePremiumStream(req, res, sessionId);
329
+ return true;
330
+ }
331
+ }
332
+ // POST /premium/webhook/register
333
+ if (req.method === 'POST' && pathname === '/premium/webhook/register') {
334
+ await handlePremiumWebhookRegister(req, res);
335
+ return true;
336
+ }
337
+ // GET /premium/webhook/:subId/status
338
+ if (req.method === 'GET' && pathname.startsWith('/premium/webhook/') && pathname.endsWith('/status')) {
339
+ const subscriptionId = pathname.slice('/premium/webhook/'.length, -'/status'.length);
340
+ if (subscriptionId.length > 0) {
341
+ await handlePremiumWebhookStatus(req, res, subscriptionId);
342
+ return true;
343
+ }
344
+ }
345
+ return false;
346
+ }
347
+ //# sourceMappingURL=premium-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premium-routes.js","sourceRoot":"","sources":["../../src/remote/premium-routes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../../src/remote/public-home/sections.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkGnD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAuB9C;AAyCD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAwHnE;AA4BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAkD1D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAuC/D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA4CnE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAyBnE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAgC7D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA+B5C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAuC/C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAoDrE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA4B/D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAsC9D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA2CjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAgC5D"}
1
+ {"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../../src/remote/public-home/sections.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkGnD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAuB9C;AAyCD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAyHnE;AA4BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAkD1D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAuC/D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA4CnE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAyBnE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAgC7D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA+B5C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAuC/C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAsDrE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAgC/D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA4C9D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAgDjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAiC5D"}