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