@oobe-protocol-labs/sap-mcp-server 0.2.1 → 0.7.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.
- package/.env.example +3 -0
- package/CHANGELOG.md +238 -1
- package/README.md +64 -1
- package/USER_DOCS/00_START_HERE.md +23 -1
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +55 -0
- package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +63 -7
- package/USER_DOCS/04_CLIENT_CONFIGS.md +164 -11
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +262 -0
- package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -1
- package/dist/adapters/mcp/sdk-compat.js +32 -18
- package/dist/adapters/mcp/sdk-compat.js.map +1 -1
- package/dist/config/mcp-client-injection.d.ts +72 -2
- package/dist/config/mcp-client-injection.d.ts.map +1 -1
- package/dist/config/mcp-client-injection.js +691 -15
- package/dist/config/mcp-client-injection.js.map +1 -1
- package/dist/config/setup.js +1 -1
- package/dist/config/setup.js.map +1 -1
- package/dist/config/wizard.d.ts.map +1 -1
- package/dist/config/wizard.js +164 -85
- package/dist/config/wizard.js.map +1 -1
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/constants.js +1 -1
- package/dist/core/logger.js +1 -1
- package/dist/payments/facilitator-rpc-fallback.d.ts +43 -0
- package/dist/payments/facilitator-rpc-fallback.d.ts.map +1 -0
- package/dist/payments/facilitator-rpc-fallback.js +228 -0
- package/dist/payments/facilitator-rpc-fallback.js.map +1 -0
- package/dist/payments/json-rpc.d.ts.map +1 -1
- package/dist/payments/json-rpc.js +2 -1
- package/dist/payments/json-rpc.js.map +1 -1
- package/dist/payments/monetization-gate.d.ts +43 -2
- package/dist/payments/monetization-gate.d.ts.map +1 -1
- package/dist/payments/monetization-gate.js +618 -9
- package/dist/payments/monetization-gate.js.map +1 -1
- package/dist/payments/oobe-facilitator-server.d.ts +12 -1
- package/dist/payments/oobe-facilitator-server.d.ts.map +1 -1
- package/dist/payments/oobe-facilitator-server.js +109 -8
- package/dist/payments/oobe-facilitator-server.js.map +1 -1
- package/dist/payments/pay-sh-spec.js +1 -1
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +1 -0
- package/dist/payments/pricing.js.map +1 -1
- package/dist/payments/usage-ledger.d.ts +10 -0
- package/dist/payments/usage-ledger.d.ts.map +1 -1
- package/dist/payments/usage-ledger.js +51 -0
- package/dist/payments/usage-ledger.js.map +1 -1
- package/dist/payments/x402-paid-call.d.ts +53 -0
- package/dist/payments/x402-paid-call.d.ts.map +1 -0
- package/dist/payments/x402-paid-call.js +370 -0
- package/dist/payments/x402-paid-call.js.map +1 -0
- package/dist/prompts/context/sap-agent-context.prompt.js +33 -6
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
- package/dist/prompts/developer/debug-sap-error.prompt.js +1 -1
- package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -1
- package/dist/prompts/developer/generate-sap-integration.prompt.js +6 -2
- package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +1 -1
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -1
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +1 -1
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -1
- package/dist/prompts/payments/create-paid-api.prompt.js +1 -1
- package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -1
- package/dist/prompts/payments/explain-x402-settlement.prompt.js +1 -1
- package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
- package/dist/prompts/register-prompts.js +2 -2
- package/dist/prompts/register-prompts.js.map +1 -1
- package/dist/prompts/registry/analyze-sap-agent.prompt.js +1 -1
- package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -1
- package/dist/prompts/registry/register-sap-agent.prompt.js +2 -2
- package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -1
- package/dist/remote/server.d.ts +150 -1
- package/dist/remote/server.d.ts.map +1 -1
- package/dist/remote/server.js +1176 -84
- package/dist/remote/server.js.map +1 -1
- package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -1
- package/dist/resources/current/sap-current-config.resource.js +22 -2
- package/dist/resources/current/sap-current-config.resource.js.map +1 -1
- package/dist/resources/execution-proof/sap-execution-record.resource.js +1 -1
- package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -1
- package/dist/resources/memory/sap-memory.resource.js +1 -1
- package/dist/resources/memory/sap-memory.resource.js.map +1 -1
- package/dist/resources/profile/sap-active-profile.resource.js +1 -1
- package/dist/resources/profile/sap-active-profile.resource.js.map +1 -1
- package/dist/resources/register-resources.js +2 -2
- package/dist/resources/register-resources.js.map +1 -1
- package/dist/resources/registry/sap-agent.resource.js +1 -1
- package/dist/resources/registry/sap-agent.resource.js.map +1 -1
- package/dist/resources/registry/sap-global-registry.resource.js +1 -1
- package/dist/resources/registry/sap-global-registry.resource.js.map +1 -1
- package/dist/resources/reputation/sap-reputation.resource.js +1 -1
- package/dist/resources/reputation/sap-reputation.resource.js.map +1 -1
- package/dist/resources/stats/sap-network-stats.resource.js +1 -1
- package/dist/resources/stats/sap-network-stats.resource.js.map +1 -1
- package/dist/resources/tool-schema/sap-tool-schema.resource.js +1 -1
- package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -1
- package/dist/sap/sap-client-manager.js +6 -6
- package/dist/sap/sap-client-manager.js.map +1 -1
- package/dist/security/tool-permissions.d.ts.map +1 -1
- package/dist/security/tool-permissions.js +1 -0
- package/dist/security/tool-permissions.js.map +1 -1
- package/dist/server/create-server.js +5 -5
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/register-capabilities.js +4 -4
- package/dist/server/register-capabilities.js.map +1 -1
- package/dist/server/server-metadata.js +1 -1
- package/dist/signer/signer-resolver.js +12 -5
- package/dist/signer/signer-resolver.js.map +1 -1
- package/dist/tools/client-sdk-tools.js +7 -7
- package/dist/tools/client-sdk-tools.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/magicblock-tools.d.ts +28 -0
- package/dist/tools/magicblock-tools.d.ts.map +1 -0
- package/dist/tools/magicblock-tools.js +578 -0
- package/dist/tools/magicblock-tools.js.map +1 -0
- package/dist/tools/profile-tools.d.ts.map +1 -1
- package/dist/tools/profile-tools.js +44 -0
- package/dist/tools/profile-tools.js.map +1 -1
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +11 -2
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/sap-sdk-tools.js +2 -2
- package/dist/tools/sap-sdk-tools.js.map +1 -1
- package/dist/tools/sap-sns-tools.js +2 -2
- package/dist/tools/sap-sns-tools.js.map +1 -1
- package/dist/tools/skills-tools.d.ts +1 -1
- package/dist/tools/skills-tools.d.ts.map +1 -1
- package/dist/tools/skills-tools.js +10 -1
- package/dist/tools/skills-tools.js.map +1 -1
- package/dist/tools/tool-aliases.d.ts +10 -0
- package/dist/tools/tool-aliases.d.ts.map +1 -0
- package/dist/tools/tool-aliases.js +23 -0
- package/dist/tools/tool-aliases.js.map +1 -0
- package/dist/tools/x402-paid-call-tool.d.ts +12 -0
- package/dist/tools/x402-paid-call-tool.d.ts.map +1 -0
- package/dist/tools/x402-paid-call-tool.js +118 -0
- package/dist/tools/x402-paid-call-tool.js.map +1 -0
- package/dist/tui/config-wizard.js +2 -2
- package/dist/tui/config-wizard.js.map +1 -1
- package/dist/wizard-core/desktop-flow.d.ts +82 -0
- package/dist/wizard-core/desktop-flow.d.ts.map +1 -0
- package/dist/wizard-core/desktop-flow.js +181 -0
- package/dist/wizard-core/desktop-flow.js.map +1 -0
- package/docs/00_README.md +3 -0
- package/docs/03_CONFIGURATION_AND_WIZARD.md +31 -5
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +70 -7
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +56 -1
- package/docs/10_OPERATIONS_RELEASE_AND_PM2.md +7 -6
- package/docs/13_BOUNTY_PROGRAM_PROPOSAL.md +469 -0
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +264 -0
- package/docs/README.md +104 -0
- package/docs/_sidebar.md +31 -0
- package/docs/magicblock-tools.md +166 -0
- package/docs/x402-protocol-spec.md +984 -0
- package/package.json +23 -2
- package/server.json +71 -0
- package/skills/README.md +3 -2
- package/skills/sap-defi/SKILL.md +8 -0
- package/skills/sap-mcp/SKILL.md +124 -2
- package/skills/sap-payments-x402/SKILL.md +54 -2
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @name X402PaidCallHelper
|
|
4
|
+
* @description Local helper for paying and retrying hosted SAP MCP x402 tool calls with a user-controlled SAP profile signer.
|
|
5
|
+
*/
|
|
6
|
+
import type { SettleResponse } from '@x402/core/types';
|
|
7
|
+
/**
|
|
8
|
+
* @name X402PaidCallInput
|
|
9
|
+
* @description Request shape accepted by the local x402 paid-call helper.
|
|
10
|
+
*/
|
|
11
|
+
export interface X402PaidCallInput {
|
|
12
|
+
endpoint?: string;
|
|
13
|
+
toolName?: string;
|
|
14
|
+
arguments?: unknown;
|
|
15
|
+
body?: JsonRpcRequest;
|
|
16
|
+
profileName?: string;
|
|
17
|
+
maxPriceUsd: number;
|
|
18
|
+
maxAttempts?: number;
|
|
19
|
+
confirm: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @name X402PaidCallResult
|
|
23
|
+
* @description Result returned after a hosted MCP paid request is completed.
|
|
24
|
+
*/
|
|
25
|
+
export interface X402PaidCallResult {
|
|
26
|
+
success: boolean;
|
|
27
|
+
endpoint: string;
|
|
28
|
+
sessionId: string;
|
|
29
|
+
signerAddress: string;
|
|
30
|
+
payment: {
|
|
31
|
+
amountUsd: number;
|
|
32
|
+
network: string;
|
|
33
|
+
asset: string;
|
|
34
|
+
payTo: string;
|
|
35
|
+
};
|
|
36
|
+
settlement?: SettleResponse;
|
|
37
|
+
response: unknown;
|
|
38
|
+
attempts: number;
|
|
39
|
+
transientRetries: readonly string[];
|
|
40
|
+
}
|
|
41
|
+
interface JsonRpcRequest {
|
|
42
|
+
jsonrpc: '2.0';
|
|
43
|
+
id?: string | number | null;
|
|
44
|
+
method: string;
|
|
45
|
+
params?: unknown;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* @name executeX402PaidCall
|
|
49
|
+
* @description Initializes MCP, obtains x402 payment requirements, signs locally, retries the call, and returns the settlement receipt.
|
|
50
|
+
*/
|
|
51
|
+
export declare function executeX402PaidCall(input: X402PaidCallInput): Promise<X402PaidCallResult>;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=x402-paid-call.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-paid-call.d.ts","sourceRoot":"","sources":["../../src/payments/x402-paid-call.ts"],"names":[],"mappings":";AACA;;;GAGG;AAIH,OAAO,KAAK,EAAwC,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAa7F;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAiBD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoC/F"}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @name X402PaidCallHelper
|
|
4
|
+
* @description Local helper for paying and retrying hosted SAP MCP x402 tool calls with a user-controlled SAP profile signer.
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync } from 'fs';
|
|
7
|
+
import { x402Client, x402HTTPClient } from '@x402/core/client';
|
|
8
|
+
import { registerExactSvmScheme } from '@x402/svm/exact/client';
|
|
9
|
+
import { createKeyPairSignerFromBytes } from '@solana/kit';
|
|
10
|
+
import { loadConfig } from '../config/env.js';
|
|
11
|
+
import { getProfileConfigPath } from '../config/profiles.js';
|
|
12
|
+
import { MCP_SERVER_VERSION } from '../core/constants.js';
|
|
13
|
+
const DEFAULT_ENDPOINT = 'https://mcp.sap.oobeprotocol.ai/mcp';
|
|
14
|
+
const MCP_PROTOCOL_VERSION = '2025-06-18';
|
|
15
|
+
const DEFAULT_MAX_ATTEMPTS = 3;
|
|
16
|
+
const MAX_ALLOWED_ATTEMPTS = 5;
|
|
17
|
+
const RETRY_BASE_DELAY_MS = 500;
|
|
18
|
+
/**
|
|
19
|
+
* @name executeX402PaidCall
|
|
20
|
+
* @description Initializes MCP, obtains x402 payment requirements, signs locally, retries the call, and returns the settlement receipt.
|
|
21
|
+
*/
|
|
22
|
+
export async function executeX402PaidCall(input) {
|
|
23
|
+
validateInput(input);
|
|
24
|
+
const endpoint = input.endpoint ?? DEFAULT_ENDPOINT;
|
|
25
|
+
const config = loadPaymentProfile(input.profileName);
|
|
26
|
+
const signer = await loadClientSigner(config);
|
|
27
|
+
const httpClient = createHttpPaymentClient(signer);
|
|
28
|
+
const sessionId = await initializeMcpSession(endpoint);
|
|
29
|
+
const requestBody = input.body ?? buildToolCallRequest(input.toolName ?? '', input.arguments);
|
|
30
|
+
const maxAttempts = normalizeMaxAttempts(input.maxAttempts);
|
|
31
|
+
const transientRetries = [];
|
|
32
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
33
|
+
try {
|
|
34
|
+
return await executePaidAttempt({
|
|
35
|
+
endpoint,
|
|
36
|
+
sessionId,
|
|
37
|
+
signerAddress: String(signer.address),
|
|
38
|
+
httpClient,
|
|
39
|
+
requestBody,
|
|
40
|
+
maxPriceUsd: input.maxPriceUsd,
|
|
41
|
+
attempt,
|
|
42
|
+
transientRetries,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const retry = classifyPaidCallRetry(error);
|
|
47
|
+
if (!retry.retryable || attempt >= maxAttempts) {
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
transientRetries.push(retry.reason);
|
|
51
|
+
await sleep(RETRY_BASE_DELAY_MS * attempt);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
throw new Error('x402 paid call exhausted retries.');
|
|
55
|
+
}
|
|
56
|
+
async function executePaidAttempt(options) {
|
|
57
|
+
const unpaid = await postMcp(options.endpoint, options.requestBody, options.sessionId);
|
|
58
|
+
const paymentRequired = options.httpClient.getPaymentRequiredResponse(name => unpaid.response.headers.get(name), unpaid.body);
|
|
59
|
+
const selectedRequirements = selectSingleRequirement(paymentRequired, options.maxPriceUsd);
|
|
60
|
+
const amountUsd = paymentRequirementsAmountUsd(selectedRequirements);
|
|
61
|
+
const paymentPayload = await options.httpClient.createPaymentPayload({
|
|
62
|
+
...paymentRequired,
|
|
63
|
+
accepts: [selectedRequirements],
|
|
64
|
+
});
|
|
65
|
+
const paymentHeaders = options.httpClient.encodePaymentSignatureHeader(paymentPayload);
|
|
66
|
+
const paid = await postMcp(options.endpoint, options.requestBody, options.sessionId, paymentHeaders);
|
|
67
|
+
const paymentResult = await options.httpClient.processPaymentResult(paymentPayload, name => paid.response.headers.get(name), paid.response.status);
|
|
68
|
+
if (!paid.response.ok) {
|
|
69
|
+
throw new Error(`Paid MCP call failed with HTTP ${paid.response.status}: ${JSON.stringify(paid.body)}`);
|
|
70
|
+
}
|
|
71
|
+
if (isJsonRpcError(paid.body)) {
|
|
72
|
+
throw new Error(`Paid MCP call returned JSON-RPC error: ${JSON.stringify(paid.body.error)}`);
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
success: true,
|
|
76
|
+
endpoint: options.endpoint,
|
|
77
|
+
sessionId: options.sessionId,
|
|
78
|
+
signerAddress: options.signerAddress,
|
|
79
|
+
payment: {
|
|
80
|
+
amountUsd,
|
|
81
|
+
network: selectedRequirements.network,
|
|
82
|
+
asset: selectedRequirements.asset,
|
|
83
|
+
payTo: selectedRequirements.payTo,
|
|
84
|
+
},
|
|
85
|
+
settlement: paymentResult.settleResponse,
|
|
86
|
+
response: paid.body,
|
|
87
|
+
attempts: options.attempt,
|
|
88
|
+
transientRetries: options.transientRetries,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function validateInput(input) {
|
|
92
|
+
if (!input.confirm) {
|
|
93
|
+
throw new Error('x402 paid calls require confirm: true because they sign a payment payload.');
|
|
94
|
+
}
|
|
95
|
+
if (!Number.isFinite(input.maxPriceUsd) || input.maxPriceUsd <= 0) {
|
|
96
|
+
throw new Error('x402 paid calls require a positive maxPriceUsd spending cap.');
|
|
97
|
+
}
|
|
98
|
+
if (!input.body && !input.toolName) {
|
|
99
|
+
throw new Error('Provide either body or toolName.');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function loadPaymentProfile(profileName) {
|
|
103
|
+
if (profileName) {
|
|
104
|
+
return loadConfig(getProfileConfigPath(profileName));
|
|
105
|
+
}
|
|
106
|
+
return loadConfig();
|
|
107
|
+
}
|
|
108
|
+
async function loadClientSigner(config) {
|
|
109
|
+
if (config.walletEncrypted) {
|
|
110
|
+
throw new Error('Encrypted wallet files are not supported by sap_x402_paid_call yet. Use an unencrypted dedicated SAP MCP payment profile or external signing bridge.');
|
|
111
|
+
}
|
|
112
|
+
if (config.externalSignerUrl && !config.walletPath) {
|
|
113
|
+
throw new Error('External signer x402 paid-call support requires a dedicated signing bridge. The helper will not fake external signer support.');
|
|
114
|
+
}
|
|
115
|
+
if (!config.walletPath) {
|
|
116
|
+
throw new Error('SAP MCP profile has no walletPath. Run sap-mcp-config wizard and configure a local payment signer.');
|
|
117
|
+
}
|
|
118
|
+
const parsed = JSON.parse(readFileSync(config.walletPath, 'utf-8'));
|
|
119
|
+
if (!Array.isArray(parsed) || !parsed.every(value => Number.isInteger(value) && value >= 0 && value <= 255)) {
|
|
120
|
+
throw new Error('Configured wallet file is not a Solana keypair byte array.');
|
|
121
|
+
}
|
|
122
|
+
return await createKeyPairSignerFromBytes(Uint8Array.from(parsed));
|
|
123
|
+
}
|
|
124
|
+
function createHttpPaymentClient(signer) {
|
|
125
|
+
const client = new x402Client();
|
|
126
|
+
registerExactSvmScheme(client, { signer });
|
|
127
|
+
return new x402HTTPClient(client);
|
|
128
|
+
}
|
|
129
|
+
async function initializeMcpSession(endpoint) {
|
|
130
|
+
const initBody = {
|
|
131
|
+
jsonrpc: '2.0',
|
|
132
|
+
id: 'sap-x402-paid-call-init',
|
|
133
|
+
method: 'initialize',
|
|
134
|
+
params: {
|
|
135
|
+
protocolVersion: MCP_PROTOCOL_VERSION,
|
|
136
|
+
capabilities: {},
|
|
137
|
+
clientInfo: {
|
|
138
|
+
name: 'sap-mcp-x402-paid-call',
|
|
139
|
+
version: MCP_SERVER_VERSION,
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
const initializedBody = {
|
|
144
|
+
jsonrpc: '2.0',
|
|
145
|
+
method: 'notifications/initialized',
|
|
146
|
+
};
|
|
147
|
+
const initialized = await postMcp(endpoint, initBody);
|
|
148
|
+
const sessionId = initialized.response.headers.get('mcp-session-id');
|
|
149
|
+
if (!sessionId) {
|
|
150
|
+
throw new Error('Hosted MCP initialize response did not include mcp-session-id.');
|
|
151
|
+
}
|
|
152
|
+
await postMcp(endpoint, initializedBody, sessionId);
|
|
153
|
+
return sessionId;
|
|
154
|
+
}
|
|
155
|
+
function buildToolCallRequest(toolName, args) {
|
|
156
|
+
return {
|
|
157
|
+
jsonrpc: '2.0',
|
|
158
|
+
id: 'sap-x402-paid-call-tool',
|
|
159
|
+
method: 'tools/call',
|
|
160
|
+
params: {
|
|
161
|
+
name: toolName,
|
|
162
|
+
arguments: args ?? {},
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
async function postMcp(endpoint, body, sessionId, extraHeaders = {}) {
|
|
167
|
+
const response = await fetch(endpoint, {
|
|
168
|
+
method: 'POST',
|
|
169
|
+
headers: {
|
|
170
|
+
'Content-Type': 'application/json',
|
|
171
|
+
Accept: 'application/json, text/event-stream',
|
|
172
|
+
'mcp-protocol-version': MCP_PROTOCOL_VERSION,
|
|
173
|
+
...(sessionId ? { 'mcp-session-id': sessionId } : {}),
|
|
174
|
+
...extraHeaders,
|
|
175
|
+
},
|
|
176
|
+
body: JSON.stringify(body),
|
|
177
|
+
});
|
|
178
|
+
const text = await response.text();
|
|
179
|
+
return {
|
|
180
|
+
response,
|
|
181
|
+
body: parseMcpHttpBody(text, response.headers.get('content-type') ?? ''),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
function parseMcpHttpBody(text, contentType) {
|
|
185
|
+
if (!text.trim()) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
if (contentType.includes('text/event-stream')) {
|
|
189
|
+
const dataLines = text
|
|
190
|
+
.split(/\r?\n/)
|
|
191
|
+
.filter(line => line.startsWith('data:'))
|
|
192
|
+
.map(line => line.slice('data:'.length).trim());
|
|
193
|
+
const firstJson = dataLines.find(line => line.startsWith('{') || line.startsWith('['));
|
|
194
|
+
if (!firstJson) {
|
|
195
|
+
return text;
|
|
196
|
+
}
|
|
197
|
+
return JSON.parse(firstJson);
|
|
198
|
+
}
|
|
199
|
+
return JSON.parse(text);
|
|
200
|
+
}
|
|
201
|
+
function selectSingleRequirement(paymentRequired, maxPriceUsd) {
|
|
202
|
+
if (!Array.isArray(paymentRequired.accepts) || paymentRequired.accepts.length === 0) {
|
|
203
|
+
throw new Error('Payment challenge did not include accepted payment requirements.');
|
|
204
|
+
}
|
|
205
|
+
const selected = paymentRequired.accepts[0];
|
|
206
|
+
const amountUsd = paymentRequirementsAmountUsd(selected);
|
|
207
|
+
if (amountUsd > maxPriceUsd) {
|
|
208
|
+
throw new Error(`Payment amount $${amountUsd.toFixed(6)} exceeds maxPriceUsd $${maxPriceUsd.toFixed(6)}.`);
|
|
209
|
+
}
|
|
210
|
+
return selected;
|
|
211
|
+
}
|
|
212
|
+
function paymentRequirementsAmountUsd(requirements) {
|
|
213
|
+
const compatibleRequirements = requirements;
|
|
214
|
+
const rawAmount = compatibleRequirements.amount || compatibleRequirements.maxAmountRequired;
|
|
215
|
+
const amount = Number(rawAmount);
|
|
216
|
+
if (!Number.isFinite(amount)) {
|
|
217
|
+
throw new Error('Payment requirement amount is not numeric.');
|
|
218
|
+
}
|
|
219
|
+
return amount / 1_000_000;
|
|
220
|
+
}
|
|
221
|
+
function normalizeMaxAttempts(value) {
|
|
222
|
+
if (value === undefined) {
|
|
223
|
+
return DEFAULT_MAX_ATTEMPTS;
|
|
224
|
+
}
|
|
225
|
+
if (!Number.isInteger(value) || value < 1 || value > MAX_ALLOWED_ATTEMPTS) {
|
|
226
|
+
throw new Error(`maxAttempts must be an integer between 1 and ${MAX_ALLOWED_ATTEMPTS}.`);
|
|
227
|
+
}
|
|
228
|
+
return value;
|
|
229
|
+
}
|
|
230
|
+
function classifyPaidCallRetry(error) {
|
|
231
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
232
|
+
const normalized = message.toLowerCase();
|
|
233
|
+
const retryable = containsAny(normalized, [
|
|
234
|
+
'blockhashnotfound',
|
|
235
|
+
'blockhash not found',
|
|
236
|
+
'transaction_simulation_failed',
|
|
237
|
+
'smart_wallet_simulation_failed',
|
|
238
|
+
'"retryable":true',
|
|
239
|
+
'"category":"facilitator_rpc"',
|
|
240
|
+
'"category":"facilitator_unavailable"',
|
|
241
|
+
'facilitator_unavailable',
|
|
242
|
+
'node is behind',
|
|
243
|
+
'minimum context slot',
|
|
244
|
+
'slot was skipped',
|
|
245
|
+
'fetch failed',
|
|
246
|
+
'gateway timeout',
|
|
247
|
+
'service unavailable',
|
|
248
|
+
'too many requests',
|
|
249
|
+
'rate limit',
|
|
250
|
+
]);
|
|
251
|
+
return {
|
|
252
|
+
retryable,
|
|
253
|
+
reason: retryable ? summarizeRetryReason(message) : 'not_retryable',
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
function summarizeRetryReason(message) {
|
|
257
|
+
if (message.length <= 240) {
|
|
258
|
+
return message;
|
|
259
|
+
}
|
|
260
|
+
return `${message.slice(0, 237)}...`;
|
|
261
|
+
}
|
|
262
|
+
function containsAny(value, needles) {
|
|
263
|
+
return needles.some(needle => value.includes(needle));
|
|
264
|
+
}
|
|
265
|
+
function sleep(ms) {
|
|
266
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
267
|
+
}
|
|
268
|
+
function isJsonRpcError(value) {
|
|
269
|
+
return value !== null && typeof value === 'object' && 'error' in value;
|
|
270
|
+
}
|
|
271
|
+
function parseCliArgs(argv) {
|
|
272
|
+
const parsed = { confirm: false };
|
|
273
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
274
|
+
const arg = argv[index];
|
|
275
|
+
const next = argv[index + 1];
|
|
276
|
+
if (arg === '--endpoint' && next) {
|
|
277
|
+
parsed.endpoint = next;
|
|
278
|
+
index += 1;
|
|
279
|
+
}
|
|
280
|
+
else if (arg === '--tool' && next) {
|
|
281
|
+
parsed.toolName = next;
|
|
282
|
+
index += 1;
|
|
283
|
+
}
|
|
284
|
+
else if (arg === '--arguments' && next) {
|
|
285
|
+
parsed.argumentsJson = next;
|
|
286
|
+
index += 1;
|
|
287
|
+
}
|
|
288
|
+
else if (arg === '--body' && next) {
|
|
289
|
+
parsed.bodyJson = next;
|
|
290
|
+
index += 1;
|
|
291
|
+
}
|
|
292
|
+
else if (arg === '--profile' && next) {
|
|
293
|
+
parsed.profileName = next;
|
|
294
|
+
index += 1;
|
|
295
|
+
}
|
|
296
|
+
else if (arg === '--max-usd' && next) {
|
|
297
|
+
parsed.maxPriceUsd = Number(next);
|
|
298
|
+
index += 1;
|
|
299
|
+
}
|
|
300
|
+
else if (arg === '--max-attempts' && next) {
|
|
301
|
+
parsed.maxAttempts = Number(next);
|
|
302
|
+
index += 1;
|
|
303
|
+
}
|
|
304
|
+
else if (arg === '--confirm' || arg === '--yes') {
|
|
305
|
+
parsed.confirm = true;
|
|
306
|
+
}
|
|
307
|
+
else if (arg === '--help' || arg === '-h') {
|
|
308
|
+
printUsageAndExit(0);
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
throw new Error(`Unknown argument: ${arg}`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return parsed;
|
|
315
|
+
}
|
|
316
|
+
function buildInputFromCli(args) {
|
|
317
|
+
const parsedArguments = args.argumentsJson ? JSON.parse(args.argumentsJson) : undefined;
|
|
318
|
+
const parsedBody = args.bodyJson ? JSON.parse(args.bodyJson) : undefined;
|
|
319
|
+
if (parsedBody !== undefined && !isJsonRpcRequest(parsedBody)) {
|
|
320
|
+
throw new Error('--body must be a JSON-RPC request object.');
|
|
321
|
+
}
|
|
322
|
+
return {
|
|
323
|
+
endpoint: args.endpoint,
|
|
324
|
+
toolName: args.toolName,
|
|
325
|
+
arguments: parsedArguments,
|
|
326
|
+
body: parsedBody,
|
|
327
|
+
profileName: args.profileName,
|
|
328
|
+
maxPriceUsd: args.maxPriceUsd ?? 0,
|
|
329
|
+
maxAttempts: args.maxAttempts,
|
|
330
|
+
confirm: args.confirm,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
function isJsonRpcRequest(value) {
|
|
334
|
+
return Boolean(value)
|
|
335
|
+
&& typeof value === 'object'
|
|
336
|
+
&& !Array.isArray(value)
|
|
337
|
+
&& value.jsonrpc === '2.0'
|
|
338
|
+
&& typeof value.method === 'string';
|
|
339
|
+
}
|
|
340
|
+
function printUsageAndExit(exitCode) {
|
|
341
|
+
const usage = [
|
|
342
|
+
'sap-mcp-x402-paid-call --tool <tool> --arguments <json> --max-usd <n> --confirm',
|
|
343
|
+
'',
|
|
344
|
+
'Options:',
|
|
345
|
+
' --endpoint <url> Hosted MCP endpoint. Defaults to https://mcp.sap.oobeprotocol.ai/mcp',
|
|
346
|
+
' --tool <name> Remote MCP tool name to call.',
|
|
347
|
+
' --arguments <json> JSON object passed as tools/call arguments.',
|
|
348
|
+
' --body <json> Full JSON-RPC request object. Alternative to --tool.',
|
|
349
|
+
' --profile <name> SAP MCP profile name. Defaults to active profile.',
|
|
350
|
+
' --max-usd <n> Maximum allowed payment in USD.',
|
|
351
|
+
' --max-attempts <n> Retry transient x402/RPC failures with fresh payment payloads. Defaults to 3; max 5.',
|
|
352
|
+
' --confirm Required. Acknowledges that the helper signs a payment payload.',
|
|
353
|
+
].join('\n');
|
|
354
|
+
console.log(usage);
|
|
355
|
+
process.exit(exitCode);
|
|
356
|
+
}
|
|
357
|
+
if (process.argv[1]?.endsWith('x402-paid-call.js') || process.argv[1]?.endsWith('x402-paid-call.ts')) {
|
|
358
|
+
executeX402PaidCall(buildInputFromCli(parseCliArgs(process.argv.slice(2))))
|
|
359
|
+
.then(result => {
|
|
360
|
+
console.log(JSON.stringify(result, null, 2));
|
|
361
|
+
})
|
|
362
|
+
.catch((error) => {
|
|
363
|
+
console.error(JSON.stringify({
|
|
364
|
+
success: false,
|
|
365
|
+
error: error instanceof Error ? error.message : String(error),
|
|
366
|
+
}, null, 2));
|
|
367
|
+
process.exit(1);
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=x402-paid-call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-paid-call.js","sourceRoot":"","sources":["../../src/payments/x402-paid-call.ts"],"names":[],"mappings":"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"}
|
|
@@ -152,7 +152,7 @@ export function sapAgentContextPrompt(server, _context) {
|
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
154
|
});
|
|
155
|
-
logger.
|
|
155
|
+
logger.debug('Agent context prompt registered');
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Builds context message for successful config load.
|
|
@@ -200,8 +200,22 @@ function buildContextMessage(options) {
|
|
|
200
200
|
- Wizard command: \`${WIZARD_NPM_COMMAND}\`
|
|
201
201
|
- The wizard creates the user SAP profile, dedicated wallet path or external signer, policy limits, and optional MCP client injection.
|
|
202
202
|
|
|
203
|
+
### 🌐 Hosted Remote MCP
|
|
204
|
+
- Canonical endpoint: \`${HOSTED_MCP_URL}\`
|
|
205
|
+
- Protocol: MCP Streamable HTTP, protocol version \`2025-06-18\`
|
|
206
|
+
- Public metadata: \`https://mcp.sap.oobeprotocol.ai/server.json\`
|
|
207
|
+
- Auth: bearerless public agent mode; paid tools require x402 payment proof.
|
|
208
|
+
- Security: hosted SAP MCP never stores user keypairs and never exposes keypair bytes.
|
|
209
|
+
- Non-custodial signer rule: hosted \`signerConfigured: false\` means the OOBE server is not holding the user's wallet. It does **not** mean the hosted tool surface is unusable.
|
|
210
|
+
- When summarizing hosted mode, say: "server is non-custodial; user signatures come from the local SAP profile or external signer." Do **not** say "signer not configured", "read-only only", "writes unavailable", or "remote MCP broken" unless a specific tool call returns that explicit error.
|
|
211
|
+
- Hosted writes are available only after the user completes the required x402/pay.sh payment proof and tool-specific signing flow. The hosted server must never be described as holding or needing the user's private key.
|
|
212
|
+
- Hosted paid tools should be paid through x402/pay.sh from the user's local SAP profile or external signer. Do not silently switch to local stdio just to avoid payment.
|
|
213
|
+
- Local stdio is a developer fallback only when the user explicitly asks for local execution or the MCP client cannot perform remote/x402 calls.
|
|
214
|
+
- For Hermes global \`~/.hermes/mcp.json\`, use a flat \`sap: { url, transport }\` entry, not a nested \`mcpServers.sap\` object.
|
|
215
|
+
- For Hermes profile YAML, use \`mcp_servers.sap.url\` and \`mcp_servers.sap.transport\`.
|
|
216
|
+
|
|
203
217
|
### ⚙️ Features
|
|
204
|
-
- **HTTP API:** ${config.enableHttp ? `Enabled (port ${config.httpPort})` : 'Disabled'}
|
|
218
|
+
- **HTTP API:** ${config.enableHttp ? `Enabled (port ${config.httpPort})` : config.mode === 'hosted-api' ? `Hosted remote (${HOSTED_MCP_URL})` : 'Disabled'}
|
|
205
219
|
- **Metrics:** ${config.enableMetrics ? 'Enabled' : 'Disabled'}
|
|
206
220
|
- **Bento Guard:** ${config.bento?.enabled ? 'Enabled' : 'Disabled'}
|
|
207
221
|
- **Logging:** ${config.logLevel} (${config.logFormat})
|
|
@@ -216,6 +230,7 @@ function buildContextMessage(options) {
|
|
|
216
230
|
|
|
217
231
|
### 🔗 Solana Protocol Tool Routing
|
|
218
232
|
Some MCP clients display tool names as \`mcp_sap_<tool>\`; inside this server the callable names omit that client prefix.
|
|
233
|
+
Use the exact names returned by \`tools/list\`. Do not replace hyphens with underscores: for example, the SPL token tools are named \`spl-token_*\`, not \`spl_token_*\`.
|
|
219
234
|
|
|
220
235
|
| Need | Preferred Tools |
|
|
221
236
|
| --- | --- |
|
|
@@ -236,6 +251,19 @@ Some MCP clients display tool names as \`mcp_sap_<tool>\`; inside this server th
|
|
|
236
251
|
|
|
237
252
|
For transactions, preview first with \`sap_preview_transaction\`; sign only with \`sap_sign_transaction\` after policy checks and user approval when required.
|
|
238
253
|
|
|
254
|
+
### ⚡ x402 Hosted Payment Fast Path
|
|
255
|
+
- Local stdio MCP tools are free; do not create x402 payment payloads for local stdio calls.
|
|
256
|
+
- SAP MCP skill bootstrap tools are free: use \`sap_skills_list\`, \`sap_skills_bundle\`, and \`sap_skills_install\` directly. Do not route skill installation through \`sap_x402_paid_call\`.
|
|
257
|
+
- Hosted paid \`tools/call\` requests return HTTP \`402\` with \`PAYMENT-REQUIRED\` instructions.
|
|
258
|
+
- Treat \`402 Payment Required\` as the expected hosted payment handshake, not as a tool failure.
|
|
259
|
+
- Reuse the initialized MCP session and retry the same MCP method with the same params after payment; the x402 receipt is bound to method and params, not to JSON-RPC id.
|
|
260
|
+
- Prefer \`PAYMENT-SIGNATURE\` for the payment proof header; accept \`X-PAYMENT\` only when the client runtime requires it.
|
|
261
|
+
- Capture \`PAYMENT-RESPONSE\` or \`X-PAYMENT-RESPONSE\` as the settlement receipt bound to the tool output.
|
|
262
|
+
- x402/pay.sh payment payloads must be signed by the user's wizard-created SAP profile wallet or external signer, never by the hosted server.
|
|
263
|
+
- If x402 returns \`BlockhashNotFound\`, \`transaction_simulation_failed\`, \`node is behind\`, or another retryable facilitator/RPC error, do not declare SAP MCP down and do not reuse the old signed payment payload. Re-run the local \`sap_x402_paid_call\` helper or create a fresh payment challenge/payload with the same MCP method and params.
|
|
264
|
+
- Prefer the local \`sap_x402_paid_call\` bridge with \`maxAttempts\` for hosted paid/write tools when the runtime cannot natively replay x402 challenges.
|
|
265
|
+
- If the current client runtime cannot produce x402 payment headers, report that limitation and ask the user to run the wizard/signing bridge. Do not call the local free server as an implicit substitute.
|
|
266
|
+
|
|
239
267
|
`;
|
|
240
268
|
if (includeProfiles && allProfiles.length > 0) {
|
|
241
269
|
contextText += `### 📂 Available Profiles
|
|
@@ -267,9 +295,6 @@ npx sap-mcp-config profile-info
|
|
|
267
295
|
}
|
|
268
296
|
contextText += `### 🚀 Quick Commands
|
|
269
297
|
\`\`\`bash
|
|
270
|
-
# Start server
|
|
271
|
-
npx sap-mcp-server
|
|
272
|
-
|
|
273
298
|
# Check config
|
|
274
299
|
npx sap-mcp-config info
|
|
275
300
|
|
|
@@ -280,6 +305,8 @@ npx sap-mcp-config pubkey
|
|
|
280
305
|
npx sap-mcp-config set <field> <value>
|
|
281
306
|
\`\`\`
|
|
282
307
|
|
|
308
|
+
Hosted MCP endpoint: \`${HOSTED_MCP_URL}\`
|
|
309
|
+
|
|
283
310
|
---
|
|
284
311
|
|
|
285
312
|
**Ready for SAP operations!** ✅
|
|
@@ -311,7 +338,7 @@ This will guide you through:
|
|
|
311
338
|
4. Creating or linking a dedicated wallet without exposing keypair bytes to agents
|
|
312
339
|
5. Setting security limits
|
|
313
340
|
|
|
314
|
-
If this agent cannot access the user's OS config directory, tell the user to run the wizard locally. Do not ask for keypair bytes, do not inspect \`~/.config/solana/id.json\`, and do not invent a wallet path.
|
|
341
|
+
If this agent cannot access the user's OS config directory, tell the user to run the wizard locally. Do not ask for keypair bytes, do not inspect \`~/.config/solana/id.json\`, and do not invent a wallet path. Do not create temporary signing scripts, do not run \`cat <keypair>.json\`, and do not pass keypair bytes through environment variables such as \`KEYPAIR_BYTES\`. For unsigned transactions use \`sap_preview_transaction\`, \`sap_sign_transaction\`, and \`sap_submit_signed_transaction\`; if the transaction format is unsupported, stop and report that limitation.
|
|
315
342
|
|
|
316
343
|
**Current Profile:** ${activeProfile}
|
|
317
344
|
**Config Directory:** ${configDir}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sap-agent-context.prompt.js","sourceRoot":"","sources":["../../../src/prompts/context/sap-agent-context.prompt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sap-agent-context.prompt.js","sourceRoot":"","sources":["../../../src/prompts/context/sap-agent-context.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,cAAc,GAAG,qCAAqC,CAAC;AAC7D,MAAM,qBAAqB,GAAG,iEAAiE,CAAC;AAChG,MAAM,yBAAyB,GAAG,mDAAmD,CAAC;AACtF,MAAM,kBAAkB,GAAG,sFAAsF,CAAC;AAiBlH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,QAAuB;IAC3E,cAAc,CACZ,MAAM,EACN,mBAAmB,EACnB,EAAE,EACF;QACM,WAAW,EAAE,uKAAuK;QACxL,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,iGAAiG;gBAC9G,QAAQ,EAAE,KAAK;aAChB;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,wDAAwD;gBACrE,QAAQ,EAAE,KAAK;aAChB;SACF;KACF,EACD,KAAK,EAAE,IAAgB,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,UAAU,GAAI,IAAyB,IAAI,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,KAAK,MAAM,CAAC;YAC1D,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,KAAK,OAAO,CAAC;YAE/D,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAE1D,+BAA+B;YAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;gBAExF,OAAO;oBACL,WAAW,EAAE,iCAAiC;oBAC9C,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAe;4BACrB,OAAO,EAAE;gCACP,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,yBAAyB,CAAC,aAAa,EAAE,SAAS,CAAC;6BAC1D;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,sCAAsC;YACtC,MAAM,WAAW,GAAG,mBAAmB,CAAC;gBACtC,aAAa;gBACb,MAAM,EAAE,MAAoC;gBAC5C,WAAW;gBACX,SAAS;gBACT,aAAa;gBACb,eAAe;gBACf,WAAW;aACZ,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;gBAC7C,OAAO,EAAE,aAAa;gBACtB,aAAa;gBACb,eAAe;gBACf,YAAY,EAAE,WAAW,CAAC,MAAM;aACjC,CAAC,CAAC;YAEH,OAAO;gBACL,WAAW,EAAE,gCAAgC;gBAC7C,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,WAAW;yBAClB;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAEnE,OAAO;gBACL,WAAW,EAAE,gCAAgC;gBAC7C,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC;yBAC/B;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAQ5B;IACC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAEvF,IAAI,WAAW,GAAG;;;gBAGJ,aAAa;uBACN,oBAAoB,CAAC,aAAa,CAAC;wBAClC,MAAM,CAAC,WAAW,IAAI,gBAAgB;;;;;;;;gBAQ9C,MAAM,CAAC,IAAI;mBACR,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC;sBACjC,MAAM,CAAC,UAAU;sBACjB,MAAM,CAAC,SAAS;;CAErC,CAAC;IAEA,IAAI,aAAa,EAAE,CAAC;QAClB,WAAW,IAAI;4BACS,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;cAC9C,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;;;;CAI/E,CAAC;IACA,CAAC;IAED,WAAW,IAAI;sBACK,MAAM,CAAC,aAAa;qBACrB,MAAM,CAAC,aAAa;iCACR,MAAM,CAAC,uBAAuB;qBAC1C,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,YAAY;;;+BAGzB,OAAO,CAAC,SAAS;0DACU,qBAAqB,WAAW,yBAAyB;sBAC7F,cAAc;sBACd,kBAAkB;;;;0BAId,cAAc;;;;;;;;;;;;;;kBActB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,kBAAkB,cAAc,GAAG,CAAC,CAAC,CAAC,UAAU;iBAC1I,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;qBACzC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;iBAClD,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CpD,CAAC;IAEA,IAAI,eAAe,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,WAAW,IAAI;;;CAGlB,CAAC;QACE,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAChE,WAAW,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,IAAI,SAAS,MAAM,OAAO,CAAC,WAAW,IAAI,KAAK;CACzK,CAAC;QACE,CAAC;QAED,WAAW,IAAI;;;;;;;;;;;;;;;;CAgBlB,CAAC;IACA,CAAC;IAED,WAAW,IAAI;;;;;;;;;;;;yBAYQ,cAAc;;;;;CAKtC,CAAC;IAEA,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAAC,aAAqB,EAAE,SAAiB;IACzE,OAAO;;iCAEwB,aAAa;;;;EAI5C,kBAAkB;;;;gBAIJ,qBAAqB;oBACjB,yBAAyB;oBACzB,cAAc;;;;;;;;;;;uBAWX,aAAa;wBACZ,SAAS;CAChC,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAc;IACvC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IAE9E,OAAO;;EAEP,YAAY;;;;;gCAKkB,kBAAkB;oDACE,qBAAqB,WAAW,yBAAyB;CAC5G,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-sap-error.prompt.js","sourceRoot":"","sources":["../../../src/prompts/developer/debug-sap-error.prompt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"debug-sap-error.prompt.js","sourceRoot":"","sources":["../../../src/prompts/developer/debug-sap-error.prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -114,7 +114,7 @@ export function generateSapIntegrationPrompt(server, _context) {
|
|
|
114
114
|
}],
|
|
115
115
|
};
|
|
116
116
|
});
|
|
117
|
-
logger.
|
|
117
|
+
logger.debug('Generate SAP Integration prompt registered');
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
120
120
|
* Internal helper for the get feature example operation.
|
|
@@ -127,6 +127,10 @@ function getFeatureExample(feature) {
|
|
|
127
127
|
tools: '```typescript\nconst tool = await sapClient.tools.publish({\n name: \'swap\',\n schema: { /* JSON Schema */ },\n pricing: { fee: \'0.1%\' },\n});\n```',
|
|
128
128
|
attestation: '```typescript\nconst attestation = await sapClient.attestation.submit({\n target: targetPda,\n type: \'identity_verified\',\n metadata: { verifiedBy: \'my-service\' },\n});\n```',
|
|
129
129
|
};
|
|
130
|
-
return examples[feature] ||
|
|
130
|
+
return examples[feature] || [
|
|
131
|
+
'Unsupported feature requested.',
|
|
132
|
+
'Use one of: agent, escrow, vault, tools, attestation.',
|
|
133
|
+
'Do not generate generic integration code for unknown SAP features.',
|
|
134
|
+
].join('\n');
|
|
131
135
|
}
|
|
132
136
|
//# sourceMappingURL=generate-sap-integration.prompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-sap-integration.prompt.js","sourceRoot":"","sources":["../../../src/prompts/developer/generate-sap-integration.prompt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generate-sap-integration.prompt.js","sourceRoot":"","sources":["../../../src/prompts/developer/generate-sap-integration.prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,6 +92,6 @@ export function explainProofOfExecutionPrompt(server, _context) {
|
|
|
92
92
|
}],
|
|
93
93
|
};
|
|
94
94
|
});
|
|
95
|
-
logger.
|
|
95
|
+
logger.debug('Explain Proof of Execution prompt registered');
|
|
96
96
|
}
|
|
97
97
|
//# sourceMappingURL=explain-proof-of-execution.prompt.js.map
|