@oobe-protocol-labs/sap-mcp-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (593) hide show
  1. package/.env.example +159 -0
  2. package/CHANGELOG.md +55 -0
  3. package/LICENSE +21 -0
  4. package/README.md +223 -0
  5. package/config.example.json +64 -0
  6. package/config.schema.json +370 -0
  7. package/config.secure-example.json +100 -0
  8. package/dist/adapters/index.d.ts +6 -0
  9. package/dist/adapters/index.d.ts.map +1 -0
  10. package/dist/adapters/index.js +6 -0
  11. package/dist/adapters/index.js.map +1 -0
  12. package/dist/adapters/mcp/errors.d.ts +7 -0
  13. package/dist/adapters/mcp/errors.d.ts.map +1 -0
  14. package/dist/adapters/mcp/errors.js +10 -0
  15. package/dist/adapters/mcp/errors.js.map +1 -0
  16. package/dist/adapters/mcp/index.d.ts +8 -0
  17. package/dist/adapters/mcp/index.d.ts.map +1 -0
  18. package/dist/adapters/mcp/index.js +8 -0
  19. package/dist/adapters/mcp/index.js.map +1 -0
  20. package/dist/adapters/mcp/prompt-response.d.ts +13 -0
  21. package/dist/adapters/mcp/prompt-response.d.ts.map +1 -0
  22. package/dist/adapters/mcp/prompt-response.js +7 -0
  23. package/dist/adapters/mcp/prompt-response.js.map +1 -0
  24. package/dist/adapters/mcp/resource-response.d.ts +8 -0
  25. package/dist/adapters/mcp/resource-response.d.ts.map +1 -0
  26. package/dist/adapters/mcp/resource-response.js +7 -0
  27. package/dist/adapters/mcp/resource-response.js.map +1 -0
  28. package/dist/adapters/mcp/sdk-compat.d.ts +191 -0
  29. package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -0
  30. package/dist/adapters/mcp/sdk-compat.js +606 -0
  31. package/dist/adapters/mcp/sdk-compat.js.map +1 -0
  32. package/dist/adapters/mcp/tool-response.d.ts +32 -0
  33. package/dist/adapters/mcp/tool-response.d.ts.map +1 -0
  34. package/dist/adapters/mcp/tool-response.js +27 -0
  35. package/dist/adapters/mcp/tool-response.js.map +1 -0
  36. package/dist/adapters/solana/commitment.d.ts +9 -0
  37. package/dist/adapters/solana/commitment.d.ts.map +1 -0
  38. package/dist/adapters/solana/commitment.js +14 -0
  39. package/dist/adapters/solana/commitment.js.map +1 -0
  40. package/dist/adapters/solana/connection.d.ts +10 -0
  41. package/dist/adapters/solana/connection.d.ts.map +1 -0
  42. package/dist/adapters/solana/connection.js +13 -0
  43. package/dist/adapters/solana/connection.js.map +1 -0
  44. package/dist/adapters/solana/index.d.ts +7 -0
  45. package/dist/adapters/solana/index.d.ts.map +1 -0
  46. package/dist/adapters/solana/index.js +7 -0
  47. package/dist/adapters/solana/index.js.map +1 -0
  48. package/dist/adapters/solana/public-key.d.ts +9 -0
  49. package/dist/adapters/solana/public-key.d.ts.map +1 -0
  50. package/dist/adapters/solana/public-key.js +11 -0
  51. package/dist/adapters/solana/public-key.js.map +1 -0
  52. package/dist/cli.d.ts +29 -0
  53. package/dist/cli.d.ts.map +1 -0
  54. package/dist/cli.js +269 -0
  55. package/dist/cli.js.map +1 -0
  56. package/dist/config/defaults.d.ts +28 -0
  57. package/dist/config/defaults.d.ts.map +1 -0
  58. package/dist/config/defaults.js +28 -0
  59. package/dist/config/defaults.js.map +1 -0
  60. package/dist/config/env.d.ts +297 -0
  61. package/dist/config/env.d.ts.map +1 -0
  62. package/dist/config/env.js +563 -0
  63. package/dist/config/env.js.map +1 -0
  64. package/dist/config/index.d.ts +7 -0
  65. package/dist/config/index.d.ts.map +1 -0
  66. package/dist/config/index.js +7 -0
  67. package/dist/config/index.js.map +1 -0
  68. package/dist/config/mcp-client-injection.d.ts +113 -0
  69. package/dist/config/mcp-client-injection.d.ts.map +1 -0
  70. package/dist/config/mcp-client-injection.js +453 -0
  71. package/dist/config/mcp-client-injection.js.map +1 -0
  72. package/dist/config/paths.d.ts +37 -0
  73. package/dist/config/paths.d.ts.map +1 -0
  74. package/dist/config/paths.js +93 -0
  75. package/dist/config/paths.js.map +1 -0
  76. package/dist/config/profiles.d.ts +85 -0
  77. package/dist/config/profiles.d.ts.map +1 -0
  78. package/dist/config/profiles.js +346 -0
  79. package/dist/config/profiles.js.map +1 -0
  80. package/dist/config/schema.d.ts +9 -0
  81. package/dist/config/schema.d.ts.map +1 -0
  82. package/dist/config/schema.js +8 -0
  83. package/dist/config/schema.js.map +1 -0
  84. package/dist/config/secure-config.d.ts +607 -0
  85. package/dist/config/secure-config.d.ts.map +1 -0
  86. package/dist/config/secure-config.js +526 -0
  87. package/dist/config/secure-config.js.map +1 -0
  88. package/dist/config/setup.d.ts +42 -0
  89. package/dist/config/setup.d.ts.map +1 -0
  90. package/dist/config/setup.js +173 -0
  91. package/dist/config/setup.js.map +1 -0
  92. package/dist/config/wizard.d.ts +15 -0
  93. package/dist/config/wizard.d.ts.map +1 -0
  94. package/dist/config/wizard.js +1176 -0
  95. package/dist/config/wizard.js.map +1 -0
  96. package/dist/config-cli.d.ts +21 -0
  97. package/dist/config-cli.d.ts.map +1 -0
  98. package/dist/config-cli.js +679 -0
  99. package/dist/config-cli.js.map +1 -0
  100. package/dist/core/constants.d.ts +78 -0
  101. package/dist/core/constants.d.ts.map +1 -0
  102. package/dist/core/constants.js +78 -0
  103. package/dist/core/constants.js.map +1 -0
  104. package/dist/core/errors.d.ts +188 -0
  105. package/dist/core/errors.d.ts.map +1 -0
  106. package/dist/core/errors.js +337 -0
  107. package/dist/core/errors.js.map +1 -0
  108. package/dist/core/guards.d.ts +41 -0
  109. package/dist/core/guards.d.ts.map +1 -0
  110. package/dist/core/guards.js +93 -0
  111. package/dist/core/guards.js.map +1 -0
  112. package/dist/core/index.d.ts +11 -0
  113. package/dist/core/index.d.ts.map +1 -0
  114. package/dist/core/index.js +10 -0
  115. package/dist/core/index.js.map +1 -0
  116. package/dist/core/logger.d.ts +64 -0
  117. package/dist/core/logger.d.ts.map +1 -0
  118. package/dist/core/logger.js +159 -0
  119. package/dist/core/logger.js.map +1 -0
  120. package/dist/core/result.d.ts +49 -0
  121. package/dist/core/result.d.ts.map +1 -0
  122. package/dist/core/result.js +61 -0
  123. package/dist/core/result.js.map +1 -0
  124. package/dist/core/types.d.ts +147 -0
  125. package/dist/core/types.d.ts.map +1 -0
  126. package/dist/core/types.js +8 -0
  127. package/dist/core/types.js.map +1 -0
  128. package/dist/index.d.ts +18 -0
  129. package/dist/index.d.ts.map +1 -0
  130. package/dist/index.js +15 -0
  131. package/dist/index.js.map +1 -0
  132. package/dist/payments/http-adapter.d.ts +76 -0
  133. package/dist/payments/http-adapter.d.ts.map +1 -0
  134. package/dist/payments/http-adapter.js +126 -0
  135. package/dist/payments/http-adapter.js.map +1 -0
  136. package/dist/payments/index.d.ts +12 -0
  137. package/dist/payments/index.d.ts.map +1 -0
  138. package/dist/payments/index.js +9 -0
  139. package/dist/payments/index.js.map +1 -0
  140. package/dist/payments/json-rpc.d.ts +49 -0
  141. package/dist/payments/json-rpc.d.ts.map +1 -0
  142. package/dist/payments/json-rpc.js +53 -0
  143. package/dist/payments/json-rpc.js.map +1 -0
  144. package/dist/payments/monetization-gate.d.ts +49 -0
  145. package/dist/payments/monetization-gate.d.ts.map +1 -0
  146. package/dist/payments/monetization-gate.js +398 -0
  147. package/dist/payments/monetization-gate.js.map +1 -0
  148. package/dist/payments/oobe-facilitator-server.d.ts +71 -0
  149. package/dist/payments/oobe-facilitator-server.d.ts.map +1 -0
  150. package/dist/payments/oobe-facilitator-server.js +409 -0
  151. package/dist/payments/oobe-facilitator-server.js.map +1 -0
  152. package/dist/payments/pay-sh-spec.d.ts +44 -0
  153. package/dist/payments/pay-sh-spec.d.ts.map +1 -0
  154. package/dist/payments/pay-sh-spec.js +218 -0
  155. package/dist/payments/pay-sh-spec.js.map +1 -0
  156. package/dist/payments/pricing.d.ts +60 -0
  157. package/dist/payments/pricing.d.ts.map +1 -0
  158. package/dist/payments/pricing.js +272 -0
  159. package/dist/payments/pricing.js.map +1 -0
  160. package/dist/payments/usage-ledger.d.ts +84 -0
  161. package/dist/payments/usage-ledger.d.ts.map +1 -0
  162. package/dist/payments/usage-ledger.js +126 -0
  163. package/dist/payments/usage-ledger.js.map +1 -0
  164. package/dist/policy/bento-policy-engine.d.ts +71 -0
  165. package/dist/policy/bento-policy-engine.d.ts.map +1 -0
  166. package/dist/policy/bento-policy-engine.js +218 -0
  167. package/dist/policy/bento-policy-engine.js.map +1 -0
  168. package/dist/policy/default-policies.d.ts +9 -0
  169. package/dist/policy/default-policies.d.ts.map +1 -0
  170. package/dist/policy/default-policies.js +69 -0
  171. package/dist/policy/default-policies.js.map +1 -0
  172. package/dist/policy/hybrid-policy-engine.d.ts +95 -0
  173. package/dist/policy/hybrid-policy-engine.d.ts.map +1 -0
  174. package/dist/policy/hybrid-policy-engine.js +297 -0
  175. package/dist/policy/hybrid-policy-engine.js.map +1 -0
  176. package/dist/policy/index.d.ts +10 -0
  177. package/dist/policy/index.d.ts.map +1 -0
  178. package/dist/policy/index.js +10 -0
  179. package/dist/policy/index.js.map +1 -0
  180. package/dist/policy/local-policy-engine.d.ts +119 -0
  181. package/dist/policy/local-policy-engine.d.ts.map +1 -0
  182. package/dist/policy/local-policy-engine.js +318 -0
  183. package/dist/policy/local-policy-engine.js.map +1 -0
  184. package/dist/policy/permission-checks.d.ts +19 -0
  185. package/dist/policy/permission-checks.d.ts.map +1 -0
  186. package/dist/policy/permission-checks.js +60 -0
  187. package/dist/policy/permission-checks.js.map +1 -0
  188. package/dist/policy/policy-engine.d.ts +57 -0
  189. package/dist/policy/policy-engine.d.ts.map +1 -0
  190. package/dist/policy/policy-engine.js +162 -0
  191. package/dist/policy/policy-engine.js.map +1 -0
  192. package/dist/policy/policy-types.d.ts +46 -0
  193. package/dist/policy/policy-types.d.ts.map +1 -0
  194. package/dist/policy/policy-types.js +5 -0
  195. package/dist/policy/policy-types.js.map +1 -0
  196. package/dist/policy/risk-level.d.ts +18 -0
  197. package/dist/policy/risk-level.d.ts.map +1 -0
  198. package/dist/policy/risk-level.js +46 -0
  199. package/dist/policy/risk-level.js.map +1 -0
  200. package/dist/policy/spending-limits.d.ts +17 -0
  201. package/dist/policy/spending-limits.d.ts.map +1 -0
  202. package/dist/policy/spending-limits.js +40 -0
  203. package/dist/policy/spending-limits.js.map +1 -0
  204. package/dist/prompts/context/sap-agent-context.prompt.d.ts +64 -0
  205. package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -0
  206. package/dist/prompts/context/sap-agent-context.prompt.js +336 -0
  207. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -0
  208. package/dist/prompts/developer/debug-sap-error.prompt.d.ts +13 -0
  209. package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -0
  210. package/dist/prompts/developer/debug-sap-error.prompt.js +78 -0
  211. package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -0
  212. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +13 -0
  213. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -0
  214. package/dist/prompts/developer/generate-sap-integration.prompt.js +132 -0
  215. package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -0
  216. package/dist/prompts/developer/index.d.ts +6 -0
  217. package/dist/prompts/developer/index.d.ts.map +1 -0
  218. package/dist/prompts/developer/index.js +6 -0
  219. package/dist/prompts/developer/index.js.map +1 -0
  220. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +13 -0
  221. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -0
  222. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +97 -0
  223. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -0
  224. package/dist/prompts/execution-proof/index.d.ts +6 -0
  225. package/dist/prompts/execution-proof/index.d.ts.map +1 -0
  226. package/dist/prompts/execution-proof/index.js +6 -0
  227. package/dist/prompts/execution-proof/index.js.map +1 -0
  228. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +13 -0
  229. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -0
  230. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +95 -0
  231. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -0
  232. package/dist/prompts/index.d.ts +5 -0
  233. package/dist/prompts/index.d.ts.map +1 -0
  234. package/dist/prompts/index.js +5 -0
  235. package/dist/prompts/index.js.map +1 -0
  236. package/dist/prompts/payments/create-paid-api.prompt.d.ts +13 -0
  237. package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -0
  238. package/dist/prompts/payments/create-paid-api.prompt.js +142 -0
  239. package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -0
  240. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +13 -0
  241. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -0
  242. package/dist/prompts/payments/explain-x402-settlement.prompt.js +83 -0
  243. package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -0
  244. package/dist/prompts/payments/index.d.ts +6 -0
  245. package/dist/prompts/payments/index.d.ts.map +1 -0
  246. package/dist/prompts/payments/index.js +6 -0
  247. package/dist/prompts/payments/index.js.map +1 -0
  248. package/dist/prompts/register-prompts.d.ts +10 -0
  249. package/dist/prompts/register-prompts.d.ts.map +1 -0
  250. package/dist/prompts/register-prompts.js +40 -0
  251. package/dist/prompts/register-prompts.js.map +1 -0
  252. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +13 -0
  253. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -0
  254. package/dist/prompts/registry/analyze-sap-agent.prompt.js +85 -0
  255. package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -0
  256. package/dist/prompts/registry/index.d.ts +6 -0
  257. package/dist/prompts/registry/index.d.ts.map +1 -0
  258. package/dist/prompts/registry/index.js +6 -0
  259. package/dist/prompts/registry/index.js.map +1 -0
  260. package/dist/prompts/registry/register-sap-agent.prompt.d.ts +13 -0
  261. package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -0
  262. package/dist/prompts/registry/register-sap-agent.prompt.js +152 -0
  263. package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -0
  264. package/dist/remote/auth/index.d.ts +86 -0
  265. package/dist/remote/auth/index.d.ts.map +1 -0
  266. package/dist/remote/auth/index.js +152 -0
  267. package/dist/remote/auth/index.js.map +1 -0
  268. package/dist/remote/server.d.ts +140 -0
  269. package/dist/remote/server.d.ts.map +1 -0
  270. package/dist/remote/server.js +412 -0
  271. package/dist/remote/server.js.map +1 -0
  272. package/dist/resources/current/sap-current-config.resource.d.ts +30 -0
  273. package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -0
  274. package/dist/resources/current/sap-current-config.resource.js +142 -0
  275. package/dist/resources/current/sap-current-config.resource.js.map +1 -0
  276. package/dist/resources/execution-proof/index.d.ts +5 -0
  277. package/dist/resources/execution-proof/index.d.ts.map +1 -0
  278. package/dist/resources/execution-proof/index.js +5 -0
  279. package/dist/resources/execution-proof/index.js.map +1 -0
  280. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +13 -0
  281. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -0
  282. package/dist/resources/execution-proof/sap-execution-record.resource.js +75 -0
  283. package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -0
  284. package/dist/resources/index.d.ts +5 -0
  285. package/dist/resources/index.d.ts.map +1 -0
  286. package/dist/resources/index.js +5 -0
  287. package/dist/resources/index.js.map +1 -0
  288. package/dist/resources/memory/index.d.ts +5 -0
  289. package/dist/resources/memory/index.d.ts.map +1 -0
  290. package/dist/resources/memory/index.js +5 -0
  291. package/dist/resources/memory/index.js.map +1 -0
  292. package/dist/resources/memory/sap-memory.resource.d.ts +13 -0
  293. package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -0
  294. package/dist/resources/memory/sap-memory.resource.js +77 -0
  295. package/dist/resources/memory/sap-memory.resource.js.map +1 -0
  296. package/dist/resources/profile/sap-active-profile.resource.d.ts +51 -0
  297. package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -0
  298. package/dist/resources/profile/sap-active-profile.resource.js +119 -0
  299. package/dist/resources/profile/sap-active-profile.resource.js.map +1 -0
  300. package/dist/resources/register-resources.d.ts +10 -0
  301. package/dist/resources/register-resources.d.ts.map +1 -0
  302. package/dist/resources/register-resources.js +33 -0
  303. package/dist/resources/register-resources.js.map +1 -0
  304. package/dist/resources/registry/index.d.ts +6 -0
  305. package/dist/resources/registry/index.d.ts.map +1 -0
  306. package/dist/resources/registry/index.js +6 -0
  307. package/dist/resources/registry/index.js.map +1 -0
  308. package/dist/resources/registry/sap-agent.resource.d.ts +13 -0
  309. package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -0
  310. package/dist/resources/registry/sap-agent.resource.js +75 -0
  311. package/dist/resources/registry/sap-agent.resource.js.map +1 -0
  312. package/dist/resources/registry/sap-global-registry.resource.d.ts +13 -0
  313. package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -0
  314. package/dist/resources/registry/sap-global-registry.resource.js +71 -0
  315. package/dist/resources/registry/sap-global-registry.resource.js.map +1 -0
  316. package/dist/resources/reputation/index.d.ts +5 -0
  317. package/dist/resources/reputation/index.d.ts.map +1 -0
  318. package/dist/resources/reputation/index.js +5 -0
  319. package/dist/resources/reputation/index.js.map +1 -0
  320. package/dist/resources/reputation/sap-reputation.resource.d.ts +13 -0
  321. package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -0
  322. package/dist/resources/reputation/sap-reputation.resource.js +75 -0
  323. package/dist/resources/reputation/sap-reputation.resource.js.map +1 -0
  324. package/dist/resources/stats/sap-network-stats.resource.d.ts +14 -0
  325. package/dist/resources/stats/sap-network-stats.resource.d.ts.map +1 -0
  326. package/dist/resources/stats/sap-network-stats.resource.js +86 -0
  327. package/dist/resources/stats/sap-network-stats.resource.js.map +1 -0
  328. package/dist/resources/tool-schema/index.d.ts +5 -0
  329. package/dist/resources/tool-schema/index.d.ts.map +1 -0
  330. package/dist/resources/tool-schema/index.js +5 -0
  331. package/dist/resources/tool-schema/index.js.map +1 -0
  332. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +13 -0
  333. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -0
  334. package/dist/resources/tool-schema/sap-tool-schema.resource.js +75 -0
  335. package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -0
  336. package/dist/sap/index.d.ts +7 -0
  337. package/dist/sap/index.d.ts.map +1 -0
  338. package/dist/sap/index.js +6 -0
  339. package/dist/sap/index.js.map +1 -0
  340. package/dist/sap/sap-client-manager.d.ts +54 -0
  341. package/dist/sap/sap-client-manager.d.ts.map +1 -0
  342. package/dist/sap/sap-client-manager.js +129 -0
  343. package/dist/sap/sap-client-manager.js.map +1 -0
  344. package/dist/sap/sap-errors.d.ts +13 -0
  345. package/dist/sap/sap-errors.d.ts.map +1 -0
  346. package/dist/sap/sap-errors.js +23 -0
  347. package/dist/sap/sap-errors.js.map +1 -0
  348. package/dist/sap/sap-types.d.ts +69 -0
  349. package/dist/sap/sap-types.d.ts.map +1 -0
  350. package/dist/sap/sap-types.js +5 -0
  351. package/dist/sap/sap-types.js.map +1 -0
  352. package/dist/schemas/common.schema.d.ts +42 -0
  353. package/dist/schemas/common.schema.d.ts.map +1 -0
  354. package/dist/schemas/common.schema.js +36 -0
  355. package/dist/schemas/common.schema.js.map +1 -0
  356. package/dist/schemas/developer.schema.d.ts +31 -0
  357. package/dist/schemas/developer.schema.d.ts.map +1 -0
  358. package/dist/schemas/developer.schema.js +19 -0
  359. package/dist/schemas/developer.schema.js.map +1 -0
  360. package/dist/schemas/execution-proof.schema.d.ts +44 -0
  361. package/dist/schemas/execution-proof.schema.d.ts.map +1 -0
  362. package/dist/schemas/execution-proof.schema.js +26 -0
  363. package/dist/schemas/execution-proof.schema.js.map +1 -0
  364. package/dist/schemas/identity.schema.d.ts +34 -0
  365. package/dist/schemas/identity.schema.d.ts.map +1 -0
  366. package/dist/schemas/identity.schema.js +21 -0
  367. package/dist/schemas/identity.schema.js.map +1 -0
  368. package/dist/schemas/index.d.ts +15 -0
  369. package/dist/schemas/index.d.ts.map +1 -0
  370. package/dist/schemas/index.js +15 -0
  371. package/dist/schemas/index.js.map +1 -0
  372. package/dist/schemas/memory.schema.d.ts +34 -0
  373. package/dist/schemas/memory.schema.d.ts.map +1 -0
  374. package/dist/schemas/memory.schema.js +21 -0
  375. package/dist/schemas/memory.schema.js.map +1 -0
  376. package/dist/schemas/payments.schema.d.ts +37 -0
  377. package/dist/schemas/payments.schema.d.ts.map +1 -0
  378. package/dist/schemas/payments.schema.js +22 -0
  379. package/dist/schemas/payments.schema.js.map +1 -0
  380. package/dist/schemas/registry.schema.d.ts +65 -0
  381. package/dist/schemas/registry.schema.d.ts.map +1 -0
  382. package/dist/schemas/registry.schema.js +34 -0
  383. package/dist/schemas/registry.schema.js.map +1 -0
  384. package/dist/schemas/reputation.schema.d.ts +31 -0
  385. package/dist/schemas/reputation.schema.d.ts.map +1 -0
  386. package/dist/schemas/reputation.schema.js +20 -0
  387. package/dist/schemas/reputation.schema.js.map +1 -0
  388. package/dist/schemas/settlement.schema.d.ts +50 -0
  389. package/dist/schemas/settlement.schema.d.ts.map +1 -0
  390. package/dist/schemas/settlement.schema.js +29 -0
  391. package/dist/schemas/settlement.schema.js.map +1 -0
  392. package/dist/schemas/tool-schema.schema.d.ts +56 -0
  393. package/dist/schemas/tool-schema.schema.d.ts.map +1 -0
  394. package/dist/schemas/tool-schema.schema.js +26 -0
  395. package/dist/schemas/tool-schema.schema.js.map +1 -0
  396. package/dist/schemas/transaction.schema.d.ts +34 -0
  397. package/dist/schemas/transaction.schema.d.ts.map +1 -0
  398. package/dist/schemas/transaction.schema.js +20 -0
  399. package/dist/schemas/transaction.schema.js.map +1 -0
  400. package/dist/security/approval-required.d.ts +9 -0
  401. package/dist/security/approval-required.d.ts.map +1 -0
  402. package/dist/security/approval-required.js +10 -0
  403. package/dist/security/approval-required.js.map +1 -0
  404. package/dist/security/index.d.ts +9 -0
  405. package/dist/security/index.d.ts.map +1 -0
  406. package/dist/security/index.js +9 -0
  407. package/dist/security/index.js.map +1 -0
  408. package/dist/security/private-key-guard.d.ts +11 -0
  409. package/dist/security/private-key-guard.d.ts.map +1 -0
  410. package/dist/security/private-key-guard.js +22 -0
  411. package/dist/security/private-key-guard.js.map +1 -0
  412. package/dist/security/prompt-injection-notes.d.ts +13 -0
  413. package/dist/security/prompt-injection-notes.d.ts.map +1 -0
  414. package/dist/security/prompt-injection-notes.js +23 -0
  415. package/dist/security/prompt-injection-notes.js.map +1 -0
  416. package/dist/security/tool-permissions.d.ts +30 -0
  417. package/dist/security/tool-permissions.d.ts.map +1 -0
  418. package/dist/security/tool-permissions.js +270 -0
  419. package/dist/security/tool-permissions.js.map +1 -0
  420. package/dist/security/unsafe-action-guard.d.ts +28 -0
  421. package/dist/security/unsafe-action-guard.d.ts.map +1 -0
  422. package/dist/security/unsafe-action-guard.js +175 -0
  423. package/dist/security/unsafe-action-guard.js.map +1 -0
  424. package/dist/server/create-server.d.ts +12 -0
  425. package/dist/server/create-server.d.ts.map +1 -0
  426. package/dist/server/create-server.js +57 -0
  427. package/dist/server/create-server.js.map +1 -0
  428. package/dist/server/index.d.ts +7 -0
  429. package/dist/server/index.d.ts.map +1 -0
  430. package/dist/server/index.js +7 -0
  431. package/dist/server/index.js.map +1 -0
  432. package/dist/server/register-capabilities.d.ts +10 -0
  433. package/dist/server/register-capabilities.d.ts.map +1 -0
  434. package/dist/server/register-capabilities.js +23 -0
  435. package/dist/server/register-capabilities.js.map +1 -0
  436. package/dist/server/server-metadata.d.ts +32 -0
  437. package/dist/server/server-metadata.d.ts.map +1 -0
  438. package/dist/server/server-metadata.js +32 -0
  439. package/dist/server/server-metadata.js.map +1 -0
  440. package/dist/session/agent-session.d.ts +25 -0
  441. package/dist/session/agent-session.d.ts.map +1 -0
  442. package/dist/session/agent-session.js +35 -0
  443. package/dist/session/agent-session.js.map +1 -0
  444. package/dist/session/delegated-session.d.ts +20 -0
  445. package/dist/session/delegated-session.d.ts.map +1 -0
  446. package/dist/session/delegated-session.js +47 -0
  447. package/dist/session/delegated-session.js.map +1 -0
  448. package/dist/session/index.d.ts +10 -0
  449. package/dist/session/index.d.ts.map +1 -0
  450. package/dist/session/index.js +9 -0
  451. package/dist/session/index.js.map +1 -0
  452. package/dist/session/redis-session-store.d.ts +89 -0
  453. package/dist/session/redis-session-store.d.ts.map +1 -0
  454. package/dist/session/redis-session-store.js +219 -0
  455. package/dist/session/redis-session-store.js.map +1 -0
  456. package/dist/session/session-limits.d.ts +20 -0
  457. package/dist/session/session-limits.d.ts.map +1 -0
  458. package/dist/session/session-limits.js +55 -0
  459. package/dist/session/session-limits.js.map +1 -0
  460. package/dist/session/session-permissions.d.ts +37 -0
  461. package/dist/session/session-permissions.d.ts.map +1 -0
  462. package/dist/session/session-permissions.js +58 -0
  463. package/dist/session/session-permissions.js.map +1 -0
  464. package/dist/session/session-store.d.ts +38 -0
  465. package/dist/session/session-store.d.ts.map +1 -0
  466. package/dist/session/session-store.js +62 -0
  467. package/dist/session/session-store.js.map +1 -0
  468. package/dist/session/session-types.d.ts +33 -0
  469. package/dist/session/session-types.d.ts.map +1 -0
  470. package/dist/session/session-types.js +5 -0
  471. package/dist/session/session-types.js.map +1 -0
  472. package/dist/signer/external-signer.d.ts +16 -0
  473. package/dist/signer/external-signer.d.ts.map +1 -0
  474. package/dist/signer/external-signer.js +128 -0
  475. package/dist/signer/external-signer.js.map +1 -0
  476. package/dist/signer/index.d.ts +9 -0
  477. package/dist/signer/index.d.ts.map +1 -0
  478. package/dist/signer/index.js +8 -0
  479. package/dist/signer/index.js.map +1 -0
  480. package/dist/signer/load-keypair.d.ts +15 -0
  481. package/dist/signer/load-keypair.d.ts.map +1 -0
  482. package/dist/signer/load-keypair.js +39 -0
  483. package/dist/signer/load-keypair.js.map +1 -0
  484. package/dist/signer/local-keypair-signer.d.ts +11 -0
  485. package/dist/signer/local-keypair-signer.d.ts.map +1 -0
  486. package/dist/signer/local-keypair-signer.js +46 -0
  487. package/dist/signer/local-keypair-signer.js.map +1 -0
  488. package/dist/signer/signer-resolver.d.ts +10 -0
  489. package/dist/signer/signer-resolver.d.ts.map +1 -0
  490. package/dist/signer/signer-resolver.js +63 -0
  491. package/dist/signer/signer-resolver.js.map +1 -0
  492. package/dist/signer/signer-types.d.ts +35 -0
  493. package/dist/signer/signer-types.d.ts.map +1 -0
  494. package/dist/signer/signer-types.js +5 -0
  495. package/dist/signer/signer-types.js.map +1 -0
  496. package/dist/signer/signing-proxy.d.ts +45 -0
  497. package/dist/signer/signing-proxy.d.ts.map +1 -0
  498. package/dist/signer/signing-proxy.js +300 -0
  499. package/dist/signer/signing-proxy.js.map +1 -0
  500. package/dist/tools/client-sdk-tools.d.ts +22 -0
  501. package/dist/tools/client-sdk-tools.d.ts.map +1 -0
  502. package/dist/tools/client-sdk-tools.js +220 -0
  503. package/dist/tools/client-sdk-tools.js.map +1 -0
  504. package/dist/tools/index.d.ts +11 -0
  505. package/dist/tools/index.d.ts.map +1 -0
  506. package/dist/tools/index.js +17 -0
  507. package/dist/tools/index.js.map +1 -0
  508. package/dist/tools/profile-tools.d.ts +12 -0
  509. package/dist/tools/profile-tools.d.ts.map +1 -0
  510. package/dist/tools/profile-tools.js +250 -0
  511. package/dist/tools/profile-tools.js.map +1 -0
  512. package/dist/tools/register-tools.d.ts +12 -0
  513. package/dist/tools/register-tools.d.ts.map +1 -0
  514. package/dist/tools/register-tools.js +36 -0
  515. package/dist/tools/register-tools.js.map +1 -0
  516. package/dist/tools/sap-network-stats.tool.d.ts +14 -0
  517. package/dist/tools/sap-network-stats.tool.d.ts.map +1 -0
  518. package/dist/tools/sap-network-stats.tool.js +101 -0
  519. package/dist/tools/sap-network-stats.tool.js.map +1 -0
  520. package/dist/tools/sap-sdk-tools.d.ts +15 -0
  521. package/dist/tools/sap-sdk-tools.d.ts.map +1 -0
  522. package/dist/tools/sap-sdk-tools.js +1515 -0
  523. package/dist/tools/sap-sdk-tools.js.map +1 -0
  524. package/dist/tools/sap-sns-tools.d.ts +35 -0
  525. package/dist/tools/sap-sns-tools.d.ts.map +1 -0
  526. package/dist/tools/sap-sns-tools.js +626 -0
  527. package/dist/tools/sap-sns-tools.js.map +1 -0
  528. package/dist/tools/skills-tools.d.ts +12 -0
  529. package/dist/tools/skills-tools.d.ts.map +1 -0
  530. package/dist/tools/skills-tools.js +273 -0
  531. package/dist/tools/skills-tools.js.map +1 -0
  532. package/dist/tools/transaction-tools.d.ts +14 -0
  533. package/dist/tools/transaction-tools.d.ts.map +1 -0
  534. package/dist/tools/transaction-tools.js +297 -0
  535. package/dist/tools/transaction-tools.js.map +1 -0
  536. package/dist/transports/http.d.ts +40 -0
  537. package/dist/transports/http.d.ts.map +1 -0
  538. package/dist/transports/http.js +212 -0
  539. package/dist/transports/http.js.map +1 -0
  540. package/dist/transports/index.d.ts +6 -0
  541. package/dist/transports/index.d.ts.map +1 -0
  542. package/dist/transports/index.js +6 -0
  543. package/dist/transports/index.js.map +1 -0
  544. package/dist/transports/stdio.d.ts +14 -0
  545. package/dist/transports/stdio.d.ts.map +1 -0
  546. package/dist/transports/stdio.js +32 -0
  547. package/dist/transports/stdio.js.map +1 -0
  548. package/dist/tui/components.d.ts +59 -0
  549. package/dist/tui/components.d.ts.map +1 -0
  550. package/dist/tui/components.js +82 -0
  551. package/dist/tui/components.js.map +1 -0
  552. package/dist/tui/config-wizard.d.ts +12 -0
  553. package/dist/tui/config-wizard.d.ts.map +1 -0
  554. package/dist/tui/config-wizard.js +348 -0
  555. package/dist/tui/config-wizard.js.map +1 -0
  556. package/dist/tui/wizard-save.d.ts +51 -0
  557. package/dist/tui/wizard-save.d.ts.map +1 -0
  558. package/dist/tui/wizard-save.js +148 -0
  559. package/dist/tui/wizard-save.js.map +1 -0
  560. package/docs/00_README.md +45 -0
  561. package/docs/01_PRODUCT_OVERVIEW.md +69 -0
  562. package/docs/02_ARCHITECTURE_AND_REQUEST_FLOW.md +120 -0
  563. package/docs/03_CONFIGURATION_AND_WIZARD.md +143 -0
  564. package/docs/04_LOCAL_STDIO_USAGE.md +118 -0
  565. package/docs/05_REMOTE_VPS_DEPLOYMENT.md +136 -0
  566. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +162 -0
  567. package/docs/07_ENDPOINTS_AND_CLIENTS.md +114 -0
  568. package/docs/08_SECURITY_POLICY_AND_SIGNING.md +134 -0
  569. package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +72 -0
  570. package/docs/10_OPERATIONS_RELEASE_AND_PM2.md +90 -0
  571. package/docs/11_CODE_QUALITY_AUDIT.md +49 -0
  572. package/ecosystem.config.example.cjs +55 -0
  573. package/package.json +132 -0
  574. package/skills/README.md +146 -0
  575. package/skills/sap-agent-registry/SKILL.md +39 -0
  576. package/skills/sap-agentkit/SKILL.md +40 -0
  577. package/skills/sap-defi/SKILL.md +51 -0
  578. package/skills/sap-discovery-indexing/SKILL.md +33 -0
  579. package/skills/sap-escrow-settlement/SKILL.md +37 -0
  580. package/skills/sap-ledger-session/SKILL.md +24 -0
  581. package/skills/sap-market-data/SKILL.md +36 -0
  582. package/skills/sap-mcp/SKILL.md +202 -0
  583. package/skills/sap-mcp/TOOL_REFERENCE.md +184 -0
  584. package/skills/sap-memory-vault/SKILL.md +29 -0
  585. package/skills/sap-nft-metaplex/SKILL.md +38 -0
  586. package/skills/sap-operations/SKILL.md +97 -0
  587. package/skills/sap-payments-x402/SKILL.md +47 -0
  588. package/skills/sap-reputation-attestation/SKILL.md +30 -0
  589. package/skills/sap-sns/SKILL.md +51 -0
  590. package/skills/sap-social-gaming/SKILL.md +30 -0
  591. package/skills/sap-solana-token/SKILL.md +32 -0
  592. package/skills/sap-staking/SKILL.md +24 -0
  593. package/skills/sap-tool-registry/SKILL.md +29 -0
@@ -0,0 +1,607 @@
1
+ /**
2
+ * Secure JSON Configuration System
3
+ *
4
+ * Features:
5
+ * - Dynamic config reload without restart
6
+ * - Approval workflow for sensitive changes
7
+ * - Complete audit trail (on-chain + off-chain)
8
+ * - Zod runtime validation
9
+ * - Git-friendly JSON format
10
+ *
11
+ * Security Model:
12
+ * - Config changes are signed and timestamped
13
+ * - Sensitive changes require approval (time-lock or multi-sig)
14
+ * - All changes logged to audit trail
15
+ * - Config hash can be submitted to SAP Oracle (optional)
16
+ */
17
+ import { z } from 'zod';
18
+ /**
19
+ * Core configuration schema
20
+ */
21
+ export declare const coreConfigSchema: z.ZodObject<{
22
+ mode: z.ZodDefault<z.ZodEnum<["readonly", "local-dev-keypair", "external-signer", "delegated-session", "hosted-api"]>>;
23
+ rpcUrl: z.ZodDefault<z.ZodString>;
24
+ rpcUrlDevnet: z.ZodOptional<z.ZodString>;
25
+ rpcUrlTestnet: z.ZodOptional<z.ZodString>;
26
+ programId: z.ZodDefault<z.ZodString>;
27
+ commitment: z.ZodDefault<z.ZodEnum<["processed", "confirmed", "finalized"]>>;
28
+ agentPubkey: z.ZodOptional<z.ZodString>;
29
+ maxRetries: z.ZodDefault<z.ZodNumber>;
30
+ retryDelayMs: z.ZodDefault<z.ZodNumber>;
31
+ walletPath: z.ZodOptional<z.ZodString>;
32
+ walletEncrypted: z.ZodDefault<z.ZodBoolean>;
33
+ walletPassphraseEnv: z.ZodOptional<z.ZodString>;
34
+ externalSignerUrl: z.ZodOptional<z.ZodString>;
35
+ externalSignerTimeoutMs: z.ZodDefault<z.ZodNumber>;
36
+ enableHttp: z.ZodDefault<z.ZodBoolean>;
37
+ httpPort: z.ZodDefault<z.ZodNumber>;
38
+ httpHost: z.ZodDefault<z.ZodString>;
39
+ httpCorsOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
40
+ maxTxValueSol: z.ZodDefault<z.ZodNumber>;
41
+ requireApprovalAboveSol: z.ZodDefault<z.ZodNumber>;
42
+ dailyLimitSol: z.ZodDefault<z.ZodNumber>;
43
+ allowedTools: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"all">, z.ZodArray<z.ZodString, "many">]>>;
44
+ logLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
45
+ logFormat: z.ZodDefault<z.ZodEnum<["json", "pretty"]>>;
46
+ logFile: z.ZodOptional<z.ZodString>;
47
+ enableMetrics: z.ZodDefault<z.ZodBoolean>;
48
+ metricsPort: z.ZodDefault<z.ZodNumber>;
49
+ enableCache: z.ZodDefault<z.ZodBoolean>;
50
+ cacheTtlSeconds: z.ZodDefault<z.ZodNumber>;
51
+ enableRateLimit: z.ZodDefault<z.ZodBoolean>;
52
+ rateLimitPerMinute: z.ZodDefault<z.ZodNumber>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ mode: "readonly" | "local-dev-keypair" | "external-signer" | "delegated-session" | "hosted-api";
55
+ rpcUrl: string;
56
+ programId: string;
57
+ commitment: "processed" | "confirmed" | "finalized";
58
+ maxRetries: number;
59
+ retryDelayMs: number;
60
+ walletEncrypted: boolean;
61
+ externalSignerTimeoutMs: number;
62
+ enableHttp: boolean;
63
+ httpPort: number;
64
+ httpHost: string;
65
+ maxTxValueSol: number;
66
+ requireApprovalAboveSol: number;
67
+ dailyLimitSol: number;
68
+ allowedTools: string[] | "all";
69
+ logLevel: "debug" | "info" | "warn" | "error";
70
+ logFormat: "json" | "pretty";
71
+ enableMetrics: boolean;
72
+ metricsPort: number;
73
+ enableCache: boolean;
74
+ cacheTtlSeconds: number;
75
+ enableRateLimit: boolean;
76
+ rateLimitPerMinute: number;
77
+ rpcUrlDevnet?: string | undefined;
78
+ rpcUrlTestnet?: string | undefined;
79
+ agentPubkey?: string | undefined;
80
+ walletPath?: string | undefined;
81
+ walletPassphraseEnv?: string | undefined;
82
+ externalSignerUrl?: string | undefined;
83
+ httpCorsOrigins?: string[] | undefined;
84
+ logFile?: string | undefined;
85
+ }, {
86
+ mode?: "readonly" | "local-dev-keypair" | "external-signer" | "delegated-session" | "hosted-api" | undefined;
87
+ rpcUrl?: string | undefined;
88
+ rpcUrlDevnet?: string | undefined;
89
+ rpcUrlTestnet?: string | undefined;
90
+ programId?: string | undefined;
91
+ commitment?: "processed" | "confirmed" | "finalized" | undefined;
92
+ agentPubkey?: string | undefined;
93
+ maxRetries?: number | undefined;
94
+ retryDelayMs?: number | undefined;
95
+ walletPath?: string | undefined;
96
+ walletEncrypted?: boolean | undefined;
97
+ walletPassphraseEnv?: string | undefined;
98
+ externalSignerUrl?: string | undefined;
99
+ externalSignerTimeoutMs?: number | undefined;
100
+ enableHttp?: boolean | undefined;
101
+ httpPort?: number | undefined;
102
+ httpHost?: string | undefined;
103
+ httpCorsOrigins?: string[] | undefined;
104
+ maxTxValueSol?: number | undefined;
105
+ requireApprovalAboveSol?: number | undefined;
106
+ dailyLimitSol?: number | undefined;
107
+ allowedTools?: string[] | "all" | undefined;
108
+ logLevel?: "debug" | "info" | "warn" | "error" | undefined;
109
+ logFormat?: "json" | "pretty" | undefined;
110
+ logFile?: string | undefined;
111
+ enableMetrics?: boolean | undefined;
112
+ metricsPort?: number | undefined;
113
+ enableCache?: boolean | undefined;
114
+ cacheTtlSeconds?: number | undefined;
115
+ enableRateLimit?: boolean | undefined;
116
+ rateLimitPerMinute?: number | undefined;
117
+ }>;
118
+ /**
119
+ * Type alias for core config values used by the SAP MCP runtime.
120
+ */
121
+ export type CoreConfig = z.infer<typeof coreConfigSchema>;
122
+ /**
123
+ * Security settings for config changes
124
+ */
125
+ export declare const securityConfigSchema: z.ZodObject<{
126
+ requireApprovalFor: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
127
+ approvalTimeout: z.ZodDefault<z.ZodNumber>;
128
+ maxChangesPerDay: z.ZodDefault<z.ZodNumber>;
129
+ requireMultiSig: z.ZodDefault<z.ZodBoolean>;
130
+ multiSigThreshold: z.ZodOptional<z.ZodNumber>;
131
+ multiSigApprovers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
132
+ }, "strip", z.ZodTypeAny, {
133
+ requireApprovalFor: string[];
134
+ approvalTimeout: number;
135
+ maxChangesPerDay: number;
136
+ requireMultiSig: boolean;
137
+ multiSigThreshold?: number | undefined;
138
+ multiSigApprovers?: string[] | undefined;
139
+ }, {
140
+ requireApprovalFor?: string[] | undefined;
141
+ approvalTimeout?: number | undefined;
142
+ maxChangesPerDay?: number | undefined;
143
+ requireMultiSig?: boolean | undefined;
144
+ multiSigThreshold?: number | undefined;
145
+ multiSigApprovers?: string[] | undefined;
146
+ }>;
147
+ /**
148
+ * Type alias for security config values used by the SAP MCP runtime.
149
+ */
150
+ export type SecurityConfig = z.infer<typeof securityConfigSchema>;
151
+ /**
152
+ * Audit trail configuration
153
+ */
154
+ export declare const auditConfigSchema: z.ZodObject<{
155
+ enabled: z.ZodDefault<z.ZodBoolean>;
156
+ logPath: z.ZodOptional<z.ZodString>;
157
+ retentionDays: z.ZodDefault<z.ZodNumber>;
158
+ submitToOracle: z.ZodDefault<z.ZodBoolean>;
159
+ oracleEndpoint: z.ZodOptional<z.ZodString>;
160
+ }, "strip", z.ZodTypeAny, {
161
+ enabled: boolean;
162
+ retentionDays: number;
163
+ submitToOracle: boolean;
164
+ logPath?: string | undefined;
165
+ oracleEndpoint?: string | undefined;
166
+ }, {
167
+ enabled?: boolean | undefined;
168
+ logPath?: string | undefined;
169
+ retentionDays?: number | undefined;
170
+ submitToOracle?: boolean | undefined;
171
+ oracleEndpoint?: string | undefined;
172
+ }>;
173
+ /**
174
+ * Type alias for audit config values used by the SAP MCP runtime.
175
+ */
176
+ export type AuditConfig = z.infer<typeof auditConfigSchema>;
177
+ /**
178
+ * Shared bento config schema definition used by the SAP MCP runtime.
179
+ */
180
+ export declare const bentoConfigSchema: z.ZodOptional<z.ZodObject<{
181
+ enabled: z.ZodDefault<z.ZodBoolean>;
182
+ apiKey: z.ZodOptional<z.ZodString>;
183
+ agentId: z.ZodOptional<z.ZodString>;
184
+ endpoint: z.ZodOptional<z.ZodString>;
185
+ }, "strip", z.ZodTypeAny, {
186
+ enabled: boolean;
187
+ apiKey?: string | undefined;
188
+ agentId?: string | undefined;
189
+ endpoint?: string | undefined;
190
+ }, {
191
+ enabled?: boolean | undefined;
192
+ apiKey?: string | undefined;
193
+ agentId?: string | undefined;
194
+ endpoint?: string | undefined;
195
+ }>>;
196
+ /**
197
+ * Shared policy runtime config schema definition used by the SAP MCP runtime.
198
+ */
199
+ export declare const policyRuntimeConfigSchema: z.ZodOptional<z.ZodObject<{
200
+ mode: z.ZodDefault<z.ZodEnum<["local-only", "bento-only", "hybrid"]>>;
201
+ failOpen: z.ZodDefault<z.ZodBoolean>;
202
+ logging: z.ZodDefault<z.ZodBoolean>;
203
+ }, "strip", z.ZodTypeAny, {
204
+ mode: "local-only" | "bento-only" | "hybrid";
205
+ failOpen: boolean;
206
+ logging: boolean;
207
+ }, {
208
+ mode?: "local-only" | "bento-only" | "hybrid" | undefined;
209
+ failOpen?: boolean | undefined;
210
+ logging?: boolean | undefined;
211
+ }>>;
212
+ /**
213
+ * Audit log entry
214
+ */
215
+ export interface AuditEntry {
216
+ timestamp: string;
217
+ action: 'config_change' | 'config_reload' | 'approval_granted' | 'approval_denied';
218
+ user: string;
219
+ changes?: {
220
+ field: string;
221
+ oldValue: unknown;
222
+ newValue: unknown;
223
+ }[];
224
+ approvalRequired: boolean;
225
+ approvalStatus?: 'pending' | 'approved' | 'denied';
226
+ signature?: string;
227
+ configHash: string;
228
+ }
229
+ /**
230
+ * Complete configuration schema with security and audit
231
+ */
232
+ export declare const fullConfigSchema: z.ZodObject<{
233
+ $security: z.ZodOptional<z.ZodObject<{
234
+ requireApprovalFor: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
235
+ approvalTimeout: z.ZodDefault<z.ZodNumber>;
236
+ maxChangesPerDay: z.ZodDefault<z.ZodNumber>;
237
+ requireMultiSig: z.ZodDefault<z.ZodBoolean>;
238
+ multiSigThreshold: z.ZodOptional<z.ZodNumber>;
239
+ multiSigApprovers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
240
+ }, "strip", z.ZodTypeAny, {
241
+ requireApprovalFor: string[];
242
+ approvalTimeout: number;
243
+ maxChangesPerDay: number;
244
+ requireMultiSig: boolean;
245
+ multiSigThreshold?: number | undefined;
246
+ multiSigApprovers?: string[] | undefined;
247
+ }, {
248
+ requireApprovalFor?: string[] | undefined;
249
+ approvalTimeout?: number | undefined;
250
+ maxChangesPerDay?: number | undefined;
251
+ requireMultiSig?: boolean | undefined;
252
+ multiSigThreshold?: number | undefined;
253
+ multiSigApprovers?: string[] | undefined;
254
+ }>>;
255
+ $audit: z.ZodOptional<z.ZodObject<{
256
+ enabled: z.ZodDefault<z.ZodBoolean>;
257
+ logPath: z.ZodOptional<z.ZodString>;
258
+ retentionDays: z.ZodDefault<z.ZodNumber>;
259
+ submitToOracle: z.ZodDefault<z.ZodBoolean>;
260
+ oracleEndpoint: z.ZodOptional<z.ZodString>;
261
+ }, "strip", z.ZodTypeAny, {
262
+ enabled: boolean;
263
+ retentionDays: number;
264
+ submitToOracle: boolean;
265
+ logPath?: string | undefined;
266
+ oracleEndpoint?: string | undefined;
267
+ }, {
268
+ enabled?: boolean | undefined;
269
+ logPath?: string | undefined;
270
+ retentionDays?: number | undefined;
271
+ submitToOracle?: boolean | undefined;
272
+ oracleEndpoint?: string | undefined;
273
+ }>>;
274
+ bento: z.ZodOptional<z.ZodObject<{
275
+ enabled: z.ZodDefault<z.ZodBoolean>;
276
+ apiKey: z.ZodOptional<z.ZodString>;
277
+ agentId: z.ZodOptional<z.ZodString>;
278
+ endpoint: z.ZodOptional<z.ZodString>;
279
+ }, "strip", z.ZodTypeAny, {
280
+ enabled: boolean;
281
+ apiKey?: string | undefined;
282
+ agentId?: string | undefined;
283
+ endpoint?: string | undefined;
284
+ }, {
285
+ enabled?: boolean | undefined;
286
+ apiKey?: string | undefined;
287
+ agentId?: string | undefined;
288
+ endpoint?: string | undefined;
289
+ }>>;
290
+ policy: z.ZodOptional<z.ZodObject<{
291
+ mode: z.ZodDefault<z.ZodEnum<["local-only", "bento-only", "hybrid"]>>;
292
+ failOpen: z.ZodDefault<z.ZodBoolean>;
293
+ logging: z.ZodDefault<z.ZodBoolean>;
294
+ }, "strip", z.ZodTypeAny, {
295
+ mode: "local-only" | "bento-only" | "hybrid";
296
+ failOpen: boolean;
297
+ logging: boolean;
298
+ }, {
299
+ mode?: "local-only" | "bento-only" | "hybrid" | undefined;
300
+ failOpen?: boolean | undefined;
301
+ logging?: boolean | undefined;
302
+ }>>;
303
+ $meta: z.ZodOptional<z.ZodObject<{
304
+ version: z.ZodString;
305
+ createdAt: z.ZodString;
306
+ updatedAt: z.ZodString;
307
+ lastHash: z.ZodString;
308
+ }, "strip", z.ZodTypeAny, {
309
+ version: string;
310
+ createdAt: string;
311
+ updatedAt: string;
312
+ lastHash: string;
313
+ }, {
314
+ version: string;
315
+ createdAt: string;
316
+ updatedAt: string;
317
+ lastHash: string;
318
+ }>>;
319
+ mode: z.ZodDefault<z.ZodEnum<["readonly", "local-dev-keypair", "external-signer", "delegated-session", "hosted-api"]>>;
320
+ rpcUrl: z.ZodDefault<z.ZodString>;
321
+ rpcUrlDevnet: z.ZodOptional<z.ZodString>;
322
+ rpcUrlTestnet: z.ZodOptional<z.ZodString>;
323
+ programId: z.ZodDefault<z.ZodString>;
324
+ commitment: z.ZodDefault<z.ZodEnum<["processed", "confirmed", "finalized"]>>;
325
+ agentPubkey: z.ZodOptional<z.ZodString>;
326
+ maxRetries: z.ZodDefault<z.ZodNumber>;
327
+ retryDelayMs: z.ZodDefault<z.ZodNumber>;
328
+ walletPath: z.ZodOptional<z.ZodString>;
329
+ walletEncrypted: z.ZodDefault<z.ZodBoolean>;
330
+ walletPassphraseEnv: z.ZodOptional<z.ZodString>;
331
+ externalSignerUrl: z.ZodOptional<z.ZodString>;
332
+ externalSignerTimeoutMs: z.ZodDefault<z.ZodNumber>;
333
+ enableHttp: z.ZodDefault<z.ZodBoolean>;
334
+ httpPort: z.ZodDefault<z.ZodNumber>;
335
+ httpHost: z.ZodDefault<z.ZodString>;
336
+ httpCorsOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
337
+ maxTxValueSol: z.ZodDefault<z.ZodNumber>;
338
+ requireApprovalAboveSol: z.ZodDefault<z.ZodNumber>;
339
+ dailyLimitSol: z.ZodDefault<z.ZodNumber>;
340
+ allowedTools: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"all">, z.ZodArray<z.ZodString, "many">]>>;
341
+ logLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
342
+ logFormat: z.ZodDefault<z.ZodEnum<["json", "pretty"]>>;
343
+ logFile: z.ZodOptional<z.ZodString>;
344
+ enableMetrics: z.ZodDefault<z.ZodBoolean>;
345
+ metricsPort: z.ZodDefault<z.ZodNumber>;
346
+ enableCache: z.ZodDefault<z.ZodBoolean>;
347
+ cacheTtlSeconds: z.ZodDefault<z.ZodNumber>;
348
+ enableRateLimit: z.ZodDefault<z.ZodBoolean>;
349
+ rateLimitPerMinute: z.ZodDefault<z.ZodNumber>;
350
+ }, "strip", z.ZodTypeAny, {
351
+ mode: "readonly" | "local-dev-keypair" | "external-signer" | "delegated-session" | "hosted-api";
352
+ rpcUrl: string;
353
+ programId: string;
354
+ commitment: "processed" | "confirmed" | "finalized";
355
+ maxRetries: number;
356
+ retryDelayMs: number;
357
+ walletEncrypted: boolean;
358
+ externalSignerTimeoutMs: number;
359
+ enableHttp: boolean;
360
+ httpPort: number;
361
+ httpHost: string;
362
+ maxTxValueSol: number;
363
+ requireApprovalAboveSol: number;
364
+ dailyLimitSol: number;
365
+ allowedTools: string[] | "all";
366
+ logLevel: "debug" | "info" | "warn" | "error";
367
+ logFormat: "json" | "pretty";
368
+ enableMetrics: boolean;
369
+ metricsPort: number;
370
+ enableCache: boolean;
371
+ cacheTtlSeconds: number;
372
+ enableRateLimit: boolean;
373
+ rateLimitPerMinute: number;
374
+ rpcUrlDevnet?: string | undefined;
375
+ rpcUrlTestnet?: string | undefined;
376
+ agentPubkey?: string | undefined;
377
+ walletPath?: string | undefined;
378
+ walletPassphraseEnv?: string | undefined;
379
+ externalSignerUrl?: string | undefined;
380
+ httpCorsOrigins?: string[] | undefined;
381
+ logFile?: string | undefined;
382
+ $security?: {
383
+ requireApprovalFor: string[];
384
+ approvalTimeout: number;
385
+ maxChangesPerDay: number;
386
+ requireMultiSig: boolean;
387
+ multiSigThreshold?: number | undefined;
388
+ multiSigApprovers?: string[] | undefined;
389
+ } | undefined;
390
+ $audit?: {
391
+ enabled: boolean;
392
+ retentionDays: number;
393
+ submitToOracle: boolean;
394
+ logPath?: string | undefined;
395
+ oracleEndpoint?: string | undefined;
396
+ } | undefined;
397
+ bento?: {
398
+ enabled: boolean;
399
+ apiKey?: string | undefined;
400
+ agentId?: string | undefined;
401
+ endpoint?: string | undefined;
402
+ } | undefined;
403
+ policy?: {
404
+ mode: "local-only" | "bento-only" | "hybrid";
405
+ failOpen: boolean;
406
+ logging: boolean;
407
+ } | undefined;
408
+ $meta?: {
409
+ version: string;
410
+ createdAt: string;
411
+ updatedAt: string;
412
+ lastHash: string;
413
+ } | undefined;
414
+ }, {
415
+ mode?: "readonly" | "local-dev-keypair" | "external-signer" | "delegated-session" | "hosted-api" | undefined;
416
+ rpcUrl?: string | undefined;
417
+ rpcUrlDevnet?: string | undefined;
418
+ rpcUrlTestnet?: string | undefined;
419
+ programId?: string | undefined;
420
+ commitment?: "processed" | "confirmed" | "finalized" | undefined;
421
+ agentPubkey?: string | undefined;
422
+ maxRetries?: number | undefined;
423
+ retryDelayMs?: number | undefined;
424
+ walletPath?: string | undefined;
425
+ walletEncrypted?: boolean | undefined;
426
+ walletPassphraseEnv?: string | undefined;
427
+ externalSignerUrl?: string | undefined;
428
+ externalSignerTimeoutMs?: number | undefined;
429
+ enableHttp?: boolean | undefined;
430
+ httpPort?: number | undefined;
431
+ httpHost?: string | undefined;
432
+ httpCorsOrigins?: string[] | undefined;
433
+ maxTxValueSol?: number | undefined;
434
+ requireApprovalAboveSol?: number | undefined;
435
+ dailyLimitSol?: number | undefined;
436
+ allowedTools?: string[] | "all" | undefined;
437
+ logLevel?: "debug" | "info" | "warn" | "error" | undefined;
438
+ logFormat?: "json" | "pretty" | undefined;
439
+ logFile?: string | undefined;
440
+ enableMetrics?: boolean | undefined;
441
+ metricsPort?: number | undefined;
442
+ enableCache?: boolean | undefined;
443
+ cacheTtlSeconds?: number | undefined;
444
+ enableRateLimit?: boolean | undefined;
445
+ rateLimitPerMinute?: number | undefined;
446
+ $security?: {
447
+ requireApprovalFor?: string[] | undefined;
448
+ approvalTimeout?: number | undefined;
449
+ maxChangesPerDay?: number | undefined;
450
+ requireMultiSig?: boolean | undefined;
451
+ multiSigThreshold?: number | undefined;
452
+ multiSigApprovers?: string[] | undefined;
453
+ } | undefined;
454
+ $audit?: {
455
+ enabled?: boolean | undefined;
456
+ logPath?: string | undefined;
457
+ retentionDays?: number | undefined;
458
+ submitToOracle?: boolean | undefined;
459
+ oracleEndpoint?: string | undefined;
460
+ } | undefined;
461
+ bento?: {
462
+ enabled?: boolean | undefined;
463
+ apiKey?: string | undefined;
464
+ agentId?: string | undefined;
465
+ endpoint?: string | undefined;
466
+ } | undefined;
467
+ policy?: {
468
+ mode?: "local-only" | "bento-only" | "hybrid" | undefined;
469
+ failOpen?: boolean | undefined;
470
+ logging?: boolean | undefined;
471
+ } | undefined;
472
+ $meta?: {
473
+ version: string;
474
+ createdAt: string;
475
+ updatedAt: string;
476
+ lastHash: string;
477
+ } | undefined;
478
+ }>;
479
+ /**
480
+ * Type alias for full config values used by the SAP MCP runtime.
481
+ */
482
+ export type FullConfig = z.infer<typeof fullConfigSchema>;
483
+ declare const pendingChangeSchema: z.ZodObject<{
484
+ id: z.ZodString;
485
+ field: z.ZodString;
486
+ oldValue: z.ZodUnknown;
487
+ newValue: z.ZodUnknown;
488
+ requestedAt: z.ZodString;
489
+ requestedBy: z.ZodString;
490
+ status: z.ZodEnum<["pending", "approved", "denied"]>;
491
+ expiresAt: z.ZodString;
492
+ }, "strip", z.ZodTypeAny, {
493
+ status: "pending" | "approved" | "denied";
494
+ id: string;
495
+ field: string;
496
+ requestedAt: string;
497
+ requestedBy: string;
498
+ expiresAt: string;
499
+ oldValue?: unknown;
500
+ newValue?: unknown;
501
+ }, {
502
+ status: "pending" | "approved" | "denied";
503
+ id: string;
504
+ field: string;
505
+ requestedAt: string;
506
+ requestedBy: string;
507
+ expiresAt: string;
508
+ oldValue?: unknown;
509
+ newValue?: unknown;
510
+ }>;
511
+ /**
512
+ * Contract describing pending change data used by the SAP MCP runtime.
513
+ */
514
+ export type PendingChange = z.infer<typeof pendingChangeSchema>;
515
+ /**
516
+ * Runtime service that implements secure config manager behavior.
517
+ */
518
+ export declare class SecureConfigManager {
519
+ private configPath;
520
+ private auditPath;
521
+ private pendingPath;
522
+ private currentConfig;
523
+ private pendingChanges;
524
+ constructor(configDir?: string);
525
+ /**
526
+ * Get default config directory
527
+ */
528
+ private getDefaultConfigDir;
529
+ /**
530
+ * Load configuration from file
531
+ */
532
+ load(): FullConfig;
533
+ /**
534
+ * Create default configuration
535
+ */
536
+ private createDefaultConfig;
537
+ /**
538
+ * Save configuration to file
539
+ */
540
+ save(config: FullConfig): void;
541
+ /**
542
+ * Update configuration with approval workflow
543
+ */
544
+ update(changes: Partial<FullConfig>, user?: string): Promise<UpdateResult>;
545
+ /**
546
+ * Approve a pending change
547
+ */
548
+ approve(changeId: string, approver?: string): boolean;
549
+ /**
550
+ * Deny a pending change
551
+ */
552
+ deny(changeId: string, approver?: string): boolean;
553
+ /**
554
+ * Get pending changes
555
+ */
556
+ getPendingChanges(): PendingChange[];
557
+ /**
558
+ * Get audit log
559
+ */
560
+ getAuditLog(limit?: number): AuditEntry[];
561
+ /**
562
+ * Get current config hash
563
+ */
564
+ getConfigHash(): string;
565
+ /**
566
+ * Hash configuration (for audit/oracle)
567
+ */
568
+ private hashConfig;
569
+ /**
570
+ * Generate unique change ID
571
+ */
572
+ private generateChangeId;
573
+ /**
574
+ * Loads pending changes from disk so CLI approval commands work across process boundaries.
575
+ */
576
+ private loadPendingChanges;
577
+ /**
578
+ * Persists pending changes atomically for separate CLI invocations.
579
+ */
580
+ private savePendingChanges;
581
+ /**
582
+ * Removes expired pending changes before they are shown or approved.
583
+ */
584
+ private pruneExpiredPendingChanges;
585
+ /**
586
+ * Compares simple JSON-compatible config values before creating a change request.
587
+ */
588
+ private areValuesEqual;
589
+ /**
590
+ * Log audit entry
591
+ */
592
+ private logAuditEntry;
593
+ }
594
+ /**
595
+ * Contract describing update result data used by the SAP MCP runtime.
596
+ */
597
+ export interface UpdateResult {
598
+ applied: string[];
599
+ pending: string[];
600
+ pendingChanges: PendingChange[];
601
+ }
602
+ /**
603
+ * Executes the get config manager operation.
604
+ */
605
+ export declare function getConfigManager(configDir?: string): SecureConfigManager;
606
+ export {};
607
+ //# sourceMappingURL=secure-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-config.d.ts","sourceRoot":"","sources":["../../src/config/secure-config.ts"],"names":[],"mappings":"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"}