@oobe-protocol-labs/sap-mcp-server 0.9.15 → 0.9.20

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 (607) hide show
  1. package/.env.example +8 -7
  2. package/CHANGELOG.md +227 -0
  3. package/README.md +3 -3
  4. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
  5. package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
  6. package/USER_DOCS/05_SKILLS_AND_TOOLS.md +16 -8
  7. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
  8. package/config.example.json +5 -4
  9. package/config.schema.json +7 -2
  10. package/config.secure-example.json +5 -4
  11. package/dist/adapters/index.d.ts +7 -1
  12. package/dist/adapters/index.d.ts.map +1 -1
  13. package/dist/adapters/index.js +7 -1
  14. package/dist/adapters/index.js.map +1 -1
  15. package/dist/adapters/mcp/errors.d.ts +13 -1
  16. package/dist/adapters/mcp/errors.d.ts.map +1 -1
  17. package/dist/adapters/mcp/errors.js +13 -1
  18. package/dist/adapters/mcp/errors.js.map +1 -1
  19. package/dist/adapters/mcp/index.d.ts +7 -1
  20. package/dist/adapters/mcp/index.d.ts.map +1 -1
  21. package/dist/adapters/mcp/index.js +7 -1
  22. package/dist/adapters/mcp/index.js.map +1 -1
  23. package/dist/adapters/mcp/prompt-response.d.ts +13 -1
  24. package/dist/adapters/mcp/prompt-response.d.ts.map +1 -1
  25. package/dist/adapters/mcp/prompt-response.js +13 -1
  26. package/dist/adapters/mcp/prompt-response.js.map +1 -1
  27. package/dist/adapters/mcp/resource-response.d.ts +14 -1
  28. package/dist/adapters/mcp/resource-response.d.ts.map +1 -1
  29. package/dist/adapters/mcp/resource-response.js +14 -1
  30. package/dist/adapters/mcp/resource-response.js.map +1 -1
  31. package/dist/adapters/mcp/sdk-compat.d.ts +11 -3
  32. package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -1
  33. package/dist/adapters/mcp/sdk-compat.js +213 -24
  34. package/dist/adapters/mcp/sdk-compat.js.map +1 -1
  35. package/dist/adapters/mcp/tool-response.d.ts +39 -4
  36. package/dist/adapters/mcp/tool-response.d.ts.map +1 -1
  37. package/dist/adapters/mcp/tool-response.js +39 -4
  38. package/dist/adapters/mcp/tool-response.js.map +1 -1
  39. package/dist/adapters/solana/commitment.d.ts +14 -2
  40. package/dist/adapters/solana/commitment.d.ts.map +1 -1
  41. package/dist/adapters/solana/commitment.js +14 -2
  42. package/dist/adapters/solana/commitment.js.map +1 -1
  43. package/dist/adapters/solana/connection.d.ts +11 -2
  44. package/dist/adapters/solana/connection.d.ts.map +1 -1
  45. package/dist/adapters/solana/connection.js +11 -2
  46. package/dist/adapters/solana/connection.js.map +1 -1
  47. package/dist/adapters/solana/index.d.ts +7 -1
  48. package/dist/adapters/solana/index.d.ts.map +1 -1
  49. package/dist/adapters/solana/index.js +7 -1
  50. package/dist/adapters/solana/index.js.map +1 -1
  51. package/dist/adapters/solana/public-key.d.ts +11 -2
  52. package/dist/adapters/solana/public-key.d.ts.map +1 -1
  53. package/dist/adapters/solana/public-key.js +11 -2
  54. package/dist/adapters/solana/public-key.js.map +1 -1
  55. package/dist/config/defaults.d.ts +5 -0
  56. package/dist/config/defaults.d.ts.map +1 -1
  57. package/dist/config/defaults.js +5 -0
  58. package/dist/config/defaults.js.map +1 -1
  59. package/dist/config/env.d.ts +4 -0
  60. package/dist/config/env.d.ts.map +1 -1
  61. package/dist/config/env.js +11 -6
  62. package/dist/config/env.js.map +1 -1
  63. package/dist/config/index.d.ts +5 -0
  64. package/dist/config/index.d.ts.map +1 -1
  65. package/dist/config/index.js +5 -0
  66. package/dist/config/index.js.map +1 -1
  67. package/dist/config/mcp-client-injection.d.ts.map +1 -1
  68. package/dist/config/mcp-client-injection.js +97 -1
  69. package/dist/config/mcp-client-injection.js.map +1 -1
  70. package/dist/config/paths.d.ts +5 -0
  71. package/dist/config/paths.d.ts.map +1 -1
  72. package/dist/config/paths.js +5 -0
  73. package/dist/config/paths.js.map +1 -1
  74. package/dist/config/profiles.d.ts +3 -10
  75. package/dist/config/profiles.d.ts.map +1 -1
  76. package/dist/config/profiles.js +5 -0
  77. package/dist/config/profiles.js.map +1 -1
  78. package/dist/config/schema.d.ts +5 -0
  79. package/dist/config/schema.d.ts.map +1 -1
  80. package/dist/config/schema.js +5 -0
  81. package/dist/config/schema.js.map +1 -1
  82. package/dist/config/secure-config.d.ts +5 -0
  83. package/dist/config/secure-config.d.ts.map +1 -1
  84. package/dist/config/secure-config.js +5 -0
  85. package/dist/config/secure-config.js.map +1 -1
  86. package/dist/config/setup.d.ts +5 -0
  87. package/dist/config/setup.d.ts.map +1 -1
  88. package/dist/config/setup.js +5 -0
  89. package/dist/config/setup.js.map +1 -1
  90. package/dist/config-cli.d.ts +3 -13
  91. package/dist/config-cli.d.ts.map +1 -1
  92. package/dist/config-cli.js +5 -0
  93. package/dist/config-cli.js.map +1 -1
  94. package/dist/core/constants.d.ts +25 -6
  95. package/dist/core/constants.d.ts.map +1 -1
  96. package/dist/core/constants.js +27 -8
  97. package/dist/core/constants.js.map +1 -1
  98. package/dist/core/errors.d.ts +5 -0
  99. package/dist/core/errors.d.ts.map +1 -1
  100. package/dist/core/errors.js +5 -0
  101. package/dist/core/errors.js.map +1 -1
  102. package/dist/core/guards.d.ts +5 -0
  103. package/dist/core/guards.d.ts.map +1 -1
  104. package/dist/core/guards.js +3 -1
  105. package/dist/core/guards.js.map +1 -1
  106. package/dist/core/index.d.ts +7 -1
  107. package/dist/core/index.d.ts.map +1 -1
  108. package/dist/core/index.js +7 -1
  109. package/dist/core/index.js.map +1 -1
  110. package/dist/core/logger.js +1 -1
  111. package/dist/core/logger.js.map +1 -1
  112. package/dist/core/result.d.ts +77 -9
  113. package/dist/core/result.d.ts.map +1 -1
  114. package/dist/core/result.js +68 -9
  115. package/dist/core/result.js.map +1 -1
  116. package/dist/core/types.d.ts +5 -0
  117. package/dist/core/types.d.ts.map +1 -1
  118. package/dist/core/types.js +3 -4
  119. package/dist/core/types.js.map +1 -1
  120. package/dist/index.d.ts +5 -0
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +5 -0
  123. package/dist/index.js.map +1 -1
  124. package/dist/payments/facilitator-rpc-fallback.d.ts.map +1 -1
  125. package/dist/payments/facilitator-rpc-fallback.js +95 -0
  126. package/dist/payments/facilitator-rpc-fallback.js.map +1 -1
  127. package/dist/payments/hosted-tool-eligibility.d.ts +1 -0
  128. package/dist/payments/hosted-tool-eligibility.d.ts.map +1 -1
  129. package/dist/payments/hosted-tool-eligibility.js +1 -0
  130. package/dist/payments/hosted-tool-eligibility.js.map +1 -1
  131. package/dist/payments/mcp-session-cache.d.ts +35 -0
  132. package/dist/payments/mcp-session-cache.d.ts.map +1 -0
  133. package/dist/payments/mcp-session-cache.js +83 -0
  134. package/dist/payments/mcp-session-cache.js.map +1 -0
  135. package/dist/payments/monetization-gate.d.ts +5 -0
  136. package/dist/payments/monetization-gate.d.ts.map +1 -1
  137. package/dist/payments/monetization-gate.js +24 -1
  138. package/dist/payments/monetization-gate.js.map +1 -1
  139. package/dist/payments/pricing.d.ts +2 -0
  140. package/dist/payments/pricing.d.ts.map +1 -1
  141. package/dist/payments/pricing.js +126 -10
  142. package/dist/payments/pricing.js.map +1 -1
  143. package/dist/payments/usage-ledger.d.ts +36 -2
  144. package/dist/payments/usage-ledger.d.ts.map +1 -1
  145. package/dist/payments/usage-ledger.js +121 -4
  146. package/dist/payments/usage-ledger.js.map +1 -1
  147. package/dist/payments/x402-paid-call.d.ts +50 -0
  148. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  149. package/dist/payments/x402-paid-call.js +171 -0
  150. package/dist/payments/x402-paid-call.js.map +1 -1
  151. package/dist/policy/default-policies.d.ts +18 -2
  152. package/dist/policy/default-policies.d.ts.map +1 -1
  153. package/dist/policy/default-policies.js +18 -2
  154. package/dist/policy/default-policies.js.map +1 -1
  155. package/dist/policy/index.d.ts +6 -3
  156. package/dist/policy/index.d.ts.map +1 -1
  157. package/dist/policy/index.js +6 -3
  158. package/dist/policy/index.js.map +1 -1
  159. package/dist/policy/local-policy-engine.d.ts +71 -13
  160. package/dist/policy/local-policy-engine.d.ts.map +1 -1
  161. package/dist/policy/local-policy-engine.js +33 -11
  162. package/dist/policy/local-policy-engine.js.map +1 -1
  163. package/dist/policy/permission-checks.d.ts +29 -3
  164. package/dist/policy/permission-checks.d.ts.map +1 -1
  165. package/dist/policy/permission-checks.js +29 -3
  166. package/dist/policy/permission-checks.js.map +1 -1
  167. package/dist/policy/policy-engine.d.ts +22 -2
  168. package/dist/policy/policy-engine.d.ts.map +1 -1
  169. package/dist/policy/policy-engine.js +22 -2
  170. package/dist/policy/policy-engine.js.map +1 -1
  171. package/dist/policy/policy-types.d.ts +55 -5
  172. package/dist/policy/policy-types.d.ts.map +1 -1
  173. package/dist/policy/policy-types.js +8 -1
  174. package/dist/policy/policy-types.js.map +1 -1
  175. package/dist/policy/risk-level.d.ts +32 -3
  176. package/dist/policy/risk-level.d.ts.map +1 -1
  177. package/dist/policy/risk-level.js +32 -3
  178. package/dist/policy/risk-level.js.map +1 -1
  179. package/dist/policy/spending-limits.d.ts +29 -3
  180. package/dist/policy/spending-limits.d.ts.map +1 -1
  181. package/dist/policy/spending-limits.js +29 -3
  182. package/dist/policy/spending-limits.js.map +1 -1
  183. package/dist/premium/activation-manager.d.ts +43 -0
  184. package/dist/premium/activation-manager.d.ts.map +1 -0
  185. package/dist/premium/activation-manager.js +131 -0
  186. package/dist/premium/activation-manager.js.map +1 -0
  187. package/dist/premium/builtin-plugins.d.ts +143 -0
  188. package/dist/premium/builtin-plugins.d.ts.map +1 -0
  189. package/dist/premium/builtin-plugins.js +394 -0
  190. package/dist/premium/builtin-plugins.js.map +1 -0
  191. package/dist/premium/event-store.d.ts +61 -0
  192. package/dist/premium/event-store.d.ts.map +1 -0
  193. package/dist/premium/event-store.js +130 -0
  194. package/dist/premium/event-store.js.map +1 -0
  195. package/dist/premium/index.d.ts +54 -0
  196. package/dist/premium/index.d.ts.map +1 -0
  197. package/dist/premium/index.js +54 -0
  198. package/dist/premium/index.js.map +1 -0
  199. package/dist/premium/manifest-builder.d.ts +65 -0
  200. package/dist/premium/manifest-builder.d.ts.map +1 -0
  201. package/dist/premium/manifest-builder.js +182 -0
  202. package/dist/premium/manifest-builder.js.map +1 -0
  203. package/dist/premium/meme-radar-capabilities.d.ts +38 -0
  204. package/dist/premium/meme-radar-capabilities.d.ts.map +1 -0
  205. package/dist/premium/meme-radar-capabilities.js +306 -0
  206. package/dist/premium/meme-radar-capabilities.js.map +1 -0
  207. package/dist/premium/metrics.d.ts +27 -0
  208. package/dist/premium/metrics.d.ts.map +1 -0
  209. package/dist/premium/metrics.js +65 -0
  210. package/dist/premium/metrics.js.map +1 -0
  211. package/dist/premium/plugin-validator.d.ts +39 -0
  212. package/dist/premium/plugin-validator.d.ts.map +1 -0
  213. package/dist/premium/plugin-validator.js +325 -0
  214. package/dist/premium/plugin-validator.js.map +1 -0
  215. package/dist/premium/private-manifest-loader.d.ts +111 -0
  216. package/dist/premium/private-manifest-loader.d.ts.map +1 -0
  217. package/dist/premium/private-manifest-loader.js +285 -0
  218. package/dist/premium/private-manifest-loader.js.map +1 -0
  219. package/dist/premium/provider-bridge.d.ts +109 -0
  220. package/dist/premium/provider-bridge.d.ts.map +1 -0
  221. package/dist/premium/provider-bridge.js +239 -0
  222. package/dist/premium/provider-bridge.js.map +1 -0
  223. package/dist/premium/session-manager.d.ts +125 -0
  224. package/dist/premium/session-manager.d.ts.map +1 -0
  225. package/dist/premium/session-manager.js +337 -0
  226. package/dist/premium/session-manager.js.map +1 -0
  227. package/dist/premium/stream-broker.d.ts +98 -0
  228. package/dist/premium/stream-broker.d.ts.map +1 -0
  229. package/dist/premium/stream-broker.js +199 -0
  230. package/dist/premium/stream-broker.js.map +1 -0
  231. package/dist/premium/tech-fundamentals-capabilities.d.ts +37 -0
  232. package/dist/premium/tech-fundamentals-capabilities.d.ts.map +1 -0
  233. package/dist/premium/tech-fundamentals-capabilities.js +283 -0
  234. package/dist/premium/tech-fundamentals-capabilities.js.map +1 -0
  235. package/dist/premium/trading-capabilities.d.ts +36 -0
  236. package/dist/premium/trading-capabilities.d.ts.map +1 -0
  237. package/dist/premium/trading-capabilities.js +205 -0
  238. package/dist/premium/trading-capabilities.js.map +1 -0
  239. package/dist/premium/types.d.ts +518 -0
  240. package/dist/premium/types.d.ts.map +1 -0
  241. package/dist/premium/types.js +23 -0
  242. package/dist/premium/types.js.map +1 -0
  243. package/dist/premium/webhook-engine.d.ts +102 -0
  244. package/dist/premium/webhook-engine.d.ts.map +1 -0
  245. package/dist/premium/webhook-engine.js +382 -0
  246. package/dist/premium/webhook-engine.js.map +1 -0
  247. package/dist/prompts/context/sap-agent-context.prompt.d.ts +5 -0
  248. package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -1
  249. package/dist/prompts/context/sap-agent-context.prompt.js +2 -8
  250. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  251. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts +14 -0
  252. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts.map +1 -0
  253. package/dist/prompts/context/sap-agent-intent-router.prompt.js +155 -0
  254. package/dist/prompts/context/sap-agent-intent-router.prompt.js.map +1 -0
  255. package/dist/prompts/context/sap-agent-start.prompt.js +1 -0
  256. package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -1
  257. package/dist/prompts/developer/debug-sap-error.prompt.d.ts +5 -0
  258. package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -1
  259. package/dist/prompts/developer/debug-sap-error.prompt.js +3 -4
  260. package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -1
  261. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +5 -0
  262. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -1
  263. package/dist/prompts/developer/generate-sap-integration.prompt.js +3 -4
  264. package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
  265. package/dist/prompts/developer/index.d.ts +4 -1
  266. package/dist/prompts/developer/index.d.ts.map +1 -1
  267. package/dist/prompts/developer/index.js +4 -1
  268. package/dist/prompts/developer/index.js.map +1 -1
  269. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +5 -0
  270. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -1
  271. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +3 -4
  272. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -1
  273. package/dist/prompts/execution-proof/index.d.ts +4 -1
  274. package/dist/prompts/execution-proof/index.d.ts.map +1 -1
  275. package/dist/prompts/execution-proof/index.js +4 -1
  276. package/dist/prompts/execution-proof/index.js.map +1 -1
  277. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +5 -0
  278. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -1
  279. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +3 -4
  280. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -1
  281. package/dist/prompts/index.d.ts +4 -1
  282. package/dist/prompts/index.d.ts.map +1 -1
  283. package/dist/prompts/index.js +4 -1
  284. package/dist/prompts/index.js.map +1 -1
  285. package/dist/prompts/payments/create-paid-api.prompt.d.ts +5 -0
  286. package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -1
  287. package/dist/prompts/payments/create-paid-api.prompt.js +3 -4
  288. package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -1
  289. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +5 -0
  290. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -1
  291. package/dist/prompts/payments/explain-x402-settlement.prompt.js +3 -4
  292. package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
  293. package/dist/prompts/payments/index.d.ts +4 -1
  294. package/dist/prompts/payments/index.d.ts.map +1 -1
  295. package/dist/prompts/payments/index.js +4 -1
  296. package/dist/prompts/payments/index.js.map +1 -1
  297. package/dist/prompts/register-prompts.d.ts +18 -2
  298. package/dist/prompts/register-prompts.d.ts.map +1 -1
  299. package/dist/prompts/register-prompts.js +21 -3
  300. package/dist/prompts/register-prompts.js.map +1 -1
  301. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +5 -0
  302. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -1
  303. package/dist/prompts/registry/analyze-sap-agent.prompt.js +3 -4
  304. package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -1
  305. package/dist/prompts/registry/index.d.ts +4 -1
  306. package/dist/prompts/registry/index.d.ts.map +1 -1
  307. package/dist/prompts/registry/index.js +4 -1
  308. package/dist/prompts/registry/index.js.map +1 -1
  309. package/dist/prompts/registry/register-sap-agent.prompt.d.ts +5 -0
  310. package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -1
  311. package/dist/prompts/registry/register-sap-agent.prompt.js +3 -4
  312. package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -1
  313. package/dist/remote/premium-memory.d.ts +90 -0
  314. package/dist/remote/premium-memory.d.ts.map +1 -0
  315. package/dist/remote/premium-memory.js +161 -0
  316. package/dist/remote/premium-memory.js.map +1 -0
  317. package/dist/remote/premium-routes.d.ts +99 -0
  318. package/dist/remote/premium-routes.d.ts.map +1 -0
  319. package/dist/remote/premium-routes.js +346 -0
  320. package/dist/remote/premium-routes.js.map +1 -0
  321. package/dist/remote/public-home/sections.d.ts.map +1 -1
  322. package/dist/remote/public-home/sections.js +7 -1
  323. package/dist/remote/public-home/sections.js.map +1 -1
  324. package/dist/remote/public-home/types.d.ts +6 -0
  325. package/dist/remote/public-home/types.d.ts.map +1 -1
  326. package/dist/remote/server.d.ts +18 -0
  327. package/dist/remote/server.d.ts.map +1 -1
  328. package/dist/remote/server.js +298 -116
  329. package/dist/remote/server.js.map +1 -1
  330. package/dist/remote/tx-relay.d.ts +42 -0
  331. package/dist/remote/tx-relay.d.ts.map +1 -0
  332. package/dist/remote/tx-relay.js +118 -0
  333. package/dist/remote/tx-relay.js.map +1 -0
  334. package/dist/resources/current/sap-current-config.resource.d.ts +5 -0
  335. package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -1
  336. package/dist/resources/current/sap-current-config.resource.js +2 -5
  337. package/dist/resources/current/sap-current-config.resource.js.map +1 -1
  338. package/dist/resources/execution-proof/index.d.ts +5 -0
  339. package/dist/resources/execution-proof/index.d.ts.map +1 -1
  340. package/dist/resources/execution-proof/index.js +5 -0
  341. package/dist/resources/execution-proof/index.js.map +1 -1
  342. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +5 -0
  343. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -1
  344. package/dist/resources/execution-proof/sap-execution-record.resource.js +3 -4
  345. package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -1
  346. package/dist/resources/index.d.ts +5 -0
  347. package/dist/resources/index.d.ts.map +1 -1
  348. package/dist/resources/index.js +5 -0
  349. package/dist/resources/index.js.map +1 -1
  350. package/dist/resources/memory/index.d.ts +5 -0
  351. package/dist/resources/memory/index.d.ts.map +1 -1
  352. package/dist/resources/memory/index.js +5 -0
  353. package/dist/resources/memory/index.js.map +1 -1
  354. package/dist/resources/memory/sap-memory.resource.d.ts +5 -0
  355. package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -1
  356. package/dist/resources/memory/sap-memory.resource.js +3 -4
  357. package/dist/resources/memory/sap-memory.resource.js.map +1 -1
  358. package/dist/resources/profile/sap-active-profile.resource.d.ts +5 -0
  359. package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -1
  360. package/dist/resources/profile/sap-active-profile.resource.js +2 -5
  361. package/dist/resources/profile/sap-active-profile.resource.js.map +1 -1
  362. package/dist/resources/register-resources.d.ts +5 -0
  363. package/dist/resources/register-resources.d.ts.map +1 -1
  364. package/dist/resources/register-resources.js +3 -1
  365. package/dist/resources/register-resources.js.map +1 -1
  366. package/dist/resources/registry/index.d.ts +5 -0
  367. package/dist/resources/registry/index.d.ts.map +1 -1
  368. package/dist/resources/registry/index.js +5 -0
  369. package/dist/resources/registry/index.js.map +1 -1
  370. package/dist/resources/registry/sap-agent.resource.d.ts +5 -0
  371. package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -1
  372. package/dist/resources/registry/sap-agent.resource.js +3 -4
  373. package/dist/resources/registry/sap-agent.resource.js.map +1 -1
  374. package/dist/resources/registry/sap-global-registry.resource.d.ts +18 -4
  375. package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -1
  376. package/dist/resources/registry/sap-global-registry.resource.js +18 -4
  377. package/dist/resources/registry/sap-global-registry.resource.js.map +1 -1
  378. package/dist/resources/reputation/index.d.ts +4 -1
  379. package/dist/resources/reputation/index.d.ts.map +1 -1
  380. package/dist/resources/reputation/index.js +4 -1
  381. package/dist/resources/reputation/index.js.map +1 -1
  382. package/dist/resources/reputation/sap-reputation.resource.d.ts +18 -4
  383. package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -1
  384. package/dist/resources/reputation/sap-reputation.resource.js +18 -4
  385. package/dist/resources/reputation/sap-reputation.resource.js.map +1 -1
  386. package/dist/resources/tool-schema/index.d.ts +4 -1
  387. package/dist/resources/tool-schema/index.d.ts.map +1 -1
  388. package/dist/resources/tool-schema/index.js +4 -1
  389. package/dist/resources/tool-schema/index.js.map +1 -1
  390. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +18 -4
  391. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -1
  392. package/dist/resources/tool-schema/sap-tool-schema.resource.js +18 -4
  393. package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -1
  394. package/dist/sap/index.d.ts +7 -1
  395. package/dist/sap/index.d.ts.map +1 -1
  396. package/dist/sap/index.js +7 -1
  397. package/dist/sap/index.js.map +1 -1
  398. package/dist/sap/sap-client-manager.d.ts +80 -13
  399. package/dist/sap/sap-client-manager.d.ts.map +1 -1
  400. package/dist/sap/sap-client-manager.js +80 -13
  401. package/dist/sap/sap-client-manager.js.map +1 -1
  402. package/dist/sap/sap-errors.d.ts +22 -3
  403. package/dist/sap/sap-errors.d.ts.map +1 -1
  404. package/dist/sap/sap-errors.js +22 -3
  405. package/dist/sap/sap-errors.js.map +1 -1
  406. package/dist/sap/sap-types.d.ts +75 -6
  407. package/dist/sap/sap-types.d.ts.map +1 -1
  408. package/dist/sap/sap-types.js +11 -1
  409. package/dist/sap/sap-types.js.map +1 -1
  410. package/dist/schemas/common.schema.d.ts +45 -8
  411. package/dist/schemas/common.schema.d.ts.map +1 -1
  412. package/dist/schemas/common.schema.js +45 -8
  413. package/dist/schemas/common.schema.js.map +1 -1
  414. package/dist/schemas/developer.schema.d.ts +22 -3
  415. package/dist/schemas/developer.schema.d.ts.map +1 -1
  416. package/dist/schemas/developer.schema.js +22 -3
  417. package/dist/schemas/developer.schema.js.map +1 -1
  418. package/dist/schemas/execution-proof.schema.d.ts +29 -4
  419. package/dist/schemas/execution-proof.schema.d.ts.map +1 -1
  420. package/dist/schemas/execution-proof.schema.js +29 -4
  421. package/dist/schemas/execution-proof.schema.js.map +1 -1
  422. package/dist/schemas/identity.schema.d.ts +23 -3
  423. package/dist/schemas/identity.schema.d.ts.map +1 -1
  424. package/dist/schemas/identity.schema.js +23 -3
  425. package/dist/schemas/identity.schema.js.map +1 -1
  426. package/dist/schemas/index.d.ts +11 -1
  427. package/dist/schemas/index.d.ts.map +1 -1
  428. package/dist/schemas/index.js +11 -1
  429. package/dist/schemas/index.js.map +1 -1
  430. package/dist/schemas/memory.schema.d.ts +23 -3
  431. package/dist/schemas/memory.schema.d.ts.map +1 -1
  432. package/dist/schemas/memory.schema.js +23 -3
  433. package/dist/schemas/memory.schema.js.map +1 -1
  434. package/dist/schemas/payments.schema.d.ts +24 -3
  435. package/dist/schemas/payments.schema.d.ts.map +1 -1
  436. package/dist/schemas/payments.schema.js +24 -3
  437. package/dist/schemas/payments.schema.js.map +1 -1
  438. package/dist/schemas/registry.schema.d.ts +36 -4
  439. package/dist/schemas/registry.schema.d.ts.map +1 -1
  440. package/dist/schemas/registry.schema.js +36 -4
  441. package/dist/schemas/registry.schema.js.map +1 -1
  442. package/dist/schemas/reputation.schema.d.ts +22 -3
  443. package/dist/schemas/reputation.schema.d.ts.map +1 -1
  444. package/dist/schemas/reputation.schema.js +22 -3
  445. package/dist/schemas/reputation.schema.js.map +1 -1
  446. package/dist/schemas/settlement.schema.d.ts +31 -4
  447. package/dist/schemas/settlement.schema.d.ts.map +1 -1
  448. package/dist/schemas/settlement.schema.js +31 -4
  449. package/dist/schemas/settlement.schema.js.map +1 -1
  450. package/dist/schemas/tool-schema.schema.d.ts +29 -3
  451. package/dist/schemas/tool-schema.schema.d.ts.map +1 -1
  452. package/dist/schemas/tool-schema.schema.js +29 -3
  453. package/dist/schemas/tool-schema.schema.js.map +1 -1
  454. package/dist/schemas/transaction.schema.d.ts +23 -3
  455. package/dist/schemas/transaction.schema.d.ts.map +1 -1
  456. package/dist/schemas/transaction.schema.js +23 -3
  457. package/dist/schemas/transaction.schema.js.map +1 -1
  458. package/dist/security/approval-required.d.ts +19 -2
  459. package/dist/security/approval-required.d.ts.map +1 -1
  460. package/dist/security/approval-required.js +19 -2
  461. package/dist/security/approval-required.js.map +1 -1
  462. package/dist/security/index.d.ts +7 -1
  463. package/dist/security/index.d.ts.map +1 -1
  464. package/dist/security/index.js +7 -1
  465. package/dist/security/index.js.map +1 -1
  466. package/dist/security/private-key-guard.d.ts +18 -2
  467. package/dist/security/private-key-guard.d.ts.map +1 -1
  468. package/dist/security/private-key-guard.js +19 -2
  469. package/dist/security/private-key-guard.js.map +1 -1
  470. package/dist/security/prompt-injection-notes.d.ts +10 -1
  471. package/dist/security/prompt-injection-notes.d.ts.map +1 -1
  472. package/dist/security/prompt-injection-notes.js +10 -1
  473. package/dist/security/prompt-injection-notes.js.map +1 -1
  474. package/dist/security/unsafe-action-guard.d.ts +36 -10
  475. package/dist/security/unsafe-action-guard.d.ts.map +1 -1
  476. package/dist/security/unsafe-action-guard.js +67 -15
  477. package/dist/security/unsafe-action-guard.js.map +1 -1
  478. package/dist/server/create-server.d.ts +18 -3
  479. package/dist/server/create-server.d.ts.map +1 -1
  480. package/dist/server/create-server.js +18 -3
  481. package/dist/server/create-server.js.map +1 -1
  482. package/dist/server/index.d.ts +6 -1
  483. package/dist/server/index.d.ts.map +1 -1
  484. package/dist/server/index.js +6 -1
  485. package/dist/server/index.js.map +1 -1
  486. package/dist/server/register-capabilities.d.ts +17 -2
  487. package/dist/server/register-capabilities.d.ts.map +1 -1
  488. package/dist/server/register-capabilities.js +17 -2
  489. package/dist/server/register-capabilities.js.map +1 -1
  490. package/dist/server/server-metadata.d.ts +34 -1
  491. package/dist/server/server-metadata.d.ts.map +1 -1
  492. package/dist/server/server-metadata.js +35 -2
  493. package/dist/server/server-metadata.js.map +1 -1
  494. package/dist/session/agent-session.d.ts +35 -4
  495. package/dist/session/agent-session.d.ts.map +1 -1
  496. package/dist/session/agent-session.js +35 -4
  497. package/dist/session/agent-session.js.map +1 -1
  498. package/dist/session/delegated-session.d.ts +31 -3
  499. package/dist/session/delegated-session.d.ts.map +1 -1
  500. package/dist/session/delegated-session.js +31 -3
  501. package/dist/session/delegated-session.js.map +1 -1
  502. package/dist/session/index.d.ts +7 -1
  503. package/dist/session/index.d.ts.map +1 -1
  504. package/dist/session/index.js +7 -1
  505. package/dist/session/index.js.map +1 -1
  506. package/dist/session/redis-session-store.d.ts +94 -21
  507. package/dist/session/redis-session-store.d.ts.map +1 -1
  508. package/dist/session/redis-session-store.js +87 -20
  509. package/dist/session/redis-session-store.js.map +1 -1
  510. package/dist/session/session-limits.d.ts +34 -4
  511. package/dist/session/session-limits.d.ts.map +1 -1
  512. package/dist/session/session-limits.js +34 -4
  513. package/dist/session/session-limits.js.map +1 -1
  514. package/dist/session/session-permissions.d.ts +57 -7
  515. package/dist/session/session-permissions.d.ts.map +1 -1
  516. package/dist/session/session-permissions.js +57 -7
  517. package/dist/session/session-permissions.js.map +1 -1
  518. package/dist/session/session-store.d.ts +9 -1
  519. package/dist/session/session-store.d.ts.map +1 -1
  520. package/dist/session/session-store.js +18 -3
  521. package/dist/session/session-store.js.map +1 -1
  522. package/dist/session/session-types.d.ts +33 -4
  523. package/dist/session/session-types.d.ts.map +1 -1
  524. package/dist/session/session-types.js +9 -1
  525. package/dist/session/session-types.js.map +1 -1
  526. package/dist/signer/index.d.ts +7 -1
  527. package/dist/signer/index.d.ts.map +1 -1
  528. package/dist/signer/index.js +7 -1
  529. package/dist/signer/index.js.map +1 -1
  530. package/dist/signer/load-keypair.d.ts +25 -4
  531. package/dist/signer/load-keypair.d.ts.map +1 -1
  532. package/dist/signer/load-keypair.js +25 -4
  533. package/dist/signer/load-keypair.js.map +1 -1
  534. package/dist/signer/local-keypair-signer.d.ts +16 -2
  535. package/dist/signer/local-keypair-signer.d.ts.map +1 -1
  536. package/dist/signer/local-keypair-signer.js +16 -2
  537. package/dist/signer/local-keypair-signer.js.map +1 -1
  538. package/dist/signer/signer-resolver.d.ts +19 -2
  539. package/dist/signer/signer-resolver.d.ts.map +1 -1
  540. package/dist/signer/signer-resolver.js +26 -3
  541. package/dist/signer/signer-resolver.js.map +1 -1
  542. package/dist/signer/signer-types.d.ts +47 -5
  543. package/dist/signer/signer-types.d.ts.map +1 -1
  544. package/dist/signer/signer-types.js +13 -1
  545. package/dist/signer/signer-types.js.map +1 -1
  546. package/dist/tools/agent-start-tool.d.ts.map +1 -1
  547. package/dist/tools/agent-start-tool.js +210 -2
  548. package/dist/tools/agent-start-tool.js.map +1 -1
  549. package/dist/tools/client-sdk-tools.d.ts.map +1 -1
  550. package/dist/tools/client-sdk-tools.js +27 -2
  551. package/dist/tools/client-sdk-tools.js.map +1 -1
  552. package/dist/tools/estimate-tool-cost.d.ts +13 -0
  553. package/dist/tools/estimate-tool-cost.d.ts.map +1 -0
  554. package/dist/tools/estimate-tool-cost.js +139 -0
  555. package/dist/tools/estimate-tool-cost.js.map +1 -0
  556. package/dist/tools/index.d.ts +6 -0
  557. package/dist/tools/index.d.ts.map +1 -1
  558. package/dist/tools/index.js +7 -0
  559. package/dist/tools/index.js.map +1 -1
  560. package/dist/tools/magicblock-tools.d.ts +25 -0
  561. package/dist/tools/magicblock-tools.d.ts.map +1 -1
  562. package/dist/tools/magicblock-tools.js +116 -8
  563. package/dist/tools/magicblock-tools.js.map +1 -1
  564. package/dist/tools/perp-tools.d.ts +39 -0
  565. package/dist/tools/perp-tools.d.ts.map +1 -0
  566. package/dist/tools/perp-tools.js +1110 -0
  567. package/dist/tools/perp-tools.js.map +1 -0
  568. package/dist/tools/premium-tools.d.ts +8 -0
  569. package/dist/tools/premium-tools.d.ts.map +1 -0
  570. package/dist/tools/premium-tools.js +732 -0
  571. package/dist/tools/premium-tools.js.map +1 -0
  572. package/dist/tools/register-tools.d.ts.map +1 -1
  573. package/dist/tools/register-tools.js +9 -0
  574. package/dist/tools/register-tools.js.map +1 -1
  575. package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
  576. package/dist/tools/sap-sdk-tools.js +191 -13
  577. package/dist/tools/sap-sdk-tools.js.map +1 -1
  578. package/dist/tools/x402-paid-call-tool.js +2 -2
  579. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  580. package/dist/transports/index.d.ts +6 -1
  581. package/dist/transports/index.d.ts.map +1 -1
  582. package/dist/transports/index.js +6 -1
  583. package/dist/transports/index.js.map +1 -1
  584. package/dist/transports/stdio.d.ts +17 -5
  585. package/dist/transports/stdio.d.ts.map +1 -1
  586. package/dist/transports/stdio.js +17 -5
  587. package/dist/transports/stdio.js.map +1 -1
  588. package/dist/tui/wizard-save.d.ts +88 -8
  589. package/dist/tui/wizard-save.d.ts.map +1 -1
  590. package/dist/tui/wizard-save.js +77 -8
  591. package/dist/tui/wizard-save.js.map +1 -1
  592. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +20 -4
  593. package/docs/07_ENDPOINTS_AND_CLIENTS.md +4 -1
  594. package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +16 -5
  595. package/docs/14_DESKTOP_WIZARD_RELEASE.md +3 -3
  596. package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +6 -0
  597. package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
  598. package/docs/README.md +12 -0
  599. package/package.json +8 -6
  600. package/server.json +3 -3
  601. package/skills/README.md +10 -2
  602. package/skills/sap-agent-registry/SKILL.md +27 -6
  603. package/skills/sap-discovery-indexing/SKILL.md +11 -0
  604. package/skills/sap-mcp/SKILL.md +49 -16
  605. package/skills/sap-mcp/TOOL_REFERENCE.md +20 -7
  606. package/skills/sap-operations/SKILL.md +11 -0
  607. package/skills/sap-payments-x402/SKILL.md +30 -8
@@ -0,0 +1,394 @@
1
+ /**
2
+ * @name premium/builtin-plugins
3
+ * @description Built-in premium plugin definitions and discovery helpers.
4
+ *
5
+ * Defines the core built-in public premium plugin shipped with SAP MCP:
6
+ * 1. `sap-premium-market-data` — Jupiter quotes, Pyth price ticks, threshold webhooks.
7
+ *
8
+ * Additional built-in plugin arrays are imported and merged by `listPremiumPlugins()`:
9
+ * - `TRADING_PREMIUM_PLUGINS` — Trading streams.
10
+ * - `MEME_RADAR_PREMIUM_PLUGINS` — Meme token listing, sentiment, rugpull, volume.
11
+ * - `TECH_FUNDAMENTALS_PREMIUM_PLUGINS` — GitHub activity, TVL changes, tokenomics analysis.
12
+ *
13
+ * Also provides discovery helpers (`listPremiumPlugins`, `listPremiumCapabilities`,
14
+ * `findPremiumCapability`) that merge built-in plugins with privately loaded
15
+ * manifests, and status helpers (`publicPremiumProviderStatus`,
16
+ * `premiumPrivatePluginSupport`) used by the remote server and MCP tools.
17
+ *
18
+ * @flow
19
+ * 1. MCP tool `sap_premium_plugin_catalog` → `listPremiumPlugins()` →
20
+ * merges built-in + private manifests, filters by visibility, returns clones.
21
+ * 2. MCP tool `sap_premium_create_session_plan` → `findPremiumCapability()` →
22
+ * resolves a specific plugin/capability pair for session planning.
23
+ * 3. Remote server (`remote/server.ts`) → `publicPremiumProviderStatus()` →
24
+ * exposes which provider env vars are configured.
25
+ * 4. Remote server → `premiumPrivatePluginSupport()` → reports private plugin
26
+ * loader configuration and safety contract.
27
+ *
28
+ * @module premium/builtin-plugins
29
+ */
30
+ import { loadPrivatePremiumPluginManifests, loadPrivatePremiumPluginReport, premiumDiscoveryIncludesPrivate, } from './private-manifest-loader.js';
31
+ import { TRADING_PREMIUM_PLUGINS } from './trading-capabilities.js';
32
+ import { MEME_RADAR_PREMIUM_PLUGINS } from './meme-radar-capabilities.js';
33
+ import { TECH_FUNDAMENTALS_PREMIUM_PLUGINS } from './tech-fundamentals-capabilities.js';
34
+ /* -------------------------------------------------------------------------- */
35
+ /* Shared JSON Schema fragments */
36
+ /* -------------------------------------------------------------------------- */
37
+ /**
38
+ * @description Reusable Solana address field schema. Enforces base58 length
39
+ * bounds and explicitly forbids keypair bytes. Exported as `premiumAddressField`
40
+ * for reuse by MCP tool definitions.
41
+ */
42
+ const addressField = {
43
+ type: 'string',
44
+ minLength: 32,
45
+ maxLength: 64,
46
+ description: 'Solana wallet, mint, program, or account public key in base58 form. Do not pass keypair bytes.',
47
+ };
48
+ /**
49
+ * @description Input schema for stream capabilities. Requires a stable
50
+ * `subscriptionKey` for de-duplication and allows free-form `filters`.
51
+ */
52
+ const streamInputSchema = {
53
+ type: 'object',
54
+ required: ['subscriptionKey'],
55
+ properties: {
56
+ subscriptionKey: {
57
+ type: 'string',
58
+ minLength: 3,
59
+ description: 'Stable subscription key chosen by the agent runtime so duplicate opens can be de-duplicated.',
60
+ },
61
+ filters: {
62
+ type: 'object',
63
+ additionalProperties: true,
64
+ description: 'Narrow filters such as mint, wallet, protocol, agentId, capability, priceFeedId, or threshold.',
65
+ },
66
+ },
67
+ additionalProperties: false,
68
+ };
69
+ /**
70
+ * @description Output schema for stream capabilities. Each event carries a
71
+ * stable id, type, ISO timestamp, and a versioned provider-specific payload.
72
+ */
73
+ const streamOutputSchema = {
74
+ type: 'object',
75
+ required: ['eventId', 'eventType', 'observedAt', 'payload'],
76
+ properties: {
77
+ eventId: {
78
+ type: 'string',
79
+ description: 'Stable event id suitable for idempotent processing and replay detection.',
80
+ },
81
+ eventType: {
82
+ type: 'string',
83
+ description: 'Premium stream event type emitted by this capability.',
84
+ },
85
+ observedAt: {
86
+ type: 'string',
87
+ format: 'date-time',
88
+ description: 'ISO timestamp when SAP MCP observed or emitted the event.',
89
+ },
90
+ payload: {
91
+ type: 'object',
92
+ additionalProperties: true,
93
+ description: 'Provider-specific event payload. Schemas are versioned per premium plugin manifest.',
94
+ },
95
+ },
96
+ additionalProperties: false,
97
+ };
98
+ /**
99
+ * @description Input schema for webhook capabilities. Requires an HTTPS
100
+ * `targetUrl` (localhost/private networks rejected by providers) and a
101
+ * non-empty `events` array. Optional `signingPublicKey` for signature verification.
102
+ */
103
+ const webhookInputSchema = {
104
+ type: 'object',
105
+ required: ['targetUrl', 'events'],
106
+ properties: {
107
+ targetUrl: {
108
+ type: 'string',
109
+ format: 'uri',
110
+ description: 'HTTPS webhook target owned by the buyer. Localhost and private network URLs are rejected by providers.',
111
+ },
112
+ events: {
113
+ type: 'array',
114
+ minItems: 1,
115
+ items: { type: 'string', description: 'Event id listed in the capability delivery contract.' },
116
+ description: 'Exact event ids to deliver to this webhook subscription.',
117
+ },
118
+ signingPublicKey: {
119
+ type: 'string',
120
+ description: 'Optional public key used by the consumer to verify webhook signatures.',
121
+ },
122
+ },
123
+ additionalProperties: false,
124
+ };
125
+ /**
126
+ * @description Output schema for webhook deliveries. Includes a delivery id,
127
+ * event type, timestamp, provider signature, and versioned payload.
128
+ */
129
+ const webhookOutputSchema = {
130
+ type: 'object',
131
+ required: ['deliveryId', 'eventType', 'deliveredAt', 'signature', 'payload'],
132
+ properties: {
133
+ deliveryId: { type: 'string', description: 'Idempotent webhook delivery id.' },
134
+ eventType: { type: 'string', description: 'Delivered premium event type.' },
135
+ deliveredAt: { type: 'string', format: 'date-time', description: 'ISO timestamp for delivery attempt.' },
136
+ signature: { type: 'string', description: 'Provider signature over deliveryId, deliveredAt, and payload.' },
137
+ payload: { type: 'object', additionalProperties: true, description: 'Versioned event payload.' },
138
+ },
139
+ additionalProperties: false,
140
+ };
141
+ /* -------------------------------------------------------------------------- */
142
+ /* Capability factory helpers */
143
+ /* -------------------------------------------------------------------------- */
144
+ /**
145
+ * @name streamCapability
146
+ * @description Factory for building a `stream`-type premium capability definition.
147
+ *
148
+ * Sets status to `requires-provider` when any env vars are declared, otherwise
149
+ * `planned`. Uses `x402-per-minute` pricing with 1–120 minute bounds and
150
+ * MCP streamable HTTP transport with 750ms latency target and 300s replay window.
151
+ *
152
+ * @param id - Capability id (e.g. `jupiter.quote.delta`).
153
+ * @param title - Human-readable label.
154
+ * @param description - Agent-facing description with payment boundary.
155
+ * @param events - Event ids this stream can emit.
156
+ * @param unitPriceUsd - Price per minute in USD.
157
+ * @param providerEnv - Env var names required for provider readiness.
158
+ * @returns A complete `PremiumCapabilityDefinition` with type `stream`.
159
+ *
160
+ * @internal
161
+ */
162
+ function streamCapability(id, title, description, events, unitPriceUsd, providerEnv) {
163
+ return {
164
+ id,
165
+ type: 'stream',
166
+ title,
167
+ description,
168
+ status: providerEnv.length > 0 ? 'requires-provider' : 'planned',
169
+ requiresProvider: providerEnv.length > 0,
170
+ providerEnv,
171
+ inputSchema: streamInputSchema,
172
+ outputSchema: streamOutputSchema,
173
+ pricing: {
174
+ tier: 'premium-stream',
175
+ model: 'x402-per-minute',
176
+ unit: 'minute',
177
+ unitPriceUsd,
178
+ minUnits: 1,
179
+ maxUnits: 120,
180
+ settlement: 'x402',
181
+ },
182
+ delivery: {
183
+ transport: 'mcp-streamable-http',
184
+ events,
185
+ latencyTargetMs: 750,
186
+ replayWindowSeconds: 300,
187
+ },
188
+ };
189
+ }
190
+ /**
191
+ * @name webhookCapability
192
+ * @description Factory for building a `webhook`-type premium capability definition.
193
+ *
194
+ * Sets status to `requires-provider` when any env vars are declared, otherwise
195
+ * `planned`. Uses `x402-per-event` pricing with 10–100 000 event bounds and
196
+ * webhook HTTP transport with 1500ms latency target and 900s replay window.
197
+ *
198
+ * @param id - Capability id (e.g. `price.threshold.crossed`).
199
+ * @param title - Human-readable label.
200
+ * @param description - Agent-facing description with payment boundary.
201
+ * @param events - Event ids this webhook can deliver.
202
+ * @param unitPriceUsd - Price per event in USD.
203
+ * @param providerEnv - Env var names required for provider readiness.
204
+ * @returns A complete `PremiumCapabilityDefinition` with type `webhook`.
205
+ *
206
+ * @internal
207
+ */
208
+ function webhookCapability(id, title, description, events, unitPriceUsd, providerEnv) {
209
+ return {
210
+ id,
211
+ type: 'webhook',
212
+ title,
213
+ description,
214
+ status: providerEnv.length > 0 ? 'requires-provider' : 'planned',
215
+ requiresProvider: providerEnv.length > 0,
216
+ providerEnv,
217
+ inputSchema: webhookInputSchema,
218
+ outputSchema: webhookOutputSchema,
219
+ pricing: {
220
+ tier: 'premium-webhook',
221
+ model: 'x402-per-event',
222
+ unit: 'event',
223
+ unitPriceUsd,
224
+ minUnits: 10,
225
+ maxUnits: 100_000,
226
+ settlement: 'x402',
227
+ },
228
+ delivery: {
229
+ transport: 'webhook-http',
230
+ events,
231
+ latencyTargetMs: 1_500,
232
+ replayWindowSeconds: 900,
233
+ },
234
+ };
235
+ }
236
+ /* -------------------------------------------------------------------------- */
237
+ /* Built-in plugin catalog */
238
+ /* -------------------------------------------------------------------------- */
239
+ /**
240
+ * @name BUILTIN_PREMIUM_PLUGINS
241
+ * @description The built-in public premium plugins shipped with SAP MCP.
242
+ *
243
+ * These are always available (no env vars needed for discovery) and serve as
244
+ * the reference implementations for the premium plugin manifest format.
245
+ * Additional plugin arrays (`TRADING_PREMIUM_PLUGINS`,
246
+ * `MEME_RADAR_PREMIUM_PLUGINS`, `TECH_FUNDAMENTALS_PREMIUM_PLUGINS`) are merged
247
+ * in `listPremiumPlugins()`.
248
+ *
249
+ * @type {PremiumPluginManifest[]}
250
+ *
251
+ * @usedBy `listPremiumPlugins()` as the base catalog merged with private manifests.
252
+ */
253
+ export const BUILTIN_PREMIUM_PLUGINS = [
254
+ {
255
+ id: 'sap-premium-market-data',
256
+ version: '0.1.0',
257
+ title: 'SAP Premium Market Data',
258
+ description: 'Paid low-latency market stream contracts for quotes, prices, route changes, and threshold events.',
259
+ publisher: 'OOBE Protocol',
260
+ visibility: 'public',
261
+ capabilities: [
262
+ streamCapability('jupiter.quote.delta', 'Jupiter quote delta stream', 'Streams quote deltas for exact mints and amounts so agents can react without repeated broad polling.', ['quote.delta', 'route.changed', 'price.impact.changed'], 0.02, ['SAP_MCP_PREMIUM_JUPITER_STREAM_URL']),
263
+ streamCapability('pyth.price.tick', 'Pyth price tick stream', 'Streams price ticks for explicit Pyth feed ids with bounded replay and x402 metering.', ['price.tick', 'confidence.changed', 'feed.stale'], 0.015, ['SAP_MCP_PREMIUM_PYTH_STREAM_URL']),
264
+ webhookCapability('price.threshold.crossed', 'Price threshold webhook', 'Delivers signed HTTPS callbacks when configured mint/feed thresholds cross.', ['price.threshold.crossed'], 0.001, ['SAP_MCP_PREMIUM_WEBHOOK_SIGNER']),
265
+ ],
266
+ },
267
+ ];
268
+ /**
269
+ * @name clonePlugin
270
+ * @description Deep-clone a plugin manifest via JSON serialization.
271
+ *
272
+ * Ensures callers cannot mutate the internal built-in or loaded manifest objects.
273
+ *
274
+ * @param plugin - The manifest to clone.
275
+ * @returns A deep copy of the manifest.
276
+ *
277
+ * @internal
278
+ */
279
+ function clonePlugin(plugin) {
280
+ return JSON.parse(JSON.stringify(plugin));
281
+ }
282
+ /**
283
+ * @name listPremiumPlugins
284
+ * @description Return all discoverable premium plugins (built-in + private).
285
+ *
286
+ * Merges `BUILTIN_PREMIUM_PLUGINS` with privately loaded manifests, filters by
287
+ * visibility (public always; private/enterprise only when `includePrivate` is
288
+ * true or `SAP_MCP_PREMIUM_EXPOSE_PRIVATE_DISCOVERY=true`), and returns deep
289
+ * clones to prevent external mutation.
290
+ *
291
+ * @param options - Discovery options (see `PremiumPluginListOptions`).
292
+ * @returns Array of `PremiumPluginManifest` clones.
293
+ *
294
+ * @usedBy
295
+ * - `premium-tools.ts` → MCP tool `sap_premium_plugin_catalog`.
296
+ * - `remote/server.ts` → landing page plugin listing.
297
+ * - `listPremiumCapabilities`, `findPremiumCapability` (internally).
298
+ */
299
+ export function listPremiumPlugins(options = {}) {
300
+ const includePrivate = options.includePrivate ?? premiumDiscoveryIncludesPrivate();
301
+ const plugins = [
302
+ ...BUILTIN_PREMIUM_PLUGINS,
303
+ ...TRADING_PREMIUM_PLUGINS,
304
+ ...MEME_RADAR_PREMIUM_PLUGINS,
305
+ ...TECH_FUNDAMENTALS_PREMIUM_PLUGINS,
306
+ ...loadPrivatePremiumPluginManifests(),
307
+ ];
308
+ return plugins
309
+ .filter(plugin => plugin.visibility === 'public' || includePrivate)
310
+ .map(clonePlugin);
311
+ }
312
+ /**
313
+ * @name listPremiumCapabilities
314
+ * @description Return all capabilities across all discoverable plugins,
315
+ * optionally filtered by capability type.
316
+ *
317
+ * @param type - Optional filter: `stream`, `webhook`, or `tool`.
318
+ * @param options - Discovery options (see `PremiumPluginListOptions`).
319
+ * @returns Array of `PremiumCapabilityDefinition` clones (shallow-copied).
320
+ *
321
+ * @usedBy `publicPremiumProviderStatus` (internally), MCP tools.
322
+ */
323
+ export function listPremiumCapabilities(type, options = {}) {
324
+ return listPremiumPlugins(options).flatMap(plugin => plugin.capabilities
325
+ .filter(capability => !type || capability.type === type)
326
+ .map(capability => ({ ...capability })));
327
+ }
328
+ /**
329
+ * @name findPremiumCapability
330
+ * @description Resolve a specific plugin/capability pair by id.
331
+ *
332
+ * @param pluginId - The plugin id to search for.
333
+ * @param capabilityId - The capability id within that plugin.
334
+ * @param type - Optional capability type filter.
335
+ * @param options - Discovery options (see `PremiumPluginListOptions`).
336
+ * @returns `{ plugin, capability }` if found, otherwise `null`.
337
+ *
338
+ * @usedBy `session-manager.ts:createPremiumSessionPlan` → resolves the
339
+ * capability for pricing bounds and provider env checks.
340
+ */
341
+ export function findPremiumCapability(pluginId, capabilityId, type, options = {}) {
342
+ const plugin = listPremiumPlugins(options).find(candidate => candidate.id === pluginId);
343
+ const capability = plugin?.capabilities.find(candidate => candidate.id === capabilityId && (!type || candidate.type === type));
344
+ return plugin && capability ? { plugin, capability } : null;
345
+ }
346
+ /**
347
+ * @name publicPremiumProviderStatus
348
+ * @description Return a map of all provider env var names to their current
349
+ * readiness state (true/false based on `process.env`).
350
+ *
351
+ * Used by the remote server to expose which premium providers are configured
352
+ * without revealing secret values.
353
+ *
354
+ * @returns Record keyed by env var name, value is boolean readiness.
355
+ *
356
+ * @usedBy `remote/server.ts` → provider status endpoint.
357
+ */
358
+ export function publicPremiumProviderStatus() {
359
+ const envNames = new Set(listPremiumCapabilities().flatMap(capability => capability.providerEnv));
360
+ return Object.fromEntries([...envNames].sort().map(name => [name, Boolean(process.env[name])]));
361
+ }
362
+ /**
363
+ * @name premiumPrivatePluginSupport
364
+ * @description Return a diagnostic object describing the private plugin
365
+ * loader configuration, loaded/rejected manifest counts, and the safety contract.
366
+ *
367
+ * Used by the remote server and MCP tools to report private plugin support
368
+ * status without exposing any enterprise code or secrets.
369
+ *
370
+ * @returns Object with `enabled`, `exposePrivateDiscovery`, `loadedManifestCount`,
371
+ * `rejectedManifestCount`, `loaderEnv`, `contract`, and `safety` fields.
372
+ *
373
+ * @usedBy `remote/server.ts`, `premium-tools.ts`.
374
+ */
375
+ export function premiumPrivatePluginSupport() {
376
+ const privateReport = loadPrivatePremiumPluginReport();
377
+ return {
378
+ enabled: process.env.SAP_MCP_ENABLE_PREMIUM_PLUGINS === 'true',
379
+ exposePrivateDiscovery: premiumDiscoveryIncludesPrivate(),
380
+ loadedManifestCount: privateReport.loadedManifests.length,
381
+ rejectedManifestCount: privateReport.rejectedManifests.length,
382
+ loaderEnv: ['SAP_MCP_ENABLE_PREMIUM_PLUGINS', 'SAP_MCP_PLUGIN_DIR', 'SAP_MCP_PREMIUM_EXPOSE_PRIVATE_DISCOVERY'],
383
+ contract: 'Private premium plugins must ship a manifest that passes sap_premium_validate_plugin_manifest. The public SAP MCP repo only exposes the contract; enterprise plugin code and provider secrets stay outside the open repo.',
384
+ safety: 'Plugin manifests are data only. SAP MCP does not execute plugin code from user input, and provider secrets are never exposed through public metadata.',
385
+ };
386
+ }
387
+ /**
388
+ * @name premiumAddressField
389
+ * @description Re-exported reusable Solana address JSON Schema fragment.
390
+ *
391
+ * Used by MCP tool definitions that accept a Solana public key argument.
392
+ */
393
+ export const premiumAddressField = addressField;
394
+ //# sourceMappingURL=builtin-plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-plugins.js","sourceRoot":"","sources":["../../src/premium/builtin-plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @name premium/event-store
3
+ * @description In-memory event store for premium event replay and idempotency.
4
+ *
5
+ * Every event delivered through the stream broker or webhook engine is recorded
6
+ * here. The store supports:
7
+ * - append with `eventId` deduplication (idempotency)
8
+ * - query by session, event type, or time window
9
+ * - automatic eviction of events past their replay window
10
+ *
11
+ * @flow
12
+ * 1. `stream-broker.ts` / `webhook-engine.ts` deliver an event →
13
+ * `appendEvent()` stores it (dedup by `eventId`).
14
+ * 2. `stream-broker.ts` reconnects a client → `getEvents()` replays past
15
+ * events within the replay window.
16
+ * 3. Pruning runs on every append/query to evict events past their
17
+ * `replayWindowSeconds` per capability.
18
+ *
19
+ * @module premium/event-store
20
+ */
21
+ import type { PremiumEventQuery, PremiumEventRecord } from './types.js';
22
+ /**
23
+ * @name appendEvent
24
+ * @description Append a premium event to the store with idempotency.
25
+ *
26
+ * If an event with the same `eventId` already exists, it is not duplicated.
27
+ * The store is pruned after each append.
28
+ *
29
+ * @param record - The event record to append.
30
+ * @returns True if the event was newly inserted, false if it was a duplicate.
31
+ *
32
+ * @usedBy `stream-broker.ts`, `webhook-engine.ts`
33
+ */
34
+ export declare function appendEvent(record: PremiumEventRecord): boolean;
35
+ /**
36
+ * @name getEvents
37
+ * @description Query events from the store with optional filters.
38
+ *
39
+ * @param query - Filter criteria (sessionId, eventType, since, limit).
40
+ * @returns Array of matching event records, ordered by `deliveredAt` ascending.
41
+ *
42
+ * @usedBy `stream-broker.ts` (replay), `premium-tools.ts` (audit)
43
+ */
44
+ export declare function getEvents(query?: PremiumEventQuery): PremiumEventRecord[];
45
+ /**
46
+ * @name getEventCount
47
+ * @description Return the total number of stored events.
48
+ *
49
+ * @usedBy `metrics.ts`
50
+ */
51
+ export declare function getEventCount(): number;
52
+ /**
53
+ * @name clearAllEvents
54
+ * @description Clear all events from the store.
55
+ *
56
+ * Used in tests and during graceful server shutdown.
57
+ *
58
+ * @internal
59
+ */
60
+ export declare function clearAllEvents(): void;
61
+ //# sourceMappingURL=event-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../../src/premium/event-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAoBxE;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAM/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,GAAE,iBAAsB,GAAG,kBAAkB,EAAE,CAc7E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AA+BD;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * @name premium/event-store
3
+ * @description In-memory event store for premium event replay and idempotency.
4
+ *
5
+ * Every event delivered through the stream broker or webhook engine is recorded
6
+ * here. The store supports:
7
+ * - append with `eventId` deduplication (idempotency)
8
+ * - query by session, event type, or time window
9
+ * - automatic eviction of events past their replay window
10
+ *
11
+ * @flow
12
+ * 1. `stream-broker.ts` / `webhook-engine.ts` deliver an event →
13
+ * `appendEvent()` stores it (dedup by `eventId`).
14
+ * 2. `stream-broker.ts` reconnects a client → `getEvents()` replays past
15
+ * events within the replay window.
16
+ * 3. Pruning runs on every append/query to evict events past their
17
+ * `replayWindowSeconds` per capability.
18
+ *
19
+ * @module premium/event-store
20
+ */
21
+ /**
22
+ * @description In-memory event records keyed by `eventId` for O(1) dedup.
23
+ */
24
+ const eventMap = new Map();
25
+ /**
26
+ * @description Hard cap on stored events to prevent unbounded memory growth.
27
+ *
28
+ * Default: 500_000 (tuned for a 312GB RAM production server).
29
+ * Each event is ~1KB, so 500K events ≈ 500MB.
30
+ * Override via `SAP_MCP_PREMIUM_MAX_EVENTS` env var.
31
+ */
32
+ const MAX_STORED_EVENTS = (() => {
33
+ const raw = process.env.SAP_MCP_PREMIUM_MAX_EVENTS;
34
+ const parsed = Number(raw);
35
+ return Number.isFinite(parsed) && parsed > 0 ? Math.trunc(parsed) : 500_000;
36
+ })();
37
+ /**
38
+ * @name appendEvent
39
+ * @description Append a premium event to the store with idempotency.
40
+ *
41
+ * If an event with the same `eventId` already exists, it is not duplicated.
42
+ * The store is pruned after each append.
43
+ *
44
+ * @param record - The event record to append.
45
+ * @returns True if the event was newly inserted, false if it was a duplicate.
46
+ *
47
+ * @usedBy `stream-broker.ts`, `webhook-engine.ts`
48
+ */
49
+ export function appendEvent(record) {
50
+ if (eventMap.has(record.eventId))
51
+ return false;
52
+ eventMap.set(record.eventId, record);
53
+ pruneOldEvents();
54
+ return true;
55
+ }
56
+ /**
57
+ * @name getEvents
58
+ * @description Query events from the store with optional filters.
59
+ *
60
+ * @param query - Filter criteria (sessionId, eventType, since, limit).
61
+ * @returns Array of matching event records, ordered by `deliveredAt` ascending.
62
+ *
63
+ * @usedBy `stream-broker.ts` (replay), `premium-tools.ts` (audit)
64
+ */
65
+ export function getEvents(query = {}) {
66
+ const limit = query.limit ?? 1_000;
67
+ const sinceMs = query.since ? new Date(query.since).getTime() : 0;
68
+ const results = [];
69
+ for (const record of eventMap.values()) {
70
+ if (query.sessionId && record.sessionId !== query.sessionId)
71
+ continue;
72
+ if (query.eventType && record.eventType !== query.eventType)
73
+ continue;
74
+ if (sinceMs > 0 && new Date(record.deliveredAt).getTime() < sinceMs)
75
+ continue;
76
+ results.push(record);
77
+ if (results.length >= limit)
78
+ break;
79
+ }
80
+ return results.sort((a, b) => new Date(a.deliveredAt).getTime() - new Date(b.deliveredAt).getTime());
81
+ }
82
+ /**
83
+ * @name getEventCount
84
+ * @description Return the total number of stored events.
85
+ *
86
+ * @usedBy `metrics.ts`
87
+ */
88
+ export function getEventCount() {
89
+ return eventMap.size;
90
+ }
91
+ /**
92
+ * @name pruneOldEvents
93
+ * @description Evict events older than 24 hours or when the store exceeds
94
+ * `MAX_STORED_EVENTS`. The oldest events are evicted first.
95
+ *
96
+ * @internal
97
+ */
98
+ function pruneOldEvents() {
99
+ if (eventMap.size <= MAX_STORED_EVENTS) {
100
+ // Also evict events older than 24 hours.
101
+ const cutoff = Date.now() - 24 * 60 * 60 * 1000;
102
+ for (const [eventId, record] of eventMap.entries()) {
103
+ if (new Date(record.deliveredAt).getTime() < cutoff) {
104
+ eventMap.delete(eventId);
105
+ }
106
+ }
107
+ return;
108
+ }
109
+ // Over cap: evict oldest entries by insertion order.
110
+ const toEvict = eventMap.size - MAX_STORED_EVENTS;
111
+ let evicted = 0;
112
+ for (const eventId of eventMap.keys()) {
113
+ if (evicted >= toEvict)
114
+ break;
115
+ eventMap.delete(eventId);
116
+ evicted++;
117
+ }
118
+ }
119
+ /**
120
+ * @name clearAllEvents
121
+ * @description Clear all events from the store.
122
+ *
123
+ * Used in tests and during graceful server shutdown.
124
+ *
125
+ * @internal
126
+ */
127
+ export function clearAllEvents() {
128
+ eventMap.clear();
129
+ }
130
+ //# sourceMappingURL=event-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../src/premium/event-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH;;GAEG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9E,CAAC,CAAC,EAAE,CAAC;AAEL;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,MAA0B;IACpD,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,cAAc,EAAE,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,QAA2B,EAAE;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YAAE,SAAS;QACtE,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YAAE,SAAS;QACtE,IAAI,OAAO,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO;YAAE,SAAS;QAC9E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK;YAAE,MAAM;IACrC,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACvG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc;IACrB,IAAI,QAAQ,CAAC,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACvC,yCAAyC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAChD,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACnD,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;gBACpD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,qDAAqD;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,OAAO,IAAI,OAAO;YAAE,MAAM;QAC9B,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc;IAC5B,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @name premium/index
3
+ * @description Barrel export for the SAP MCP Premium plugin subsystem.
4
+ *
5
+ * Re-exports every public module in the premium layer so external consumers
6
+ * (MCP tools, remote server, tests) can import from a single entry point:
7
+ *
8
+ * ```ts
9
+ * import {
10
+ * listPremiumPlugins,
11
+ * createPremiumSessionPlan,
12
+ * activatePremiumSession,
13
+ * startStream,
14
+ * streamEvents,
15
+ * registerWebhook,
16
+ * getPremiumMetrics,
17
+ * validatePremiumPluginManifest,
18
+ * type PremiumPluginManifest,
19
+ * } from '../premium/index.js';
20
+ * ```
21
+ *
22
+ * @flow
23
+ * Import order matters only for readability, not for runtime:
24
+ * 1. `builtin-plugins` — Built-in plugin definitions and discovery helpers.
25
+ * 2. `manifest-builder` — Template generation for custom plugin authors.
26
+ * 3. `private-manifest-loader` — Filesystem loader for enterprise manifests.
27
+ * 4. `plugin-validator` — Manifest validation against strict schema rules.
28
+ * 5. `session-manager` — In-memory session plan lifecycle.
29
+ * 6. `activation-manager` — x402/pay.sh receipt binding and session activation.
30
+ * 7. `event-store` — Replay and idempotency store for delivered events.
31
+ * 8. `provider-bridge` — Dynamic loader for private provider adapters.
32
+ * 9. `stream-broker` — SSE stream delivery for premium real-time events.
33
+ * 10. `webhook-engine` — Signed webhook delivery for premium event callbacks.
34
+ * 11. `metrics` — Premium subsystem metrics snapshot.
35
+ * 12. `types` — All TypeScript type declarations.
36
+ *
37
+ * @module premium/index
38
+ */
39
+ export * from './builtin-plugins.js';
40
+ export * from './trading-capabilities.js';
41
+ export * from './meme-radar-capabilities.js';
42
+ export * from './tech-fundamentals-capabilities.js';
43
+ export * from './manifest-builder.js';
44
+ export * from './private-manifest-loader.js';
45
+ export * from './plugin-validator.js';
46
+ export * from './session-manager.js';
47
+ export * from './activation-manager.js';
48
+ export * from './event-store.js';
49
+ export * from './provider-bridge.js';
50
+ export * from './stream-broker.js';
51
+ export * from './webhook-engine.js';
52
+ export * from './metrics.js';
53
+ export * from './types.js';
54
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/premium/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}