@oobe-protocol-labs/sap-mcp-server 0.7.4 → 0.9.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 (99) hide show
  1. package/CHANGELOG.md +140 -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 +24 -6
  6. package/USER_DOCS/04_CLIENT_CONFIGS.md +26 -15
  7. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +44 -22
  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/paths.d.ts +6 -0
  21. package/dist/config/paths.d.ts.map +1 -1
  22. package/dist/config/paths.js +14 -0
  23. package/dist/config/paths.js.map +1 -1
  24. package/dist/config/wizard.d.ts.map +1 -1
  25. package/dist/config/wizard.js +92 -57
  26. package/dist/config/wizard.js.map +1 -1
  27. package/dist/core/constants.d.ts +1 -1
  28. package/dist/core/constants.js +1 -1
  29. package/dist/payments/pricing.d.ts.map +1 -1
  30. package/dist/payments/pricing.js +12 -0
  31. package/dist/payments/pricing.js.map +1 -1
  32. package/dist/payments/x402-paid-call.d.ts +181 -1
  33. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  34. package/dist/payments/x402-paid-call.js +432 -6
  35. package/dist/payments/x402-paid-call.js.map +1 -1
  36. package/dist/prompts/context/sap-agent-context.prompt.js +7 -3
  37. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  38. package/dist/remote/public-home/escape.d.ts +11 -0
  39. package/dist/remote/public-home/escape.d.ts.map +1 -0
  40. package/dist/remote/public-home/escape.js +20 -0
  41. package/dist/remote/public-home/escape.js.map +1 -0
  42. package/dist/remote/public-home/index.d.ts +8 -0
  43. package/dist/remote/public-home/index.d.ts.map +1 -0
  44. package/dist/remote/public-home/index.js +57 -0
  45. package/dist/remote/public-home/index.js.map +1 -0
  46. package/dist/remote/public-home/scripts.d.ts +6 -0
  47. package/dist/remote/public-home/scripts.d.ts.map +1 -0
  48. package/dist/remote/public-home/scripts.js +106 -0
  49. package/dist/remote/public-home/scripts.js.map +1 -0
  50. package/dist/remote/public-home/sections.d.ts +67 -0
  51. package/dist/remote/public-home/sections.d.ts.map +1 -0
  52. package/dist/remote/public-home/sections.js +732 -0
  53. package/dist/remote/public-home/sections.js.map +1 -0
  54. package/dist/remote/public-home/styles.d.ts +6 -0
  55. package/dist/remote/public-home/styles.d.ts.map +1 -0
  56. package/dist/remote/public-home/styles.js +1534 -0
  57. package/dist/remote/public-home/styles.js.map +1 -0
  58. package/dist/remote/public-home/types.d.ts +97 -0
  59. package/dist/remote/public-home/types.d.ts.map +1 -0
  60. package/dist/remote/public-home/types.js +2 -0
  61. package/dist/remote/public-home/types.js.map +1 -0
  62. package/dist/remote/server.d.ts +3 -1
  63. package/dist/remote/server.d.ts.map +1 -1
  64. package/dist/remote/server.js +67 -282
  65. package/dist/remote/server.js.map +1 -1
  66. package/dist/security/tool-permissions.d.ts.map +1 -1
  67. package/dist/security/tool-permissions.js +5 -0
  68. package/dist/security/tool-permissions.js.map +1 -1
  69. package/dist/tools/magicblock-tools.js +6 -6
  70. package/dist/tools/magicblock-tools.js.map +1 -1
  71. package/dist/tools/profile-tools.d.ts.map +1 -1
  72. package/dist/tools/profile-tools.js +136 -33
  73. package/dist/tools/profile-tools.js.map +1 -1
  74. package/dist/tools/register-tools.d.ts.map +1 -1
  75. package/dist/tools/register-tools.js +5 -0
  76. package/dist/tools/register-tools.js.map +1 -1
  77. package/dist/tools/x402-paid-call-tool.d.ts +1 -1
  78. package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
  79. package/dist/tools/x402-paid-call-tool.js +360 -28
  80. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  81. package/dist/tui/config-wizard.js +2 -2
  82. package/dist/tui/config-wizard.js.map +1 -1
  83. package/dist/tui/wizard-save.d.ts.map +1 -1
  84. package/dist/tui/wizard-save.js +7 -3
  85. package/dist/tui/wizard-save.js.map +1 -1
  86. package/dist/wizard-core/desktop-flow.d.ts +40 -1
  87. package/dist/wizard-core/desktop-flow.d.ts.map +1 -1
  88. package/dist/wizard-core/desktop-flow.js +207 -15
  89. package/dist/wizard-core/desktop-flow.js.map +1 -1
  90. package/docs/03_CONFIGURATION_AND_WIZARD.md +7 -2
  91. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +30 -7
  92. package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
  93. package/docs/14_DESKTOP_WIZARD_RELEASE.md +25 -5
  94. package/docs/15_DASHBOARD_SCREENSHARE_SCRIPT.md +137 -0
  95. package/docs/README.md +23 -2
  96. package/package.json +1 -1
  97. package/server.json +3 -3
  98. package/skills/sap-mcp/SKILL.md +27 -7
  99. package/skills/sap-payments-x402/SKILL.md +37 -13
@@ -7,9 +7,13 @@ const PROFILE_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
7
7
  * Executes the preferred config dir operation.
8
8
  */
9
9
  export function preferredConfigDir() {
10
- const base = process.env.XDG_CONFIG_HOME
11
- || (process.platform === 'win32' ? process.env.APPDATA || homedir() : join(homedir(), '.config'));
12
- return join(base, 'mcp-sap');
10
+ if (process.env.XDG_CONFIG_HOME) {
11
+ return join(process.env.XDG_CONFIG_HOME, 'mcp-sap');
12
+ }
13
+ if (process.platform === 'win32') {
14
+ return join(process.env.APPDATA ?? join(homedir(), 'AppData', 'Roaming'), 'mcp-sap');
15
+ }
16
+ return join(homedir(), '.config', 'mcp-sap');
13
17
  }
14
18
  /**
15
19
  * Executes the default wallet path operation.
@@ -1 +1 @@
1
- {"version":3,"file":"wizard-save.js","sourceRoot":"","sources":["../../src/tui/wizard-save.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wizard-save.js","sourceRoot":"","sources":["../../src/tui/wizard-save.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, platform?: NodeJS.Platform): 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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"}
@@ -1,7 +1,9 @@
1
+ import { existsSync, readdirSync, readFileSync } from 'fs';
2
+ import { join } from 'path';
1
3
  import { defaults } from '../config/defaults.js';
2
- import { defaultGeneratedWalletPath } from '../config/paths.js';
4
+ import { defaultGeneratedWalletPath, getPreferredConfigDirForPlatform } from '../config/paths.js';
3
5
  import { saveWizardSetup } from '../config/setup.js';
4
- import { discoverMcpClientTargets, installCodexHostedPaymentBridgeConfig, installHostedPaymentBridgeConfigs, installX402PaidCallAddon, } from '../config/mcp-client-injection.js';
6
+ import { discoverMcpClientTargets, installCodexHostedPaymentBridgeConfig, installHostedPaymentBridgeConfigs, installX402PaidCallAddon, validateHostedPaymentBridgeContent, } from '../config/mcp-client-injection.js';
5
7
  /**
6
8
  * @name normalizeDesktopProfileName
7
9
  * @description Produces a safe suggested profile name while preserving validation in saveWizardSetup.
@@ -22,7 +24,7 @@ export function createDefaultDesktopWizardDraft() {
22
24
  const profileName = 'my-sap-agent';
23
25
  return {
24
26
  profileName,
25
- mode: 'local-dev-keypair',
27
+ mode: 'hosted-api',
26
28
  rpcUrl: defaults.rpcUrl,
27
29
  createNewWallet: true,
28
30
  walletPath: defaultGeneratedWalletPath(profileName),
@@ -55,7 +57,7 @@ export function getDesktopRuntimeStatuses(homeDir) {
55
57
  detected: Boolean(byRuntime.get('codex')?.length),
56
58
  paths: byRuntime.get('codex')?.map((target) => target.path) ?? [],
57
59
  autoConfigurable: true,
58
- recommendation: 'Recommended: configure hosted SAP MCP plus local sap_payments bridge automatically.',
60
+ recommendation: 'Recommended: hosted SAP MCP plus local sap_payments bridge.',
59
61
  },
60
62
  {
61
63
  id: 'claude',
@@ -63,7 +65,7 @@ export function getDesktopRuntimeStatuses(homeDir) {
63
65
  detected: Boolean(byRuntime.get('claude')?.length),
64
66
  paths: byRuntime.get('claude')?.map((target) => target.path) ?? [],
65
67
  autoConfigurable: true,
66
- recommendation: 'Configure hosted SAP MCP plus local sap_payments bridge in Claude Desktop JSON.',
68
+ recommendation: 'Hosted SAP MCP plus local sap_payments bridge in Claude Desktop JSON.',
67
69
  },
68
70
  {
69
71
  id: 'hermes',
@@ -71,7 +73,7 @@ export function getDesktopRuntimeStatuses(homeDir) {
71
73
  detected: Boolean(byRuntime.get('hermes')?.length),
72
74
  paths: byRuntime.get('hermes')?.map((target) => target.path) ?? [],
73
75
  autoConfigurable: true,
74
- recommendation: 'Configure hosted SAP MCP plus local sap_payments bridge in Hermes global/profile config.',
76
+ recommendation: 'Hosted SAP MCP plus local sap_payments bridge in Hermes global/profile config.',
75
77
  },
76
78
  {
77
79
  id: 'openclaw',
@@ -79,10 +81,136 @@ export function getDesktopRuntimeStatuses(homeDir) {
79
81
  detected: Boolean(byRuntime.get('openclaw')?.length),
80
82
  paths: byRuntime.get('openclaw')?.map((target) => target.path) ?? [],
81
83
  autoConfigurable: true,
82
- recommendation: 'Configure hosted SAP MCP plus local sap_payments bridge in OpenClaw MCP JSON.',
84
+ recommendation: 'Hosted SAP MCP plus local sap_payments bridge in OpenClaw MCP JSON.',
83
85
  },
84
86
  ];
85
87
  }
88
+ /**
89
+ * @name getDesktopProfileStatuses
90
+ * @description Lists local SAP MCP config profiles without loading or exposing keypair material.
91
+ */
92
+ export function getDesktopProfileStatuses(homeDir, platform = process.platform) {
93
+ const configDir = getPreferredConfigDirForPlatform(homeDir, platform);
94
+ if (!existsSync(configDir)) {
95
+ return [];
96
+ }
97
+ const activeProfile = readActiveDesktopProfile(configDir);
98
+ const profiles = [];
99
+ for (const file of readdirSync(configDir)) {
100
+ const profileName = profileNameFromConfigFile(file);
101
+ if (!profileName) {
102
+ continue;
103
+ }
104
+ const profilePath = join(configDir, file);
105
+ const config = readJsonObject(profilePath);
106
+ const walletPath = readStringField(config, 'walletPath');
107
+ const rpcUrl = readStringField(config, 'rpcUrl');
108
+ const mode = readModeField(config, 'mode');
109
+ const externalSignerConfigured = Boolean(readStringField(config, 'externalSignerUrl'));
110
+ const issues = buildProfileReadinessIssues({
111
+ name: profileName,
112
+ mode,
113
+ walletPath,
114
+ walletExists: Boolean(walletPath && existsSync(walletPath)),
115
+ externalSignerConfigured,
116
+ });
117
+ profiles.push({
118
+ name: profileName,
119
+ path: profilePath,
120
+ active: profileName === activeProfile,
121
+ mode,
122
+ rpcUrl,
123
+ network: networkFromRpcUrl(rpcUrl),
124
+ agentPubkey: readStringField(config, 'agentPubkey'),
125
+ walletPath,
126
+ walletExists: Boolean(walletPath && existsSync(walletPath)),
127
+ externalSignerConfigured,
128
+ readiness: issues.length === 0 ? 'ready' : 'needs-attention',
129
+ issues,
130
+ });
131
+ }
132
+ profiles.sort((a, b) => {
133
+ if (a.active)
134
+ return -1;
135
+ if (b.active)
136
+ return 1;
137
+ return a.name.localeCompare(b.name);
138
+ });
139
+ return profiles;
140
+ }
141
+ function buildProfileReadinessIssues(input) {
142
+ const issues = [];
143
+ if (!input.mode) {
144
+ issues.push(`Profile "${input.name}" has no valid mode.`);
145
+ }
146
+ const needsSigner = input.mode === 'hosted-api'
147
+ || input.mode === 'local-dev-keypair'
148
+ || input.mode === 'delegated-session';
149
+ if (needsSigner && !input.walletPath && !input.externalSignerConfigured) {
150
+ issues.push(`Profile "${input.name}" needs a local wallet path or external signer for payments/write tools.`);
151
+ }
152
+ if (needsSigner && input.walletPath && !input.walletExists) {
153
+ issues.push(`Profile "${input.name}" points to a missing wallet file.`);
154
+ }
155
+ return issues;
156
+ }
157
+ function profileNameFromConfigFile(file) {
158
+ if (file === 'config.json') {
159
+ return 'default';
160
+ }
161
+ if (file.startsWith('config-') && file.endsWith('.json')) {
162
+ return file.slice('config-'.length, -'.json'.length);
163
+ }
164
+ return undefined;
165
+ }
166
+ function readActiveDesktopProfile(configDir) {
167
+ const activePath = join(configDir, '.active-profile');
168
+ if (!existsSync(activePath)) {
169
+ return 'default';
170
+ }
171
+ try {
172
+ return readFileSync(activePath, 'utf-8').trim() || 'default';
173
+ }
174
+ catch {
175
+ return 'default';
176
+ }
177
+ }
178
+ function readJsonObject(path) {
179
+ try {
180
+ const parsed = JSON.parse(readFileSync(path, 'utf-8'));
181
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};
182
+ }
183
+ catch {
184
+ return {};
185
+ }
186
+ }
187
+ function readStringField(record, field) {
188
+ const value = record[field];
189
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
190
+ }
191
+ function readModeField(record, field) {
192
+ const value = readStringField(record, field);
193
+ if (value === 'readonly'
194
+ || value === 'local-dev-keypair'
195
+ || value === 'external-signer'
196
+ || value === 'delegated-session'
197
+ || value === 'hosted-api') {
198
+ return value;
199
+ }
200
+ return undefined;
201
+ }
202
+ function networkFromRpcUrl(rpcUrl) {
203
+ if (!rpcUrl) {
204
+ return undefined;
205
+ }
206
+ if (rpcUrl.includes('devnet')) {
207
+ return 'devnet';
208
+ }
209
+ if (rpcUrl.includes('testnet')) {
210
+ return 'testnet';
211
+ }
212
+ return 'mainnet-beta';
213
+ }
86
214
  /**
87
215
  * @name validateDesktopWizardDraft
88
216
  * @description Returns actionable validation errors before persistence.
@@ -91,7 +219,7 @@ export function validateDesktopWizardDraft(draft) {
91
219
  const errors = [];
92
220
  if (draft.setupMode === 'payments-only') {
93
221
  if (draft.configureRuntimes.length === 0 && !draft.configureCodex && !draft.installAddonBundle) {
94
- errors.push('Choose at least one runtime or install the local addon bundle.');
222
+ errors.push('Choose at least one runtime or install the local bridge reference bundle.');
95
223
  }
96
224
  return errors;
97
225
  }
@@ -120,7 +248,7 @@ export function validateDesktopWizardDraft(draft) {
120
248
  * @name saveDesktopWizardDraft
121
249
  * @description Persists a desktop wizard draft and installs selected runtime integrations.
122
250
  */
123
- export async function saveDesktopWizardDraft(draft) {
251
+ export async function saveDesktopWizardDraft(draft, homeDir, platform = process.platform) {
124
252
  const errors = validateDesktopWizardDraft(draft);
125
253
  if (errors.length > 0) {
126
254
  throw new Error(errors.join('\n'));
@@ -148,7 +276,7 @@ export async function saveDesktopWizardDraft(draft) {
148
276
  if (draft.configureCodex) {
149
277
  selectedRuntimes.add('codex');
150
278
  }
151
- for (const result of installHostedPaymentBridgeConfigs(Array.from(selectedRuntimes))) {
279
+ for (const result of installHostedPaymentBridgeConfigs(Array.from(selectedRuntimes), homeDir, platform)) {
152
280
  runtimeActions.push({
153
281
  runtime: result.target.label,
154
282
  status: 'configured',
@@ -158,7 +286,7 @@ export async function saveDesktopWizardDraft(draft) {
158
286
  });
159
287
  }
160
288
  if (runtimeActions.length === 0 && draft.setupMode === 'full') {
161
- const codex = installCodexHostedPaymentBridgeConfig();
289
+ const codex = installCodexHostedPaymentBridgeConfig(homeDir, platform);
162
290
  runtimeActions.push({
163
291
  runtime: 'Codex',
164
292
  status: 'configured',
@@ -168,14 +296,78 @@ export async function saveDesktopWizardDraft(draft) {
168
296
  });
169
297
  }
170
298
  if (draft.installAddonBundle) {
171
- const addon = installX402PaidCallAddon();
299
+ const addonDir = join(getPreferredConfigDirForPlatform(homeDir, platform), 'addons', 'x402-paid-call');
300
+ const addon = installX402PaidCallAddon(addonDir);
172
301
  runtimeActions.push({
173
- runtime: 'x402 paid-call addon',
302
+ runtime: 'SAP MCP payment bridge bundle',
174
303
  status: 'installed',
175
304
  path: addon.targetDir,
176
- message: `Installed ${addon.addonId} addon bundle.`,
305
+ message: `Installed ${addon.addonId} reference bundle.`,
177
306
  });
178
307
  }
179
- return { setup, setupMode: draft.setupMode, runtimeActions };
308
+ const readiness = buildDesktopReadiness({
309
+ profileName: draft.setupMode === 'full' ? profileName : undefined,
310
+ selectedRuntimes: Array.from(selectedRuntimes),
311
+ runtimeActions,
312
+ homeDir,
313
+ platform,
314
+ });
315
+ return { setup, setupMode: draft.setupMode, readiness, runtimeActions };
316
+ }
317
+ function buildDesktopReadiness(input) {
318
+ const profiles = getDesktopProfileStatuses(input.homeDir, input.platform);
319
+ const activeProfile = input.profileName
320
+ ? profiles.find((profile) => profile.name === input.profileName)
321
+ : profiles.find((profile) => profile.active);
322
+ const profileIssues = activeProfile
323
+ ? activeProfile.issues
324
+ : ['No active local SAP MCP profile was found.'];
325
+ const runtimeIssues = collectRuntimeReadinessIssues(input);
326
+ const nextSteps = buildReadinessNextSteps(profileIssues, runtimeIssues);
327
+ return {
328
+ status: profileIssues.length === 0 && runtimeIssues.length === 0 ? 'ready' : 'needs-attention',
329
+ profileName: activeProfile?.name,
330
+ profileIssues,
331
+ runtimeIssues,
332
+ nextSteps,
333
+ };
334
+ }
335
+ function collectRuntimeReadinessIssues(input) {
336
+ const targets = discoverMcpClientTargets(input.homeDir, input.platform);
337
+ const selected = new Set(input.selectedRuntimes.length > 0 ? input.selectedRuntimes : ['codex']);
338
+ const configuredPaths = new Set(input.runtimeActions.map((action) => action.path).filter((path) => Boolean(path)));
339
+ const runtimeIssues = [];
340
+ for (const target of targets) {
341
+ const runtimeId = target.id;
342
+ if (!selected.has(runtimeId) || !configuredPaths.has(target.path) || !existsSync(target.path)) {
343
+ continue;
344
+ }
345
+ const content = readFileSync(target.path, 'utf-8');
346
+ const issues = validateHostedPaymentBridgeContent(target, content, input.platform);
347
+ if (issues.length > 0) {
348
+ runtimeIssues.push({
349
+ runtime: target.label,
350
+ path: target.path,
351
+ issues,
352
+ });
353
+ }
354
+ }
355
+ return runtimeIssues;
356
+ }
357
+ function buildReadinessNextSteps(profileIssues, runtimeIssues) {
358
+ const nextSteps = [];
359
+ if (profileIssues.some((issue) => issue.includes('missing wallet file'))) {
360
+ nextSteps.push('Open Full hosted SAP MCP setup and create a new dedicated wallet, or update the profile to an existing wallet/external signer.');
361
+ }
362
+ if (profileIssues.some((issue) => issue.includes('No active local SAP MCP profile'))) {
363
+ nextSteps.push('Create a named SAP MCP profile with the wizard before using hosted paid/write tools.');
364
+ }
365
+ if (runtimeIssues.length > 0) {
366
+ nextSteps.push('Run Repair payment bridge only for the affected runtimes, then fully restart the agent runtime.');
367
+ }
368
+ if (nextSteps.length === 0) {
369
+ nextSteps.push('Restart the selected agent runtime so it reloads hosted sap plus local sap_payments.');
370
+ }
371
+ return nextSteps;
180
372
  }
181
373
  //# sourceMappingURL=desktop-flow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"desktop-flow.js","sourceRoot":"","sources":["../../src/wizard-core/desktop-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"desktop-flow.js","sourceRoot":"","sources":["../../src/wizard-core/desktop-flow.ts"],"names":[],"mappings":"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"}
@@ -74,7 +74,7 @@ Desktop flow:
74
74
  2. Create or import a dedicated SAP MCP wallet.
75
75
  3. Set policy limits and optional Bento Guard metadata.
76
76
  4. Detect local agent runtimes.
77
- 5. Configure hosted MCP and the local x402 paid-call bridge where supported.
77
+ 5. Configure hosted MCP and the local SAP MCP `sap_payments` bridge where supported.
78
78
  6. Show a final review before writing files.
79
79
 
80
80
  Release artifacts are produced as macOS DMG/ZIP, Windows NSIS EXE, and Linux tar.gz. See [14. Desktop Wizard Release](14_DESKTOP_WIZARD_RELEASE.md).
@@ -106,12 +106,17 @@ Do not inject keypair bytes, hard-coded legacy wallet paths, or stale RPC overri
106
106
  For hosted paid/write tools, clients may also need a local `sap_payments` bridge that exposes only:
107
107
 
108
108
  ```txt
109
+ sap_payments_readiness
110
+ sap_payments_call_paid_tool
111
+ sap_payments_prepare_challenge
112
+ sap_payments_sign_challenge
113
+ sap_payments_verify_receipt
109
114
  sap_x402_paid_call
110
115
  sap_profile_current
111
116
  sap_x402_estimate_cost
112
117
  ```
113
118
 
114
- This bridge signs x402 payment proofs locally with the active SAP MCP profile and retries the hosted tool call.
119
+ This bridge obtains x402 challenges, signs payment proofs locally with the active SAP MCP profile, retries hosted tool calls, and inspects receipts.
115
120
 
116
121
  ## 03.7 Config CLI
117
122
 
@@ -46,10 +46,22 @@ The retry must preserve the initialized `mcp-session-id` and the same MCP method
46
46
  and params that produced the challenge. JSON-RPC `id` is not part of the
47
47
  canonical paid request hash.
48
48
 
49
- ## 06.4 Local x402 Paid-Call Addon
49
+ ## 06.4 Local x402 Challenge Toolchain
50
50
 
51
51
  Some clients can connect to hosted Streamable HTTP MCP but cannot yet sign and
52
- replay x402 challenges natively. SAP MCP ships a local helper for that case:
52
+ replay x402 challenges natively. SAP MCP ships a local challenge toolchain for
53
+ that case. The recommended high-level MCP tool is:
54
+
55
+ ```text
56
+ sap_payments_call_paid_tool
57
+ ```
58
+
59
+ It obtains the hosted x402 challenge, validates the price and payment
60
+ coordinates, signs locally, retries the exact hosted MCP request, and returns
61
+ the tool result plus receipt. The legacy alias `sap_x402_paid_call` remains for
62
+ existing runtimes.
63
+
64
+ CLI equivalent:
53
65
 
54
66
  ```bash
55
67
  npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-x402-paid-call \
@@ -60,8 +72,8 @@ npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-x402-paid
60
72
  --confirm
61
73
  ```
62
74
 
63
- The wizard can install addon metadata and snippets for Hermes, Claude, Codex,
64
- OpenClaw, or custom runtimes:
75
+ The wizard can install local bridge reference metadata and snippets for Hermes,
76
+ Claude, Codex, OpenClaw, or custom runtimes:
65
77
 
66
78
  ```text
67
79
  ~/.config/mcp-sap/addons/x402-paid-call
@@ -73,9 +85,20 @@ the hosted call, and prints the settlement receipt. It does not send keypair
73
85
  bytes to the hosted server. It fails closed when the active profile has no
74
86
  supported local payment signer.
75
87
 
76
- Local stdio SAP MCP may expose `sap_x402_paid_call` when the process has a
77
- user-controlled wallet profile. The public hosted server should not advertise
78
- that helper in non-custodial mode because signing belongs on the user's machine.
88
+ Local stdio SAP MCP may expose these free payment bridge tools when the process
89
+ has a user-controlled wallet profile:
90
+
91
+ | Tool | Purpose |
92
+ | --- | --- |
93
+ | `sap_payments_readiness` | Free local readiness check for hosted MCP, active profile, signer, SOL/USDC balance, and commerce policy limits. Call this first for paid/write workflows. |
94
+ | `sap_payments_call_paid_tool` | End-to-end paid hosted tool execution; preferred for agents. |
95
+ | `sap_payments_prepare_challenge` | Fetch and parse a hosted x402 challenge without signing. |
96
+ | `sap_payments_sign_challenge` | Sign a parsed challenge with the local SAP profile signer. |
97
+ | `sap_payments_verify_receipt` | Decode a payment response/receipt header for inspection. |
98
+ | `sap_x402_paid_call` | Backward-compatible alias for the high-level paid-call tool. |
99
+
100
+ The public hosted server should not advertise the signing helpers in
101
+ non-custodial mode because signing belongs on the user's machine.
79
102
 
80
103
  Transient settlement errors such as `BlockhashNotFound`,
81
104
  `transaction_simulation_failed`, `smart_wallet_simulation_failed`, `node is
@@ -131,7 +131,7 @@ Codex supports Streamable HTTP MCP servers with URL-based TOML entries. Use loca
131
131
  ```toml
132
132
  [mcp_servers.sap]
133
133
  command = "npx"
134
- args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"]
134
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.0", "sap-mcp-server"]
135
135
 
136
136
  [mcp_servers.sap.env]
137
137
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
@@ -45,10 +45,10 @@ The desktop wizard supports two setup modes:
45
45
 
46
46
  | Mode | Behavior |
47
47
  | --- | --- |
48
- | Full SAP MCP setup | Creates or updates the local SAP MCP profile, wallet boundary, policy limits, hosted MCP runtime entries, and x402 bridge. |
49
- | x402 payment client only | Skips profile/wallet writes and only installs or repairs hosted MCP plus local `sap_payments` runtime entries. |
48
+ | Full SAP MCP setup | Creates or updates the local SAP MCP profile, wallet boundary, policy limits, hosted MCP runtime entries, and native local payment bridge. |
49
+ | Payment bridge repair | Skips profile/wallet writes and only installs or repairs hosted MCP plus local `sap_payments` runtime entries. |
50
50
 
51
- The x402-only mode is for users who already ran a wizard, can see hosted SAP MCP tools, but cannot execute paid/write calls because their runtime does not yet attach payment proofs.
51
+ Payment bridge repair mode is for users who already ran a wizard, can see hosted SAP MCP tools, but cannot execute paid/write calls because their runtime does not yet attach payment proofs.
52
52
 
53
53
  ### 14.4.1 Codex
54
54
 
@@ -66,9 +66,15 @@ url = "https://mcp.sap.oobeprotocol.ai/mcp"
66
66
  ```toml
67
67
  [mcp_servers.sap_payments]
68
68
  command = "npx"
69
- args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"]
70
- enabled_tools = ["sap_x402_paid_call", "sap_profile_current", "sap_x402_estimate_cost"]
69
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.0", "sap-mcp-server"]
70
+ startup_timeout_sec = 300
71
71
  tool_timeout_sec = 300
72
+
73
+ [mcp_servers.sap_payments.env]
74
+ SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
75
+ SAP_MCP_PAYMENTS_BRIDGE_ONLY = "true"
76
+ SAP_ALLOWED_TOOLS = "all"
77
+ SAP_LOG_LEVEL = "info"
72
78
  ```
73
79
 
74
80
  On Windows, use `npx.cmd`.
@@ -120,6 +126,11 @@ OpenClaw receives root `mcpServers` JSON when `~/.openclaw/mcp.json` is selected
120
126
  Every supported runtime may also receive a local `sap_payments` server with only these enabled tools:
121
127
 
122
128
  ```txt
129
+ sap_payments_readiness
130
+ sap_payments_call_paid_tool
131
+ sap_payments_prepare_challenge
132
+ sap_payments_sign_challenge
133
+ sap_payments_verify_receipt
123
134
  sap_x402_paid_call
124
135
  sap_profile_current
125
136
  sap_x402_estimate_cost
@@ -202,6 +213,15 @@ For signed tagged GitHub release builds, the macOS job uses these secrets when t
202
213
  | `APPLE_APP_SPECIFIC_PASSWORD` | App-specific password for notarization. |
203
214
  | `APPLE_TEAM_ID` | Apple Developer Team ID. |
204
215
 
216
+ For signed Windows tagged release builds, the Windows job uses these secrets when they are configured:
217
+
218
+ | Secret | Purpose |
219
+ | --- | --- |
220
+ | `WINDOWS_CSC_LINK` or `WIN_CSC_LINK` | Base64-encoded `.pfx/.p12` Authenticode certificate, or a secure URL supported by Electron Builder. |
221
+ | `WINDOWS_CSC_KEY_PASSWORD` or `WIN_CSC_KEY_PASSWORD` | Password for the Windows code signing certificate bundle. |
222
+
223
+ Every desktop build publishes `SHA256SUMS.txt` next to the DMG/ZIP/EXE/tar.gz artifacts.
224
+
205
225
  The Electron Builder macOS config uses:
206
226
 
207
227
  1. hardened runtime;