@oobe-protocol-labs/sap-mcp-server 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +159 -0
- package/CHANGELOG.md +55 -0
- package/LICENSE +21 -0
- package/README.md +223 -0
- package/config.example.json +64 -0
- package/config.schema.json +370 -0
- package/config.secure-example.json +100 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/mcp/errors.d.ts +7 -0
- package/dist/adapters/mcp/errors.d.ts.map +1 -0
- package/dist/adapters/mcp/errors.js +10 -0
- package/dist/adapters/mcp/errors.js.map +1 -0
- package/dist/adapters/mcp/index.d.ts +8 -0
- package/dist/adapters/mcp/index.d.ts.map +1 -0
- package/dist/adapters/mcp/index.js +8 -0
- package/dist/adapters/mcp/index.js.map +1 -0
- package/dist/adapters/mcp/prompt-response.d.ts +13 -0
- package/dist/adapters/mcp/prompt-response.d.ts.map +1 -0
- package/dist/adapters/mcp/prompt-response.js +7 -0
- package/dist/adapters/mcp/prompt-response.js.map +1 -0
- package/dist/adapters/mcp/resource-response.d.ts +8 -0
- package/dist/adapters/mcp/resource-response.d.ts.map +1 -0
- package/dist/adapters/mcp/resource-response.js +7 -0
- package/dist/adapters/mcp/resource-response.js.map +1 -0
- package/dist/adapters/mcp/sdk-compat.d.ts +191 -0
- package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -0
- package/dist/adapters/mcp/sdk-compat.js +606 -0
- package/dist/adapters/mcp/sdk-compat.js.map +1 -0
- package/dist/adapters/mcp/tool-response.d.ts +32 -0
- package/dist/adapters/mcp/tool-response.d.ts.map +1 -0
- package/dist/adapters/mcp/tool-response.js +27 -0
- package/dist/adapters/mcp/tool-response.js.map +1 -0
- package/dist/adapters/solana/commitment.d.ts +9 -0
- package/dist/adapters/solana/commitment.d.ts.map +1 -0
- package/dist/adapters/solana/commitment.js +14 -0
- package/dist/adapters/solana/commitment.js.map +1 -0
- package/dist/adapters/solana/connection.d.ts +10 -0
- package/dist/adapters/solana/connection.d.ts.map +1 -0
- package/dist/adapters/solana/connection.js +13 -0
- package/dist/adapters/solana/connection.js.map +1 -0
- package/dist/adapters/solana/index.d.ts +7 -0
- package/dist/adapters/solana/index.d.ts.map +1 -0
- package/dist/adapters/solana/index.js +7 -0
- package/dist/adapters/solana/index.js.map +1 -0
- package/dist/adapters/solana/public-key.d.ts +9 -0
- package/dist/adapters/solana/public-key.d.ts.map +1 -0
- package/dist/adapters/solana/public-key.js +11 -0
- package/dist/adapters/solana/public-key.js.map +1 -0
- package/dist/cli.d.ts +29 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +269 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/defaults.d.ts +28 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +28 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/env.d.ts +297 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +563 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/mcp-client-injection.d.ts +113 -0
- package/dist/config/mcp-client-injection.d.ts.map +1 -0
- package/dist/config/mcp-client-injection.js +453 -0
- package/dist/config/mcp-client-injection.js.map +1 -0
- package/dist/config/paths.d.ts +37 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +93 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/profiles.d.ts +85 -0
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/config/profiles.js +346 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/config/schema.d.ts +9 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +8 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/secure-config.d.ts +607 -0
- package/dist/config/secure-config.d.ts.map +1 -0
- package/dist/config/secure-config.js +526 -0
- package/dist/config/secure-config.js.map +1 -0
- package/dist/config/setup.d.ts +42 -0
- package/dist/config/setup.d.ts.map +1 -0
- package/dist/config/setup.js +173 -0
- package/dist/config/setup.js.map +1 -0
- package/dist/config/wizard.d.ts +15 -0
- package/dist/config/wizard.d.ts.map +1 -0
- package/dist/config/wizard.js +1176 -0
- package/dist/config/wizard.js.map +1 -0
- package/dist/config-cli.d.ts +21 -0
- package/dist/config-cli.d.ts.map +1 -0
- package/dist/config-cli.js +679 -0
- package/dist/config-cli.js.map +1 -0
- package/dist/core/constants.d.ts +78 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +78 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/errors.d.ts +188 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +337 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/guards.d.ts +41 -0
- package/dist/core/guards.d.ts.map +1 -0
- package/dist/core/guards.js +93 -0
- package/dist/core/guards.js.map +1 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +10 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +64 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +159 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/result.d.ts +49 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js +61 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/types.d.ts +147 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +8 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/payments/http-adapter.d.ts +76 -0
- package/dist/payments/http-adapter.d.ts.map +1 -0
- package/dist/payments/http-adapter.js +126 -0
- package/dist/payments/http-adapter.js.map +1 -0
- package/dist/payments/index.d.ts +12 -0
- package/dist/payments/index.d.ts.map +1 -0
- package/dist/payments/index.js +9 -0
- package/dist/payments/index.js.map +1 -0
- package/dist/payments/json-rpc.d.ts +49 -0
- package/dist/payments/json-rpc.d.ts.map +1 -0
- package/dist/payments/json-rpc.js +53 -0
- package/dist/payments/json-rpc.js.map +1 -0
- package/dist/payments/monetization-gate.d.ts +49 -0
- package/dist/payments/monetization-gate.d.ts.map +1 -0
- package/dist/payments/monetization-gate.js +398 -0
- package/dist/payments/monetization-gate.js.map +1 -0
- package/dist/payments/oobe-facilitator-server.d.ts +71 -0
- package/dist/payments/oobe-facilitator-server.d.ts.map +1 -0
- package/dist/payments/oobe-facilitator-server.js +409 -0
- package/dist/payments/oobe-facilitator-server.js.map +1 -0
- package/dist/payments/pay-sh-spec.d.ts +44 -0
- package/dist/payments/pay-sh-spec.d.ts.map +1 -0
- package/dist/payments/pay-sh-spec.js +218 -0
- package/dist/payments/pay-sh-spec.js.map +1 -0
- package/dist/payments/pricing.d.ts +60 -0
- package/dist/payments/pricing.d.ts.map +1 -0
- package/dist/payments/pricing.js +272 -0
- package/dist/payments/pricing.js.map +1 -0
- package/dist/payments/usage-ledger.d.ts +84 -0
- package/dist/payments/usage-ledger.d.ts.map +1 -0
- package/dist/payments/usage-ledger.js +126 -0
- package/dist/payments/usage-ledger.js.map +1 -0
- package/dist/policy/bento-policy-engine.d.ts +71 -0
- package/dist/policy/bento-policy-engine.d.ts.map +1 -0
- package/dist/policy/bento-policy-engine.js +218 -0
- package/dist/policy/bento-policy-engine.js.map +1 -0
- package/dist/policy/default-policies.d.ts +9 -0
- package/dist/policy/default-policies.d.ts.map +1 -0
- package/dist/policy/default-policies.js +69 -0
- package/dist/policy/default-policies.js.map +1 -0
- package/dist/policy/hybrid-policy-engine.d.ts +95 -0
- package/dist/policy/hybrid-policy-engine.d.ts.map +1 -0
- package/dist/policy/hybrid-policy-engine.js +297 -0
- package/dist/policy/hybrid-policy-engine.js.map +1 -0
- package/dist/policy/index.d.ts +10 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +10 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/local-policy-engine.d.ts +119 -0
- package/dist/policy/local-policy-engine.d.ts.map +1 -0
- package/dist/policy/local-policy-engine.js +318 -0
- package/dist/policy/local-policy-engine.js.map +1 -0
- package/dist/policy/permission-checks.d.ts +19 -0
- package/dist/policy/permission-checks.d.ts.map +1 -0
- package/dist/policy/permission-checks.js +60 -0
- package/dist/policy/permission-checks.js.map +1 -0
- package/dist/policy/policy-engine.d.ts +57 -0
- package/dist/policy/policy-engine.d.ts.map +1 -0
- package/dist/policy/policy-engine.js +162 -0
- package/dist/policy/policy-engine.js.map +1 -0
- package/dist/policy/policy-types.d.ts +46 -0
- package/dist/policy/policy-types.d.ts.map +1 -0
- package/dist/policy/policy-types.js +5 -0
- package/dist/policy/policy-types.js.map +1 -0
- package/dist/policy/risk-level.d.ts +18 -0
- package/dist/policy/risk-level.d.ts.map +1 -0
- package/dist/policy/risk-level.js +46 -0
- package/dist/policy/risk-level.js.map +1 -0
- package/dist/policy/spending-limits.d.ts +17 -0
- package/dist/policy/spending-limits.d.ts.map +1 -0
- package/dist/policy/spending-limits.js +40 -0
- package/dist/policy/spending-limits.js.map +1 -0
- package/dist/prompts/context/sap-agent-context.prompt.d.ts +64 -0
- package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -0
- package/dist/prompts/context/sap-agent-context.prompt.js +336 -0
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -0
- package/dist/prompts/developer/debug-sap-error.prompt.d.ts +13 -0
- package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -0
- package/dist/prompts/developer/debug-sap-error.prompt.js +78 -0
- package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +13 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.js +132 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -0
- package/dist/prompts/developer/index.d.ts +6 -0
- package/dist/prompts/developer/index.d.ts.map +1 -0
- package/dist/prompts/developer/index.js +6 -0
- package/dist/prompts/developer/index.js.map +1 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +13 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +97 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -0
- package/dist/prompts/execution-proof/index.d.ts +6 -0
- package/dist/prompts/execution-proof/index.d.ts.map +1 -0
- package/dist/prompts/execution-proof/index.js +6 -0
- package/dist/prompts/execution-proof/index.js.map +1 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +13 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +95 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -0
- package/dist/prompts/index.d.ts +5 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +5 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/payments/create-paid-api.prompt.d.ts +13 -0
- package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -0
- package/dist/prompts/payments/create-paid-api.prompt.js +142 -0
- package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +13 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.js +83 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -0
- package/dist/prompts/payments/index.d.ts +6 -0
- package/dist/prompts/payments/index.d.ts.map +1 -0
- package/dist/prompts/payments/index.js +6 -0
- package/dist/prompts/payments/index.js.map +1 -0
- package/dist/prompts/register-prompts.d.ts +10 -0
- package/dist/prompts/register-prompts.d.ts.map +1 -0
- package/dist/prompts/register-prompts.js +40 -0
- package/dist/prompts/register-prompts.js.map +1 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +13 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.js +85 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -0
- package/dist/prompts/registry/index.d.ts +6 -0
- package/dist/prompts/registry/index.d.ts.map +1 -0
- package/dist/prompts/registry/index.js +6 -0
- package/dist/prompts/registry/index.js.map +1 -0
- package/dist/prompts/registry/register-sap-agent.prompt.d.ts +13 -0
- package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -0
- package/dist/prompts/registry/register-sap-agent.prompt.js +152 -0
- package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -0
- package/dist/remote/auth/index.d.ts +86 -0
- package/dist/remote/auth/index.d.ts.map +1 -0
- package/dist/remote/auth/index.js +152 -0
- package/dist/remote/auth/index.js.map +1 -0
- package/dist/remote/server.d.ts +140 -0
- package/dist/remote/server.d.ts.map +1 -0
- package/dist/remote/server.js +412 -0
- package/dist/remote/server.js.map +1 -0
- package/dist/resources/current/sap-current-config.resource.d.ts +30 -0
- package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -0
- package/dist/resources/current/sap-current-config.resource.js +142 -0
- package/dist/resources/current/sap-current-config.resource.js.map +1 -0
- package/dist/resources/execution-proof/index.d.ts +5 -0
- package/dist/resources/execution-proof/index.d.ts.map +1 -0
- package/dist/resources/execution-proof/index.js +5 -0
- package/dist/resources/execution-proof/index.js.map +1 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +13 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.js +75 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -0
- package/dist/resources/index.d.ts +5 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +5 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/memory/index.d.ts +5 -0
- package/dist/resources/memory/index.d.ts.map +1 -0
- package/dist/resources/memory/index.js +5 -0
- package/dist/resources/memory/index.js.map +1 -0
- package/dist/resources/memory/sap-memory.resource.d.ts +13 -0
- package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -0
- package/dist/resources/memory/sap-memory.resource.js +77 -0
- package/dist/resources/memory/sap-memory.resource.js.map +1 -0
- package/dist/resources/profile/sap-active-profile.resource.d.ts +51 -0
- package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -0
- package/dist/resources/profile/sap-active-profile.resource.js +119 -0
- package/dist/resources/profile/sap-active-profile.resource.js.map +1 -0
- package/dist/resources/register-resources.d.ts +10 -0
- package/dist/resources/register-resources.d.ts.map +1 -0
- package/dist/resources/register-resources.js +33 -0
- package/dist/resources/register-resources.js.map +1 -0
- package/dist/resources/registry/index.d.ts +6 -0
- package/dist/resources/registry/index.d.ts.map +1 -0
- package/dist/resources/registry/index.js +6 -0
- package/dist/resources/registry/index.js.map +1 -0
- package/dist/resources/registry/sap-agent.resource.d.ts +13 -0
- package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -0
- package/dist/resources/registry/sap-agent.resource.js +75 -0
- package/dist/resources/registry/sap-agent.resource.js.map +1 -0
- package/dist/resources/registry/sap-global-registry.resource.d.ts +13 -0
- package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -0
- package/dist/resources/registry/sap-global-registry.resource.js +71 -0
- package/dist/resources/registry/sap-global-registry.resource.js.map +1 -0
- package/dist/resources/reputation/index.d.ts +5 -0
- package/dist/resources/reputation/index.d.ts.map +1 -0
- package/dist/resources/reputation/index.js +5 -0
- package/dist/resources/reputation/index.js.map +1 -0
- package/dist/resources/reputation/sap-reputation.resource.d.ts +13 -0
- package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -0
- package/dist/resources/reputation/sap-reputation.resource.js +75 -0
- package/dist/resources/reputation/sap-reputation.resource.js.map +1 -0
- package/dist/resources/stats/sap-network-stats.resource.d.ts +14 -0
- package/dist/resources/stats/sap-network-stats.resource.d.ts.map +1 -0
- package/dist/resources/stats/sap-network-stats.resource.js +86 -0
- package/dist/resources/stats/sap-network-stats.resource.js.map +1 -0
- package/dist/resources/tool-schema/index.d.ts +5 -0
- package/dist/resources/tool-schema/index.d.ts.map +1 -0
- package/dist/resources/tool-schema/index.js +5 -0
- package/dist/resources/tool-schema/index.js.map +1 -0
- package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +13 -0
- package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -0
- package/dist/resources/tool-schema/sap-tool-schema.resource.js +75 -0
- package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -0
- package/dist/sap/index.d.ts +7 -0
- package/dist/sap/index.d.ts.map +1 -0
- package/dist/sap/index.js +6 -0
- package/dist/sap/index.js.map +1 -0
- package/dist/sap/sap-client-manager.d.ts +54 -0
- package/dist/sap/sap-client-manager.d.ts.map +1 -0
- package/dist/sap/sap-client-manager.js +129 -0
- package/dist/sap/sap-client-manager.js.map +1 -0
- package/dist/sap/sap-errors.d.ts +13 -0
- package/dist/sap/sap-errors.d.ts.map +1 -0
- package/dist/sap/sap-errors.js +23 -0
- package/dist/sap/sap-errors.js.map +1 -0
- package/dist/sap/sap-types.d.ts +69 -0
- package/dist/sap/sap-types.d.ts.map +1 -0
- package/dist/sap/sap-types.js +5 -0
- package/dist/sap/sap-types.js.map +1 -0
- package/dist/schemas/common.schema.d.ts +42 -0
- package/dist/schemas/common.schema.d.ts.map +1 -0
- package/dist/schemas/common.schema.js +36 -0
- package/dist/schemas/common.schema.js.map +1 -0
- package/dist/schemas/developer.schema.d.ts +31 -0
- package/dist/schemas/developer.schema.d.ts.map +1 -0
- package/dist/schemas/developer.schema.js +19 -0
- package/dist/schemas/developer.schema.js.map +1 -0
- package/dist/schemas/execution-proof.schema.d.ts +44 -0
- package/dist/schemas/execution-proof.schema.d.ts.map +1 -0
- package/dist/schemas/execution-proof.schema.js +26 -0
- package/dist/schemas/execution-proof.schema.js.map +1 -0
- package/dist/schemas/identity.schema.d.ts +34 -0
- package/dist/schemas/identity.schema.d.ts.map +1 -0
- package/dist/schemas/identity.schema.js +21 -0
- package/dist/schemas/identity.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +15 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +15 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/memory.schema.d.ts +34 -0
- package/dist/schemas/memory.schema.d.ts.map +1 -0
- package/dist/schemas/memory.schema.js +21 -0
- package/dist/schemas/memory.schema.js.map +1 -0
- package/dist/schemas/payments.schema.d.ts +37 -0
- package/dist/schemas/payments.schema.d.ts.map +1 -0
- package/dist/schemas/payments.schema.js +22 -0
- package/dist/schemas/payments.schema.js.map +1 -0
- package/dist/schemas/registry.schema.d.ts +65 -0
- package/dist/schemas/registry.schema.d.ts.map +1 -0
- package/dist/schemas/registry.schema.js +34 -0
- package/dist/schemas/registry.schema.js.map +1 -0
- package/dist/schemas/reputation.schema.d.ts +31 -0
- package/dist/schemas/reputation.schema.d.ts.map +1 -0
- package/dist/schemas/reputation.schema.js +20 -0
- package/dist/schemas/reputation.schema.js.map +1 -0
- package/dist/schemas/settlement.schema.d.ts +50 -0
- package/dist/schemas/settlement.schema.d.ts.map +1 -0
- package/dist/schemas/settlement.schema.js +29 -0
- package/dist/schemas/settlement.schema.js.map +1 -0
- package/dist/schemas/tool-schema.schema.d.ts +56 -0
- package/dist/schemas/tool-schema.schema.d.ts.map +1 -0
- package/dist/schemas/tool-schema.schema.js +26 -0
- package/dist/schemas/tool-schema.schema.js.map +1 -0
- package/dist/schemas/transaction.schema.d.ts +34 -0
- package/dist/schemas/transaction.schema.d.ts.map +1 -0
- package/dist/schemas/transaction.schema.js +20 -0
- package/dist/schemas/transaction.schema.js.map +1 -0
- package/dist/security/approval-required.d.ts +9 -0
- package/dist/security/approval-required.d.ts.map +1 -0
- package/dist/security/approval-required.js +10 -0
- package/dist/security/approval-required.js.map +1 -0
- package/dist/security/index.d.ts +9 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/private-key-guard.d.ts +11 -0
- package/dist/security/private-key-guard.d.ts.map +1 -0
- package/dist/security/private-key-guard.js +22 -0
- package/dist/security/private-key-guard.js.map +1 -0
- package/dist/security/prompt-injection-notes.d.ts +13 -0
- package/dist/security/prompt-injection-notes.d.ts.map +1 -0
- package/dist/security/prompt-injection-notes.js +23 -0
- package/dist/security/prompt-injection-notes.js.map +1 -0
- package/dist/security/tool-permissions.d.ts +30 -0
- package/dist/security/tool-permissions.d.ts.map +1 -0
- package/dist/security/tool-permissions.js +270 -0
- package/dist/security/tool-permissions.js.map +1 -0
- package/dist/security/unsafe-action-guard.d.ts +28 -0
- package/dist/security/unsafe-action-guard.d.ts.map +1 -0
- package/dist/security/unsafe-action-guard.js +175 -0
- package/dist/security/unsafe-action-guard.js.map +1 -0
- package/dist/server/create-server.d.ts +12 -0
- package/dist/server/create-server.d.ts.map +1 -0
- package/dist/server/create-server.js +57 -0
- package/dist/server/create-server.js.map +1 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +7 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/register-capabilities.d.ts +10 -0
- package/dist/server/register-capabilities.d.ts.map +1 -0
- package/dist/server/register-capabilities.js +23 -0
- package/dist/server/register-capabilities.js.map +1 -0
- package/dist/server/server-metadata.d.ts +32 -0
- package/dist/server/server-metadata.d.ts.map +1 -0
- package/dist/server/server-metadata.js +32 -0
- package/dist/server/server-metadata.js.map +1 -0
- package/dist/session/agent-session.d.ts +25 -0
- package/dist/session/agent-session.d.ts.map +1 -0
- package/dist/session/agent-session.js +35 -0
- package/dist/session/agent-session.js.map +1 -0
- package/dist/session/delegated-session.d.ts +20 -0
- package/dist/session/delegated-session.d.ts.map +1 -0
- package/dist/session/delegated-session.js +47 -0
- package/dist/session/delegated-session.js.map +1 -0
- package/dist/session/index.d.ts +10 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +9 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/redis-session-store.d.ts +89 -0
- package/dist/session/redis-session-store.d.ts.map +1 -0
- package/dist/session/redis-session-store.js +219 -0
- package/dist/session/redis-session-store.js.map +1 -0
- package/dist/session/session-limits.d.ts +20 -0
- package/dist/session/session-limits.d.ts.map +1 -0
- package/dist/session/session-limits.js +55 -0
- package/dist/session/session-limits.js.map +1 -0
- package/dist/session/session-permissions.d.ts +37 -0
- package/dist/session/session-permissions.d.ts.map +1 -0
- package/dist/session/session-permissions.js +58 -0
- package/dist/session/session-permissions.js.map +1 -0
- package/dist/session/session-store.d.ts +38 -0
- package/dist/session/session-store.d.ts.map +1 -0
- package/dist/session/session-store.js +62 -0
- package/dist/session/session-store.js.map +1 -0
- package/dist/session/session-types.d.ts +33 -0
- package/dist/session/session-types.d.ts.map +1 -0
- package/dist/session/session-types.js +5 -0
- package/dist/session/session-types.js.map +1 -0
- package/dist/signer/external-signer.d.ts +16 -0
- package/dist/signer/external-signer.d.ts.map +1 -0
- package/dist/signer/external-signer.js +128 -0
- package/dist/signer/external-signer.js.map +1 -0
- package/dist/signer/index.d.ts +9 -0
- package/dist/signer/index.d.ts.map +1 -0
- package/dist/signer/index.js +8 -0
- package/dist/signer/index.js.map +1 -0
- package/dist/signer/load-keypair.d.ts +15 -0
- package/dist/signer/load-keypair.d.ts.map +1 -0
- package/dist/signer/load-keypair.js +39 -0
- package/dist/signer/load-keypair.js.map +1 -0
- package/dist/signer/local-keypair-signer.d.ts +11 -0
- package/dist/signer/local-keypair-signer.d.ts.map +1 -0
- package/dist/signer/local-keypair-signer.js +46 -0
- package/dist/signer/local-keypair-signer.js.map +1 -0
- package/dist/signer/signer-resolver.d.ts +10 -0
- package/dist/signer/signer-resolver.d.ts.map +1 -0
- package/dist/signer/signer-resolver.js +63 -0
- package/dist/signer/signer-resolver.js.map +1 -0
- package/dist/signer/signer-types.d.ts +35 -0
- package/dist/signer/signer-types.d.ts.map +1 -0
- package/dist/signer/signer-types.js +5 -0
- package/dist/signer/signer-types.js.map +1 -0
- package/dist/signer/signing-proxy.d.ts +45 -0
- package/dist/signer/signing-proxy.d.ts.map +1 -0
- package/dist/signer/signing-proxy.js +300 -0
- package/dist/signer/signing-proxy.js.map +1 -0
- package/dist/tools/client-sdk-tools.d.ts +22 -0
- package/dist/tools/client-sdk-tools.d.ts.map +1 -0
- package/dist/tools/client-sdk-tools.js +220 -0
- package/dist/tools/client-sdk-tools.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +17 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/profile-tools.d.ts +12 -0
- package/dist/tools/profile-tools.d.ts.map +1 -0
- package/dist/tools/profile-tools.js +250 -0
- package/dist/tools/profile-tools.js.map +1 -0
- package/dist/tools/register-tools.d.ts +12 -0
- package/dist/tools/register-tools.d.ts.map +1 -0
- package/dist/tools/register-tools.js +36 -0
- package/dist/tools/register-tools.js.map +1 -0
- package/dist/tools/sap-network-stats.tool.d.ts +14 -0
- package/dist/tools/sap-network-stats.tool.d.ts.map +1 -0
- package/dist/tools/sap-network-stats.tool.js +101 -0
- package/dist/tools/sap-network-stats.tool.js.map +1 -0
- package/dist/tools/sap-sdk-tools.d.ts +15 -0
- package/dist/tools/sap-sdk-tools.d.ts.map +1 -0
- package/dist/tools/sap-sdk-tools.js +1515 -0
- package/dist/tools/sap-sdk-tools.js.map +1 -0
- package/dist/tools/sap-sns-tools.d.ts +35 -0
- package/dist/tools/sap-sns-tools.d.ts.map +1 -0
- package/dist/tools/sap-sns-tools.js +626 -0
- package/dist/tools/sap-sns-tools.js.map +1 -0
- package/dist/tools/skills-tools.d.ts +12 -0
- package/dist/tools/skills-tools.d.ts.map +1 -0
- package/dist/tools/skills-tools.js +273 -0
- package/dist/tools/skills-tools.js.map +1 -0
- package/dist/tools/transaction-tools.d.ts +14 -0
- package/dist/tools/transaction-tools.d.ts.map +1 -0
- package/dist/tools/transaction-tools.js +297 -0
- package/dist/tools/transaction-tools.js.map +1 -0
- package/dist/transports/http.d.ts +40 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +212 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/index.d.ts +6 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +6 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/transports/stdio.d.ts +14 -0
- package/dist/transports/stdio.d.ts.map +1 -0
- package/dist/transports/stdio.js +32 -0
- package/dist/transports/stdio.js.map +1 -0
- package/dist/tui/components.d.ts +59 -0
- package/dist/tui/components.d.ts.map +1 -0
- package/dist/tui/components.js +82 -0
- package/dist/tui/components.js.map +1 -0
- package/dist/tui/config-wizard.d.ts +12 -0
- package/dist/tui/config-wizard.d.ts.map +1 -0
- package/dist/tui/config-wizard.js +348 -0
- package/dist/tui/config-wizard.js.map +1 -0
- package/dist/tui/wizard-save.d.ts +51 -0
- package/dist/tui/wizard-save.d.ts.map +1 -0
- package/dist/tui/wizard-save.js +148 -0
- package/dist/tui/wizard-save.js.map +1 -0
- package/docs/00_README.md +45 -0
- package/docs/01_PRODUCT_OVERVIEW.md +69 -0
- package/docs/02_ARCHITECTURE_AND_REQUEST_FLOW.md +120 -0
- package/docs/03_CONFIGURATION_AND_WIZARD.md +143 -0
- package/docs/04_LOCAL_STDIO_USAGE.md +118 -0
- package/docs/05_REMOTE_VPS_DEPLOYMENT.md +136 -0
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +162 -0
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +114 -0
- package/docs/08_SECURITY_POLICY_AND_SIGNING.md +134 -0
- package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +72 -0
- package/docs/10_OPERATIONS_RELEASE_AND_PM2.md +90 -0
- package/docs/11_CODE_QUALITY_AUDIT.md +49 -0
- package/ecosystem.config.example.cjs +55 -0
- package/package.json +132 -0
- package/skills/README.md +146 -0
- package/skills/sap-agent-registry/SKILL.md +39 -0
- package/skills/sap-agentkit/SKILL.md +40 -0
- package/skills/sap-defi/SKILL.md +51 -0
- package/skills/sap-discovery-indexing/SKILL.md +33 -0
- package/skills/sap-escrow-settlement/SKILL.md +37 -0
- package/skills/sap-ledger-session/SKILL.md +24 -0
- package/skills/sap-market-data/SKILL.md +36 -0
- package/skills/sap-mcp/SKILL.md +202 -0
- package/skills/sap-mcp/TOOL_REFERENCE.md +184 -0
- package/skills/sap-memory-vault/SKILL.md +29 -0
- package/skills/sap-nft-metaplex/SKILL.md +38 -0
- package/skills/sap-operations/SKILL.md +97 -0
- package/skills/sap-payments-x402/SKILL.md +47 -0
- package/skills/sap-reputation-attestation/SKILL.md +30 -0
- package/skills/sap-sns/SKILL.md +51 -0
- package/skills/sap-social-gaming/SKILL.md +30 -0
- package/skills/sap-solana-token/SKILL.md +32 -0
- package/skills/sap-staking/SKILL.md +24 -0
- package/skills/sap-tool-registry/SKILL.md +29 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Register SAP Agent Prompt
|
|
3
|
+
*
|
|
4
|
+
* Guides users through SAP agent registration process.
|
|
5
|
+
* REAL IMPLEMENTATION — Step-by-step wizard
|
|
6
|
+
*/
|
|
7
|
+
import { registerPrompt } from '../../adapters/mcp/sdk-compat.js';
|
|
8
|
+
import { logger } from '../../core/logger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Executes the register sap agent prompt operation.
|
|
11
|
+
*/
|
|
12
|
+
export function registerSapAgentPrompt(server, _context) {
|
|
13
|
+
registerPrompt(server, 'register-sap-agent', {}, {
|
|
14
|
+
description: 'Step-by-step guide to register as SAP agent on Solana blockchain',
|
|
15
|
+
arguments: [
|
|
16
|
+
{
|
|
17
|
+
name: 'agentType',
|
|
18
|
+
description: 'Type of agent: "citizen", "merchant", "hybrid" (default: "citizen")',
|
|
19
|
+
required: false,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'network',
|
|
23
|
+
description: 'Solana network: "mainnet", "devnet", "testnet" (default: "devnet")',
|
|
24
|
+
required: false,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'includeSNS',
|
|
28
|
+
description: 'Register SNS domain: "yes", "no" (default: "no")',
|
|
29
|
+
required: false,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
}, async (args) => {
|
|
33
|
+
const agentType = args.agentType || 'citizen';
|
|
34
|
+
const network = args.network || 'devnet';
|
|
35
|
+
const includeSNS = args.includeSNS === 'yes';
|
|
36
|
+
logger.info('Registering SAP agent', { agentType, network, includeSNS });
|
|
37
|
+
const rpcUrl = network === 'mainnet'
|
|
38
|
+
? 'https://api.mainnet-beta.solana.com'
|
|
39
|
+
: network === 'testnet'
|
|
40
|
+
? 'https://api.testnet.solana.com'
|
|
41
|
+
: 'https://api.devnet.solana.com';
|
|
42
|
+
const content = [
|
|
43
|
+
'# SAP Agent Registration Guide',
|
|
44
|
+
'',
|
|
45
|
+
'## Configuration',
|
|
46
|
+
'',
|
|
47
|
+
'- **Agent Type**: ' + agentType,
|
|
48
|
+
'- **Network**: ' + network + ' (`' + rpcUrl + '`)',
|
|
49
|
+
'- **SNS Domain**: ' + (includeSNS ? 'Yes (optional)' : 'No'),
|
|
50
|
+
'',
|
|
51
|
+
'## ⚡ Quick Start: Check Your Config',
|
|
52
|
+
'',
|
|
53
|
+
'Before registering, verify your agent identity:',
|
|
54
|
+
'',
|
|
55
|
+
'```bash',
|
|
56
|
+
'# Check public agent identity only',
|
|
57
|
+
'npx sap-mcp-config pubkey',
|
|
58
|
+
'```',
|
|
59
|
+
'',
|
|
60
|
+
'Your **agentPubkey** is automatically extracted from your wallet and saved in config.',
|
|
61
|
+
'This is the public key that will be registered on-chain. Never read or print keypair JSON bytes.',
|
|
62
|
+
'',
|
|
63
|
+
'## Prerequisites',
|
|
64
|
+
'',
|
|
65
|
+
'1. **Solana Wallet** with SOL for fees',
|
|
66
|
+
'2. **MCP Server** configured (run `npx sap-mcp-config wizard`)',
|
|
67
|
+
'3. **Dedicated signer** configured by the SAP MCP profile',
|
|
68
|
+
'4. **Agent Pubkey** visible in config (`agentPubkey` field)',
|
|
69
|
+
'',
|
|
70
|
+
'## Step 1: Configure MCP Server',
|
|
71
|
+
'',
|
|
72
|
+
'```bash',
|
|
73
|
+
'# Run interactive wizard (auto-extracts agentPubkey)',
|
|
74
|
+
'npx sap-mcp-config wizard',
|
|
75
|
+
'',
|
|
76
|
+
'# Select mode:',
|
|
77
|
+
'# - local-dev-keypair (development)',
|
|
78
|
+
'# - delegated-session (production)',
|
|
79
|
+
'# - external-signer (Ledger/Fireblocks)',
|
|
80
|
+
'# - hosted-api (remote HTTP)',
|
|
81
|
+
'```',
|
|
82
|
+
'',
|
|
83
|
+
'After wizard completes, you\'ll see:',
|
|
84
|
+
'```',
|
|
85
|
+
'✓ Configuration saved to ~/.config/mcp-sap/config-gianni-market-nft-agent.json',
|
|
86
|
+
'✓ Dedicated signer configured for profile gianni-market-nft-agent',
|
|
87
|
+
'',
|
|
88
|
+
' Agent Public Key: 8xKjPqN9vM2wR5tL3hF6yQ4sD7cB1aE9uY0pZ2iO3mX4',
|
|
89
|
+
' Save this pubkey for your agent registration!',
|
|
90
|
+
'```',
|
|
91
|
+
'',
|
|
92
|
+
'## Step 2: Fund Wallet',
|
|
93
|
+
'',
|
|
94
|
+
'```bash',
|
|
95
|
+
'# Check balance',
|
|
96
|
+
'solana balance --url ' + rpcUrl + '',
|
|
97
|
+
'',
|
|
98
|
+
'# Request airdrop (devnet only)',
|
|
99
|
+
'solana airdrop 1 --url ' + rpcUrl + '',
|
|
100
|
+
'```',
|
|
101
|
+
'',
|
|
102
|
+
'## Step 3: Register Agent On-Chain',
|
|
103
|
+
'',
|
|
104
|
+
'Use the MCP tool `sap_register_agent`. The SAP MCP server will sign with the configured profile signer internally.',
|
|
105
|
+
'',
|
|
106
|
+
'Do **not** read `SAP_WALLET_PATH`, do **not** open keypair JSON files, and do **not** print private key bytes.',
|
|
107
|
+
'',
|
|
108
|
+
'Tool input:',
|
|
109
|
+
'```json',
|
|
110
|
+
'{',
|
|
111
|
+
' "name": "My SAP Agent",',
|
|
112
|
+
' "description": "AI agent with SAP Protocol integration",',
|
|
113
|
+
' "capabilities": [',
|
|
114
|
+
' { "id": "identity:read", "description": null, "protocolId": "sap", "version": "1.0" },',
|
|
115
|
+
' { "id": "memory:write", "description": null, "protocolId": "sap", "version": "1.0" }',
|
|
116
|
+
' ],',
|
|
117
|
+
' "pricing": [],',
|
|
118
|
+
' "protocols": ["sap"],',
|
|
119
|
+
' "agentId": "' + agentType + '-agent",',
|
|
120
|
+
' "agentUri": "https://my-agent.example.com/agent.json",',
|
|
121
|
+
' "x402Endpoint": "https://my-agent.example.com/x402"',
|
|
122
|
+
'}',
|
|
123
|
+
'```',
|
|
124
|
+
'',
|
|
125
|
+
'## Step 4: Verify Registration',
|
|
126
|
+
'',
|
|
127
|
+
'```bash',
|
|
128
|
+
'# Fetch agent PDA',
|
|
129
|
+
'solana account <AGENT_PDA> --url ' + rpcUrl + ' --output json',
|
|
130
|
+
'',
|
|
131
|
+
'# Or use resource endpoint',
|
|
132
|
+
'curl sap://registry/agent/<YOUR_WALLET>',
|
|
133
|
+
'```',
|
|
134
|
+
'',
|
|
135
|
+
];
|
|
136
|
+
if (includeSNS) {
|
|
137
|
+
content.push('## Step 5 (Optional): Register SNS Domain', '', 'Use `sap_sns_check_domain` to verify availability, then `sap_sns_build_register_domain_transaction` for unsigned registration or `sap_sns_register_agent_domain` when the MCP profile is in `local-dev-keypair` mode.', '');
|
|
138
|
+
}
|
|
139
|
+
content.push('## Step 6: Test Agent', '', '```bash', '# Start MCP server', 'npx sap-mcp-server', '', '# In Claude Desktop or MCP client:', '# "Register me as SAP agent"', '# "Show my agent capabilities"', '# "Execute tool: swap SOL to USDC"', '```', '', '## Registration Fees', '', '| Network | Agent Registration | SNS Domain | Total |', '|---------|-------------------|------------|-------|', '| Devnet | ~0.001 SOL (test) | ~0.001 SOL | ~0.002 SOL |', '| Testnet | ~0.001 SOL (test) | ~0.001 SOL | ~0.002 SOL |', '| Mainnet | ~0.01 SOL | ~0.1 SOL | ~0.11 SOL |', '', '## Post-Registration', '', 'After registration:', '', '1. ✅ **Agent PDA** created on-chain', '2. ✅ **Capabilities** registered', '3. ✅ **Memory vault** initialized', '4. ✅ **Reputation tracking** enabled', '5. ⏳ **Build reputation** by executing tools successfully', '', '## Troubleshooting', '', '### "Insufficient funds"', '- Request airdrop (devnet): `solana airdrop 1`', '- Fund wallet with SOL (mainnet)', '', '### "Agent already registered"', '- Each wallet can register ONE agent', '- Close existing agent first: `agent_close` instruction', '', '### "Invalid capabilities"', '- Use valid capability strings', '- Check SAP SDK documentation', '', '## Resources', '', '- SAP SDK: https://github.com/OOBE-PROTOCOL/synapse-sap-sdk', '- Documentation: https://oobeprotocol.ai/docs', '- Discord: https://discord.gg/oobeprotocol');
|
|
140
|
+
return {
|
|
141
|
+
messages: [{
|
|
142
|
+
role: 'assistant',
|
|
143
|
+
content: {
|
|
144
|
+
type: 'text',
|
|
145
|
+
text: content.join('\n'),
|
|
146
|
+
},
|
|
147
|
+
}],
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
logger.info('Register SAP Agent prompt registered');
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=register-sap-agent.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-sap-agent.prompt.js","sourceRoot":"","sources":["../../../src/prompts/registry/register-sap-agent.prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name RemoteAuth
|
|
3
|
+
* @description Authentication primitives for remote MCP server access control.
|
|
4
|
+
*/
|
|
5
|
+
import type { IncomingHttpHeaders } from 'http';
|
|
6
|
+
/**
|
|
7
|
+
* @name AuthResult
|
|
8
|
+
* @description Result of a remote authentication attempt.
|
|
9
|
+
*/
|
|
10
|
+
export interface AuthResult {
|
|
11
|
+
success: boolean;
|
|
12
|
+
userId?: string;
|
|
13
|
+
error?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @name ApiKeyAuthConfig
|
|
17
|
+
* @description API-key authentication configuration mapping bearer tokens to user identifiers.
|
|
18
|
+
*/
|
|
19
|
+
export interface ApiKeyAuthConfig {
|
|
20
|
+
type: 'api_key';
|
|
21
|
+
keys: ReadonlyMap<string, string>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @name JwtAuthConfig
|
|
25
|
+
* @description HMAC-SHA256 JWT authentication configuration.
|
|
26
|
+
*/
|
|
27
|
+
export interface JwtAuthConfig {
|
|
28
|
+
type: 'jwt';
|
|
29
|
+
secret: string;
|
|
30
|
+
issuer: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* @name NoAuthConfig
|
|
34
|
+
* @description Public bearerless MCP mode for agent-facing x402-first deployments.
|
|
35
|
+
*/
|
|
36
|
+
export interface NoAuthConfig {
|
|
37
|
+
type: 'none';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @name RemoteAuthConfig
|
|
41
|
+
* @description Supported remote authentication strategies.
|
|
42
|
+
*/
|
|
43
|
+
export type RemoteAuthConfig = ApiKeyAuthConfig | JwtAuthConfig | NoAuthConfig;
|
|
44
|
+
/**
|
|
45
|
+
* @name APIKeyAuth
|
|
46
|
+
* @description Validates bearer tokens against a configured API-key map.
|
|
47
|
+
*/
|
|
48
|
+
export declare class APIKeyAuth {
|
|
49
|
+
private readonly keys;
|
|
50
|
+
constructor(keys: ReadonlyMap<string, string>);
|
|
51
|
+
/**
|
|
52
|
+
* @name validate
|
|
53
|
+
* @description Checks whether an API key exists in the configured key map.
|
|
54
|
+
*/
|
|
55
|
+
validate(apiKey: string): AuthResult;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @name JWTAuth
|
|
59
|
+
* @description Validates HMAC-SHA256 bearer JWTs with issuer and expiration checks.
|
|
60
|
+
*/
|
|
61
|
+
export declare class JWTAuth {
|
|
62
|
+
private readonly secret;
|
|
63
|
+
private readonly issuer;
|
|
64
|
+
constructor(secret: string, issuer: string);
|
|
65
|
+
/**
|
|
66
|
+
* @name validate
|
|
67
|
+
* @description Verifies JWT structure, signature, issuer, subject, and expiration.
|
|
68
|
+
*/
|
|
69
|
+
validate(token: string): AuthResult;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @name AuthManager
|
|
73
|
+
* @description Validates remote MCP request headers through the configured authentication strategy.
|
|
74
|
+
*/
|
|
75
|
+
export declare class AuthManager {
|
|
76
|
+
private readonly apiKeyAuth?;
|
|
77
|
+
private readonly jwtAuth?;
|
|
78
|
+
private readonly publicAccess;
|
|
79
|
+
constructor(config: RemoteAuthConfig);
|
|
80
|
+
/**
|
|
81
|
+
* @name validateFromHeaders
|
|
82
|
+
* @description Validates remote access through the configured authentication strategy.
|
|
83
|
+
*/
|
|
84
|
+
validateFromHeaders(headers: IncomingHttpHeaders): AuthResult;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remote/auth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,CAAC;AAE/E;;;GAGG;AACH,qBAAa,UAAU;IACF,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAErE;;;OAGG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;CAO5C;AA+CD;;;GAGG;AACH,qBAAa,OAAO;IAEhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;IAGjC;;;OAGG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;CAsC3C;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAEpB,MAAM,EAAE,gBAAgB;IAY3C;;;OAGG;IACI,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,UAAU;CAwBrE"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name RemoteAuth
|
|
3
|
+
* @description Authentication primitives for remote MCP server access control.
|
|
4
|
+
*/
|
|
5
|
+
import { createHmac, timingSafeEqual } from 'crypto';
|
|
6
|
+
/**
|
|
7
|
+
* @name APIKeyAuth
|
|
8
|
+
* @description Validates bearer tokens against a configured API-key map.
|
|
9
|
+
*/
|
|
10
|
+
export class APIKeyAuth {
|
|
11
|
+
keys;
|
|
12
|
+
constructor(keys) {
|
|
13
|
+
this.keys = keys;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @name validate
|
|
17
|
+
* @description Checks whether an API key exists in the configured key map.
|
|
18
|
+
*/
|
|
19
|
+
validate(apiKey) {
|
|
20
|
+
const userId = this.keys.get(apiKey);
|
|
21
|
+
if (!userId) {
|
|
22
|
+
return { success: false, error: 'Invalid API key' };
|
|
23
|
+
}
|
|
24
|
+
return { success: true, userId };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @name isJwtPayload
|
|
29
|
+
* @description Narrows an unknown JSON value to the JWT payload shape used by the server.
|
|
30
|
+
*/
|
|
31
|
+
function isJwtPayload(value) {
|
|
32
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
const record = value;
|
|
36
|
+
return ((record.iss === undefined || typeof record.iss === 'string') &&
|
|
37
|
+
(record.sub === undefined || typeof record.sub === 'string') &&
|
|
38
|
+
(record.exp === undefined || typeof record.exp === 'number'));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @name decodeJsonSegment
|
|
42
|
+
* @description Decodes a base64url JWT segment into a typed JSON object.
|
|
43
|
+
*/
|
|
44
|
+
function decodeJsonSegment(segment) {
|
|
45
|
+
const json = Buffer.from(segment, 'base64url').toString('utf8');
|
|
46
|
+
return JSON.parse(json);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @name constantTimeEquals
|
|
50
|
+
* @description Compares base64url signatures without leaking timing information.
|
|
51
|
+
*/
|
|
52
|
+
function constantTimeEquals(left, right) {
|
|
53
|
+
const leftBuffer = Buffer.from(left);
|
|
54
|
+
const rightBuffer = Buffer.from(right);
|
|
55
|
+
return leftBuffer.length === rightBuffer.length && timingSafeEqual(leftBuffer, rightBuffer);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @name JWTAuth
|
|
59
|
+
* @description Validates HMAC-SHA256 bearer JWTs with issuer and expiration checks.
|
|
60
|
+
*/
|
|
61
|
+
export class JWTAuth {
|
|
62
|
+
secret;
|
|
63
|
+
issuer;
|
|
64
|
+
constructor(secret, issuer) {
|
|
65
|
+
this.secret = secret;
|
|
66
|
+
this.issuer = issuer;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @name validate
|
|
70
|
+
* @description Verifies JWT structure, signature, issuer, subject, and expiration.
|
|
71
|
+
*/
|
|
72
|
+
validate(token) {
|
|
73
|
+
const parts = token.split('.');
|
|
74
|
+
if (parts.length !== 3) {
|
|
75
|
+
return { success: false, error: 'Invalid JWT format' };
|
|
76
|
+
}
|
|
77
|
+
const [headerSegment, payloadSegment, signatureSegment] = parts;
|
|
78
|
+
try {
|
|
79
|
+
const payload = decodeJsonSegment(payloadSegment);
|
|
80
|
+
if (!isJwtPayload(payload)) {
|
|
81
|
+
return { success: false, error: 'Invalid JWT payload' };
|
|
82
|
+
}
|
|
83
|
+
if (payload.iss !== this.issuer) {
|
|
84
|
+
return { success: false, error: 'Invalid token issuer' };
|
|
85
|
+
}
|
|
86
|
+
if (!payload.sub) {
|
|
87
|
+
return { success: false, error: 'Missing token subject' };
|
|
88
|
+
}
|
|
89
|
+
if (payload.exp !== undefined && payload.exp < Date.now() / 1000) {
|
|
90
|
+
return { success: false, error: 'Token expired' };
|
|
91
|
+
}
|
|
92
|
+
const expectedSignature = createHmac('sha256', this.secret)
|
|
93
|
+
.update(`${headerSegment}.${payloadSegment}`)
|
|
94
|
+
.digest('base64url');
|
|
95
|
+
if (!constantTimeEquals(signatureSegment, expectedSignature)) {
|
|
96
|
+
return { success: false, error: 'Invalid signature' };
|
|
97
|
+
}
|
|
98
|
+
return { success: true, userId: payload.sub };
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
error: error instanceof Error ? error.message : 'JWT validation failed',
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* @name AuthManager
|
|
110
|
+
* @description Validates remote MCP request headers through the configured authentication strategy.
|
|
111
|
+
*/
|
|
112
|
+
export class AuthManager {
|
|
113
|
+
apiKeyAuth;
|
|
114
|
+
jwtAuth;
|
|
115
|
+
publicAccess;
|
|
116
|
+
constructor(config) {
|
|
117
|
+
this.publicAccess = config.type === 'none';
|
|
118
|
+
if (config.type === 'none') {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (config.type === 'api_key') {
|
|
122
|
+
this.apiKeyAuth = new APIKeyAuth(config.keys);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
this.jwtAuth = new JWTAuth(config.secret, config.issuer);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* @name validateFromHeaders
|
|
129
|
+
* @description Validates remote access through the configured authentication strategy.
|
|
130
|
+
*/
|
|
131
|
+
validateFromHeaders(headers) {
|
|
132
|
+
if (this.publicAccess) {
|
|
133
|
+
return { success: true, userId: 'anonymous' };
|
|
134
|
+
}
|
|
135
|
+
const authHeader = headers.authorization;
|
|
136
|
+
if (!authHeader) {
|
|
137
|
+
return { success: false, error: 'Missing authorization header' };
|
|
138
|
+
}
|
|
139
|
+
const [scheme, credentials] = authHeader.split(/\s+/, 2);
|
|
140
|
+
if (scheme !== 'Bearer' || !credentials) {
|
|
141
|
+
return { success: false, error: 'Unsupported auth type' };
|
|
142
|
+
}
|
|
143
|
+
if (this.apiKeyAuth) {
|
|
144
|
+
return this.apiKeyAuth.validate(credentials);
|
|
145
|
+
}
|
|
146
|
+
if (this.jwtAuth) {
|
|
147
|
+
return this.jwtAuth.validate(credentials);
|
|
148
|
+
}
|
|
149
|
+
return { success: false, error: 'No authentication method configured' };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remote/auth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @name RemoteMCPServer
|
|
4
|
+
* @description Streamable HTTP entrypoint for remote SAP MCP deployments.
|
|
5
|
+
*/
|
|
6
|
+
import * as http from 'http';
|
|
7
|
+
import { type SapMcpConfig } from '../config/env.js';
|
|
8
|
+
import { type RemoteAuthConfig } from './auth/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* @name RemoteMCPConfig
|
|
11
|
+
* @description Resolved runtime configuration for the remote MCP HTTP server.
|
|
12
|
+
*/
|
|
13
|
+
export interface RemoteMCPConfig {
|
|
14
|
+
port: number;
|
|
15
|
+
host: string;
|
|
16
|
+
corsOrigins?: string[];
|
|
17
|
+
auth: RemoteAuthConfig;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @name A2AAgentCard
|
|
21
|
+
* @description Public discovery document returned for A2A-compatible orchestrators.
|
|
22
|
+
*/
|
|
23
|
+
export interface A2AAgentCard {
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
url: string;
|
|
27
|
+
version: string;
|
|
28
|
+
protocol: {
|
|
29
|
+
primary: 'mcp';
|
|
30
|
+
transport: 'streamable-http';
|
|
31
|
+
endpoint: string;
|
|
32
|
+
};
|
|
33
|
+
capabilities: {
|
|
34
|
+
streaming: boolean;
|
|
35
|
+
tools: boolean;
|
|
36
|
+
resources: boolean;
|
|
37
|
+
prompts: boolean;
|
|
38
|
+
authenticated: boolean;
|
|
39
|
+
};
|
|
40
|
+
authentication: {
|
|
41
|
+
schemes: readonly ('Bearer' | 'x402' | 'none')[];
|
|
42
|
+
required: boolean;
|
|
43
|
+
};
|
|
44
|
+
defaultInputModes: readonly ['application/json'];
|
|
45
|
+
defaultOutputModes: readonly ['application/json', 'text/event-stream'];
|
|
46
|
+
skills: ReadonlyArray<{
|
|
47
|
+
id: string;
|
|
48
|
+
name: string;
|
|
49
|
+
description: string;
|
|
50
|
+
tags: readonly string[];
|
|
51
|
+
}>;
|
|
52
|
+
setup: {
|
|
53
|
+
wizard: WizardInstallDescriptor;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @name WizardInstallDescriptor
|
|
58
|
+
* @description Public hosted metadata that tells agents and users how to install the local SAP MCP wizard.
|
|
59
|
+
*/
|
|
60
|
+
export interface WizardInstallDescriptor {
|
|
61
|
+
name: 'SAP MCP Wizard';
|
|
62
|
+
version: string;
|
|
63
|
+
packageName: '@oobe-protocol-labs/sap-mcp-server';
|
|
64
|
+
hostedMcpUrl: string;
|
|
65
|
+
configDirectory: '~/.config/mcp-sap';
|
|
66
|
+
requiredFor: readonly string[];
|
|
67
|
+
endpoints: {
|
|
68
|
+
descriptor: string;
|
|
69
|
+
installScript: string;
|
|
70
|
+
mcp: string;
|
|
71
|
+
};
|
|
72
|
+
commands: {
|
|
73
|
+
runWizard: string;
|
|
74
|
+
showConfig: string;
|
|
75
|
+
showProfile: string;
|
|
76
|
+
};
|
|
77
|
+
security: {
|
|
78
|
+
keypairBytesExposed: false;
|
|
79
|
+
modifiesSolanaCliKeypair: false;
|
|
80
|
+
signerLocation: 'user-machine-or-external-signer';
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @name parseApiKeys
|
|
85
|
+
* @description Parses comma-separated `apiKey=userId` entries from environment configuration.
|
|
86
|
+
*/
|
|
87
|
+
export declare function parseApiKeys(raw: string | undefined): Map<string, string>;
|
|
88
|
+
/**
|
|
89
|
+
* @name defaultRemoteConfig
|
|
90
|
+
* @description Builds remote-server configuration from SAP config plus remote-specific environment values.
|
|
91
|
+
*/
|
|
92
|
+
export declare function defaultRemoteConfig(appConfig: SapMcpConfig): RemoteMCPConfig;
|
|
93
|
+
/**
|
|
94
|
+
* @name buildA2AAgentCard
|
|
95
|
+
* @description Builds the public A2A-compatible agent-card document for remote discovery.
|
|
96
|
+
*/
|
|
97
|
+
export declare function buildA2AAgentCard(req: http.IncomingMessage, config: RemoteMCPConfig): A2AAgentCard;
|
|
98
|
+
/**
|
|
99
|
+
* @name buildWizardInstallDescriptor
|
|
100
|
+
* @description Builds the public wizard installation descriptor used by agents when local SAP MCP config is missing.
|
|
101
|
+
*/
|
|
102
|
+
export declare function buildWizardInstallDescriptor(req: http.IncomingMessage, config: RemoteMCPConfig): WizardInstallDescriptor;
|
|
103
|
+
/**
|
|
104
|
+
* @name buildWizardInstallScript
|
|
105
|
+
* @description Builds a small shell launcher that downloads the npm package and starts the wizard.
|
|
106
|
+
*/
|
|
107
|
+
export declare function buildWizardInstallScript(req: http.IncomingMessage, config: RemoteMCPConfig): string;
|
|
108
|
+
/**
|
|
109
|
+
* @name RemoteMCPServer
|
|
110
|
+
* @description Remote MCP server backed by the official Streamable HTTP transport.
|
|
111
|
+
*/
|
|
112
|
+
export declare class RemoteMCPServer {
|
|
113
|
+
private readonly config;
|
|
114
|
+
private readonly appConfig;
|
|
115
|
+
private readonly authManager;
|
|
116
|
+
private transport?;
|
|
117
|
+
private httpServer?;
|
|
118
|
+
constructor(config?: RemoteMCPConfig);
|
|
119
|
+
/**
|
|
120
|
+
* @name start
|
|
121
|
+
* @description Starts the remote MCP endpoint, health check, and A2A discovery routes.
|
|
122
|
+
*/
|
|
123
|
+
start(): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* @name stop
|
|
126
|
+
* @description Gracefully closes the MCP transport and HTTP listener.
|
|
127
|
+
*/
|
|
128
|
+
stop(): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* @name validateAuthConfig
|
|
131
|
+
* @description Fails startup when configured remote authentication is incomplete.
|
|
132
|
+
*/
|
|
133
|
+
private validateAuthConfig;
|
|
134
|
+
/**
|
|
135
|
+
* @name applyCors
|
|
136
|
+
* @description Applies configured CORS headers and handles preflight requests.
|
|
137
|
+
*/
|
|
138
|
+
private applyCors;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/remote/server.ts"],"names":[],"mappings":"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"}
|