@oobe-protocol-labs/sap-mcp-server 0.9.16 → 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 (602) hide show
  1. package/.env.example +8 -7
  2. package/CHANGELOG.md +199 -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 +1 -0
  140. package/dist/payments/pricing.d.ts.map +1 -1
  141. package/dist/payments/pricing.js +64 -8
  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.js +20 -1
  547. package/dist/tools/agent-start-tool.js.map +1 -1
  548. package/dist/tools/client-sdk-tools.d.ts.map +1 -1
  549. package/dist/tools/client-sdk-tools.js +27 -2
  550. package/dist/tools/client-sdk-tools.js.map +1 -1
  551. package/dist/tools/estimate-tool-cost.d.ts +13 -0
  552. package/dist/tools/estimate-tool-cost.d.ts.map +1 -0
  553. package/dist/tools/estimate-tool-cost.js +139 -0
  554. package/dist/tools/estimate-tool-cost.js.map +1 -0
  555. package/dist/tools/index.d.ts +6 -0
  556. package/dist/tools/index.d.ts.map +1 -1
  557. package/dist/tools/index.js +7 -0
  558. package/dist/tools/index.js.map +1 -1
  559. package/dist/tools/magicblock-tools.d.ts +25 -0
  560. package/dist/tools/magicblock-tools.d.ts.map +1 -1
  561. package/dist/tools/magicblock-tools.js +116 -8
  562. package/dist/tools/magicblock-tools.js.map +1 -1
  563. package/dist/tools/perp-tools.d.ts +39 -0
  564. package/dist/tools/perp-tools.d.ts.map +1 -0
  565. package/dist/tools/perp-tools.js +1110 -0
  566. package/dist/tools/perp-tools.js.map +1 -0
  567. package/dist/tools/premium-tools.d.ts +8 -0
  568. package/dist/tools/premium-tools.d.ts.map +1 -0
  569. package/dist/tools/premium-tools.js +732 -0
  570. package/dist/tools/premium-tools.js.map +1 -0
  571. package/dist/tools/register-tools.d.ts.map +1 -1
  572. package/dist/tools/register-tools.js +9 -0
  573. package/dist/tools/register-tools.js.map +1 -1
  574. package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
  575. package/dist/tools/sap-sdk-tools.js +42 -32
  576. package/dist/tools/sap-sdk-tools.js.map +1 -1
  577. package/dist/tools/x402-paid-call-tool.js +2 -2
  578. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  579. package/dist/transports/index.d.ts +6 -1
  580. package/dist/transports/index.d.ts.map +1 -1
  581. package/dist/transports/index.js +6 -1
  582. package/dist/transports/index.js.map +1 -1
  583. package/dist/transports/stdio.d.ts +17 -5
  584. package/dist/transports/stdio.d.ts.map +1 -1
  585. package/dist/transports/stdio.js +17 -5
  586. package/dist/transports/stdio.js.map +1 -1
  587. package/dist/tui/wizard-save.d.ts +88 -8
  588. package/dist/tui/wizard-save.d.ts.map +1 -1
  589. package/dist/tui/wizard-save.js +77 -8
  590. package/dist/tui/wizard-save.js.map +1 -1
  591. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +3 -3
  592. package/docs/07_ENDPOINTS_AND_CLIENTS.md +4 -1
  593. package/docs/14_DESKTOP_WIZARD_RELEASE.md +3 -3
  594. package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +6 -0
  595. package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
  596. package/docs/README.md +12 -0
  597. package/package.json +8 -9
  598. package/server.json +3 -3
  599. package/skills/sap-agent-registry/SKILL.md +6 -0
  600. package/skills/sap-mcp/SKILL.md +27 -4
  601. package/skills/sap-mcp/TOOL_REFERENCE.md +4 -1
  602. package/skills/sap-payments-x402/SKILL.md +22 -8
@@ -0,0 +1,131 @@
1
+ /**
2
+ * @name premium/activation-manager
3
+ * @description Session activation manager for x402/pay.sh receipt binding.
4
+ *
5
+ * After a buyer creates a session plan (status `pending_payment`) and settles
6
+ * the x402/pay.sh challenge on the delivery rail, the activation manager
7
+ * verifies the receipt and transitions the session to `active`.
8
+ *
9
+ * The activation manager is deliberately decoupled from the x402 facilitator:
10
+ * it accepts an opaque `paymentReceipt` string that the caller (HTTP endpoint
11
+ * or MCP tool) has already verified against the x402/pay.sh rail. This keeps
12
+ * the premium layer testable without a live facilitator.
13
+ *
14
+ * @flow
15
+ * 1. Buyer settles x402 challenge → receives `paymentReceipt` string.
16
+ * 2. Buyer calls `POST /premium/activate` or MCP tool `sap_premium_activate_session`.
17
+ * 3. → `activateSession()` verifies the session is in `pending_payment` status.
18
+ * 4. → Transitions session to `active` via `session-manager.activateSession()`.
19
+ * 5. → Returns `PremiumActivationResult` with `unitsQuota` and `activatedAt`.
20
+ * 6. Stream broker / webhook engine check `status=active` before delivering.
21
+ *
22
+ * @module premium/activation-manager
23
+ */
24
+ import { activateSession } from './session-manager.js';
25
+ import { getPremiumSession } from './session-manager.js';
26
+ /**
27
+ * @name verifyReceiptFormat
28
+ * @description Basic structural validation of a payment receipt string.
29
+ *
30
+ * This does NOT verify the receipt against the x402/pay.sh facilitator — that
31
+ * is the caller's responsibility. It only checks that the receipt is a non-empty
32
+ * string of reasonable length.
33
+ *
34
+ * @param receipt - The opaque receipt string from x402/pay.sh settlement.
35
+ * @returns True if the receipt has a valid structural format.
36
+ *
37
+ * @internal
38
+ */
39
+ function verifyReceiptFormat(receipt) {
40
+ if (typeof receipt !== 'string')
41
+ return false;
42
+ if (receipt.trim().length < 8)
43
+ return false;
44
+ if (receipt.length > 2048)
45
+ return false;
46
+ return true;
47
+ }
48
+ /**
49
+ * @name activatePremiumSession
50
+ * @description Activate a pending premium session with a payment receipt.
51
+ *
52
+ * Steps:
53
+ * 1. Validate the receipt format (non-empty, reasonable length).
54
+ * 2. Look up the session via `getPremiumSession`.
55
+ * 3. Check the session is in `pending_payment` status.
56
+ * 4. Call `activateSession` to transition to `active`.
57
+ * 5. Return `PremiumActivationResult`.
58
+ *
59
+ * @param request - Activation request with session id and payment receipt.
60
+ * @returns `PremiumActivationResult` with `status=active` on success.
61
+ *
62
+ * @usedBy `premium-tools.ts` → MCP tool `sap_premium_activate_session`,
63
+ * `remote/server.ts` → `POST /premium/activate`
64
+ */
65
+ export function activatePremiumSession(request) {
66
+ if (!verifyReceiptFormat(request.paymentReceipt)) {
67
+ return {
68
+ sessionId: request.sessionId,
69
+ status: 'pending_payment',
70
+ activatedAt: null,
71
+ receiptBound: false,
72
+ unitsQuota: 0,
73
+ reason: 'Invalid payment receipt format. Ensure the x402/pay.sh receipt is a non-empty string.',
74
+ };
75
+ }
76
+ const session = getPremiumSession(request.sessionId);
77
+ if (!session) {
78
+ return {
79
+ sessionId: request.sessionId,
80
+ status: 'expired',
81
+ activatedAt: null,
82
+ receiptBound: false,
83
+ unitsQuota: 0,
84
+ reason: 'Session not found. Create a fresh session plan before activation.',
85
+ };
86
+ }
87
+ if (session.status === 'blocked_requires_provider') {
88
+ return {
89
+ sessionId: request.sessionId,
90
+ status: 'blocked_requires_provider',
91
+ activatedAt: null,
92
+ receiptBound: false,
93
+ unitsQuota: 0,
94
+ reason: 'Provider is not ready. Configure provider env vars before activating.',
95
+ };
96
+ }
97
+ if (session.status === 'expired') {
98
+ return {
99
+ sessionId: request.sessionId,
100
+ status: 'expired',
101
+ activatedAt: null,
102
+ receiptBound: false,
103
+ unitsQuota: 0,
104
+ reason: 'Session has expired. Create a fresh session plan.',
105
+ };
106
+ }
107
+ if (session.status === 'active') {
108
+ return {
109
+ sessionId: request.sessionId,
110
+ status: 'active',
111
+ activatedAt: session.createdAt,
112
+ receiptBound: true,
113
+ unitsQuota: session.requestedUnits,
114
+ reason: 'Session is already active.',
115
+ };
116
+ }
117
+ if (session.status === 'closed') {
118
+ return {
119
+ sessionId: request.sessionId,
120
+ status: 'closed',
121
+ activatedAt: null,
122
+ receiptBound: false,
123
+ unitsQuota: 0,
124
+ reason: 'Session has been closed. Create a fresh session plan.',
125
+ };
126
+ }
127
+ // Status is pending_payment — activate.
128
+ const result = activateSession(request.sessionId);
129
+ return result;
130
+ }
131
+ //# sourceMappingURL=activation-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activation-manager.js","sourceRoot":"","sources":["../../src/premium/activation-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;;;;;;;;;GAYG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAiC;IACtE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACjD,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,iBAAiB;YACzB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,uFAAuF;SAChG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,mEAAmE;SAC5E,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,2BAA2B,EAAE,CAAC;QACnD,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,2BAA2B;YACnC,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,uEAAuE;SAChF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,mDAAmD;SAC5D,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,OAAO,CAAC,SAAS;YAC9B,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,cAAc;YAClC,MAAM,EAAE,4BAA4B;SACrC,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,uDAAuD;SAChE,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,143 @@
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 type { PremiumCapabilityDefinition, PremiumCapabilityType, PremiumPluginManifest } from './types.js';
31
+ /**
32
+ * @name BUILTIN_PREMIUM_PLUGINS
33
+ * @description The built-in public premium plugins shipped with SAP MCP.
34
+ *
35
+ * These are always available (no env vars needed for discovery) and serve as
36
+ * the reference implementations for the premium plugin manifest format.
37
+ * Additional plugin arrays (`TRADING_PREMIUM_PLUGINS`,
38
+ * `MEME_RADAR_PREMIUM_PLUGINS`, `TECH_FUNDAMENTALS_PREMIUM_PLUGINS`) are merged
39
+ * in `listPremiumPlugins()`.
40
+ *
41
+ * @type {PremiumPluginManifest[]}
42
+ *
43
+ * @usedBy `listPremiumPlugins()` as the base catalog merged with private manifests.
44
+ */
45
+ export declare const BUILTIN_PREMIUM_PLUGINS: PremiumPluginManifest[];
46
+ /**
47
+ * @name PremiumPluginListOptions
48
+ * @description Options controlling which plugins are included in discovery.
49
+ *
50
+ * @property includePrivate - When true, `private` and `enterprise` visibility
51
+ * plugins are included. Defaults to the value of
52
+ * `SAP_MCP_PREMIUM_EXPOSE_PRIVATE_DISCOVERY` env var.
53
+ */
54
+ export interface PremiumPluginListOptions {
55
+ includePrivate?: boolean;
56
+ }
57
+ /**
58
+ * @name listPremiumPlugins
59
+ * @description Return all discoverable premium plugins (built-in + private).
60
+ *
61
+ * Merges `BUILTIN_PREMIUM_PLUGINS` with privately loaded manifests, filters by
62
+ * visibility (public always; private/enterprise only when `includePrivate` is
63
+ * true or `SAP_MCP_PREMIUM_EXPOSE_PRIVATE_DISCOVERY=true`), and returns deep
64
+ * clones to prevent external mutation.
65
+ *
66
+ * @param options - Discovery options (see `PremiumPluginListOptions`).
67
+ * @returns Array of `PremiumPluginManifest` clones.
68
+ *
69
+ * @usedBy
70
+ * - `premium-tools.ts` → MCP tool `sap_premium_plugin_catalog`.
71
+ * - `remote/server.ts` → landing page plugin listing.
72
+ * - `listPremiumCapabilities`, `findPremiumCapability` (internally).
73
+ */
74
+ export declare function listPremiumPlugins(options?: PremiumPluginListOptions): PremiumPluginManifest[];
75
+ /**
76
+ * @name listPremiumCapabilities
77
+ * @description Return all capabilities across all discoverable plugins,
78
+ * optionally filtered by capability type.
79
+ *
80
+ * @param type - Optional filter: `stream`, `webhook`, or `tool`.
81
+ * @param options - Discovery options (see `PremiumPluginListOptions`).
82
+ * @returns Array of `PremiumCapabilityDefinition` clones (shallow-copied).
83
+ *
84
+ * @usedBy `publicPremiumProviderStatus` (internally), MCP tools.
85
+ */
86
+ export declare function listPremiumCapabilities(type?: PremiumCapabilityType, options?: PremiumPluginListOptions): PremiumCapabilityDefinition[];
87
+ /**
88
+ * @name findPremiumCapability
89
+ * @description Resolve a specific plugin/capability pair by id.
90
+ *
91
+ * @param pluginId - The plugin id to search for.
92
+ * @param capabilityId - The capability id within that plugin.
93
+ * @param type - Optional capability type filter.
94
+ * @param options - Discovery options (see `PremiumPluginListOptions`).
95
+ * @returns `{ plugin, capability }` if found, otherwise `null`.
96
+ *
97
+ * @usedBy `session-manager.ts:createPremiumSessionPlan` → resolves the
98
+ * capability for pricing bounds and provider env checks.
99
+ */
100
+ export declare function findPremiumCapability(pluginId: string, capabilityId: string, type?: PremiumCapabilityType, options?: PremiumPluginListOptions): {
101
+ plugin: PremiumPluginManifest;
102
+ capability: PremiumCapabilityDefinition;
103
+ } | null;
104
+ /**
105
+ * @name publicPremiumProviderStatus
106
+ * @description Return a map of all provider env var names to their current
107
+ * readiness state (true/false based on `process.env`).
108
+ *
109
+ * Used by the remote server to expose which premium providers are configured
110
+ * without revealing secret values.
111
+ *
112
+ * @returns Record keyed by env var name, value is boolean readiness.
113
+ *
114
+ * @usedBy `remote/server.ts` → provider status endpoint.
115
+ */
116
+ export declare function publicPremiumProviderStatus(): Record<string, boolean>;
117
+ /**
118
+ * @name premiumPrivatePluginSupport
119
+ * @description Return a diagnostic object describing the private plugin
120
+ * loader configuration, loaded/rejected manifest counts, and the safety contract.
121
+ *
122
+ * Used by the remote server and MCP tools to report private plugin support
123
+ * status without exposing any enterprise code or secrets.
124
+ *
125
+ * @returns Object with `enabled`, `exposePrivateDiscovery`, `loadedManifestCount`,
126
+ * `rejectedManifestCount`, `loaderEnv`, `contract`, and `safety` fields.
127
+ *
128
+ * @usedBy `remote/server.ts`, `premium-tools.ts`.
129
+ */
130
+ export declare function premiumPrivatePluginSupport(): Record<string, unknown>;
131
+ /**
132
+ * @name premiumAddressField
133
+ * @description Re-exported reusable Solana address JSON Schema fragment.
134
+ *
135
+ * Used by MCP tool definitions that accept a Solana public key argument.
136
+ */
137
+ export declare const premiumAddressField: {
138
+ type: string;
139
+ minLength: number;
140
+ maxLength: number;
141
+ description: string;
142
+ };
143
+ //# sourceMappingURL=builtin-plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-plugins.d.ts","sourceRoot":"","sources":["../../src/premium/builtin-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA+O5G;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,EAAE,qBAAqB,EAmC1D,CAAC;AAMF;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAiBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,wBAA6B,GAAG,qBAAqB,EAAE,CAYlG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,qBAAqB,EAAE,OAAO,GAAE,wBAA6B,GAAG,2BAA2B,EAAE,CAM3I;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,qBAAqB,EAC5B,OAAO,GAAE,wBAA6B,GACrC;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,UAAU,EAAE,2BAA2B,CAAA;CAAE,GAAG,IAAI,CAInF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAarE;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;CAAe,CAAC"}
@@ -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