@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,113 @@
1
+ /**
2
+ * @name McpClientId
3
+ * @description Supported local MCP clients that can receive SAP MCP server config.
4
+ */
5
+ export type McpClientId = 'claude' | 'hermes' | 'openclaw' | 'codex';
6
+ /**
7
+ * @name McpClientConfigFormat
8
+ * @description File formats supported by the MCP client injection pipeline.
9
+ */
10
+ export type McpClientConfigFormat = 'json' | 'yaml' | 'toml';
11
+ /**
12
+ * @name McpClientInjectionMode
13
+ * @description Write strategy used when a config already contains a SAP MCP server entry.
14
+ */
15
+ export type McpClientInjectionMode = 'merge' | 'override';
16
+ /**
17
+ * @name McpClientTarget
18
+ * @description A concrete MCP client config file that can be inspected or updated.
19
+ */
20
+ export interface McpClientTarget {
21
+ id: McpClientId;
22
+ label: string;
23
+ path: string;
24
+ format: McpClientConfigFormat;
25
+ exists: boolean;
26
+ profileName?: string;
27
+ }
28
+ /**
29
+ * @name McpServerInjectionConfig
30
+ * @description Canonical SAP MCP server config injected into client files.
31
+ */
32
+ export interface McpServerInjectionConfig {
33
+ command: string;
34
+ args: string[];
35
+ cwd?: string;
36
+ env: Record<string, string>;
37
+ }
38
+ /**
39
+ * @name McpClientInjectionPlan
40
+ * @description Preview data generated before writing a client config file.
41
+ */
42
+ export interface McpClientInjectionPlan {
43
+ target: McpClientTarget;
44
+ mode: McpClientInjectionMode;
45
+ exists: boolean;
46
+ hadSapConfig: boolean;
47
+ legacyFindings: string[];
48
+ beforeSummary: string;
49
+ afterSummary: string;
50
+ nextContent: string;
51
+ backupPath?: string;
52
+ }
53
+ /**
54
+ * @name McpClientInjectionResult
55
+ * @description Result returned after applying an injection plan.
56
+ */
57
+ export interface McpClientInjectionResult {
58
+ target: McpClientTarget;
59
+ mode: McpClientInjectionMode;
60
+ written: boolean;
61
+ backupPath?: string;
62
+ message: string;
63
+ }
64
+ /**
65
+ * @name ManualMcpClientSnippet
66
+ * @description Copy/paste MCP client config snippet shown when users prefer manual setup.
67
+ */
68
+ export interface ManualMcpClientSnippet {
69
+ title: string;
70
+ description: string;
71
+ content: string;
72
+ }
73
+ /**
74
+ * @name HOSTED_SAP_MCP_URL
75
+ * @description Public OOBE hosted SAP MCP Streamable HTTP endpoint used in manual client setup snippets.
76
+ */
77
+ export declare const HOSTED_SAP_MCP_URL = "https://mcp.sap.oobeprotocol.ai/mcp";
78
+ /**
79
+ * @name createCanonicalServerConfig
80
+ * @description Builds a SAP MCP server config that follows the active profile manager.
81
+ */
82
+ export declare function createCanonicalServerConfig(workspaceRoot?: string): McpServerInjectionConfig;
83
+ /**
84
+ * @name createManualMcpJsonSnippets
85
+ * @description Builds copy/paste JSON snippets for hosted remote and local active-profile MCP client setup.
86
+ */
87
+ export declare function createManualMcpJsonSnippets(canonical: McpServerInjectionConfig, hostedUrl?: string): ManualMcpClientSnippet[];
88
+ /**
89
+ * @name getKnownClientTargets
90
+ * @description Returns known MCP client config paths for the current operating system.
91
+ */
92
+ export declare function getKnownClientTargets(homeDir?: string): McpClientTarget[];
93
+ /**
94
+ * @name discoverMcpClientTargets
95
+ * @description Finds existing client config files and keeps create-capable standard targets.
96
+ */
97
+ export declare function discoverMcpClientTargets(homeDir?: string): McpClientTarget[];
98
+ /**
99
+ * @name findLegacySignals
100
+ * @description Detects stale SAP MCP paths and hardcoded environment overrides.
101
+ */
102
+ export declare function findLegacySignals(content: string): string[];
103
+ /**
104
+ * @name planMcpClientInjection
105
+ * @description Creates a write plan with preview metadata but does not modify files.
106
+ */
107
+ export declare function planMcpClientInjection(target: McpClientTarget, canonical: McpServerInjectionConfig, mode: McpClientInjectionMode): McpClientInjectionPlan;
108
+ /**
109
+ * @name applyMcpClientInjection
110
+ * @description Applies a previously reviewed MCP client injection plan.
111
+ */
112
+ export declare function applyMcpClientInjection(plan: McpClientInjectionPlan): McpClientInjectionResult;
113
+ //# sourceMappingURL=mcp-client-injection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-injection.d.ts","sourceRoot":"","sources":["../../src/config/mcp-client-injection.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,WAAW,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,wCAAwC,CAAC;AAmDxE;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,SAAgB,GAAG,wBAAwB,CAsBnG;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,wBAAwB,EACnC,SAAS,SAAqB,GAC7B,sBAAsB,EAAE,CAwB1B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,SAAY,GAAG,eAAe,EAAE,CAiE5E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,SAAY,GAAG,eAAe,EAAE,CAU/E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3D;AAkOD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,wBAAwB,EACnC,IAAI,EAAE,sBAAsB,GAC3B,sBAAsB,CAwBxB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,GAAG,wBAAwB,CAuB9F"}
@@ -0,0 +1,453 @@
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'fs';
2
+ import { homedir } from 'os';
3
+ import { dirname, join } from 'path';
4
+ const SAP_SERVER_NAME = 'sap';
5
+ /**
6
+ * @name HOSTED_SAP_MCP_URL
7
+ * @description Public OOBE hosted SAP MCP Streamable HTTP endpoint used in manual client setup snippets.
8
+ */
9
+ export const HOSTED_SAP_MCP_URL = 'https://mcp.sap.oobeprotocol.ai/mcp';
10
+ const LEGACY_ENV_KEYS = new Set([
11
+ 'SAP_MCP_PROFILE',
12
+ 'SAP_MCP_CONFIG_PATH',
13
+ 'SAP_MCP_RPC_URL',
14
+ 'SAP_RPC_URL',
15
+ 'SAP_WALLET_PATH',
16
+ 'SAP_MCP_WALLET_PATH',
17
+ 'SAP_NETWORK',
18
+ ]);
19
+ /**
20
+ * @name isRecord
21
+ * @description Narrows unknown data to a JSON-like object.
22
+ */
23
+ function isRecord(value) {
24
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
25
+ }
26
+ /**
27
+ * @name escapeRegExp
28
+ * @description Escapes a literal string for safe use in a regular expression.
29
+ */
30
+ function escapeRegExp(value) {
31
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
32
+ }
33
+ /**
34
+ * @name readTargetContent
35
+ * @description Reads an existing target file or returns a format-appropriate empty config.
36
+ */
37
+ function readTargetContent(target) {
38
+ if (target.exists && existsSync(target.path)) {
39
+ return readFileSync(target.path, 'utf-8');
40
+ }
41
+ if (target.format === 'json') {
42
+ return '{}';
43
+ }
44
+ return '';
45
+ }
46
+ /**
47
+ * @name formatJson
48
+ * @description Serializes client JSON config with stable indentation.
49
+ */
50
+ function formatJson(value) {
51
+ return `${JSON.stringify(value, null, 2)}\n`;
52
+ }
53
+ /**
54
+ * @name createCanonicalServerConfig
55
+ * @description Builds a SAP MCP server config that follows the active profile manager.
56
+ */
57
+ export function createCanonicalServerConfig(workspaceRoot = process.cwd()) {
58
+ const localCliPath = join(workspaceRoot, 'dist', 'cli.js');
59
+ if (existsSync(localCliPath)) {
60
+ return {
61
+ command: 'node',
62
+ args: [localCliPath],
63
+ cwd: workspaceRoot,
64
+ env: {
65
+ SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE: 'false',
66
+ SAP_LOG_LEVEL: 'info',
67
+ },
68
+ };
69
+ }
70
+ return {
71
+ command: 'sap-mcp-server',
72
+ args: [],
73
+ env: {
74
+ SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE: 'false',
75
+ SAP_LOG_LEVEL: 'info',
76
+ },
77
+ };
78
+ }
79
+ /**
80
+ * @name createManualMcpJsonSnippets
81
+ * @description Builds copy/paste JSON snippets for hosted remote and local active-profile MCP client setup.
82
+ */
83
+ export function createManualMcpJsonSnippets(canonical, hostedUrl = HOSTED_SAP_MCP_URL) {
84
+ return [
85
+ {
86
+ title: 'Hosted SAP MCP JSON',
87
+ description: 'Use this after creating the user SAP profile with the wizard; the agent connects remotely while signatures stay user-controlled.',
88
+ content: formatJson({
89
+ mcpServers: {
90
+ [SAP_SERVER_NAME]: {
91
+ url: hostedUrl,
92
+ transport: 'streamable-http',
93
+ },
94
+ },
95
+ }),
96
+ },
97
+ {
98
+ title: 'Local SAP MCP JSON',
99
+ description: 'Use this when the agent runs SAP MCP locally and follows ~/.config/mcp-sap/.active-profile.',
100
+ content: formatJson({
101
+ mcpServers: {
102
+ [SAP_SERVER_NAME]: canonical,
103
+ },
104
+ }),
105
+ },
106
+ ];
107
+ }
108
+ /**
109
+ * @name getKnownClientTargets
110
+ * @description Returns known MCP client config paths for the current operating system.
111
+ */
112
+ export function getKnownClientTargets(homeDir = homedir()) {
113
+ const targets = [
114
+ {
115
+ id: 'claude',
116
+ label: 'Claude Desktop',
117
+ path: join(homeDir, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json'),
118
+ format: 'json',
119
+ exists: false,
120
+ },
121
+ {
122
+ id: 'claude',
123
+ label: 'Claude App Config',
124
+ path: join(homeDir, 'Library', 'Application Support', 'Claude', 'config.json'),
125
+ format: 'json',
126
+ exists: false,
127
+ },
128
+ {
129
+ id: 'hermes',
130
+ label: 'Hermes Global MCP',
131
+ path: join(homeDir, '.hermes', 'mcp.json'),
132
+ format: 'json',
133
+ exists: false,
134
+ },
135
+ {
136
+ id: 'codex',
137
+ label: 'Codex',
138
+ path: join(homeDir, '.codex', 'config.toml'),
139
+ format: 'toml',
140
+ exists: false,
141
+ },
142
+ {
143
+ id: 'openclaw',
144
+ label: 'OpenClaw',
145
+ path: join(homeDir, '.openclaw', 'config.yaml'),
146
+ format: 'yaml',
147
+ exists: false,
148
+ },
149
+ {
150
+ id: 'openclaw',
151
+ label: 'OpenClaw MCP',
152
+ path: join(homeDir, '.openclaw', 'mcp.json'),
153
+ format: 'json',
154
+ exists: false,
155
+ },
156
+ ];
157
+ const hermesProfilesDir = join(homeDir, '.hermes', 'profiles');
158
+ if (existsSync(hermesProfilesDir)) {
159
+ for (const profileName of readdirSync(hermesProfilesDir)) {
160
+ const profileConfigPath = join(hermesProfilesDir, profileName, 'config.yaml');
161
+ targets.push({
162
+ id: 'hermes',
163
+ label: `Hermes Profile: ${profileName}`,
164
+ path: profileConfigPath,
165
+ format: 'yaml',
166
+ exists: false,
167
+ profileName,
168
+ });
169
+ }
170
+ }
171
+ return targets.map((target) => ({
172
+ ...target,
173
+ exists: existsSync(target.path),
174
+ }));
175
+ }
176
+ /**
177
+ * @name discoverMcpClientTargets
178
+ * @description Finds existing client config files and keeps create-capable standard targets.
179
+ */
180
+ export function discoverMcpClientTargets(homeDir = homedir()) {
181
+ const targets = getKnownClientTargets(homeDir);
182
+ return targets.filter((target) => {
183
+ if (target.exists) {
184
+ return true;
185
+ }
186
+ return target.path.endsWith('claude_desktop_config.json')
187
+ || target.path.endsWith(join('.openclaw', 'mcp.json'));
188
+ });
189
+ }
190
+ /**
191
+ * @name findLegacySignals
192
+ * @description Detects stale SAP MCP paths and hardcoded environment overrides.
193
+ */
194
+ export function findLegacySignals(content) {
195
+ const findings = [];
196
+ if (content.includes('.config/sap-mcp')) {
197
+ findings.push('legacy config path "~/.config/sap-mcp"');
198
+ }
199
+ if (content.includes('.config/mcp-sap')) {
200
+ findings.push('existing canonical path "~/.config/mcp-sap"');
201
+ }
202
+ for (const key of LEGACY_ENV_KEYS) {
203
+ if (content.includes(key)) {
204
+ findings.push(`hardcoded env override "${key}"`);
205
+ }
206
+ }
207
+ return Array.from(new Set(findings));
208
+ }
209
+ /**
210
+ * @name mergeEnv
211
+ * @description Merges env variables while removing SAP MCP identity/network/wallet overrides.
212
+ */
213
+ function mergeEnv(existing, required) {
214
+ const current = isRecord(existing) ? existing : {};
215
+ const cleanEntries = Object.entries(current)
216
+ .filter(([key, value]) => !LEGACY_ENV_KEYS.has(key) && typeof value === 'string');
217
+ return {
218
+ ...Object.fromEntries(cleanEntries),
219
+ ...required,
220
+ };
221
+ }
222
+ /**
223
+ * @name mergeServerConfig
224
+ * @description Creates the final server object for JSON config files.
225
+ */
226
+ function mergeServerConfig(existing, canonical, mode) {
227
+ if (mode === 'override' || !isRecord(existing)) {
228
+ return canonical;
229
+ }
230
+ return {
231
+ command: canonical.command,
232
+ args: canonical.args,
233
+ cwd: canonical.cwd,
234
+ env: mergeEnv(existing.env, canonical.env),
235
+ };
236
+ }
237
+ /**
238
+ * @name buildJsonContent
239
+ * @description Builds a merged JSON MCP client config.
240
+ */
241
+ function buildJsonContent(content, canonical, mode) {
242
+ const parsed = content.trim() ? JSON.parse(content) : {};
243
+ const root = isRecord(parsed) ? parsed : {};
244
+ const serversRaw = root.mcpServers;
245
+ const servers = isRecord(serversRaw) ? { ...serversRaw } : {};
246
+ const hadSapConfig = isRecord(servers[SAP_SERVER_NAME]);
247
+ servers[SAP_SERVER_NAME] = mergeServerConfig(servers[SAP_SERVER_NAME], canonical, mode);
248
+ return {
249
+ nextContent: formatJson({ ...root, mcpServers: servers }),
250
+ hadSapConfig,
251
+ };
252
+ }
253
+ /**
254
+ * @name yamlServerBlock
255
+ * @description Renders a Hermes/OpenClaw-compatible YAML MCP server block.
256
+ */
257
+ function yamlServerBlock(canonical, baseIndent = 0) {
258
+ const indent = ' '.repeat(baseIndent);
259
+ const child = ' '.repeat(baseIndent + 2);
260
+ const grandchild = ' '.repeat(baseIndent + 4);
261
+ const lines = [
262
+ `${indent}${SAP_SERVER_NAME}:`,
263
+ `${child}command: ${canonical.command}`,
264
+ `${child}args:`,
265
+ ];
266
+ for (const arg of canonical.args) {
267
+ lines.push(`${child}- ${arg}`);
268
+ }
269
+ if (canonical.cwd) {
270
+ lines.push(`${child}cwd: ${canonical.cwd}`);
271
+ }
272
+ lines.push(`${child}env:`);
273
+ for (const [key, value] of Object.entries(canonical.env)) {
274
+ const rendered = value === 'false' || value === 'true' ? `"${value}"` : value;
275
+ lines.push(`${grandchild}${key}: ${rendered}`);
276
+ }
277
+ return lines;
278
+ }
279
+ /**
280
+ * @name countLeadingSpaces
281
+ * @description Counts indentation spaces at the start of a YAML line.
282
+ */
283
+ function countLeadingSpaces(line) {
284
+ return line.length - line.trimStart().length;
285
+ }
286
+ /**
287
+ * @name replaceYamlSapBlock
288
+ * @description Replaces a top-level mcp_servers.sap YAML block or appends one.
289
+ */
290
+ function replaceYamlSapBlock(content, canonical) {
291
+ const lines = content.split(/\r?\n/);
292
+ const mcpIndex = lines.findIndex((line) => /^mcp_servers:\s*$/.test(line));
293
+ if (mcpIndex === -1) {
294
+ const prefix = content.trimEnd();
295
+ const appended = ['mcp_servers:', ...yamlServerBlock(canonical, 2)].join('\n');
296
+ return {
297
+ nextContent: `${prefix ? `${prefix}\n` : ''}${appended}\n`,
298
+ hadSapConfig: false,
299
+ };
300
+ }
301
+ const sapIndex = lines.findIndex((line, index) => index > mcpIndex && /^ {2}sap:\s*$/.test(line));
302
+ if (sapIndex === -1) {
303
+ const nextLines = [...lines];
304
+ nextLines.splice(mcpIndex + 1, 0, ...yamlServerBlock(canonical, 2));
305
+ return {
306
+ nextContent: `${nextLines.join('\n').replace(/\n*$/, '')}\n`,
307
+ hadSapConfig: false,
308
+ };
309
+ }
310
+ let endIndex = sapIndex + 1;
311
+ while (endIndex < lines.length) {
312
+ const line = lines[endIndex];
313
+ if (line.trim() && countLeadingSpaces(line) <= 2) {
314
+ break;
315
+ }
316
+ endIndex += 1;
317
+ }
318
+ const nextLines = [...lines];
319
+ nextLines.splice(sapIndex, endIndex - sapIndex, ...yamlServerBlock(canonical, 2));
320
+ return {
321
+ nextContent: `${nextLines.join('\n').replace(/\n*$/, '')}\n`,
322
+ hadSapConfig: true,
323
+ };
324
+ }
325
+ /**
326
+ * @name tomlServerBlock
327
+ * @description Renders a Codex-compatible TOML MCP server block.
328
+ */
329
+ function tomlServerBlock(canonical) {
330
+ const args = `[${canonical.args.map((arg) => JSON.stringify(arg)).join(', ')}]`;
331
+ const lines = [
332
+ `[mcp_servers.${SAP_SERVER_NAME}]`,
333
+ `command = ${JSON.stringify(canonical.command)}`,
334
+ `args = ${args}`,
335
+ ];
336
+ if (canonical.cwd) {
337
+ lines.push(`cwd = ${JSON.stringify(canonical.cwd)}`);
338
+ }
339
+ lines.push('');
340
+ lines.push(`[mcp_servers.${SAP_SERVER_NAME}.env]`);
341
+ for (const [key, value] of Object.entries(canonical.env)) {
342
+ lines.push(`${key} = ${JSON.stringify(value)}`);
343
+ }
344
+ return lines.join('\n');
345
+ }
346
+ /**
347
+ * @name removeTomlSapSections
348
+ * @description Removes existing Codex SAP MCP TOML sections before appending the canonical one.
349
+ */
350
+ function removeTomlSapSections(content) {
351
+ const lines = content.split(/\r?\n/);
352
+ const nextLines = [];
353
+ let skipping = false;
354
+ let hadSapConfig = false;
355
+ const sapHeader = new RegExp(`^\\[mcp_servers\\.${escapeRegExp(SAP_SERVER_NAME)}(?:\\.|\\])`);
356
+ for (const line of lines) {
357
+ if (/^\[/.test(line)) {
358
+ skipping = sapHeader.test(line);
359
+ if (skipping) {
360
+ hadSapConfig = true;
361
+ continue;
362
+ }
363
+ }
364
+ if (!skipping) {
365
+ nextLines.push(line);
366
+ }
367
+ }
368
+ return {
369
+ content: nextLines.join('\n').replace(/\n*$/, ''),
370
+ hadSapConfig,
371
+ };
372
+ }
373
+ /**
374
+ * @name buildTomlContent
375
+ * @description Builds a merged TOML MCP client config.
376
+ */
377
+ function buildTomlContent(content, canonical) {
378
+ const stripped = removeTomlSapSections(content);
379
+ const prefix = stripped.content.trimEnd();
380
+ return {
381
+ nextContent: `${prefix ? `${prefix}\n\n` : ''}${tomlServerBlock(canonical)}\n`,
382
+ hadSapConfig: stripped.hadSapConfig,
383
+ };
384
+ }
385
+ /**
386
+ * @name summarizeContent
387
+ * @description Produces a short safe summary for wizard preview output.
388
+ */
389
+ function summarizeContent(target, content, hadSapConfig) {
390
+ if (!target.exists) {
391
+ return 'new file';
392
+ }
393
+ const findings = findLegacySignals(content);
394
+ const parts = [hadSapConfig ? 'SAP MCP entry present' : 'no SAP MCP entry'];
395
+ if (findings.length > 0) {
396
+ parts.push(`${findings.length} warning(s)`);
397
+ }
398
+ return parts.join(', ');
399
+ }
400
+ /**
401
+ * @name planMcpClientInjection
402
+ * @description Creates a write plan with preview metadata but does not modify files.
403
+ */
404
+ export function planMcpClientInjection(target, canonical, mode) {
405
+ const content = readTargetContent(target);
406
+ const legacyFindings = findLegacySignals(content);
407
+ const built = target.format === 'json'
408
+ ? buildJsonContent(content, canonical, mode)
409
+ : target.format === 'toml'
410
+ ? buildTomlContent(content, canonical)
411
+ : replaceYamlSapBlock(content, canonical);
412
+ const backupPath = target.exists
413
+ ? `${target.path}.bak-${Date.now()}`
414
+ : undefined;
415
+ return {
416
+ target,
417
+ mode,
418
+ exists: target.exists,
419
+ hadSapConfig: built.hadSapConfig,
420
+ legacyFindings,
421
+ beforeSummary: summarizeContent(target, content, built.hadSapConfig),
422
+ afterSummary: 'SAP MCP follows ~/.config/mcp-sap/.active-profile with env overrides disabled',
423
+ nextContent: built.nextContent,
424
+ backupPath,
425
+ };
426
+ }
427
+ /**
428
+ * @name applyMcpClientInjection
429
+ * @description Applies a previously reviewed MCP client injection plan.
430
+ */
431
+ export function applyMcpClientInjection(plan) {
432
+ mkdirSync(dirname(plan.target.path), { recursive: true, mode: 0o700 });
433
+ if (plan.target.exists && existsSync(plan.target.path) && plan.backupPath) {
434
+ writeFileSync(plan.backupPath, readFileSync(plan.target.path, 'utf-8'), {
435
+ encoding: 'utf-8',
436
+ mode: 0o600,
437
+ });
438
+ }
439
+ writeFileSync(plan.target.path, plan.nextContent, {
440
+ encoding: 'utf-8',
441
+ mode: 0o600,
442
+ });
443
+ return {
444
+ target: plan.target,
445
+ mode: plan.mode,
446
+ written: true,
447
+ backupPath: plan.backupPath,
448
+ message: plan.hadSapConfig
449
+ ? `Updated existing SAP MCP config in ${plan.target.label}`
450
+ : `Added SAP MCP config to ${plan.target.label}`,
451
+ };
452
+ }
453
+ //# sourceMappingURL=mcp-client-injection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-injection.js","sourceRoot":"","sources":["../../src/config/mcp-client-injection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Preferred application directory name for user-specific MCP SAP config.
3
+ */
4
+ export declare const CONFIG_APP_DIR = "mcp-sap";
5
+ /**
6
+ * Previous application directory name. Runtime fallback is intentionally not supported.
7
+ */
8
+ export declare const LEGACY_CONFIG_APP_DIR = "sap-mcp";
9
+ /**
10
+ * Returns the preferred config directory used for all new writes.
11
+ */
12
+ export declare function getPreferredConfigDir(): string;
13
+ /**
14
+ * Returns the legacy config directory used only for backwards-compatible reads.
15
+ */
16
+ export declare function getLegacyConfigDir(): string;
17
+ /**
18
+ * Returns the canonical config directory.
19
+ */
20
+ export declare function getConfigDir(): string;
21
+ /**
22
+ * Returns the canonical data directory.
23
+ */
24
+ export declare function getDataDir(): string;
25
+ /**
26
+ * Returns the dedicated SAP MCP keypair directory.
27
+ */
28
+ export declare function getKeypairsDir(): string;
29
+ /**
30
+ * Creates the config, keypair, data, log, and cache directories with private permissions.
31
+ */
32
+ export declare function ensureConfigDirectories(): void;
33
+ /**
34
+ * Builds the default path for a generated agent wallet inside the dedicated keypair directory.
35
+ */
36
+ export declare function defaultGeneratedWalletPath(label?: string): string;
37
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC;;GAEG;AACH,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAsC/C;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAc9C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,SAAiB,GAAG,MAAM,CAEzE"}