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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (703) hide show
  1. package/.env.example +8 -7
  2. package/CHANGELOG.md +732 -1
  3. package/README.md +9 -3
  4. package/USER_DOCS/00_START_HERE.md +51 -4
  5. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
  6. package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +32 -3
  7. package/USER_DOCS/04_CLIENT_CONFIGS.md +14 -7
  8. package/USER_DOCS/05_SKILLS_AND_TOOLS.md +68 -8
  9. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +20 -14
  10. package/USER_DOCS/07_SMITHERY_AND_MARKETPLACES.md +7 -0
  11. package/config.example.json +5 -4
  12. package/config.schema.json +9 -4
  13. package/config.secure-example.json +5 -4
  14. package/dist/adapters/index.d.ts +7 -1
  15. package/dist/adapters/index.d.ts.map +1 -1
  16. package/dist/adapters/index.js +7 -1
  17. package/dist/adapters/index.js.map +1 -1
  18. package/dist/adapters/mcp/errors.d.ts +13 -1
  19. package/dist/adapters/mcp/errors.d.ts.map +1 -1
  20. package/dist/adapters/mcp/errors.js +13 -1
  21. package/dist/adapters/mcp/errors.js.map +1 -1
  22. package/dist/adapters/mcp/index.d.ts +7 -1
  23. package/dist/adapters/mcp/index.d.ts.map +1 -1
  24. package/dist/adapters/mcp/index.js +7 -1
  25. package/dist/adapters/mcp/index.js.map +1 -1
  26. package/dist/adapters/mcp/prompt-response.d.ts +13 -1
  27. package/dist/adapters/mcp/prompt-response.d.ts.map +1 -1
  28. package/dist/adapters/mcp/prompt-response.js +13 -1
  29. package/dist/adapters/mcp/prompt-response.js.map +1 -1
  30. package/dist/adapters/mcp/resource-response.d.ts +14 -1
  31. package/dist/adapters/mcp/resource-response.d.ts.map +1 -1
  32. package/dist/adapters/mcp/resource-response.js +14 -1
  33. package/dist/adapters/mcp/resource-response.js.map +1 -1
  34. package/dist/adapters/mcp/sdk-compat.d.ts +11 -3
  35. package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -1
  36. package/dist/adapters/mcp/sdk-compat.js +232 -25
  37. package/dist/adapters/mcp/sdk-compat.js.map +1 -1
  38. package/dist/adapters/mcp/tool-response.d.ts +51 -3
  39. package/dist/adapters/mcp/tool-response.d.ts.map +1 -1
  40. package/dist/adapters/mcp/tool-response.js +48 -3
  41. package/dist/adapters/mcp/tool-response.js.map +1 -1
  42. package/dist/adapters/solana/commitment.d.ts +14 -2
  43. package/dist/adapters/solana/commitment.d.ts.map +1 -1
  44. package/dist/adapters/solana/commitment.js +14 -2
  45. package/dist/adapters/solana/commitment.js.map +1 -1
  46. package/dist/adapters/solana/connection.d.ts +11 -2
  47. package/dist/adapters/solana/connection.d.ts.map +1 -1
  48. package/dist/adapters/solana/connection.js +11 -2
  49. package/dist/adapters/solana/connection.js.map +1 -1
  50. package/dist/adapters/solana/index.d.ts +7 -1
  51. package/dist/adapters/solana/index.d.ts.map +1 -1
  52. package/dist/adapters/solana/index.js +7 -1
  53. package/dist/adapters/solana/index.js.map +1 -1
  54. package/dist/adapters/solana/public-key.d.ts +11 -2
  55. package/dist/adapters/solana/public-key.d.ts.map +1 -1
  56. package/dist/adapters/solana/public-key.js +11 -2
  57. package/dist/adapters/solana/public-key.js.map +1 -1
  58. package/dist/config/defaults.d.ts +5 -0
  59. package/dist/config/defaults.d.ts.map +1 -1
  60. package/dist/config/defaults.js +5 -0
  61. package/dist/config/defaults.js.map +1 -1
  62. package/dist/config/env.d.ts +4 -0
  63. package/dist/config/env.d.ts.map +1 -1
  64. package/dist/config/env.js +15 -10
  65. package/dist/config/env.js.map +1 -1
  66. package/dist/config/index.d.ts +5 -0
  67. package/dist/config/index.d.ts.map +1 -1
  68. package/dist/config/index.js +5 -0
  69. package/dist/config/index.js.map +1 -1
  70. package/dist/config/mcp-client-injection.d.ts.map +1 -1
  71. package/dist/config/mcp-client-injection.js +136 -33
  72. package/dist/config/mcp-client-injection.js.map +1 -1
  73. package/dist/config/paths.d.ts +14 -1
  74. package/dist/config/paths.d.ts.map +1 -1
  75. package/dist/config/paths.js +20 -1
  76. package/dist/config/paths.js.map +1 -1
  77. package/dist/config/profiles.d.ts +3 -10
  78. package/dist/config/profiles.d.ts.map +1 -1
  79. package/dist/config/profiles.js +5 -0
  80. package/dist/config/profiles.js.map +1 -1
  81. package/dist/config/schema.d.ts +5 -0
  82. package/dist/config/schema.d.ts.map +1 -1
  83. package/dist/config/schema.js +5 -0
  84. package/dist/config/schema.js.map +1 -1
  85. package/dist/config/secure-config.d.ts +5 -0
  86. package/dist/config/secure-config.d.ts.map +1 -1
  87. package/dist/config/secure-config.js +5 -0
  88. package/dist/config/secure-config.js.map +1 -1
  89. package/dist/config/setup.d.ts +5 -0
  90. package/dist/config/setup.d.ts.map +1 -1
  91. package/dist/config/setup.js +5 -0
  92. package/dist/config/setup.js.map +1 -1
  93. package/dist/config/wizard.d.ts +6 -0
  94. package/dist/config/wizard.d.ts.map +1 -1
  95. package/dist/config/wizard.js +102 -18
  96. package/dist/config/wizard.js.map +1 -1
  97. package/dist/config-cli.d.ts +3 -13
  98. package/dist/config-cli.d.ts.map +1 -1
  99. package/dist/config-cli.js +14 -1
  100. package/dist/config-cli.js.map +1 -1
  101. package/dist/core/constants.d.ts +38 -6
  102. package/dist/core/constants.d.ts.map +1 -1
  103. package/dist/core/constants.js +49 -6
  104. package/dist/core/constants.js.map +1 -1
  105. package/dist/core/errors.d.ts +5 -0
  106. package/dist/core/errors.d.ts.map +1 -1
  107. package/dist/core/errors.js +5 -0
  108. package/dist/core/errors.js.map +1 -1
  109. package/dist/core/guards.d.ts +5 -0
  110. package/dist/core/guards.d.ts.map +1 -1
  111. package/dist/core/guards.js +3 -1
  112. package/dist/core/guards.js.map +1 -1
  113. package/dist/core/index.d.ts +7 -1
  114. package/dist/core/index.d.ts.map +1 -1
  115. package/dist/core/index.js +7 -1
  116. package/dist/core/index.js.map +1 -1
  117. package/dist/core/logger.js +1 -1
  118. package/dist/core/result.d.ts +77 -9
  119. package/dist/core/result.d.ts.map +1 -1
  120. package/dist/core/result.js +68 -9
  121. package/dist/core/result.js.map +1 -1
  122. package/dist/core/types.d.ts +5 -0
  123. package/dist/core/types.d.ts.map +1 -1
  124. package/dist/core/types.js +3 -4
  125. package/dist/core/types.js.map +1 -1
  126. package/dist/index.d.ts +5 -0
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +5 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/memory/async-processor.d.ts +107 -0
  131. package/dist/memory/async-processor.d.ts.map +1 -0
  132. package/dist/memory/async-processor.js +204 -0
  133. package/dist/memory/async-processor.js.map +1 -0
  134. package/dist/memory/auto-record.d.ts +47 -0
  135. package/dist/memory/auto-record.d.ts.map +1 -0
  136. package/dist/memory/auto-record.js +133 -0
  137. package/dist/memory/auto-record.js.map +1 -0
  138. package/dist/memory/database.d.ts +103 -0
  139. package/dist/memory/database.d.ts.map +1 -0
  140. package/dist/memory/database.js +337 -0
  141. package/dist/memory/database.js.map +1 -0
  142. package/dist/memory/hermes-bridge.d.ts +70 -0
  143. package/dist/memory/hermes-bridge.d.ts.map +1 -0
  144. package/dist/memory/hermes-bridge.js +155 -0
  145. package/dist/memory/hermes-bridge.js.map +1 -0
  146. package/dist/memory/index.d.ts +23 -0
  147. package/dist/memory/index.d.ts.map +1 -0
  148. package/dist/memory/index.js +22 -0
  149. package/dist/memory/index.js.map +1 -0
  150. package/dist/memory/memory-store.d.ts +76 -0
  151. package/dist/memory/memory-store.d.ts.map +1 -0
  152. package/dist/memory/memory-store.js +231 -0
  153. package/dist/memory/memory-store.js.map +1 -0
  154. package/dist/memory/stream-buffer-store.d.ts +69 -0
  155. package/dist/memory/stream-buffer-store.d.ts.map +1 -0
  156. package/dist/memory/stream-buffer-store.js +182 -0
  157. package/dist/memory/stream-buffer-store.js.map +1 -0
  158. package/dist/memory/tool-call-store.d.ts +68 -0
  159. package/dist/memory/tool-call-store.d.ts.map +1 -0
  160. package/dist/memory/tool-call-store.js +189 -0
  161. package/dist/memory/tool-call-store.js.map +1 -0
  162. package/dist/memory/types.d.ts +197 -0
  163. package/dist/memory/types.d.ts.map +1 -0
  164. package/dist/memory/types.js +15 -0
  165. package/dist/memory/types.js.map +1 -0
  166. package/dist/memory/utils.d.ts +30 -0
  167. package/dist/memory/utils.d.ts.map +1 -0
  168. package/dist/memory/utils.js +47 -0
  169. package/dist/memory/utils.js.map +1 -0
  170. package/dist/payments/facilitator-rpc-fallback.d.ts.map +1 -1
  171. package/dist/payments/facilitator-rpc-fallback.js +95 -0
  172. package/dist/payments/facilitator-rpc-fallback.js.map +1 -1
  173. package/dist/payments/hosted-tool-eligibility.d.ts +22 -0
  174. package/dist/payments/hosted-tool-eligibility.d.ts.map +1 -0
  175. package/dist/payments/hosted-tool-eligibility.js +173 -0
  176. package/dist/payments/hosted-tool-eligibility.js.map +1 -0
  177. package/dist/payments/index.d.ts +2 -2
  178. package/dist/payments/index.d.ts.map +1 -1
  179. package/dist/payments/index.js +1 -1
  180. package/dist/payments/index.js.map +1 -1
  181. package/dist/payments/mcp-session-cache.d.ts +35 -0
  182. package/dist/payments/mcp-session-cache.d.ts.map +1 -0
  183. package/dist/payments/mcp-session-cache.js +83 -0
  184. package/dist/payments/mcp-session-cache.js.map +1 -0
  185. package/dist/payments/monetization-gate.d.ts +33 -0
  186. package/dist/payments/monetization-gate.d.ts.map +1 -1
  187. package/dist/payments/monetization-gate.js +124 -12
  188. package/dist/payments/monetization-gate.js.map +1 -1
  189. package/dist/payments/pricing.d.ts +31 -0
  190. package/dist/payments/pricing.d.ts.map +1 -1
  191. package/dist/payments/pricing.js +317 -19
  192. package/dist/payments/pricing.js.map +1 -1
  193. package/dist/payments/usage-ledger.d.ts +36 -2
  194. package/dist/payments/usage-ledger.d.ts.map +1 -1
  195. package/dist/payments/usage-ledger.js +121 -4
  196. package/dist/payments/usage-ledger.js.map +1 -1
  197. package/dist/payments/x402-paid-call.d.ts +121 -0
  198. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  199. package/dist/payments/x402-paid-call.js +428 -1
  200. package/dist/payments/x402-paid-call.js.map +1 -1
  201. package/dist/policy/default-policies.d.ts +18 -2
  202. package/dist/policy/default-policies.d.ts.map +1 -1
  203. package/dist/policy/default-policies.js +18 -2
  204. package/dist/policy/default-policies.js.map +1 -1
  205. package/dist/policy/index.d.ts +6 -3
  206. package/dist/policy/index.d.ts.map +1 -1
  207. package/dist/policy/index.js +6 -3
  208. package/dist/policy/index.js.map +1 -1
  209. package/dist/policy/local-policy-engine.d.ts +71 -13
  210. package/dist/policy/local-policy-engine.d.ts.map +1 -1
  211. package/dist/policy/local-policy-engine.js +33 -11
  212. package/dist/policy/local-policy-engine.js.map +1 -1
  213. package/dist/policy/permission-checks.d.ts +29 -3
  214. package/dist/policy/permission-checks.d.ts.map +1 -1
  215. package/dist/policy/permission-checks.js +29 -3
  216. package/dist/policy/permission-checks.js.map +1 -1
  217. package/dist/policy/policy-engine.d.ts +22 -2
  218. package/dist/policy/policy-engine.d.ts.map +1 -1
  219. package/dist/policy/policy-engine.js +22 -2
  220. package/dist/policy/policy-engine.js.map +1 -1
  221. package/dist/policy/policy-types.d.ts +55 -5
  222. package/dist/policy/policy-types.d.ts.map +1 -1
  223. package/dist/policy/policy-types.js +8 -1
  224. package/dist/policy/policy-types.js.map +1 -1
  225. package/dist/policy/risk-level.d.ts +32 -3
  226. package/dist/policy/risk-level.d.ts.map +1 -1
  227. package/dist/policy/risk-level.js +32 -3
  228. package/dist/policy/risk-level.js.map +1 -1
  229. package/dist/policy/spending-limits.d.ts +29 -3
  230. package/dist/policy/spending-limits.d.ts.map +1 -1
  231. package/dist/policy/spending-limits.js +29 -3
  232. package/dist/policy/spending-limits.js.map +1 -1
  233. package/dist/premium/activation-manager.d.ts +43 -0
  234. package/dist/premium/activation-manager.d.ts.map +1 -0
  235. package/dist/premium/activation-manager.js +131 -0
  236. package/dist/premium/activation-manager.js.map +1 -0
  237. package/dist/premium/builtin-plugins.d.ts +165 -0
  238. package/dist/premium/builtin-plugins.d.ts.map +1 -0
  239. package/dist/premium/builtin-plugins.js +422 -0
  240. package/dist/premium/builtin-plugins.js.map +1 -0
  241. package/dist/premium/event-store.d.ts +61 -0
  242. package/dist/premium/event-store.d.ts.map +1 -0
  243. package/dist/premium/event-store.js +130 -0
  244. package/dist/premium/event-store.js.map +1 -0
  245. package/dist/premium/index.d.ts +54 -0
  246. package/dist/premium/index.d.ts.map +1 -0
  247. package/dist/premium/index.js +54 -0
  248. package/dist/premium/index.js.map +1 -0
  249. package/dist/premium/manifest-builder.d.ts +65 -0
  250. package/dist/premium/manifest-builder.d.ts.map +1 -0
  251. package/dist/premium/manifest-builder.js +182 -0
  252. package/dist/premium/manifest-builder.js.map +1 -0
  253. package/dist/premium/meme-radar-capabilities.d.ts +38 -0
  254. package/dist/premium/meme-radar-capabilities.d.ts.map +1 -0
  255. package/dist/premium/meme-radar-capabilities.js +306 -0
  256. package/dist/premium/meme-radar-capabilities.js.map +1 -0
  257. package/dist/premium/metrics.d.ts +27 -0
  258. package/dist/premium/metrics.d.ts.map +1 -0
  259. package/dist/premium/metrics.js +65 -0
  260. package/dist/premium/metrics.js.map +1 -0
  261. package/dist/premium/plugin-validator.d.ts +39 -0
  262. package/dist/premium/plugin-validator.d.ts.map +1 -0
  263. package/dist/premium/plugin-validator.js +325 -0
  264. package/dist/premium/plugin-validator.js.map +1 -0
  265. package/dist/premium/private-manifest-loader.d.ts +111 -0
  266. package/dist/premium/private-manifest-loader.d.ts.map +1 -0
  267. package/dist/premium/private-manifest-loader.js +285 -0
  268. package/dist/premium/private-manifest-loader.js.map +1 -0
  269. package/dist/premium/provider-bridge.d.ts +133 -0
  270. package/dist/premium/provider-bridge.d.ts.map +1 -0
  271. package/dist/premium/provider-bridge.js +349 -0
  272. package/dist/premium/provider-bridge.js.map +1 -0
  273. package/dist/premium/session-manager.d.ts +125 -0
  274. package/dist/premium/session-manager.d.ts.map +1 -0
  275. package/dist/premium/session-manager.js +337 -0
  276. package/dist/premium/session-manager.js.map +1 -0
  277. package/dist/premium/stream-broker.d.ts +98 -0
  278. package/dist/premium/stream-broker.d.ts.map +1 -0
  279. package/dist/premium/stream-broker.js +199 -0
  280. package/dist/premium/stream-broker.js.map +1 -0
  281. package/dist/premium/tech-fundamentals-capabilities.d.ts +37 -0
  282. package/dist/premium/tech-fundamentals-capabilities.d.ts.map +1 -0
  283. package/dist/premium/tech-fundamentals-capabilities.js +283 -0
  284. package/dist/premium/tech-fundamentals-capabilities.js.map +1 -0
  285. package/dist/premium/trading-capabilities.d.ts +36 -0
  286. package/dist/premium/trading-capabilities.d.ts.map +1 -0
  287. package/dist/premium/trading-capabilities.js +205 -0
  288. package/dist/premium/trading-capabilities.js.map +1 -0
  289. package/dist/premium/types.d.ts +518 -0
  290. package/dist/premium/types.d.ts.map +1 -0
  291. package/dist/premium/types.js +23 -0
  292. package/dist/premium/types.js.map +1 -0
  293. package/dist/premium/webhook-engine.d.ts +138 -0
  294. package/dist/premium/webhook-engine.d.ts.map +1 -0
  295. package/dist/premium/webhook-engine.js +516 -0
  296. package/dist/premium/webhook-engine.js.map +1 -0
  297. package/dist/prompts/context/sap-agent-context.prompt.d.ts +5 -0
  298. package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -1
  299. package/dist/prompts/context/sap-agent-context.prompt.js +20 -16
  300. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  301. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts +14 -0
  302. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts.map +1 -0
  303. package/dist/prompts/context/sap-agent-intent-router.prompt.js +155 -0
  304. package/dist/prompts/context/sap-agent-intent-router.prompt.js.map +1 -0
  305. package/dist/prompts/context/sap-agent-start.prompt.js +7 -0
  306. package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -1
  307. package/dist/prompts/developer/debug-sap-error.prompt.d.ts +5 -0
  308. package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -1
  309. package/dist/prompts/developer/debug-sap-error.prompt.js +3 -4
  310. package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -1
  311. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +5 -0
  312. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -1
  313. package/dist/prompts/developer/generate-sap-integration.prompt.js +3 -4
  314. package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
  315. package/dist/prompts/developer/index.d.ts +4 -1
  316. package/dist/prompts/developer/index.d.ts.map +1 -1
  317. package/dist/prompts/developer/index.js +4 -1
  318. package/dist/prompts/developer/index.js.map +1 -1
  319. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +5 -0
  320. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -1
  321. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +3 -4
  322. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -1
  323. package/dist/prompts/execution-proof/index.d.ts +4 -1
  324. package/dist/prompts/execution-proof/index.d.ts.map +1 -1
  325. package/dist/prompts/execution-proof/index.js +4 -1
  326. package/dist/prompts/execution-proof/index.js.map +1 -1
  327. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +5 -0
  328. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -1
  329. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +3 -4
  330. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -1
  331. package/dist/prompts/index.d.ts +4 -1
  332. package/dist/prompts/index.d.ts.map +1 -1
  333. package/dist/prompts/index.js +4 -1
  334. package/dist/prompts/index.js.map +1 -1
  335. package/dist/prompts/payments/create-paid-api.prompt.d.ts +5 -0
  336. package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -1
  337. package/dist/prompts/payments/create-paid-api.prompt.js +3 -4
  338. package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -1
  339. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +5 -0
  340. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -1
  341. package/dist/prompts/payments/explain-x402-settlement.prompt.js +16 -14
  342. package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
  343. package/dist/prompts/payments/index.d.ts +4 -1
  344. package/dist/prompts/payments/index.d.ts.map +1 -1
  345. package/dist/prompts/payments/index.js +4 -1
  346. package/dist/prompts/payments/index.js.map +1 -1
  347. package/dist/prompts/register-prompts.d.ts +18 -2
  348. package/dist/prompts/register-prompts.d.ts.map +1 -1
  349. package/dist/prompts/register-prompts.js +21 -3
  350. package/dist/prompts/register-prompts.js.map +1 -1
  351. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +5 -0
  352. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -1
  353. package/dist/prompts/registry/analyze-sap-agent.prompt.js +3 -4
  354. package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -1
  355. package/dist/prompts/registry/index.d.ts +4 -1
  356. package/dist/prompts/registry/index.d.ts.map +1 -1
  357. package/dist/prompts/registry/index.js +4 -1
  358. package/dist/prompts/registry/index.js.map +1 -1
  359. package/dist/prompts/registry/register-sap-agent.prompt.d.ts +5 -0
  360. package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -1
  361. package/dist/prompts/registry/register-sap-agent.prompt.js +22 -23
  362. package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -1
  363. package/dist/remote/premium-memory.d.ts +90 -0
  364. package/dist/remote/premium-memory.d.ts.map +1 -0
  365. package/dist/remote/premium-memory.js +161 -0
  366. package/dist/remote/premium-memory.js.map +1 -0
  367. package/dist/remote/premium-routes.d.ts +99 -0
  368. package/dist/remote/premium-routes.d.ts.map +1 -0
  369. package/dist/remote/premium-routes.js +347 -0
  370. package/dist/remote/premium-routes.js.map +1 -0
  371. package/dist/remote/public-home/sections.d.ts.map +1 -1
  372. package/dist/remote/public-home/sections.js +23 -4
  373. package/dist/remote/public-home/sections.js.map +1 -1
  374. package/dist/remote/public-home/types.d.ts +9 -0
  375. package/dist/remote/public-home/types.d.ts.map +1 -1
  376. package/dist/remote/server.d.ts +20 -0
  377. package/dist/remote/server.d.ts.map +1 -1
  378. package/dist/remote/server.js +370 -9
  379. package/dist/remote/server.js.map +1 -1
  380. package/dist/remote/tx-relay.d.ts +42 -0
  381. package/dist/remote/tx-relay.d.ts.map +1 -0
  382. package/dist/remote/tx-relay.js +118 -0
  383. package/dist/remote/tx-relay.js.map +1 -0
  384. package/dist/resources/current/sap-current-config.resource.d.ts +5 -0
  385. package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -1
  386. package/dist/resources/current/sap-current-config.resource.js +2 -5
  387. package/dist/resources/current/sap-current-config.resource.js.map +1 -1
  388. package/dist/resources/execution-proof/index.d.ts +5 -0
  389. package/dist/resources/execution-proof/index.d.ts.map +1 -1
  390. package/dist/resources/execution-proof/index.js +5 -0
  391. package/dist/resources/execution-proof/index.js.map +1 -1
  392. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +5 -0
  393. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -1
  394. package/dist/resources/execution-proof/sap-execution-record.resource.js +3 -4
  395. package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -1
  396. package/dist/resources/index.d.ts +5 -0
  397. package/dist/resources/index.d.ts.map +1 -1
  398. package/dist/resources/index.js +5 -0
  399. package/dist/resources/index.js.map +1 -1
  400. package/dist/resources/memory/index.d.ts +5 -0
  401. package/dist/resources/memory/index.d.ts.map +1 -1
  402. package/dist/resources/memory/index.js +5 -0
  403. package/dist/resources/memory/index.js.map +1 -1
  404. package/dist/resources/memory/sap-memory.resource.d.ts +5 -0
  405. package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -1
  406. package/dist/resources/memory/sap-memory.resource.js +3 -4
  407. package/dist/resources/memory/sap-memory.resource.js.map +1 -1
  408. package/dist/resources/profile/sap-active-profile.resource.d.ts +5 -0
  409. package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -1
  410. package/dist/resources/profile/sap-active-profile.resource.js +2 -5
  411. package/dist/resources/profile/sap-active-profile.resource.js.map +1 -1
  412. package/dist/resources/register-resources.d.ts +5 -0
  413. package/dist/resources/register-resources.d.ts.map +1 -1
  414. package/dist/resources/register-resources.js +3 -1
  415. package/dist/resources/register-resources.js.map +1 -1
  416. package/dist/resources/registry/index.d.ts +5 -0
  417. package/dist/resources/registry/index.d.ts.map +1 -1
  418. package/dist/resources/registry/index.js +5 -0
  419. package/dist/resources/registry/index.js.map +1 -1
  420. package/dist/resources/registry/sap-agent.resource.d.ts +5 -0
  421. package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -1
  422. package/dist/resources/registry/sap-agent.resource.js +3 -4
  423. package/dist/resources/registry/sap-agent.resource.js.map +1 -1
  424. package/dist/resources/registry/sap-global-registry.resource.d.ts +18 -4
  425. package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -1
  426. package/dist/resources/registry/sap-global-registry.resource.js +18 -4
  427. package/dist/resources/registry/sap-global-registry.resource.js.map +1 -1
  428. package/dist/resources/reputation/index.d.ts +4 -1
  429. package/dist/resources/reputation/index.d.ts.map +1 -1
  430. package/dist/resources/reputation/index.js +4 -1
  431. package/dist/resources/reputation/index.js.map +1 -1
  432. package/dist/resources/reputation/sap-reputation.resource.d.ts +18 -4
  433. package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -1
  434. package/dist/resources/reputation/sap-reputation.resource.js +18 -4
  435. package/dist/resources/reputation/sap-reputation.resource.js.map +1 -1
  436. package/dist/resources/tool-schema/index.d.ts +4 -1
  437. package/dist/resources/tool-schema/index.d.ts.map +1 -1
  438. package/dist/resources/tool-schema/index.js +4 -1
  439. package/dist/resources/tool-schema/index.js.map +1 -1
  440. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +18 -4
  441. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -1
  442. package/dist/resources/tool-schema/sap-tool-schema.resource.js +18 -4
  443. package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -1
  444. package/dist/sap/index.d.ts +7 -1
  445. package/dist/sap/index.d.ts.map +1 -1
  446. package/dist/sap/index.js +7 -1
  447. package/dist/sap/index.js.map +1 -1
  448. package/dist/sap/sap-client-manager.d.ts +80 -13
  449. package/dist/sap/sap-client-manager.d.ts.map +1 -1
  450. package/dist/sap/sap-client-manager.js +80 -13
  451. package/dist/sap/sap-client-manager.js.map +1 -1
  452. package/dist/sap/sap-errors.d.ts +22 -3
  453. package/dist/sap/sap-errors.d.ts.map +1 -1
  454. package/dist/sap/sap-errors.js +22 -3
  455. package/dist/sap/sap-errors.js.map +1 -1
  456. package/dist/sap/sap-types.d.ts +75 -6
  457. package/dist/sap/sap-types.d.ts.map +1 -1
  458. package/dist/sap/sap-types.js +11 -1
  459. package/dist/sap/sap-types.js.map +1 -1
  460. package/dist/schemas/common.schema.d.ts +45 -8
  461. package/dist/schemas/common.schema.d.ts.map +1 -1
  462. package/dist/schemas/common.schema.js +45 -8
  463. package/dist/schemas/common.schema.js.map +1 -1
  464. package/dist/schemas/developer.schema.d.ts +22 -3
  465. package/dist/schemas/developer.schema.d.ts.map +1 -1
  466. package/dist/schemas/developer.schema.js +22 -3
  467. package/dist/schemas/developer.schema.js.map +1 -1
  468. package/dist/schemas/execution-proof.schema.d.ts +29 -4
  469. package/dist/schemas/execution-proof.schema.d.ts.map +1 -1
  470. package/dist/schemas/execution-proof.schema.js +29 -4
  471. package/dist/schemas/execution-proof.schema.js.map +1 -1
  472. package/dist/schemas/identity.schema.d.ts +23 -3
  473. package/dist/schemas/identity.schema.d.ts.map +1 -1
  474. package/dist/schemas/identity.schema.js +23 -3
  475. package/dist/schemas/identity.schema.js.map +1 -1
  476. package/dist/schemas/index.d.ts +11 -1
  477. package/dist/schemas/index.d.ts.map +1 -1
  478. package/dist/schemas/index.js +11 -1
  479. package/dist/schemas/index.js.map +1 -1
  480. package/dist/schemas/memory.schema.d.ts +23 -3
  481. package/dist/schemas/memory.schema.d.ts.map +1 -1
  482. package/dist/schemas/memory.schema.js +23 -3
  483. package/dist/schemas/memory.schema.js.map +1 -1
  484. package/dist/schemas/payments.schema.d.ts +24 -3
  485. package/dist/schemas/payments.schema.d.ts.map +1 -1
  486. package/dist/schemas/payments.schema.js +24 -3
  487. package/dist/schemas/payments.schema.js.map +1 -1
  488. package/dist/schemas/registry.schema.d.ts +38 -6
  489. package/dist/schemas/registry.schema.d.ts.map +1 -1
  490. package/dist/schemas/registry.schema.js +36 -4
  491. package/dist/schemas/registry.schema.js.map +1 -1
  492. package/dist/schemas/reputation.schema.d.ts +22 -3
  493. package/dist/schemas/reputation.schema.d.ts.map +1 -1
  494. package/dist/schemas/reputation.schema.js +22 -3
  495. package/dist/schemas/reputation.schema.js.map +1 -1
  496. package/dist/schemas/settlement.schema.d.ts +31 -4
  497. package/dist/schemas/settlement.schema.d.ts.map +1 -1
  498. package/dist/schemas/settlement.schema.js +31 -4
  499. package/dist/schemas/settlement.schema.js.map +1 -1
  500. package/dist/schemas/tool-schema.schema.d.ts +29 -3
  501. package/dist/schemas/tool-schema.schema.d.ts.map +1 -1
  502. package/dist/schemas/tool-schema.schema.js +29 -3
  503. package/dist/schemas/tool-schema.schema.js.map +1 -1
  504. package/dist/schemas/transaction.schema.d.ts +23 -3
  505. package/dist/schemas/transaction.schema.d.ts.map +1 -1
  506. package/dist/schemas/transaction.schema.js +23 -3
  507. package/dist/schemas/transaction.schema.js.map +1 -1
  508. package/dist/security/approval-required.d.ts +19 -2
  509. package/dist/security/approval-required.d.ts.map +1 -1
  510. package/dist/security/approval-required.js +19 -2
  511. package/dist/security/approval-required.js.map +1 -1
  512. package/dist/security/index.d.ts +7 -1
  513. package/dist/security/index.d.ts.map +1 -1
  514. package/dist/security/index.js +7 -1
  515. package/dist/security/index.js.map +1 -1
  516. package/dist/security/private-key-guard.d.ts +18 -2
  517. package/dist/security/private-key-guard.d.ts.map +1 -1
  518. package/dist/security/private-key-guard.js +19 -2
  519. package/dist/security/private-key-guard.js.map +1 -1
  520. package/dist/security/prompt-injection-notes.d.ts +10 -1
  521. package/dist/security/prompt-injection-notes.d.ts.map +1 -1
  522. package/dist/security/prompt-injection-notes.js +10 -1
  523. package/dist/security/prompt-injection-notes.js.map +1 -1
  524. package/dist/security/tool-permissions.d.ts.map +1 -1
  525. package/dist/security/tool-permissions.js +12 -0
  526. package/dist/security/tool-permissions.js.map +1 -1
  527. package/dist/security/unsafe-action-guard.d.ts +36 -10
  528. package/dist/security/unsafe-action-guard.d.ts.map +1 -1
  529. package/dist/security/unsafe-action-guard.js +67 -15
  530. package/dist/security/unsafe-action-guard.js.map +1 -1
  531. package/dist/server/create-server.d.ts +18 -3
  532. package/dist/server/create-server.d.ts.map +1 -1
  533. package/dist/server/create-server.js +20 -4
  534. package/dist/server/create-server.js.map +1 -1
  535. package/dist/server/index.d.ts +6 -1
  536. package/dist/server/index.d.ts.map +1 -1
  537. package/dist/server/index.js +6 -1
  538. package/dist/server/index.js.map +1 -1
  539. package/dist/server/register-capabilities.d.ts +17 -2
  540. package/dist/server/register-capabilities.d.ts.map +1 -1
  541. package/dist/server/register-capabilities.js +17 -2
  542. package/dist/server/register-capabilities.js.map +1 -1
  543. package/dist/server/server-metadata.d.ts +35 -1
  544. package/dist/server/server-metadata.d.ts.map +1 -1
  545. package/dist/server/server-metadata.js +36 -2
  546. package/dist/server/server-metadata.js.map +1 -1
  547. package/dist/session/agent-session.d.ts +35 -4
  548. package/dist/session/agent-session.d.ts.map +1 -1
  549. package/dist/session/agent-session.js +35 -4
  550. package/dist/session/agent-session.js.map +1 -1
  551. package/dist/session/delegated-session.d.ts +31 -3
  552. package/dist/session/delegated-session.d.ts.map +1 -1
  553. package/dist/session/delegated-session.js +31 -3
  554. package/dist/session/delegated-session.js.map +1 -1
  555. package/dist/session/index.d.ts +7 -1
  556. package/dist/session/index.d.ts.map +1 -1
  557. package/dist/session/index.js +7 -1
  558. package/dist/session/index.js.map +1 -1
  559. package/dist/session/redis-session-store.d.ts +94 -21
  560. package/dist/session/redis-session-store.d.ts.map +1 -1
  561. package/dist/session/redis-session-store.js +87 -20
  562. package/dist/session/redis-session-store.js.map +1 -1
  563. package/dist/session/session-limits.d.ts +34 -4
  564. package/dist/session/session-limits.d.ts.map +1 -1
  565. package/dist/session/session-limits.js +34 -4
  566. package/dist/session/session-limits.js.map +1 -1
  567. package/dist/session/session-permissions.d.ts +57 -7
  568. package/dist/session/session-permissions.d.ts.map +1 -1
  569. package/dist/session/session-permissions.js +57 -7
  570. package/dist/session/session-permissions.js.map +1 -1
  571. package/dist/session/session-store.d.ts +9 -1
  572. package/dist/session/session-store.d.ts.map +1 -1
  573. package/dist/session/session-store.js +18 -3
  574. package/dist/session/session-store.js.map +1 -1
  575. package/dist/session/session-types.d.ts +33 -4
  576. package/dist/session/session-types.d.ts.map +1 -1
  577. package/dist/session/session-types.js +9 -1
  578. package/dist/session/session-types.js.map +1 -1
  579. package/dist/signer/index.d.ts +7 -1
  580. package/dist/signer/index.d.ts.map +1 -1
  581. package/dist/signer/index.js +7 -1
  582. package/dist/signer/index.js.map +1 -1
  583. package/dist/signer/load-keypair.d.ts +25 -4
  584. package/dist/signer/load-keypair.d.ts.map +1 -1
  585. package/dist/signer/load-keypair.js +25 -4
  586. package/dist/signer/load-keypair.js.map +1 -1
  587. package/dist/signer/local-keypair-signer.d.ts +19 -3
  588. package/dist/signer/local-keypair-signer.d.ts.map +1 -1
  589. package/dist/signer/local-keypair-signer.js +24 -4
  590. package/dist/signer/local-keypair-signer.js.map +1 -1
  591. package/dist/signer/signer-resolver.d.ts +19 -2
  592. package/dist/signer/signer-resolver.d.ts.map +1 -1
  593. package/dist/signer/signer-resolver.js +26 -3
  594. package/dist/signer/signer-resolver.js.map +1 -1
  595. package/dist/signer/signer-types.d.ts +47 -5
  596. package/dist/signer/signer-types.d.ts.map +1 -1
  597. package/dist/signer/signer-types.js +13 -1
  598. package/dist/signer/signer-types.js.map +1 -1
  599. package/dist/strategies/strategy-store.d.ts +82 -0
  600. package/dist/strategies/strategy-store.d.ts.map +1 -0
  601. package/dist/strategies/strategy-store.js +165 -0
  602. package/dist/strategies/strategy-store.js.map +1 -0
  603. package/dist/tools/agent-start-tool.d.ts.map +1 -1
  604. package/dist/tools/agent-start-tool.js +481 -5
  605. package/dist/tools/agent-start-tool.js.map +1 -1
  606. package/dist/tools/client-sdk-tools.d.ts.map +1 -1
  607. package/dist/tools/client-sdk-tools.js +32 -7
  608. package/dist/tools/client-sdk-tools.js.map +1 -1
  609. package/dist/tools/estimate-tool-cost.d.ts +13 -0
  610. package/dist/tools/estimate-tool-cost.d.ts.map +1 -0
  611. package/dist/tools/estimate-tool-cost.js +139 -0
  612. package/dist/tools/estimate-tool-cost.js.map +1 -0
  613. package/dist/tools/index.d.ts +8 -0
  614. package/dist/tools/index.d.ts.map +1 -1
  615. package/dist/tools/index.js +11 -0
  616. package/dist/tools/index.js.map +1 -1
  617. package/dist/tools/magicblock-tools.d.ts +31 -6
  618. package/dist/tools/magicblock-tools.d.ts.map +1 -1
  619. package/dist/tools/magicblock-tools.js +178 -53
  620. package/dist/tools/magicblock-tools.js.map +1 -1
  621. package/dist/tools/memory-tools.d.ts +26 -0
  622. package/dist/tools/memory-tools.d.ts.map +1 -0
  623. package/dist/tools/memory-tools.js +533 -0
  624. package/dist/tools/memory-tools.js.map +1 -0
  625. package/dist/tools/perp-tools.d.ts +39 -0
  626. package/dist/tools/perp-tools.d.ts.map +1 -0
  627. package/dist/tools/perp-tools.js +1110 -0
  628. package/dist/tools/perp-tools.js.map +1 -0
  629. package/dist/tools/premium-tools.d.ts +8 -0
  630. package/dist/tools/premium-tools.d.ts.map +1 -0
  631. package/dist/tools/premium-tools.js +1102 -0
  632. package/dist/tools/premium-tools.js.map +1 -0
  633. package/dist/tools/profile-tools.d.ts.map +1 -1
  634. package/dist/tools/profile-tools.js +18 -1
  635. package/dist/tools/profile-tools.js.map +1 -1
  636. package/dist/tools/quick-context-tool.d.ts +16 -0
  637. package/dist/tools/quick-context-tool.d.ts.map +1 -0
  638. package/dist/tools/quick-context-tool.js +304 -0
  639. package/dist/tools/quick-context-tool.js.map +1 -0
  640. package/dist/tools/register-tools.d.ts.map +1 -1
  641. package/dist/tools/register-tools.js +17 -0
  642. package/dist/tools/register-tools.js.map +1 -1
  643. package/dist/tools/sap-sdk-tools.d.ts +420 -1
  644. package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
  645. package/dist/tools/sap-sdk-tools.js +1548 -127
  646. package/dist/tools/sap-sdk-tools.js.map +1 -1
  647. package/dist/tools/sap-sns-tools.d.ts +2 -2
  648. package/dist/tools/sap-sns-tools.d.ts.map +1 -1
  649. package/dist/tools/sap-sns-tools.js +12 -8
  650. package/dist/tools/sap-sns-tools.js.map +1 -1
  651. package/dist/tools/skills-tools.d.ts +16 -0
  652. package/dist/tools/skills-tools.d.ts.map +1 -1
  653. package/dist/tools/skills-tools.js +282 -5
  654. package/dist/tools/skills-tools.js.map +1 -1
  655. package/dist/tools/tool-aliases.d.ts.map +1 -1
  656. package/dist/tools/tool-aliases.js +7 -0
  657. package/dist/tools/tool-aliases.js.map +1 -1
  658. package/dist/tools/transaction-tools.d.ts +135 -0
  659. package/dist/tools/transaction-tools.d.ts.map +1 -1
  660. package/dist/tools/transaction-tools.js +515 -16
  661. package/dist/tools/transaction-tools.js.map +1 -1
  662. package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
  663. package/dist/tools/x402-paid-call-tool.js +756 -23
  664. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  665. package/dist/transports/index.d.ts +6 -1
  666. package/dist/transports/index.d.ts.map +1 -1
  667. package/dist/transports/index.js +6 -1
  668. package/dist/transports/index.js.map +1 -1
  669. package/dist/transports/stdio.d.ts +17 -5
  670. package/dist/transports/stdio.d.ts.map +1 -1
  671. package/dist/transports/stdio.js +17 -5
  672. package/dist/transports/stdio.js.map +1 -1
  673. package/dist/tui/wizard-save.d.ts +88 -8
  674. package/dist/tui/wizard-save.d.ts.map +1 -1
  675. package/dist/tui/wizard-save.js +77 -8
  676. package/dist/tui/wizard-save.js.map +1 -1
  677. package/dist/wizard-core/desktop-flow.d.ts.map +1 -1
  678. package/dist/wizard-core/desktop-flow.js +4 -2
  679. package/dist/wizard-core/desktop-flow.js.map +1 -1
  680. package/docs/03_CONFIGURATION_AND_WIZARD.md +5 -3
  681. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +82 -4
  682. package/docs/07_ENDPOINTS_AND_CLIENTS.md +7 -3
  683. package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +21 -3
  684. package/docs/14_DESKTOP_WIZARD_RELEASE.md +8 -6
  685. package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +304 -0
  686. package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
  687. package/docs/BRANCH_AND_CI.md +67 -0
  688. package/docs/README.md +19 -2
  689. package/docs/magicblock-tools.md +70 -29
  690. package/package.json +10 -6
  691. package/server.json +3 -3
  692. package/skills/README.md +12 -2
  693. package/skills/sap-agent-registry/SKILL.md +99 -4
  694. package/skills/sap-defi/SKILL.md +8 -4
  695. package/skills/sap-discovery-indexing/SKILL.md +26 -4
  696. package/skills/sap-escrow-settlement/SKILL.md +22 -4
  697. package/skills/sap-mcp/SKILL.md +140 -22
  698. package/skills/sap-mcp/TOOL_REFERENCE.md +47 -7
  699. package/skills/sap-nft-metaplex/SKILL.md +22 -0
  700. package/skills/sap-operations/SKILL.md +32 -3
  701. package/skills/sap-payments-x402/SKILL.md +85 -8
  702. package/skills/sap-sns/SKILL.md +32 -10
  703. package/smithery.config.schema.json +7 -0
@@ -0,0 +1,325 @@
1
+ /**
2
+ * @name premium/plugin-validator
3
+ * @description Strict structural validator for premium plugin manifests.
4
+ *
5
+ * Validates unknown JSON objects against the `PremiumPluginManifest` shape,
6
+ * rejecting unknown fields (so private provider secrets or executable code
7
+ * cannot leak through manifests), enforcing semver versions, JSON Schema
8
+ * correctness, pricing bounds, and delivery contract constraints.
9
+ *
10
+ * Used by:
11
+ * - `private-manifest-loader.ts` → validates every `.json` file loaded from disk.
12
+ * - `premium-tools.ts` → MCP tool `sap_premium_validate_plugin_manifest`.
13
+ *
14
+ * @flow
15
+ * 1. External manifest JSON arrives (filesystem or MCP tool argument).
16
+ * 2. → `validatePremiumPluginManifest(manifest)` runs structural checks.
17
+ * 3. Returns `PremiumValidationReport` with errors[] and warnings[].
18
+ * 4. Caller decides: accept (valid=true) or reject with error details.
19
+ *
20
+ * @module premium/plugin-validator
21
+ */
22
+ /* -------------------------------------------------------------------------- */
23
+ /* Validation regex patterns */
24
+ /* -------------------------------------------------------------------------- */
25
+ /** @description Plugin id: lowercase, starts with letter, dots/dashes allowed. */
26
+ const PLUGIN_ID_PATTERN = /^[a-z][a-z0-9.-]{2,80}$/;
27
+ /** @description Capability id: lowercase, starts with letter, dots/colons/dashes allowed. */
28
+ const CAPABILITY_ID_PATTERN = /^[a-z][a-z0-9.:-]{2,96}$/;
29
+ /** @description Semver version: X.Y.Z with optional prerelease tag. */
30
+ const SEMVER_PATTERN = /^\d+\.\d+\.\d+(?:-[a-z0-9.-]+)?$/;
31
+ /** @description Env var name: uppercase, starts with letter, underscores allowed. */
32
+ const ENV_NAME_PATTERN = /^[A-Z][A-Z0-9_]{2,120}$/;
33
+ /* -------------------------------------------------------------------------- */
34
+ /* Allowed key sets (reject unknown fields) */
35
+ /* -------------------------------------------------------------------------- */
36
+ /** @description Top-level keys allowed on a `PremiumPluginManifest` object. */
37
+ const PLUGIN_KEYS = new Set(['id', 'version', 'title', 'description', 'publisher', 'visibility', 'capabilities']);
38
+ /** @description Keys allowed on a `PremiumCapabilityDefinition` object. */
39
+ const CAPABILITY_KEYS = new Set([
40
+ 'id',
41
+ 'type',
42
+ 'title',
43
+ 'description',
44
+ 'status',
45
+ 'requiresProvider',
46
+ 'providerEnv',
47
+ 'inputSchema',
48
+ 'outputSchema',
49
+ 'pricing',
50
+ 'delivery',
51
+ ]);
52
+ /** @description Keys allowed on a `PremiumPricingPolicy` object. */
53
+ const PRICING_KEYS = new Set(['tier', 'model', 'unit', 'unitPriceUsd', 'minUnits', 'maxUnits', 'settlement']);
54
+ /** @description Keys allowed on a `PremiumDeliveryContract` object. */
55
+ const DELIVERY_KEYS = new Set(['transport', 'events', 'latencyTargetMs', 'replayWindowSeconds']);
56
+ /* -------------------------------------------------------------------------- */
57
+ /* Allowed enum values */
58
+ /* -------------------------------------------------------------------------- */
59
+ const PRICING_TIERS = new Set(['premium-stream', 'premium-webhook', 'premium-tool']);
60
+ const PRICING_MODELS = new Set(['x402-per-open', 'x402-per-minute', 'x402-per-event', 'x402-session']);
61
+ const PRICING_UNITS = new Set(['open', 'minute', 'event', 'session']);
62
+ const DELIVERY_TRANSPORTS = new Set(['mcp-streamable-http', 'webhook-http']);
63
+ /* -------------------------------------------------------------------------- */
64
+ /* Internal helpers */
65
+ /* -------------------------------------------------------------------------- */
66
+ /**
67
+ * @name issue
68
+ * @description Construct a `PremiumValidationIssue` with the given path, severity, and message.
69
+ *
70
+ * @param path - JSON path to the offending field (e.g. `capabilities[0].pricing.tier`).
71
+ * @param severity - `error` or `warning`.
72
+ * @param message - Human-readable explanation.
73
+ * @returns A `PremiumValidationIssue` object.
74
+ *
75
+ * @internal
76
+ */
77
+ function issue(path, severity, message) {
78
+ return { path, severity, message };
79
+ }
80
+ /**
81
+ * @name isRecord
82
+ * @description Type guard: is the value a plain object (not array, not null)?
83
+ *
84
+ * @param value - Unknown input to test.
85
+ * @returns True if `value` is a non-null, non-array object.
86
+ *
87
+ * @internal
88
+ */
89
+ function isRecord(value) {
90
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
91
+ }
92
+ /**
93
+ * @name pushUnknownKeyIssues
94
+ * @description Detect and report any keys not in the allowed set.
95
+ *
96
+ * Unknown fields are rejected as errors so private provider secrets or
97
+ * executable code cannot leak through manifests.
98
+ *
99
+ * @param issues - Accumulating issue array (mutated in place).
100
+ * @param value - The object to check.
101
+ * @param allowedKeys - Set of permitted key names.
102
+ * @param path - JSON path prefix for error reporting.
103
+ *
104
+ * @internal
105
+ */
106
+ function pushUnknownKeyIssues(issues, value, allowedKeys, path) {
107
+ for (const key of Object.keys(value)) {
108
+ if (!allowedKeys.has(key)) {
109
+ issues.push(issue(path === '$' ? key : `${path}.${key}`, 'error', 'Unknown fields are rejected so private provider secrets or executable code cannot leak through manifests.'));
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * @name pushSchemaIssues
115
+ * @description Validate that a JSON Schema field meets strict requirements:
116
+ * must be an object, root type must be `object`, must have a `properties`
117
+ * object (warning), and must set `additionalProperties: false` (error).
118
+ *
119
+ * @param issues - Accumulating issue array (mutated in place).
120
+ * @param schema - The schema value to check.
121
+ * @param path - JSON path to the schema field.
122
+ *
123
+ * @internal
124
+ */
125
+ function pushSchemaIssues(issues, schema, path) {
126
+ if (!isRecord(schema)) {
127
+ issues.push(issue(path, 'error', 'Schema must be a JSON object.'));
128
+ return;
129
+ }
130
+ if (schema.type !== 'object') {
131
+ issues.push(issue(path, 'error', 'Schema root must declare type: object so MCP clients can validate arguments.'));
132
+ }
133
+ if (!isRecord(schema.properties)) {
134
+ issues.push(issue(path, 'warning', 'Schema should include a properties object with described fields.'));
135
+ }
136
+ if (schema.additionalProperties !== false) {
137
+ issues.push(issue(path, 'error', 'Schema root must set additionalProperties: false for strict agent/runtime validation.'));
138
+ }
139
+ }
140
+ /* -------------------------------------------------------------------------- */
141
+ /* Capability validation */
142
+ /* -------------------------------------------------------------------------- */
143
+ /**
144
+ * @name validateCapability
145
+ * @description Validate a single capability object within a manifest.
146
+ *
147
+ * Checks: id format, type, title, description length, status, requiresProvider
148
+ * boolean, providerEnv array format + consistency, input/output schemas,
149
+ * pricing policy (tier, model, unit, price bounds, settlement), and delivery
150
+ * contract (transport, events, latency, replay window).
151
+ *
152
+ * @param capability - Unknown capability value to validate.
153
+ * @param index - Array index for error path reporting.
154
+ * @returns Array of `PremiumValidationIssue` entries (may be empty if valid).
155
+ *
156
+ * @internal
157
+ */
158
+ function validateCapability(capability, index) {
159
+ const issues = [];
160
+ const base = `capabilities[${index}]`;
161
+ if (!isRecord(capability)) {
162
+ return [issue(base, 'error', 'Capability must be an object.')];
163
+ }
164
+ const candidate = capability;
165
+ // Reject unknown keys to prevent secret/code leakage.
166
+ pushUnknownKeyIssues(issues, capability, CAPABILITY_KEYS, base);
167
+ // Identity and type checks.
168
+ if (typeof candidate.id !== 'string' || !CAPABILITY_ID_PATTERN.test(candidate.id)) {
169
+ issues.push(issue(`${base}.id`, 'error', 'Capability id must be lowercase and may contain letters, numbers, dot, colon, or dash.'));
170
+ }
171
+ if (!['stream', 'webhook', 'tool'].includes(String(candidate.type))) {
172
+ issues.push(issue(`${base}.type`, 'error', 'Capability type must be stream, webhook, or tool.'));
173
+ }
174
+ if (typeof candidate.title !== 'string' || candidate.title.length < 4) {
175
+ issues.push(issue(`${base}.title`, 'error', 'Capability title must be a human-readable label.'));
176
+ }
177
+ if (typeof candidate.description !== 'string' || candidate.description.length < 40) {
178
+ issues.push(issue(`${base}.description`, 'error', 'Capability description must explain the agent use case and payment boundary.'));
179
+ }
180
+ if (!['available', 'requires-provider', 'planned'].includes(String(candidate.status))) {
181
+ issues.push(issue(`${base}.status`, 'error', 'Capability status must be available, requires-provider, or planned.'));
182
+ }
183
+ if (typeof candidate.requiresProvider !== 'boolean') {
184
+ issues.push(issue(`${base}.requiresProvider`, 'error', 'requiresProvider must explicitly be true or false so runtimes know whether activation is possible.'));
185
+ }
186
+ // Provider env var validation: names must be uppercase env var patterns,
187
+ // never secret values or URLs. If any env vars are declared, requiresProvider
188
+ // must be true.
189
+ if (!Array.isArray(candidate.providerEnv)) {
190
+ issues.push(issue(`${base}.providerEnv`, 'error', 'providerEnv must be an array, empty when no external provider configuration is needed.'));
191
+ }
192
+ else {
193
+ candidate.providerEnv.forEach((envName, envIndex) => {
194
+ if (typeof envName !== 'string' || !ENV_NAME_PATTERN.test(envName)) {
195
+ issues.push(issue(`${base}.providerEnv[${envIndex}]`, 'error', 'providerEnv entries must be uppercase environment variable names, never secret values or URLs.'));
196
+ }
197
+ });
198
+ if (candidate.providerEnv.length > 0 && candidate.requiresProvider !== true) {
199
+ issues.push(issue(`${base}.requiresProvider`, 'error', 'Capabilities with providerEnv entries must set requiresProvider:true.'));
200
+ }
201
+ }
202
+ // Input/output JSON Schema validation.
203
+ pushSchemaIssues(issues, candidate.inputSchema, `${base}.inputSchema`);
204
+ pushSchemaIssues(issues, candidate.outputSchema, `${base}.outputSchema`);
205
+ // Pricing policy validation.
206
+ if (!isRecord(candidate.pricing)) {
207
+ issues.push(issue(`${base}.pricing`, 'error', 'Pricing policy is required for x402/pay.sh metering.'));
208
+ }
209
+ else {
210
+ pushUnknownKeyIssues(issues, candidate.pricing, PRICING_KEYS, `${base}.pricing`);
211
+ if (!PRICING_TIERS.has(String(candidate.pricing.tier))) {
212
+ issues.push(issue(`${base}.pricing.tier`, 'error', 'Pricing tier must be premium-stream, premium-webhook, or premium-tool.'));
213
+ }
214
+ if (!PRICING_MODELS.has(String(candidate.pricing.model))) {
215
+ issues.push(issue(`${base}.pricing.model`, 'error', 'Pricing model must be x402-per-open, x402-per-minute, x402-per-event, or x402-session.'));
216
+ }
217
+ if (!PRICING_UNITS.has(String(candidate.pricing.unit))) {
218
+ issues.push(issue(`${base}.pricing.unit`, 'error', 'Pricing unit must be open, minute, event, or session.'));
219
+ }
220
+ const unitPriceUsd = Number(candidate.pricing.unitPriceUsd);
221
+ const minUnits = Number(candidate.pricing.minUnits);
222
+ const maxUnits = Number(candidate.pricing.maxUnits);
223
+ if (!Number.isFinite(unitPriceUsd) || unitPriceUsd <= 0) {
224
+ issues.push(issue(`${base}.pricing.unitPriceUsd`, 'error', 'unitPriceUsd must be a positive number.'));
225
+ }
226
+ if (!Number.isInteger(minUnits) || minUnits < 1 || !Number.isInteger(maxUnits) || maxUnits < minUnits) {
227
+ issues.push(issue(`${base}.pricing.units`, 'error', 'minUnits and maxUnits must be positive integers with maxUnits >= minUnits.'));
228
+ }
229
+ if (!['x402', 'pay.sh'].includes(String(candidate.pricing.settlement))) {
230
+ issues.push(issue(`${base}.pricing.settlement`, 'error', 'settlement must be x402 or pay.sh.'));
231
+ }
232
+ }
233
+ // Delivery contract validation.
234
+ if (!isRecord(candidate.delivery)) {
235
+ issues.push(issue(`${base}.delivery`, 'error', 'Delivery contract is required for stream/webhook capabilities.'));
236
+ }
237
+ else {
238
+ pushUnknownKeyIssues(issues, candidate.delivery, DELIVERY_KEYS, `${base}.delivery`);
239
+ if (!DELIVERY_TRANSPORTS.has(String(candidate.delivery.transport))) {
240
+ issues.push(issue(`${base}.delivery.transport`, 'error', 'Delivery transport must be mcp-streamable-http or webhook-http.'));
241
+ }
242
+ if (!Array.isArray(candidate.delivery.events) || candidate.delivery.events.length === 0) {
243
+ issues.push(issue(`${base}.delivery.events`, 'error', 'Delivery events must list at least one exact event id.'));
244
+ }
245
+ else {
246
+ candidate.delivery.events.forEach((eventName, eventIndex) => {
247
+ if (typeof eventName !== 'string' || eventName.trim().length < 3) {
248
+ issues.push(issue(`${base}.delivery.events[${eventIndex}]`, 'error', 'Delivery event ids must be non-empty strings.'));
249
+ }
250
+ });
251
+ }
252
+ const latencyTargetMs = Number(candidate.delivery.latencyTargetMs);
253
+ const replayWindowSeconds = Number(candidate.delivery.replayWindowSeconds);
254
+ if (!Number.isInteger(latencyTargetMs) || latencyTargetMs < 100 || latencyTargetMs > 60_000) {
255
+ issues.push(issue(`${base}.delivery.latencyTargetMs`, 'error', 'latencyTargetMs must be an integer between 100 and 60000.'));
256
+ }
257
+ if (!Number.isInteger(replayWindowSeconds) || replayWindowSeconds < 30 || replayWindowSeconds > 86_400) {
258
+ issues.push(issue(`${base}.delivery.replayWindowSeconds`, 'error', 'replayWindowSeconds must be an integer between 30 and 86400.'));
259
+ }
260
+ }
261
+ return issues;
262
+ }
263
+ /* -------------------------------------------------------------------------- */
264
+ /* Public API */
265
+ /* -------------------------------------------------------------------------- */
266
+ /**
267
+ * @name validatePremiumPluginManifest
268
+ * @description Validate an unknown value as a `PremiumPluginManifest`.
269
+ *
270
+ * Top-level checks: object shape, id format, semver version, title, description
271
+ * length, publisher, visibility enum, and at least one capability. Each
272
+ * capability is then validated by `validateCapability`.
273
+ *
274
+ * @param manifest - Unknown JSON value (from filesystem or MCP tool argument).
275
+ * @returns `PremiumValidationReport` with `valid`, `errors[]`, and `warnings[]`.
276
+ *
277
+ * @usedBy
278
+ * - `private-manifest-loader.ts` → validates each `.json` file from disk.
279
+ * - `premium-tools.ts` → MCP tool `sap_premium_validate_plugin_manifest`.
280
+ */
281
+ export function validatePremiumPluginManifest(manifest) {
282
+ const issues = [];
283
+ if (!isRecord(manifest)) {
284
+ return {
285
+ valid: false,
286
+ errors: [issue('$', 'error', 'Premium plugin manifest must be an object.')],
287
+ warnings: [],
288
+ };
289
+ }
290
+ const candidate = manifest;
291
+ // Reject unknown top-level keys.
292
+ pushUnknownKeyIssues(issues, manifest, PLUGIN_KEYS, '$');
293
+ // Identity and metadata checks.
294
+ if (typeof candidate.id !== 'string' || !PLUGIN_ID_PATTERN.test(candidate.id)) {
295
+ issues.push(issue('id', 'error', 'Plugin id must be lowercase and may contain letters, numbers, dot, or dash.'));
296
+ }
297
+ if (typeof candidate.version !== 'string' || !SEMVER_PATTERN.test(candidate.version)) {
298
+ issues.push(issue('version', 'error', 'Version must be semver, for example 1.0.0 or 1.0.0-rc.1.'));
299
+ }
300
+ if (typeof candidate.title !== 'string' || candidate.title.length < 4) {
301
+ issues.push(issue('title', 'error', 'Title must be a human-readable plugin name.'));
302
+ }
303
+ if (typeof candidate.description !== 'string' || candidate.description.length < 60) {
304
+ issues.push(issue('description', 'error', 'Description must explain what the plugin sells and which agents should use it.'));
305
+ }
306
+ if (typeof candidate.publisher !== 'string' || candidate.publisher.length < 2) {
307
+ issues.push(issue('publisher', 'error', 'Publisher is required for registry and enterprise review.'));
308
+ }
309
+ if (!['public', 'private', 'enterprise'].includes(String(candidate.visibility))) {
310
+ issues.push(issue('visibility', 'error', 'Visibility must be public, private, or enterprise.'));
311
+ }
312
+ // Capabilities array: must be non-empty, each entry validated individually.
313
+ if (!Array.isArray(candidate.capabilities) || candidate.capabilities.length === 0) {
314
+ issues.push(issue('capabilities', 'error', 'At least one premium capability is required.'));
315
+ }
316
+ else {
317
+ candidate.capabilities.forEach((capability, index) => issues.push(...validateCapability(capability, index)));
318
+ }
319
+ return {
320
+ valid: issues.every(candidateIssue => candidateIssue.severity !== 'error'),
321
+ errors: issues.filter(candidateIssue => candidateIssue.severity === 'error'),
322
+ warnings: issues.filter(candidateIssue => candidateIssue.severity === 'warning'),
323
+ };
324
+ }
325
+ //# sourceMappingURL=plugin-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-validator.js","sourceRoot":"","sources":["../../src/premium/plugin-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @name premium/private-manifest-loader
3
+ * @description Filesystem loader for private/enterprise premium plugin manifests.
4
+ *
5
+ * When `SAP_MCP_ENABLE_PREMIUM_PLUGINS=true` and `SAP_MCP_PLUGIN_DIR` is set,
6
+ * this module scans the configured directory (and its `manifests/` subdirectory)
7
+ * for `.json` files, validates each against `validatePremiumPluginManifest`,
8
+ * and returns sanitized `PremiumPluginManifest` objects.
9
+ *
10
+ * Security guarantees:
11
+ * - Manifests are data only — no code is ever executed from plugin files.
12
+ * - Provider secrets are never read from or stored in manifests.
13
+ * - Symlink escaping is prevented via `realpathSync` + prefix checks.
14
+ * - File count (100) and per-file size (256 KB) are capped.
15
+ * - Every loaded manifest is sanitized to strip any extraneous fields before
16
+ * being returned to callers.
17
+ *
18
+ * @flow
19
+ * 1. `builtin-plugins.ts:listPremiumPlugins()` calls
20
+ * `loadPrivatePremiumPluginManifests()` to merge private manifests into
21
+ * the discovery catalog.
22
+ * 2. `builtin-plugins.ts:premiumPrivatePluginSupport()` calls
23
+ * `loadPrivatePremiumPluginReport()` for diagnostic output.
24
+ * 3. Internally: `loadPrivatePremiumPluginReport()` scans the plugin dir,
25
+ * reads + validates each `.json` file, and returns accepted/rejected lists.
26
+ * 4. `loadPrivatePremiumPluginManifests()` returns only the accepted manifests,
27
+ * deep-cloned to prevent external mutation.
28
+ *
29
+ * @env SAP_MCP_ENABLE_PREMIUM_PLUGINS — Must be `true` or `1` to enable loading.
30
+ * @env SAP_MCP_PLUGIN_DIR — Filesystem path to the plugin directory.
31
+ * @env SAP_MCP_PREMIUM_EXPOSE_PRIVATE_DISCOVERY — If `true`/`1`, private/enterprise
32
+ * plugins appear in public discovery responses.
33
+ *
34
+ * @module premium/private-manifest-loader
35
+ */
36
+ import type { PremiumPluginManifest, PremiumValidationIssue } from './types.js';
37
+ /**
38
+ * @name PrivatePremiumPluginLoadReport
39
+ * @description Diagnostic report returned by `loadPrivatePremiumPluginReport`.
40
+ *
41
+ * @property enabled - Whether private plugin loading is enabled.
42
+ * @property exposePrivateDiscovery - Whether private plugins appear in discovery.
43
+ * @property pluginDirConfigured - Whether `SAP_MCP_PLUGIN_DIR` is set.
44
+ * @property loadedManifests - Successfully validated and sanitized manifests.
45
+ * @property rejectedManifests - Files that failed validation or loading,
46
+ * with reason and optional validation errors.
47
+ *
48
+ * @usedBy `builtin-plugins.ts:premiumPrivatePluginSupport` (diagnostic output).
49
+ */
50
+ export interface PrivatePremiumPluginLoadReport {
51
+ enabled: boolean;
52
+ exposePrivateDiscovery: boolean;
53
+ pluginDirConfigured: boolean;
54
+ loadedManifests: PremiumPluginManifest[];
55
+ rejectedManifests: Array<{
56
+ file: string;
57
+ reason: string;
58
+ errors?: PremiumValidationIssue[];
59
+ }>;
60
+ }
61
+ /**
62
+ * @name privatePremiumPluginsEnabled
63
+ * @description Check whether private plugin loading is enabled via env var.
64
+ *
65
+ * @returns `true` if `SAP_MCP_ENABLE_PREMIUM_PLUGINS` is `true` or `1`.
66
+ *
67
+ * @usedBy `loadPrivatePremiumPluginReport` (gate check).
68
+ */
69
+ export declare function privatePremiumPluginsEnabled(): boolean;
70
+ /**
71
+ * @name premiumDiscoveryIncludesPrivate
72
+ * @description Check whether private/enterprise plugins should appear in
73
+ * public discovery responses.
74
+ *
75
+ * @returns `true` if `SAP_MCP_PREMIUM_EXPOSE_PRIVATE_DISCOVERY` is `true` or `1`.
76
+ *
77
+ * @usedBy `builtin-plugins.ts:listPremiumPlugins` (visibility filter default).
78
+ */
79
+ export declare function premiumDiscoveryIncludesPrivate(): boolean;
80
+ /**
81
+ * @name loadPrivatePremiumPluginReport
82
+ * @description Scan, validate, and load private premium plugin manifests from
83
+ * the configured plugin directory.
84
+ *
85
+ * Steps:
86
+ * 1. Check if loading is enabled (`SAP_MCP_ENABLE_PREMIUM_PLUGINS`).
87
+ * 2. Check if `SAP_MCP_PLUGIN_DIR` is configured and exists.
88
+ * 3. Discover `.json` files in the root and `manifests/` subdirectory.
89
+ * 4. For each file: check size, parse JSON, validate with
90
+ * `validatePremiumPluginManifest`, sanitize if valid.
91
+ * 5. Accepted manifests go into `loadedManifests`; rejected ones into
92
+ * `rejectedManifests` with a reason string.
93
+ *
94
+ * @returns A `PrivatePremiumPluginLoadReport` with loaded and rejected manifests.
95
+ *
96
+ * @usedBy
97
+ * - `builtin-plugins.ts:loadPrivatePremiumPluginManifests` (accepted only).
98
+ * - `builtin-plugins.ts:premiumPrivatePluginSupport` (diagnostic counts).
99
+ */
100
+ export declare function loadPrivatePremiumPluginReport(): PrivatePremiumPluginLoadReport;
101
+ /**
102
+ * @name loadPrivatePremiumPluginManifests
103
+ * @description Return only the successfully loaded private plugin manifests,
104
+ * deep-cloned to prevent external mutation.
105
+ *
106
+ * @returns Array of `PremiumPluginManifest` clones (empty if disabled or no dir).
107
+ *
108
+ * @usedBy `builtin-plugins.ts:listPremiumPlugins` (merged with built-in plugins).
109
+ */
110
+ export declare function loadPrivatePremiumPluginManifests(): PremiumPluginManifest[];
111
+ //# sourceMappingURL=private-manifest-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private-manifest-loader.d.ts","sourceRoot":"","sources":["../../src/premium/private-manifest-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAKH,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAehF;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,EAAE,OAAO,CAAC;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,qBAAqB,EAAE,CAAC;IACzC,iBAAiB,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,sBAAsB,EAAE,CAAC;KACnC,CAAC,CAAC;CACJ;AAsCD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAEtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAEzD;AAwGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,8BAA8B,IAAI,8BAA8B,CA0D/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,IAAI,qBAAqB,EAAE,CAE3E"}