@oobe-protocol-labs/sap-mcp-server 0.7.4 → 0.8.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 (90) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/README.md +14 -7
  3. package/USER_DOCS/00_START_HERE.md +45 -7
  4. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +2 -0
  5. package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +13 -5
  6. package/USER_DOCS/04_CLIENT_CONFIGS.md +25 -15
  7. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +36 -21
  8. package/assets/logos/drift.svg +12 -0
  9. package/assets/logos/jupiter.ico +0 -0
  10. package/assets/logos/mcp.svg +11 -0
  11. package/assets/logos/meteora.png +0 -0
  12. package/assets/logos/orca.ico +0 -0
  13. package/assets/logos/raydium.ico +0 -0
  14. package/assets/logos/smithery.svg +11 -0
  15. package/assets/oobe-logo.png +0 -0
  16. package/dist/config/mcp-client-injection.d.ts +26 -7
  17. package/dist/config/mcp-client-injection.d.ts.map +1 -1
  18. package/dist/config/mcp-client-injection.js +182 -58
  19. package/dist/config/mcp-client-injection.js.map +1 -1
  20. package/dist/config/wizard.d.ts.map +1 -1
  21. package/dist/config/wizard.js +92 -57
  22. package/dist/config/wizard.js.map +1 -1
  23. package/dist/core/constants.d.ts +1 -1
  24. package/dist/core/constants.js +1 -1
  25. package/dist/payments/pricing.d.ts.map +1 -1
  26. package/dist/payments/pricing.js +11 -0
  27. package/dist/payments/pricing.js.map +1 -1
  28. package/dist/payments/x402-paid-call.d.ts +85 -1
  29. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  30. package/dist/payments/x402-paid-call.js +168 -4
  31. package/dist/payments/x402-paid-call.js.map +1 -1
  32. package/dist/prompts/context/sap-agent-context.prompt.js +6 -3
  33. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  34. package/dist/remote/public-home/escape.d.ts +11 -0
  35. package/dist/remote/public-home/escape.d.ts.map +1 -0
  36. package/dist/remote/public-home/escape.js +20 -0
  37. package/dist/remote/public-home/escape.js.map +1 -0
  38. package/dist/remote/public-home/index.d.ts +8 -0
  39. package/dist/remote/public-home/index.d.ts.map +1 -0
  40. package/dist/remote/public-home/index.js +57 -0
  41. package/dist/remote/public-home/index.js.map +1 -0
  42. package/dist/remote/public-home/scripts.d.ts +6 -0
  43. package/dist/remote/public-home/scripts.d.ts.map +1 -0
  44. package/dist/remote/public-home/scripts.js +106 -0
  45. package/dist/remote/public-home/scripts.js.map +1 -0
  46. package/dist/remote/public-home/sections.d.ts +67 -0
  47. package/dist/remote/public-home/sections.d.ts.map +1 -0
  48. package/dist/remote/public-home/sections.js +727 -0
  49. package/dist/remote/public-home/sections.js.map +1 -0
  50. package/dist/remote/public-home/styles.d.ts +6 -0
  51. package/dist/remote/public-home/styles.d.ts.map +1 -0
  52. package/dist/remote/public-home/styles.js +1534 -0
  53. package/dist/remote/public-home/styles.js.map +1 -0
  54. package/dist/remote/public-home/types.d.ts +95 -0
  55. package/dist/remote/public-home/types.d.ts.map +1 -0
  56. package/dist/remote/public-home/types.js +2 -0
  57. package/dist/remote/public-home/types.js.map +1 -0
  58. package/dist/remote/server.d.ts +1 -1
  59. package/dist/remote/server.d.ts.map +1 -1
  60. package/dist/remote/server.js +55 -282
  61. package/dist/remote/server.js.map +1 -1
  62. package/dist/security/tool-permissions.d.ts.map +1 -1
  63. package/dist/security/tool-permissions.js +5 -0
  64. package/dist/security/tool-permissions.js.map +1 -1
  65. package/dist/tools/magicblock-tools.js +6 -6
  66. package/dist/tools/magicblock-tools.js.map +1 -1
  67. package/dist/tools/profile-tools.d.ts.map +1 -1
  68. package/dist/tools/profile-tools.js +136 -33
  69. package/dist/tools/profile-tools.js.map +1 -1
  70. package/dist/tools/register-tools.d.ts.map +1 -1
  71. package/dist/tools/register-tools.js +5 -0
  72. package/dist/tools/register-tools.js.map +1 -1
  73. package/dist/tools/x402-paid-call-tool.d.ts +1 -1
  74. package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
  75. package/dist/tools/x402-paid-call-tool.js +314 -28
  76. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  77. package/dist/wizard-core/desktop-flow.d.ts +40 -1
  78. package/dist/wizard-core/desktop-flow.d.ts.map +1 -1
  79. package/dist/wizard-core/desktop-flow.js +206 -15
  80. package/dist/wizard-core/desktop-flow.js.map +1 -1
  81. package/docs/03_CONFIGURATION_AND_WIZARD.md +6 -2
  82. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +29 -7
  83. package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
  84. package/docs/14_DESKTOP_WIZARD_RELEASE.md +24 -5
  85. package/docs/15_DASHBOARD_SCREENSHARE_SCRIPT.md +137 -0
  86. package/docs/README.md +23 -2
  87. package/package.json +1 -1
  88. package/server.json +3 -3
  89. package/skills/sap-mcp/SKILL.md +23 -7
  90. package/skills/sap-payments-x402/SKILL.md +37 -13
@@ -4,53 +4,295 @@
4
4
  */
5
5
  import { registerTool } from '../adapters/mcp/sdk-compat.js';
6
6
  import { createTextResponse } from '../adapters/mcp/tool-response.js';
7
- import { executeX402PaidCall } from '../payments/x402-paid-call.js';
7
+ import { getActiveProfile, getProfileConfigPath } from '../config/profiles.js';
8
+ import { executeX402PaidCall, inspectX402Receipt, probeX402PaymentChallenge, signX402PaymentChallenge, } from '../payments/x402-paid-call.js';
9
+ const paidCallInputSchema = {
10
+ endpoint: {
11
+ type: 'string',
12
+ description: 'Hosted MCP endpoint. Defaults to https://mcp.sap.oobeprotocol.ai/mcp.',
13
+ },
14
+ toolName: {
15
+ type: 'string',
16
+ description: 'Remote hosted SAP MCP tool name to call, for example sap_list_all_agents.',
17
+ },
18
+ arguments: {
19
+ type: 'object',
20
+ description: 'Arguments for the remote tools/call request.',
21
+ },
22
+ body: {
23
+ type: 'object',
24
+ description: 'Optional full JSON-RPC request body. Use this instead of toolName when the caller already has a complete request.',
25
+ },
26
+ profileName: {
27
+ type: 'string',
28
+ description: 'SAP MCP profile used to sign the x402 payment. Defaults to the active profile.',
29
+ },
30
+ maxPriceUsd: {
31
+ type: 'number',
32
+ description: 'Maximum accepted x402 payment amount in USD. The call aborts if the challenge exceeds this cap.',
33
+ },
34
+ maxAttempts: {
35
+ type: 'number',
36
+ description: 'Optional retry count for transient x402/RPC failures such as BlockhashNotFound. Defaults to 3; max 5.',
37
+ },
38
+ confirm: {
39
+ type: 'boolean',
40
+ description: 'Must be true. Confirms the user allows this helper to sign an x402 payment payload.',
41
+ },
42
+ };
43
+ const paidCallOutputSchema = {
44
+ type: 'object',
45
+ properties: {
46
+ success: { type: 'boolean', description: 'Whether the hosted paid MCP call completed successfully.' },
47
+ endpoint: { type: 'string', description: 'Hosted MCP endpoint used for the paid call.' },
48
+ sessionId: { type: 'string', description: 'MCP session id used for the unpaid challenge and paid retry.' },
49
+ signerAddress: { type: 'string', description: 'Public address of the local SAP MCP signer. Secret bytes are never returned.' },
50
+ payment: { type: 'object', description: 'Selected payment requirements, including amountUsd, network, asset, and payTo.' },
51
+ settlement: { type: 'object', description: 'x402 settlement response returned by the facilitator when available.' },
52
+ response: { type: 'object', description: 'Remote MCP JSON-RPC response after successful paid retry.' },
53
+ attempts: { type: 'number', description: 'Number of paid-call attempts used.' },
54
+ transientRetries: { type: 'array', items: { type: 'string' }, description: 'Retryable errors encountered before success.' },
55
+ },
56
+ };
57
+ function redactUrl(value) {
58
+ if (!value) {
59
+ return undefined;
60
+ }
61
+ try {
62
+ const url = new URL(value);
63
+ if (url.search) {
64
+ url.search = '?redacted=true';
65
+ }
66
+ return url.toString();
67
+ }
68
+ catch {
69
+ return value.includes('?') ? `${value.split('?')[0]}?redacted=true` : value;
70
+ }
71
+ }
72
+ function networkFromRpcUrl(value) {
73
+ if (!value) {
74
+ return undefined;
75
+ }
76
+ if (value.includes('mainnet')) {
77
+ return 'mainnet-beta';
78
+ }
79
+ if (value.includes('testnet')) {
80
+ return 'testnet';
81
+ }
82
+ if (value.includes('localhost') || value.includes('127.0.0.1') || value.includes('localnet')) {
83
+ return 'localnet';
84
+ }
85
+ return 'devnet';
86
+ }
8
87
  /**
9
88
  * @name registerX402PaidCallTool
10
- * @description Registers the local hosted-payment helper for agents that need to pay remote x402-gated SAP MCP tools.
89
+ * @description Registers local hosted-payment tools for agents that need to resolve x402-gated SAP MCP calls.
11
90
  */
12
91
  export function registerX402PaidCallTool(server, _context) {
13
- registerTool(server, 'sap_x402_paid_call', {
92
+ registerPaymentsProfileCurrentTool(server, _context);
93
+ registerPaymentsCallPaidTool(server, 'sap_payments_call_paid_tool');
94
+ registerPaymentsPrepareChallengeTool(server);
95
+ registerPaymentsSignChallengeTool(server);
96
+ registerPaymentsVerifyReceiptTool(server);
97
+ // Backward-compatible alias used by existing Codex/Hermes/Claude client snippets.
98
+ registerPaymentsCallPaidTool(server, 'sap_x402_paid_call');
99
+ }
100
+ function registerPaymentsProfileCurrentTool(server, context) {
101
+ registerTool(server, 'sap_payments_profile_current', {
102
+ title: 'Show Local SAP Payments Profile',
103
+ description: 'Return the local SAP MCP profile used by the sap_payments bridge for hosted x402 paid/write calls. Use this instead of the remote sap_profile_current when checking the caller wallet, signer, active profile, and local payment readiness. Never returns keypair bytes.',
104
+ inputSchema: {},
105
+ outputSchema: {
106
+ type: 'object',
107
+ properties: {
108
+ serverRole: { type: 'string', description: 'Role of this local MCP server.' },
109
+ activeProfile: { type: 'string', description: 'Profile selected by ~/.config/mcp-sap/.active-profile.' },
110
+ configPath: { type: 'string', description: 'Local profile config path used by the bridge.' },
111
+ mode: { type: 'string', description: 'SAP MCP mode from the local profile.' },
112
+ network: { type: 'string', description: 'Derived Solana network for the local profile RPC.' },
113
+ rpcUrl: { type: 'string', description: 'Redacted RPC URL used by the local profile.' },
114
+ programId: { type: 'string', description: 'SAP program id configured by the local profile.' },
115
+ walletPath: { type: 'string', description: 'Configured local wallet path. File contents are never returned.' },
116
+ walletPathConfigured: { type: 'boolean', description: 'Whether a wallet path is configured.' },
117
+ signerConfigured: { type: 'boolean', description: 'Whether the local bridge resolved a signer.' },
118
+ signerPublicKey: { type: 'string', description: 'Public key of the local signer when available.' },
119
+ secretMaterial: { type: 'string', description: 'Secret handling guarantee.' },
120
+ recommendedPaidTool: { type: 'string', description: 'Tool agents should call for hosted paid/write calls.' },
121
+ },
122
+ required: ['serverRole', 'activeProfile', 'configPath', 'mode', 'walletPathConfigured', 'signerConfigured', 'secretMaterial', 'recommendedPaidTool'],
123
+ },
124
+ annotations: {
125
+ readOnlyHint: true,
126
+ destructiveHint: false,
127
+ idempotentHint: true,
128
+ openWorldHint: false,
129
+ },
130
+ }, async () => createTextResponse(JSON.stringify({
131
+ serverRole: 'local-sap-payments-bridge',
132
+ activeProfile: getActiveProfile(),
133
+ configPath: getProfileConfigPath(getActiveProfile()),
134
+ mode: context.config.mode,
135
+ network: networkFromRpcUrl(context.config.rpcUrl),
136
+ rpcUrl: redactUrl(context.config.rpcUrl),
137
+ programId: context.config.programId,
138
+ agentPubkey: context.config.agentPubkey,
139
+ walletPath: context.config.walletPath,
140
+ walletPathConfigured: Boolean(context.config.walletPath),
141
+ signerConfigured: Boolean(context.signer),
142
+ signerPublicKey: context.signer?.publicKey.toBase58(),
143
+ localProfileVisibility: 'visible-to-local-sap-payments-bridge',
144
+ hostedRemoteVisibility: 'not-visible-to-hosted-accountless-server',
145
+ secretMaterial: 'keypair-bytes-never-returned',
146
+ recommendedPaidTool: 'sap_payments_call_paid_tool',
147
+ agentInstruction: 'For wallet/profile questions, trust this local sap_payments profile result over the remote hosted sap_profile_current result. The hosted SAP MCP server is intentionally accountless.',
148
+ }, null, 2)));
149
+ }
150
+ function registerPaymentsCallPaidTool(server, name) {
151
+ registerTool(server, name, {
14
152
  title: 'Pay And Call Hosted SAP MCP Tool',
15
- description: 'Local helper that initializes the hosted MCP session, signs an x402 payment with the user SAP MCP profile wallet, retries the remote tool call, and returns the settlement receipt. Use this instead of calling hosted paid tools directly when the runtime cannot attach x402 payment headers. Requires confirm: true and maxPriceUsd.',
153
+ description: 'High-level local payment bridge. It initializes the hosted MCP session, obtains the x402 challenge, signs with the user-controlled SAP MCP profile wallet, retries the exact remote tool call, settles payment, and returns the tool result plus receipt. Prefer this tool for hosted paid/write SAP MCP calls when the runtime cannot natively replay x402 challenges. Requires confirm: true and maxPriceUsd.',
154
+ inputSchema: paidCallInputSchema,
155
+ outputSchema: paidCallOutputSchema,
156
+ annotations: {
157
+ readOnlyHint: false,
158
+ destructiveHint: false,
159
+ idempotentHint: false,
160
+ openWorldHint: true,
161
+ },
162
+ }, async (input) => {
163
+ try {
164
+ const parsed = parseInput(input);
165
+ const result = await executeX402PaidCall(parsed);
166
+ return createTextResponse(JSON.stringify(result, null, 2));
167
+ }
168
+ catch (error) {
169
+ return createTextResponse(formatPaidCallError(error), { isError: true });
170
+ }
171
+ });
172
+ }
173
+ function registerPaymentsPrepareChallengeTool(server) {
174
+ registerTool(server, 'sap_payments_prepare_challenge', {
175
+ title: 'Prepare Hosted x402 Challenge',
176
+ description: 'Low-level free helper that initializes hosted SAP MCP, calls the target paid tool without payment, and returns the parsed x402 challenge without signing. Use for inspection, policy review, or custom x402 clients. Normal agents should prefer sap_payments_call_paid_tool.',
16
177
  inputSchema: {
17
- endpoint: {
18
- type: 'string',
19
- description: 'Hosted MCP endpoint. Defaults to https://mcp.sap.oobeprotocol.ai/mcp.',
178
+ endpoint: paidCallInputSchema.endpoint,
179
+ toolName: paidCallInputSchema.toolName,
180
+ arguments: paidCallInputSchema.arguments,
181
+ body: paidCallInputSchema.body,
182
+ maxPriceUsd: {
183
+ type: 'number',
184
+ description: 'Optional maximum acceptable USD price used only to reject oversized challenges during inspection.',
20
185
  },
21
- toolName: {
22
- type: 'string',
23
- description: 'Remote hosted SAP MCP tool name to call, for example sap_list_all_agents.',
186
+ },
187
+ outputSchema: {
188
+ type: 'object',
189
+ properties: {
190
+ endpoint: { type: 'string', description: 'Hosted MCP endpoint that returned the challenge.' },
191
+ sessionId: { type: 'string', description: 'MCP session id created for the challenge.' },
192
+ requestBody: { type: 'object', description: 'Canonical JSON-RPC request body used to obtain the challenge.' },
193
+ paymentRequired: { type: 'object', description: 'Parsed x402 PaymentRequired challenge.' },
194
+ selectedRequirements: { type: 'object', description: 'Selected payment requirement from accepts[0].' },
195
+ amountUsd: { type: 'number', description: 'Selected payment amount expressed in USD.' },
196
+ instructions: { type: 'object', description: 'Agent-safe retry and signing instructions.' },
24
197
  },
25
- arguments: {
198
+ },
199
+ annotations: {
200
+ readOnlyHint: true,
201
+ destructiveHint: false,
202
+ idempotentHint: false,
203
+ openWorldHint: true,
204
+ },
205
+ }, async (input) => {
206
+ try {
207
+ const result = await probeX402PaymentChallenge(parseProbeInput(input));
208
+ return createTextResponse(JSON.stringify(result, null, 2));
209
+ }
210
+ catch (error) {
211
+ return createTextResponse(formatPaidCallError(error), { isError: true });
212
+ }
213
+ });
214
+ }
215
+ function registerPaymentsSignChallengeTool(server) {
216
+ registerTool(server, 'sap_payments_sign_challenge', {
217
+ title: 'Sign Hosted x402 Challenge',
218
+ description: 'Low-level local helper that signs a parsed x402 PaymentRequired challenge with the active SAP MCP profile wallet and returns a one-time Payment-Signature header. Use only when building a custom client; normal agents should prefer sap_payments_call_paid_tool so the payment header is not surfaced separately. Requires confirm: true and maxPriceUsd.',
219
+ inputSchema: {
220
+ paymentRequired: {
26
221
  type: 'object',
27
- description: 'Arguments for the remote tools/call request.',
222
+ description: 'Parsed x402 PaymentRequired challenge returned by sap_payments_prepare_challenge or the hosted MCP payment_required response.',
28
223
  },
29
- body: {
224
+ challenge: {
30
225
  type: 'object',
31
- description: 'Optional full JSON-RPC request body. Use this instead of toolName when the caller already has a complete request.',
32
- },
33
- profileName: {
34
- type: 'string',
35
- description: 'SAP MCP profile used to sign the x402 payment. Defaults to the active profile.',
226
+ description: 'Alias for paymentRequired for agent runtimes that store the challenge under a generic name.',
36
227
  },
37
- maxPriceUsd: {
228
+ selectedIndex: {
38
229
  type: 'number',
39
- description: 'Maximum accepted x402 payment amount in USD. The call aborts if the challenge exceeds this cap.',
230
+ description: 'Index into paymentRequired.accepts to sign. Defaults to 0.',
40
231
  },
41
- maxAttempts: {
42
- type: 'number',
43
- description: 'Optional retry count for transient x402/RPC failures such as BlockhashNotFound. Defaults to 3; max 5.',
232
+ profileName: paidCallInputSchema.profileName,
233
+ maxPriceUsd: paidCallInputSchema.maxPriceUsd,
234
+ confirm: paidCallInputSchema.confirm,
235
+ },
236
+ outputSchema: {
237
+ type: 'object',
238
+ properties: {
239
+ signerAddress: { type: 'string', description: 'Public address of the signer that created the payment authorization.' },
240
+ amountUsd: { type: 'number', description: 'USD amount authorized by the selected challenge.' },
241
+ payment: { type: 'object', description: 'Selected network, asset, and payTo.' },
242
+ headers: { type: 'object', description: 'HTTP headers to attach to the exact paid retry request.' },
243
+ payload: { type: 'object', description: 'x402 payment payload produced by the official client SDK.' },
244
+ warning: { type: 'string', description: 'Safety warning for one-time payment authorization material.' },
44
245
  },
45
- confirm: {
46
- type: 'boolean',
47
- description: 'Must be true. Confirms the user allows this helper to sign an x402 payment payload.',
246
+ },
247
+ annotations: {
248
+ readOnlyHint: false,
249
+ destructiveHint: false,
250
+ idempotentHint: false,
251
+ openWorldHint: false,
252
+ },
253
+ }, async (input) => {
254
+ try {
255
+ const result = await signX402PaymentChallenge(parseSignInput(input));
256
+ return createTextResponse(JSON.stringify(result, null, 2));
257
+ }
258
+ catch (error) {
259
+ return createTextResponse(formatPaidCallError(error), { isError: true });
260
+ }
261
+ });
262
+ }
263
+ function registerPaymentsVerifyReceiptTool(server) {
264
+ registerTool(server, 'sap_payments_verify_receipt', {
265
+ title: 'Inspect x402 Payment Receipt',
266
+ description: 'Decodes a PAYMENT-RESPONSE or X-PAYMENT-RESPONSE receipt header into agent-readable JSON. This is a local inspection helper; on-chain finality still comes from the x402 facilitator response and Solana transaction status.',
267
+ inputSchema: {
268
+ receiptHeader: {
269
+ type: 'string',
270
+ description: 'Base64 JSON or raw JSON receipt header returned by PAYMENT-RESPONSE or X-PAYMENT-RESPONSE.',
48
271
  },
272
+ paymentResponse: {
273
+ type: 'string',
274
+ description: 'Alias for receiptHeader.',
275
+ },
276
+ },
277
+ outputSchema: {
278
+ type: 'object',
279
+ properties: {
280
+ validJson: { type: 'boolean', description: 'Whether the receipt decoded to JSON.' },
281
+ decoded: { type: 'object', description: 'Decoded receipt payload or the original string when not JSON.' },
282
+ txSignature: { type: 'string', description: 'Settlement transaction signature when present.' },
283
+ network: { type: 'string', description: 'Settlement network when present.' },
284
+ warning: { type: 'string', description: 'Warning when the receipt could not be decoded as JSON.' },
285
+ },
286
+ },
287
+ annotations: {
288
+ readOnlyHint: true,
289
+ destructiveHint: false,
290
+ idempotentHint: true,
291
+ openWorldHint: false,
49
292
  },
50
293
  }, async (input) => {
51
294
  try {
52
- const parsed = parseInput(input);
53
- const result = await executeX402PaidCall(parsed);
295
+ const result = inspectX402Receipt(parseReceiptInput(input));
54
296
  return createTextResponse(JSON.stringify(result, null, 2));
55
297
  }
56
298
  catch (error) {
@@ -77,6 +319,50 @@ function parseInput(input) {
77
319
  confirm: record.confirm === true,
78
320
  };
79
321
  }
322
+ function parseProbeInput(input) {
323
+ if (!input || typeof input !== 'object' || Array.isArray(input)) {
324
+ throw new Error('sap_payments_prepare_challenge requires an input object.');
325
+ }
326
+ const record = input;
327
+ return {
328
+ endpoint: record.endpoint,
329
+ toolName: record.toolName,
330
+ arguments: record.arguments,
331
+ body: record.body,
332
+ maxPriceUsd: record.maxPriceUsd,
333
+ };
334
+ }
335
+ function parseSignInput(input) {
336
+ if (!input || typeof input !== 'object' || Array.isArray(input)) {
337
+ throw new Error('sap_payments_sign_challenge requires an input object.');
338
+ }
339
+ const record = input;
340
+ const paymentRequired = record.paymentRequired ?? record.challenge;
341
+ if (!paymentRequired) {
342
+ throw new Error('paymentRequired is required.');
343
+ }
344
+ if (record.maxPriceUsd === undefined) {
345
+ throw new Error('maxPriceUsd is required.');
346
+ }
347
+ return {
348
+ paymentRequired,
349
+ selectedIndex: record.selectedIndex,
350
+ profileName: record.profileName,
351
+ maxPriceUsd: record.maxPriceUsd,
352
+ confirm: record.confirm === true,
353
+ };
354
+ }
355
+ function parseReceiptInput(input) {
356
+ if (!input || typeof input !== 'object' || Array.isArray(input)) {
357
+ throw new Error('sap_payments_verify_receipt requires an input object.');
358
+ }
359
+ const record = input;
360
+ const header = record.receiptHeader ?? record.paymentResponse;
361
+ if (!header) {
362
+ throw new Error('receiptHeader is required.');
363
+ }
364
+ return header;
365
+ }
80
366
  function formatPaidCallError(error) {
81
367
  const message = error instanceof Error ? error.message : String(error);
82
368
  const retryable = isRetryablePaymentError(message);
@@ -1 +1 @@
1
- {"version":3,"file":"x402-paid-call-tool.js","sourceRoot":"","sources":["../../src/tools/x402-paid-call-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"x402-paid-call-tool.js","sourceRoot":"","sources":["../../src/tools/x402-paid-call-tool.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,39 @@ export interface DesktopWizardRuntimeStatus {
39
39
  autoConfigurable: boolean;
40
40
  recommendation: string;
41
41
  }
42
+ /**
43
+ * @name DesktopProfileStatus
44
+ * @description Safe local SAP MCP profile metadata shown by the desktop wizard without reading wallet bytes.
45
+ */
46
+ export interface DesktopProfileStatus {
47
+ name: string;
48
+ path: string;
49
+ active: boolean;
50
+ mode?: SapMcpMode;
51
+ rpcUrl?: string;
52
+ network?: string;
53
+ agentPubkey?: string;
54
+ walletPath?: string;
55
+ walletExists: boolean;
56
+ externalSignerConfigured: boolean;
57
+ readiness: 'ready' | 'needs-attention';
58
+ issues: string[];
59
+ }
60
+ /**
61
+ * @name DesktopWizardReadiness
62
+ * @description Post-save readiness audit used to avoid reporting success when local signing or runtime bridge config is broken.
63
+ */
64
+ export interface DesktopWizardReadiness {
65
+ status: 'ready' | 'needs-attention';
66
+ profileName?: string;
67
+ profileIssues: string[];
68
+ runtimeIssues: Array<{
69
+ runtime: string;
70
+ path: string;
71
+ issues: string[];
72
+ }>;
73
+ nextSteps: string[];
74
+ }
42
75
  /**
43
76
  * @name DesktopWizardResult
44
77
  * @description Result returned after the desktop wizard saves profile and runtime integration state.
@@ -46,6 +79,7 @@ export interface DesktopWizardRuntimeStatus {
46
79
  export interface DesktopWizardResult {
47
80
  setup?: WizardSetupResult;
48
81
  setupMode: DesktopWizardDraft['setupMode'];
82
+ readiness: DesktopWizardReadiness;
49
83
  runtimeActions: Array<{
50
84
  runtime: string;
51
85
  status: 'configured' | 'installed' | 'skipped';
@@ -69,6 +103,11 @@ export declare function createDefaultDesktopWizardDraft(): DesktopWizardDraft;
69
103
  * @description Summarizes local runtime config files without exposing secret material.
70
104
  */
71
105
  export declare function getDesktopRuntimeStatuses(homeDir?: string): DesktopWizardRuntimeStatus[];
106
+ /**
107
+ * @name getDesktopProfileStatuses
108
+ * @description Lists local SAP MCP config profiles without loading or exposing keypair material.
109
+ */
110
+ export declare function getDesktopProfileStatuses(homeDir?: string): DesktopProfileStatus[];
72
111
  /**
73
112
  * @name validateDesktopWizardDraft
74
113
  * @description Returns actionable validation errors before persistence.
@@ -78,5 +117,5 @@ export declare function validateDesktopWizardDraft(draft: DesktopWizardDraft): s
78
117
  * @name saveDesktopWizardDraft
79
118
  * @description Persists a desktop wizard draft and installs selected runtime integrations.
80
119
  */
81
- export declare function saveDesktopWizardDraft(draft: DesktopWizardDraft): Promise<DesktopWizardResult>;
120
+ export declare function saveDesktopWizardDraft(draft: DesktopWizardDraft, homeDir?: string, platform?: NodeJS.Platform): Promise<DesktopWizardResult>;
82
121
  //# sourceMappingURL=desktop-flow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"desktop-flow.d.ts","sourceRoot":"","sources":["../../src/wizard-core/desktop-flow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAQpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,gBAAgB,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3C,cAAc,EAAE,KAAK,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;QAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,kBAAkB,CAkBpE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,0BAA0B,EAAE,CA0CxF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,EAAE,CA6B9E;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA+DpG"}
1
+ {"version":3,"file":"desktop-flow.d.ts","sourceRoot":"","sources":["../../src/wizard-core/desktop-flow.ts"],"names":[],"mappings":"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"}