@oobe-protocol-labs/sap-mcp-server 0.9.16 → 0.9.20
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 +8 -7
- package/CHANGELOG.md +199 -0
- package/README.md +3 -3
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
- package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
- package/USER_DOCS/05_SKILLS_AND_TOOLS.md +16 -8
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
- package/config.example.json +5 -4
- package/config.schema.json +7 -2
- package/config.secure-example.json +5 -4
- package/dist/adapters/index.d.ts +7 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +7 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/mcp/errors.d.ts +13 -1
- package/dist/adapters/mcp/errors.d.ts.map +1 -1
- package/dist/adapters/mcp/errors.js +13 -1
- package/dist/adapters/mcp/errors.js.map +1 -1
- package/dist/adapters/mcp/index.d.ts +7 -1
- package/dist/adapters/mcp/index.d.ts.map +1 -1
- package/dist/adapters/mcp/index.js +7 -1
- package/dist/adapters/mcp/index.js.map +1 -1
- package/dist/adapters/mcp/prompt-response.d.ts +13 -1
- package/dist/adapters/mcp/prompt-response.d.ts.map +1 -1
- package/dist/adapters/mcp/prompt-response.js +13 -1
- package/dist/adapters/mcp/prompt-response.js.map +1 -1
- package/dist/adapters/mcp/resource-response.d.ts +14 -1
- package/dist/adapters/mcp/resource-response.d.ts.map +1 -1
- package/dist/adapters/mcp/resource-response.js +14 -1
- package/dist/adapters/mcp/resource-response.js.map +1 -1
- package/dist/adapters/mcp/sdk-compat.d.ts +11 -3
- package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -1
- package/dist/adapters/mcp/sdk-compat.js +213 -24
- package/dist/adapters/mcp/sdk-compat.js.map +1 -1
- package/dist/adapters/mcp/tool-response.d.ts +39 -4
- package/dist/adapters/mcp/tool-response.d.ts.map +1 -1
- package/dist/adapters/mcp/tool-response.js +39 -4
- package/dist/adapters/mcp/tool-response.js.map +1 -1
- package/dist/adapters/solana/commitment.d.ts +14 -2
- package/dist/adapters/solana/commitment.d.ts.map +1 -1
- package/dist/adapters/solana/commitment.js +14 -2
- package/dist/adapters/solana/commitment.js.map +1 -1
- package/dist/adapters/solana/connection.d.ts +11 -2
- package/dist/adapters/solana/connection.d.ts.map +1 -1
- package/dist/adapters/solana/connection.js +11 -2
- package/dist/adapters/solana/connection.js.map +1 -1
- package/dist/adapters/solana/index.d.ts +7 -1
- package/dist/adapters/solana/index.d.ts.map +1 -1
- package/dist/adapters/solana/index.js +7 -1
- package/dist/adapters/solana/index.js.map +1 -1
- package/dist/adapters/solana/public-key.d.ts +11 -2
- package/dist/adapters/solana/public-key.d.ts.map +1 -1
- package/dist/adapters/solana/public-key.js +11 -2
- package/dist/adapters/solana/public-key.js.map +1 -1
- package/dist/config/defaults.d.ts +5 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +5 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/env.d.ts +4 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +11 -6
- package/dist/config/env.js.map +1 -1
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-client-injection.d.ts.map +1 -1
- package/dist/config/mcp-client-injection.js +97 -1
- package/dist/config/mcp-client-injection.js.map +1 -1
- package/dist/config/paths.d.ts +5 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +5 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/profiles.d.ts +3 -10
- package/dist/config/profiles.d.ts.map +1 -1
- package/dist/config/profiles.js +5 -0
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/schema.d.ts +5 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +5 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/config/secure-config.d.ts +5 -0
- package/dist/config/secure-config.d.ts.map +1 -1
- package/dist/config/secure-config.js +5 -0
- package/dist/config/secure-config.js.map +1 -1
- package/dist/config/setup.d.ts +5 -0
- package/dist/config/setup.d.ts.map +1 -1
- package/dist/config/setup.js +5 -0
- package/dist/config/setup.js.map +1 -1
- package/dist/config-cli.d.ts +3 -13
- package/dist/config-cli.d.ts.map +1 -1
- package/dist/config-cli.js +5 -0
- package/dist/config-cli.js.map +1 -1
- package/dist/core/constants.d.ts +25 -6
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +27 -8
- package/dist/core/constants.js.map +1 -1
- package/dist/core/errors.d.ts +5 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +5 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/guards.d.ts +5 -0
- package/dist/core/guards.d.ts.map +1 -1
- package/dist/core/guards.js +3 -1
- package/dist/core/guards.js.map +1 -1
- package/dist/core/index.d.ts +7 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/logger.js +1 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/result.d.ts +77 -9
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/result.js +68 -9
- package/dist/core/result.js.map +1 -1
- package/dist/core/types.d.ts +5 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +3 -4
- package/dist/core/types.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/payments/facilitator-rpc-fallback.d.ts.map +1 -1
- package/dist/payments/facilitator-rpc-fallback.js +95 -0
- package/dist/payments/facilitator-rpc-fallback.js.map +1 -1
- package/dist/payments/hosted-tool-eligibility.d.ts +1 -0
- package/dist/payments/hosted-tool-eligibility.d.ts.map +1 -1
- package/dist/payments/hosted-tool-eligibility.js +1 -0
- package/dist/payments/hosted-tool-eligibility.js.map +1 -1
- package/dist/payments/mcp-session-cache.d.ts +35 -0
- package/dist/payments/mcp-session-cache.d.ts.map +1 -0
- package/dist/payments/mcp-session-cache.js +83 -0
- package/dist/payments/mcp-session-cache.js.map +1 -0
- package/dist/payments/monetization-gate.d.ts +5 -0
- package/dist/payments/monetization-gate.d.ts.map +1 -1
- package/dist/payments/monetization-gate.js +24 -1
- package/dist/payments/monetization-gate.js.map +1 -1
- package/dist/payments/pricing.d.ts +1 -0
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +64 -8
- package/dist/payments/pricing.js.map +1 -1
- package/dist/payments/usage-ledger.d.ts +36 -2
- package/dist/payments/usage-ledger.d.ts.map +1 -1
- package/dist/payments/usage-ledger.js +121 -4
- package/dist/payments/usage-ledger.js.map +1 -1
- package/dist/payments/x402-paid-call.d.ts +50 -0
- package/dist/payments/x402-paid-call.d.ts.map +1 -1
- package/dist/payments/x402-paid-call.js +171 -0
- package/dist/payments/x402-paid-call.js.map +1 -1
- package/dist/policy/default-policies.d.ts +18 -2
- package/dist/policy/default-policies.d.ts.map +1 -1
- package/dist/policy/default-policies.js +18 -2
- package/dist/policy/default-policies.js.map +1 -1
- package/dist/policy/index.d.ts +6 -3
- package/dist/policy/index.d.ts.map +1 -1
- package/dist/policy/index.js +6 -3
- package/dist/policy/index.js.map +1 -1
- package/dist/policy/local-policy-engine.d.ts +71 -13
- package/dist/policy/local-policy-engine.d.ts.map +1 -1
- package/dist/policy/local-policy-engine.js +33 -11
- package/dist/policy/local-policy-engine.js.map +1 -1
- package/dist/policy/permission-checks.d.ts +29 -3
- package/dist/policy/permission-checks.d.ts.map +1 -1
- package/dist/policy/permission-checks.js +29 -3
- package/dist/policy/permission-checks.js.map +1 -1
- package/dist/policy/policy-engine.d.ts +22 -2
- package/dist/policy/policy-engine.d.ts.map +1 -1
- package/dist/policy/policy-engine.js +22 -2
- package/dist/policy/policy-engine.js.map +1 -1
- package/dist/policy/policy-types.d.ts +55 -5
- package/dist/policy/policy-types.d.ts.map +1 -1
- package/dist/policy/policy-types.js +8 -1
- package/dist/policy/policy-types.js.map +1 -1
- package/dist/policy/risk-level.d.ts +32 -3
- package/dist/policy/risk-level.d.ts.map +1 -1
- package/dist/policy/risk-level.js +32 -3
- package/dist/policy/risk-level.js.map +1 -1
- package/dist/policy/spending-limits.d.ts +29 -3
- package/dist/policy/spending-limits.d.ts.map +1 -1
- package/dist/policy/spending-limits.js +29 -3
- package/dist/policy/spending-limits.js.map +1 -1
- package/dist/premium/activation-manager.d.ts +43 -0
- package/dist/premium/activation-manager.d.ts.map +1 -0
- package/dist/premium/activation-manager.js +131 -0
- package/dist/premium/activation-manager.js.map +1 -0
- package/dist/premium/builtin-plugins.d.ts +143 -0
- package/dist/premium/builtin-plugins.d.ts.map +1 -0
- package/dist/premium/builtin-plugins.js +394 -0
- package/dist/premium/builtin-plugins.js.map +1 -0
- package/dist/premium/event-store.d.ts +61 -0
- package/dist/premium/event-store.d.ts.map +1 -0
- package/dist/premium/event-store.js +130 -0
- package/dist/premium/event-store.js.map +1 -0
- package/dist/premium/index.d.ts +54 -0
- package/dist/premium/index.d.ts.map +1 -0
- package/dist/premium/index.js +54 -0
- package/dist/premium/index.js.map +1 -0
- package/dist/premium/manifest-builder.d.ts +65 -0
- package/dist/premium/manifest-builder.d.ts.map +1 -0
- package/dist/premium/manifest-builder.js +182 -0
- package/dist/premium/manifest-builder.js.map +1 -0
- package/dist/premium/meme-radar-capabilities.d.ts +38 -0
- package/dist/premium/meme-radar-capabilities.d.ts.map +1 -0
- package/dist/premium/meme-radar-capabilities.js +306 -0
- package/dist/premium/meme-radar-capabilities.js.map +1 -0
- package/dist/premium/metrics.d.ts +27 -0
- package/dist/premium/metrics.d.ts.map +1 -0
- package/dist/premium/metrics.js +65 -0
- package/dist/premium/metrics.js.map +1 -0
- package/dist/premium/plugin-validator.d.ts +39 -0
- package/dist/premium/plugin-validator.d.ts.map +1 -0
- package/dist/premium/plugin-validator.js +325 -0
- package/dist/premium/plugin-validator.js.map +1 -0
- package/dist/premium/private-manifest-loader.d.ts +111 -0
- package/dist/premium/private-manifest-loader.d.ts.map +1 -0
- package/dist/premium/private-manifest-loader.js +285 -0
- package/dist/premium/private-manifest-loader.js.map +1 -0
- package/dist/premium/provider-bridge.d.ts +109 -0
- package/dist/premium/provider-bridge.d.ts.map +1 -0
- package/dist/premium/provider-bridge.js +239 -0
- package/dist/premium/provider-bridge.js.map +1 -0
- package/dist/premium/session-manager.d.ts +125 -0
- package/dist/premium/session-manager.d.ts.map +1 -0
- package/dist/premium/session-manager.js +337 -0
- package/dist/premium/session-manager.js.map +1 -0
- package/dist/premium/stream-broker.d.ts +98 -0
- package/dist/premium/stream-broker.d.ts.map +1 -0
- package/dist/premium/stream-broker.js +199 -0
- package/dist/premium/stream-broker.js.map +1 -0
- package/dist/premium/tech-fundamentals-capabilities.d.ts +37 -0
- package/dist/premium/tech-fundamentals-capabilities.d.ts.map +1 -0
- package/dist/premium/tech-fundamentals-capabilities.js +283 -0
- package/dist/premium/tech-fundamentals-capabilities.js.map +1 -0
- package/dist/premium/trading-capabilities.d.ts +36 -0
- package/dist/premium/trading-capabilities.d.ts.map +1 -0
- package/dist/premium/trading-capabilities.js +205 -0
- package/dist/premium/trading-capabilities.js.map +1 -0
- package/dist/premium/types.d.ts +518 -0
- package/dist/premium/types.d.ts.map +1 -0
- package/dist/premium/types.js +23 -0
- package/dist/premium/types.js.map +1 -0
- package/dist/premium/webhook-engine.d.ts +102 -0
- package/dist/premium/webhook-engine.d.ts.map +1 -0
- package/dist/premium/webhook-engine.js +382 -0
- package/dist/premium/webhook-engine.js.map +1 -0
- package/dist/prompts/context/sap-agent-context.prompt.d.ts +5 -0
- package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -1
- package/dist/prompts/context/sap-agent-context.prompt.js +2 -8
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
- package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts +14 -0
- package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts.map +1 -0
- package/dist/prompts/context/sap-agent-intent-router.prompt.js +155 -0
- package/dist/prompts/context/sap-agent-intent-router.prompt.js.map +1 -0
- package/dist/prompts/context/sap-agent-start.prompt.js +1 -0
- package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -1
- package/dist/prompts/developer/debug-sap-error.prompt.d.ts +5 -0
- package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -1
- package/dist/prompts/developer/debug-sap-error.prompt.js +3 -4
- package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -1
- package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +5 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -1
- package/dist/prompts/developer/generate-sap-integration.prompt.js +3 -4
- package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
- package/dist/prompts/developer/index.d.ts +4 -1
- package/dist/prompts/developer/index.d.ts.map +1 -1
- package/dist/prompts/developer/index.js +4 -1
- package/dist/prompts/developer/index.js.map +1 -1
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +5 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -1
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +3 -4
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -1
- package/dist/prompts/execution-proof/index.d.ts +4 -1
- package/dist/prompts/execution-proof/index.d.ts.map +1 -1
- package/dist/prompts/execution-proof/index.js +4 -1
- package/dist/prompts/execution-proof/index.js.map +1 -1
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +5 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -1
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +3 -4
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -1
- package/dist/prompts/index.d.ts +4 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +4 -1
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/payments/create-paid-api.prompt.d.ts +5 -0
- package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -1
- package/dist/prompts/payments/create-paid-api.prompt.js +3 -4
- package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -1
- package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +5 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -1
- package/dist/prompts/payments/explain-x402-settlement.prompt.js +3 -4
- package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
- package/dist/prompts/payments/index.d.ts +4 -1
- package/dist/prompts/payments/index.d.ts.map +1 -1
- package/dist/prompts/payments/index.js +4 -1
- package/dist/prompts/payments/index.js.map +1 -1
- package/dist/prompts/register-prompts.d.ts +18 -2
- package/dist/prompts/register-prompts.d.ts.map +1 -1
- package/dist/prompts/register-prompts.js +21 -3
- package/dist/prompts/register-prompts.js.map +1 -1
- package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +5 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -1
- package/dist/prompts/registry/analyze-sap-agent.prompt.js +3 -4
- package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -1
- package/dist/prompts/registry/index.d.ts +4 -1
- package/dist/prompts/registry/index.d.ts.map +1 -1
- package/dist/prompts/registry/index.js +4 -1
- package/dist/prompts/registry/index.js.map +1 -1
- package/dist/prompts/registry/register-sap-agent.prompt.d.ts +5 -0
- package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -1
- package/dist/prompts/registry/register-sap-agent.prompt.js +3 -4
- package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -1
- package/dist/remote/premium-memory.d.ts +90 -0
- package/dist/remote/premium-memory.d.ts.map +1 -0
- package/dist/remote/premium-memory.js +161 -0
- package/dist/remote/premium-memory.js.map +1 -0
- package/dist/remote/premium-routes.d.ts +99 -0
- package/dist/remote/premium-routes.d.ts.map +1 -0
- package/dist/remote/premium-routes.js +346 -0
- package/dist/remote/premium-routes.js.map +1 -0
- package/dist/remote/public-home/sections.d.ts.map +1 -1
- package/dist/remote/public-home/sections.js +7 -1
- package/dist/remote/public-home/sections.js.map +1 -1
- package/dist/remote/public-home/types.d.ts +6 -0
- package/dist/remote/public-home/types.d.ts.map +1 -1
- package/dist/remote/server.d.ts +18 -0
- package/dist/remote/server.d.ts.map +1 -1
- package/dist/remote/server.js +298 -116
- package/dist/remote/server.js.map +1 -1
- package/dist/remote/tx-relay.d.ts +42 -0
- package/dist/remote/tx-relay.d.ts.map +1 -0
- package/dist/remote/tx-relay.js +118 -0
- package/dist/remote/tx-relay.js.map +1 -0
- package/dist/resources/current/sap-current-config.resource.d.ts +5 -0
- package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -1
- package/dist/resources/current/sap-current-config.resource.js +2 -5
- package/dist/resources/current/sap-current-config.resource.js.map +1 -1
- package/dist/resources/execution-proof/index.d.ts +5 -0
- package/dist/resources/execution-proof/index.d.ts.map +1 -1
- package/dist/resources/execution-proof/index.js +5 -0
- package/dist/resources/execution-proof/index.js.map +1 -1
- package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +5 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -1
- package/dist/resources/execution-proof/sap-execution-record.resource.js +3 -4
- package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -1
- package/dist/resources/index.d.ts +5 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +5 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/memory/index.d.ts +5 -0
- package/dist/resources/memory/index.d.ts.map +1 -1
- package/dist/resources/memory/index.js +5 -0
- package/dist/resources/memory/index.js.map +1 -1
- package/dist/resources/memory/sap-memory.resource.d.ts +5 -0
- package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -1
- package/dist/resources/memory/sap-memory.resource.js +3 -4
- package/dist/resources/memory/sap-memory.resource.js.map +1 -1
- package/dist/resources/profile/sap-active-profile.resource.d.ts +5 -0
- package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -1
- package/dist/resources/profile/sap-active-profile.resource.js +2 -5
- package/dist/resources/profile/sap-active-profile.resource.js.map +1 -1
- package/dist/resources/register-resources.d.ts +5 -0
- package/dist/resources/register-resources.d.ts.map +1 -1
- package/dist/resources/register-resources.js +3 -1
- package/dist/resources/register-resources.js.map +1 -1
- package/dist/resources/registry/index.d.ts +5 -0
- package/dist/resources/registry/index.d.ts.map +1 -1
- package/dist/resources/registry/index.js +5 -0
- package/dist/resources/registry/index.js.map +1 -1
- package/dist/resources/registry/sap-agent.resource.d.ts +5 -0
- package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -1
- package/dist/resources/registry/sap-agent.resource.js +3 -4
- package/dist/resources/registry/sap-agent.resource.js.map +1 -1
- package/dist/resources/registry/sap-global-registry.resource.d.ts +18 -4
- package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -1
- package/dist/resources/registry/sap-global-registry.resource.js +18 -4
- package/dist/resources/registry/sap-global-registry.resource.js.map +1 -1
- package/dist/resources/reputation/index.d.ts +4 -1
- package/dist/resources/reputation/index.d.ts.map +1 -1
- package/dist/resources/reputation/index.js +4 -1
- package/dist/resources/reputation/index.js.map +1 -1
- package/dist/resources/reputation/sap-reputation.resource.d.ts +18 -4
- package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -1
- package/dist/resources/reputation/sap-reputation.resource.js +18 -4
- package/dist/resources/reputation/sap-reputation.resource.js.map +1 -1
- package/dist/resources/tool-schema/index.d.ts +4 -1
- package/dist/resources/tool-schema/index.d.ts.map +1 -1
- package/dist/resources/tool-schema/index.js +4 -1
- package/dist/resources/tool-schema/index.js.map +1 -1
- package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +18 -4
- package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -1
- package/dist/resources/tool-schema/sap-tool-schema.resource.js +18 -4
- package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -1
- package/dist/sap/index.d.ts +7 -1
- package/dist/sap/index.d.ts.map +1 -1
- package/dist/sap/index.js +7 -1
- package/dist/sap/index.js.map +1 -1
- package/dist/sap/sap-client-manager.d.ts +80 -13
- package/dist/sap/sap-client-manager.d.ts.map +1 -1
- package/dist/sap/sap-client-manager.js +80 -13
- package/dist/sap/sap-client-manager.js.map +1 -1
- package/dist/sap/sap-errors.d.ts +22 -3
- package/dist/sap/sap-errors.d.ts.map +1 -1
- package/dist/sap/sap-errors.js +22 -3
- package/dist/sap/sap-errors.js.map +1 -1
- package/dist/sap/sap-types.d.ts +75 -6
- package/dist/sap/sap-types.d.ts.map +1 -1
- package/dist/sap/sap-types.js +11 -1
- package/dist/sap/sap-types.js.map +1 -1
- package/dist/schemas/common.schema.d.ts +45 -8
- package/dist/schemas/common.schema.d.ts.map +1 -1
- package/dist/schemas/common.schema.js +45 -8
- package/dist/schemas/common.schema.js.map +1 -1
- package/dist/schemas/developer.schema.d.ts +22 -3
- package/dist/schemas/developer.schema.d.ts.map +1 -1
- package/dist/schemas/developer.schema.js +22 -3
- package/dist/schemas/developer.schema.js.map +1 -1
- package/dist/schemas/execution-proof.schema.d.ts +29 -4
- package/dist/schemas/execution-proof.schema.d.ts.map +1 -1
- package/dist/schemas/execution-proof.schema.js +29 -4
- package/dist/schemas/execution-proof.schema.js.map +1 -1
- package/dist/schemas/identity.schema.d.ts +23 -3
- package/dist/schemas/identity.schema.d.ts.map +1 -1
- package/dist/schemas/identity.schema.js +23 -3
- package/dist/schemas/identity.schema.js.map +1 -1
- package/dist/schemas/index.d.ts +11 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +11 -1
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/memory.schema.d.ts +23 -3
- package/dist/schemas/memory.schema.d.ts.map +1 -1
- package/dist/schemas/memory.schema.js +23 -3
- package/dist/schemas/memory.schema.js.map +1 -1
- package/dist/schemas/payments.schema.d.ts +24 -3
- package/dist/schemas/payments.schema.d.ts.map +1 -1
- package/dist/schemas/payments.schema.js +24 -3
- package/dist/schemas/payments.schema.js.map +1 -1
- package/dist/schemas/registry.schema.d.ts +36 -4
- package/dist/schemas/registry.schema.d.ts.map +1 -1
- package/dist/schemas/registry.schema.js +36 -4
- package/dist/schemas/registry.schema.js.map +1 -1
- package/dist/schemas/reputation.schema.d.ts +22 -3
- package/dist/schemas/reputation.schema.d.ts.map +1 -1
- package/dist/schemas/reputation.schema.js +22 -3
- package/dist/schemas/reputation.schema.js.map +1 -1
- package/dist/schemas/settlement.schema.d.ts +31 -4
- package/dist/schemas/settlement.schema.d.ts.map +1 -1
- package/dist/schemas/settlement.schema.js +31 -4
- package/dist/schemas/settlement.schema.js.map +1 -1
- package/dist/schemas/tool-schema.schema.d.ts +29 -3
- package/dist/schemas/tool-schema.schema.d.ts.map +1 -1
- package/dist/schemas/tool-schema.schema.js +29 -3
- package/dist/schemas/tool-schema.schema.js.map +1 -1
- package/dist/schemas/transaction.schema.d.ts +23 -3
- package/dist/schemas/transaction.schema.d.ts.map +1 -1
- package/dist/schemas/transaction.schema.js +23 -3
- package/dist/schemas/transaction.schema.js.map +1 -1
- package/dist/security/approval-required.d.ts +19 -2
- package/dist/security/approval-required.d.ts.map +1 -1
- package/dist/security/approval-required.js +19 -2
- package/dist/security/approval-required.js.map +1 -1
- package/dist/security/index.d.ts +7 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +7 -1
- package/dist/security/index.js.map +1 -1
- package/dist/security/private-key-guard.d.ts +18 -2
- package/dist/security/private-key-guard.d.ts.map +1 -1
- package/dist/security/private-key-guard.js +19 -2
- package/dist/security/private-key-guard.js.map +1 -1
- package/dist/security/prompt-injection-notes.d.ts +10 -1
- package/dist/security/prompt-injection-notes.d.ts.map +1 -1
- package/dist/security/prompt-injection-notes.js +10 -1
- package/dist/security/prompt-injection-notes.js.map +1 -1
- package/dist/security/unsafe-action-guard.d.ts +36 -10
- package/dist/security/unsafe-action-guard.d.ts.map +1 -1
- package/dist/security/unsafe-action-guard.js +67 -15
- package/dist/security/unsafe-action-guard.js.map +1 -1
- package/dist/server/create-server.d.ts +18 -3
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +18 -3
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/index.d.ts +6 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +6 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/register-capabilities.d.ts +17 -2
- package/dist/server/register-capabilities.d.ts.map +1 -1
- package/dist/server/register-capabilities.js +17 -2
- package/dist/server/register-capabilities.js.map +1 -1
- package/dist/server/server-metadata.d.ts +34 -1
- package/dist/server/server-metadata.d.ts.map +1 -1
- package/dist/server/server-metadata.js +35 -2
- package/dist/server/server-metadata.js.map +1 -1
- package/dist/session/agent-session.d.ts +35 -4
- package/dist/session/agent-session.d.ts.map +1 -1
- package/dist/session/agent-session.js +35 -4
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/delegated-session.d.ts +31 -3
- package/dist/session/delegated-session.d.ts.map +1 -1
- package/dist/session/delegated-session.js +31 -3
- package/dist/session/delegated-session.js.map +1 -1
- package/dist/session/index.d.ts +7 -1
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +7 -1
- package/dist/session/index.js.map +1 -1
- package/dist/session/redis-session-store.d.ts +94 -21
- package/dist/session/redis-session-store.d.ts.map +1 -1
- package/dist/session/redis-session-store.js +87 -20
- package/dist/session/redis-session-store.js.map +1 -1
- package/dist/session/session-limits.d.ts +34 -4
- package/dist/session/session-limits.d.ts.map +1 -1
- package/dist/session/session-limits.js +34 -4
- package/dist/session/session-limits.js.map +1 -1
- package/dist/session/session-permissions.d.ts +57 -7
- package/dist/session/session-permissions.d.ts.map +1 -1
- package/dist/session/session-permissions.js +57 -7
- package/dist/session/session-permissions.js.map +1 -1
- package/dist/session/session-store.d.ts +9 -1
- package/dist/session/session-store.d.ts.map +1 -1
- package/dist/session/session-store.js +18 -3
- package/dist/session/session-store.js.map +1 -1
- package/dist/session/session-types.d.ts +33 -4
- package/dist/session/session-types.d.ts.map +1 -1
- package/dist/session/session-types.js +9 -1
- package/dist/session/session-types.js.map +1 -1
- package/dist/signer/index.d.ts +7 -1
- package/dist/signer/index.d.ts.map +1 -1
- package/dist/signer/index.js +7 -1
- package/dist/signer/index.js.map +1 -1
- package/dist/signer/load-keypair.d.ts +25 -4
- package/dist/signer/load-keypair.d.ts.map +1 -1
- package/dist/signer/load-keypair.js +25 -4
- package/dist/signer/load-keypair.js.map +1 -1
- package/dist/signer/local-keypair-signer.d.ts +16 -2
- package/dist/signer/local-keypair-signer.d.ts.map +1 -1
- package/dist/signer/local-keypair-signer.js +16 -2
- package/dist/signer/local-keypair-signer.js.map +1 -1
- package/dist/signer/signer-resolver.d.ts +19 -2
- package/dist/signer/signer-resolver.d.ts.map +1 -1
- package/dist/signer/signer-resolver.js +26 -3
- package/dist/signer/signer-resolver.js.map +1 -1
- package/dist/signer/signer-types.d.ts +47 -5
- package/dist/signer/signer-types.d.ts.map +1 -1
- package/dist/signer/signer-types.js +13 -1
- package/dist/signer/signer-types.js.map +1 -1
- package/dist/tools/agent-start-tool.js +20 -1
- package/dist/tools/agent-start-tool.js.map +1 -1
- package/dist/tools/client-sdk-tools.d.ts.map +1 -1
- package/dist/tools/client-sdk-tools.js +27 -2
- package/dist/tools/client-sdk-tools.js.map +1 -1
- package/dist/tools/estimate-tool-cost.d.ts +13 -0
- package/dist/tools/estimate-tool-cost.d.ts.map +1 -0
- package/dist/tools/estimate-tool-cost.js +139 -0
- package/dist/tools/estimate-tool-cost.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/magicblock-tools.d.ts +25 -0
- package/dist/tools/magicblock-tools.d.ts.map +1 -1
- package/dist/tools/magicblock-tools.js +116 -8
- package/dist/tools/magicblock-tools.js.map +1 -1
- package/dist/tools/perp-tools.d.ts +39 -0
- package/dist/tools/perp-tools.d.ts.map +1 -0
- package/dist/tools/perp-tools.js +1110 -0
- package/dist/tools/perp-tools.js.map +1 -0
- package/dist/tools/premium-tools.d.ts +8 -0
- package/dist/tools/premium-tools.d.ts.map +1 -0
- package/dist/tools/premium-tools.js +732 -0
- package/dist/tools/premium-tools.js.map +1 -0
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +9 -0
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
- package/dist/tools/sap-sdk-tools.js +42 -32
- package/dist/tools/sap-sdk-tools.js.map +1 -1
- package/dist/tools/x402-paid-call-tool.js +2 -2
- package/dist/tools/x402-paid-call-tool.js.map +1 -1
- package/dist/transports/index.d.ts +6 -1
- package/dist/transports/index.d.ts.map +1 -1
- package/dist/transports/index.js +6 -1
- package/dist/transports/index.js.map +1 -1
- package/dist/transports/stdio.d.ts +17 -5
- package/dist/transports/stdio.d.ts.map +1 -1
- package/dist/transports/stdio.js +17 -5
- package/dist/transports/stdio.js.map +1 -1
- package/dist/tui/wizard-save.d.ts +88 -8
- package/dist/tui/wizard-save.d.ts.map +1 -1
- package/dist/tui/wizard-save.js +77 -8
- package/dist/tui/wizard-save.js.map +1 -1
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +3 -3
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +4 -1
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +3 -3
- package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +6 -0
- package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
- package/docs/README.md +12 -0
- package/package.json +8 -9
- package/server.json +3 -3
- package/skills/sap-agent-registry/SKILL.md +6 -0
- package/skills/sap-mcp/SKILL.md +27 -4
- package/skills/sap-mcp/TOOL_REFERENCE.md +4 -1
- package/skills/sap-payments-x402/SKILL.md +22 -8
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name session/redis-session-store
|
|
3
|
+
* @description Redis-backed persistent session store for production SAP MCP deployments.
|
|
3
4
|
*
|
|
4
5
|
* Features:
|
|
5
6
|
* - Persistent sessions across server restarts
|
|
@@ -7,28 +8,53 @@
|
|
|
7
8
|
* - Automatic TTL-based expiration
|
|
8
9
|
* - Memory-safe (no local storage)
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* @flow
|
|
12
|
+
* 1. `createSessionStore` checks `SAP_MCP_USE_REDIS` env var and creates a `RedisSessionStore`
|
|
13
|
+
* or returns `null` for in-memory development mode.
|
|
14
|
+
* 2. `RedisSessionStore` manages session CRUD with automatic TTL based on session expiry.
|
|
15
|
+
* 3. A background cleanup interval removes expired sessions periodically.
|
|
16
|
+
*
|
|
17
|
+
* @env `SAP_MCP_USE_REDIS` — Set to `true` to enable Redis session storage.
|
|
18
|
+
* @env `SAP_MCP_REDIS_URL` — Redis connection URL (default `redis://localhost:6379`).
|
|
19
|
+
*
|
|
20
|
+
* @module session/redis-session-store
|
|
16
21
|
*/
|
|
17
22
|
import { Redis } from 'ioredis';
|
|
18
23
|
import { logger } from '../core/logger.js';
|
|
24
|
+
/** @description Default configuration values merged with user-provided config. */
|
|
19
25
|
const DEFAULT_CONFIG = {
|
|
20
26
|
redisUrl: 'redis://localhost:6379',
|
|
21
27
|
keyPrefix: 'sap-mcp:session:',
|
|
22
28
|
cleanupIntervalMs: 60 * 60 * 1000, // 1 hour
|
|
23
29
|
};
|
|
24
30
|
/**
|
|
25
|
-
*
|
|
31
|
+
* @name RedisSessionStore
|
|
32
|
+
* @description Persistent session store backed by Redis with TTL-based expiration and periodic cleanup.
|
|
33
|
+
*
|
|
34
|
+
* @method connect — Establish the Redis connection.
|
|
35
|
+
* @method set — Store a session with TTL derived from its expiry.
|
|
36
|
+
* @method get — Retrieve a session by id.
|
|
37
|
+
* @method delete — Remove a session by id.
|
|
38
|
+
* @method getAll — Retrieve all active sessions (for debugging/admin).
|
|
39
|
+
* @method getCount — Get the total number of stored sessions.
|
|
40
|
+
* @method cleanup — Manually remove expired sessions.
|
|
41
|
+
* @method getStats — Get session statistics (total, active, expired).
|
|
42
|
+
* @method shutdown — Gracefully close the Redis connection and cleanup interval.
|
|
43
|
+
* @method getClient — Get the raw Redis client for advanced operations.
|
|
44
|
+
*
|
|
45
|
+
* @usedBy `createSessionStore`, distributed SAP MCP deployments.
|
|
26
46
|
*/
|
|
27
47
|
export class RedisSessionStore {
|
|
28
48
|
redis;
|
|
29
49
|
keyPrefix;
|
|
30
50
|
cleanupInterval;
|
|
31
51
|
isShuttingDown = false;
|
|
52
|
+
/**
|
|
53
|
+
* @name RedisSessionStore.constructor
|
|
54
|
+
* @description Creates a new Redis session store with merged config and starts the cleanup interval.
|
|
55
|
+
*
|
|
56
|
+
* @param config — Optional configuration overriding defaults.
|
|
57
|
+
*/
|
|
32
58
|
constructor(config = DEFAULT_CONFIG) {
|
|
33
59
|
const finalConfig = { ...DEFAULT_CONFIG, ...config };
|
|
34
60
|
this.redis = new Redis(finalConfig.redisUrl, {
|
|
@@ -53,14 +79,21 @@ export class RedisSessionStore {
|
|
|
53
79
|
this.startCleanup(finalConfig.cleanupIntervalMs);
|
|
54
80
|
}
|
|
55
81
|
/**
|
|
56
|
-
*
|
|
82
|
+
* @name RedisSessionStore.connect
|
|
83
|
+
* @description Connects to the Redis server.
|
|
84
|
+
*
|
|
85
|
+
* @usedBy `createSessionStore`.
|
|
57
86
|
*/
|
|
58
87
|
async connect() {
|
|
59
88
|
await this.redis.connect();
|
|
60
89
|
logger.info('Redis session store initialized');
|
|
61
90
|
}
|
|
62
91
|
/**
|
|
63
|
-
*
|
|
92
|
+
* @name RedisSessionStore.set
|
|
93
|
+
* @description Stores a session in Redis with a TTL derived from its expiry timestamp.
|
|
94
|
+
*
|
|
95
|
+
* @param sessionId — Unique session identifier.
|
|
96
|
+
* @param session — The agent session to store.
|
|
64
97
|
*/
|
|
65
98
|
async set(sessionId, session) {
|
|
66
99
|
const key = this.getKey(sessionId);
|
|
@@ -69,7 +102,11 @@ export class RedisSessionStore {
|
|
|
69
102
|
logger.debug('Session stored in Redis', { sessionId, ttl });
|
|
70
103
|
}
|
|
71
104
|
/**
|
|
72
|
-
*
|
|
105
|
+
* @name RedisSessionStore.get
|
|
106
|
+
* @description Retrieves a session by id from Redis.
|
|
107
|
+
*
|
|
108
|
+
* @param sessionId — Unique session identifier.
|
|
109
|
+
* @returns The session if found and parseable, `null` otherwise.
|
|
73
110
|
*/
|
|
74
111
|
async get(sessionId) {
|
|
75
112
|
const key = this.getKey(sessionId);
|
|
@@ -87,7 +124,11 @@ export class RedisSessionStore {
|
|
|
87
124
|
}
|
|
88
125
|
}
|
|
89
126
|
/**
|
|
90
|
-
*
|
|
127
|
+
* @name RedisSessionStore.delete
|
|
128
|
+
* @description Deletes a session from Redis by id.
|
|
129
|
+
*
|
|
130
|
+
* @param sessionId — Unique session identifier.
|
|
131
|
+
* @returns `true` if the session was deleted, `false` if it did not exist.
|
|
91
132
|
*/
|
|
92
133
|
async delete(sessionId) {
|
|
93
134
|
const key = this.getKey(sessionId);
|
|
@@ -96,7 +137,10 @@ export class RedisSessionStore {
|
|
|
96
137
|
return result > 0;
|
|
97
138
|
}
|
|
98
139
|
/**
|
|
99
|
-
*
|
|
140
|
+
* @name RedisSessionStore.getAll
|
|
141
|
+
* @description Retrieves all active sessions from Redis (for debugging/admin).
|
|
142
|
+
*
|
|
143
|
+
* @returns Array of all stored agent sessions.
|
|
100
144
|
*/
|
|
101
145
|
async getAll() {
|
|
102
146
|
const keys = await this.redis.keys(`${this.keyPrefix}*`);
|
|
@@ -115,14 +159,18 @@ export class RedisSessionStore {
|
|
|
115
159
|
return sessions;
|
|
116
160
|
}
|
|
117
161
|
/**
|
|
118
|
-
*
|
|
162
|
+
* @name RedisSessionStore.getCount
|
|
163
|
+
* @description Returns the total number of stored sessions.
|
|
164
|
+
*
|
|
165
|
+
* @returns Count of session keys in Redis.
|
|
119
166
|
*/
|
|
120
167
|
async getCount() {
|
|
121
168
|
const keys = await this.redis.keys(`${this.keyPrefix}*`);
|
|
122
169
|
return keys.length;
|
|
123
170
|
}
|
|
124
171
|
/**
|
|
125
|
-
*
|
|
172
|
+
* @name RedisSessionStore.cleanup
|
|
173
|
+
* @description Manually removes expired sessions from Redis.
|
|
126
174
|
*/
|
|
127
175
|
async cleanup() {
|
|
128
176
|
const keys = await this.redis.keys(`${this.keyPrefix}*`);
|
|
@@ -137,7 +185,10 @@ export class RedisSessionStore {
|
|
|
137
185
|
logger.debug('Redis session cleanup', { cleaned });
|
|
138
186
|
}
|
|
139
187
|
/**
|
|
140
|
-
*
|
|
188
|
+
* @name RedisSessionStore.getStats
|
|
189
|
+
* @description Returns session statistics (total, active, expired).
|
|
190
|
+
*
|
|
191
|
+
* @returns Object with `totalSessions`, `activeSessions`, and `expiredSessions` counts.
|
|
141
192
|
*/
|
|
142
193
|
async getStats() {
|
|
143
194
|
const keys = await this.redis.keys(`${this.keyPrefix}*`);
|
|
@@ -168,7 +219,8 @@ export class RedisSessionStore {
|
|
|
168
219
|
};
|
|
169
220
|
}
|
|
170
221
|
/**
|
|
171
|
-
*
|
|
222
|
+
* @name RedisSessionStore.shutdown
|
|
223
|
+
* @description Gracefully shuts down the Redis connection and clears the cleanup interval.
|
|
172
224
|
*/
|
|
173
225
|
async shutdown() {
|
|
174
226
|
this.isShuttingDown = true;
|
|
@@ -179,14 +231,19 @@ export class RedisSessionStore {
|
|
|
179
231
|
logger.info('Redis session store shut down');
|
|
180
232
|
}
|
|
181
233
|
/**
|
|
182
|
-
*
|
|
234
|
+
* @name RedisSessionStore.getClient
|
|
235
|
+
* @description Returns the raw Redis client instance for advanced operations.
|
|
236
|
+
*
|
|
237
|
+
* @returns The underlying `ioredis` Redis instance.
|
|
183
238
|
*/
|
|
184
239
|
getClient() {
|
|
185
240
|
return this.redis;
|
|
186
241
|
}
|
|
242
|
+
/** @description Builds the full Redis key from the prefix and session id. */
|
|
187
243
|
getKey(sessionId) {
|
|
188
244
|
return `${this.keyPrefix}${sessionId}`;
|
|
189
245
|
}
|
|
246
|
+
/** @description Starts the periodic cleanup interval for expired sessions. */
|
|
190
247
|
startCleanup(intervalMs) {
|
|
191
248
|
this.cleanupInterval = setInterval(async () => {
|
|
192
249
|
if (this.isShuttingDown)
|
|
@@ -201,9 +258,19 @@ export class RedisSessionStore {
|
|
|
201
258
|
}
|
|
202
259
|
}
|
|
203
260
|
/**
|
|
204
|
-
*
|
|
261
|
+
* @name createSessionStore
|
|
262
|
+
* @description Creates a session store based on environment configuration.
|
|
263
|
+
*
|
|
264
|
+
* Uses Redis in production (when `SAP_MCP_USE_REDIS=true`) and in-memory
|
|
265
|
+
* storage in development (returns `null`).
|
|
266
|
+
*
|
|
267
|
+
* @returns A connected `RedisSessionStore` if Redis is enabled, `null` otherwise.
|
|
268
|
+
* @throws If Redis connection fails after retries.
|
|
269
|
+
*
|
|
270
|
+
* @env `SAP_MCP_USE_REDIS` — Set to `true` to enable Redis.
|
|
271
|
+
* @env `SAP_MCP_REDIS_URL` — Redis connection URL (default `redis://localhost:6379`).
|
|
205
272
|
*
|
|
206
|
-
*
|
|
273
|
+
* @usedBy Server initialization in the SAP MCP runtime.
|
|
207
274
|
*/
|
|
208
275
|
export async function createSessionStore() {
|
|
209
276
|
const useRedis = process.env.SAP_MCP_USE_REDIS === 'true';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-session-store.js","sourceRoot":"","sources":["../../src/session/redis-session-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"redis-session-store.js","sourceRoot":"","sources":["../../src/session/redis-session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name session/session-limits
|
|
3
|
+
* @description Session spending limit management — per-transaction checks, balance deduction, and daily resets.
|
|
4
|
+
*
|
|
5
|
+
* @flow
|
|
6
|
+
* 1. `checkSpendingLimit` validates a transaction amount against per-transaction and remaining session limits.
|
|
7
|
+
* 2. `deductFromSession` subtracts a spent amount from the session's remaining balance.
|
|
8
|
+
* 3. `resetDailyLimits` resets the session's remaining balance to the maximum per-session limit.
|
|
9
|
+
*
|
|
10
|
+
* @module session/session-limits
|
|
3
11
|
*/
|
|
4
12
|
import type { SapAgentSession, SapSpendingLimits } from '../core/types.js';
|
|
5
13
|
/**
|
|
6
|
-
*
|
|
14
|
+
* @name checkSpendingLimit
|
|
15
|
+
* @description Checks whether a transaction amount is within the session's spending limits.
|
|
16
|
+
*
|
|
17
|
+
* @param session — The agent session to check against.
|
|
18
|
+
* @param amountSol — The transaction amount in SOL to validate.
|
|
19
|
+
* @returns `{ allowed: true }` if within limits; `{ allowed: false, reason }` with an explanation otherwise.
|
|
20
|
+
*
|
|
21
|
+
* @usedBy Tool handlers across the SAP MCP runtime.
|
|
7
22
|
*/
|
|
8
23
|
export declare function checkSpendingLimit(session: SapAgentSession, amountSol: number): {
|
|
9
24
|
allowed: boolean;
|
|
10
25
|
reason?: string;
|
|
11
26
|
};
|
|
12
27
|
/**
|
|
13
|
-
*
|
|
28
|
+
* @name deductFromSession
|
|
29
|
+
* @description Deducts a spent amount from the session's remaining SOL balance and returns the updated limits.
|
|
30
|
+
*
|
|
31
|
+
* @param session — The agent session to deduct from.
|
|
32
|
+
* @param amountSol — The amount in SOL to deduct.
|
|
33
|
+
* @returns A new `SapSpendingLimits` object with the updated `remainingSessionSol`.
|
|
34
|
+
*
|
|
35
|
+
* @usedBy Tool handlers across the SAP MCP runtime.
|
|
14
36
|
*/
|
|
15
37
|
export declare function deductFromSession(session: SapAgentSession, amountSol: number): SapSpendingLimits;
|
|
16
38
|
/**
|
|
17
|
-
*
|
|
39
|
+
* @name resetDailyLimits
|
|
40
|
+
* @description Resets the session's remaining SOL balance to the maximum per-session limit.
|
|
41
|
+
*
|
|
42
|
+
* Called periodically to reset daily spending counters. In production, a separate
|
|
43
|
+
* daily counter stored in Redis/DB would be reset here.
|
|
44
|
+
*
|
|
45
|
+
* @param session — The agent session whose limits to reset.
|
|
46
|
+
*
|
|
47
|
+
* @usedBy Scheduled limit reset tasks in the SAP MCP runtime.
|
|
18
48
|
*/
|
|
19
49
|
export declare function resetDailyLimits(session: SapAgentSession): void;
|
|
20
50
|
//# sourceMappingURL=session-limits.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-limits.d.ts","sourceRoot":"","sources":["../../src/session/session-limits.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-limits.d.ts","sourceRoot":"","sources":["../../src/session/session-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE3E;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAoBvC;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,GAChB,iBAAiB,CAanB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAY/D"}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name session/session-limits
|
|
3
|
+
* @description Session spending limit management — per-transaction checks, balance deduction, and daily resets.
|
|
4
|
+
*
|
|
5
|
+
* @flow
|
|
6
|
+
* 1. `checkSpendingLimit` validates a transaction amount against per-transaction and remaining session limits.
|
|
7
|
+
* 2. `deductFromSession` subtracts a spent amount from the session's remaining balance.
|
|
8
|
+
* 3. `resetDailyLimits` resets the session's remaining balance to the maximum per-session limit.
|
|
9
|
+
*
|
|
10
|
+
* @module session/session-limits
|
|
3
11
|
*/
|
|
4
12
|
import { logger } from '../core/logger.js';
|
|
5
13
|
/**
|
|
6
|
-
*
|
|
14
|
+
* @name checkSpendingLimit
|
|
15
|
+
* @description Checks whether a transaction amount is within the session's spending limits.
|
|
16
|
+
*
|
|
17
|
+
* @param session — The agent session to check against.
|
|
18
|
+
* @param amountSol — The transaction amount in SOL to validate.
|
|
19
|
+
* @returns `{ allowed: true }` if within limits; `{ allowed: false, reason }` with an explanation otherwise.
|
|
20
|
+
*
|
|
21
|
+
* @usedBy Tool handlers across the SAP MCP runtime.
|
|
7
22
|
*/
|
|
8
23
|
export function checkSpendingLimit(session, amountSol) {
|
|
9
24
|
const limits = session.spendingLimits;
|
|
@@ -24,7 +39,14 @@ export function checkSpendingLimit(session, amountSol) {
|
|
|
24
39
|
return { allowed: true };
|
|
25
40
|
}
|
|
26
41
|
/**
|
|
27
|
-
*
|
|
42
|
+
* @name deductFromSession
|
|
43
|
+
* @description Deducts a spent amount from the session's remaining SOL balance and returns the updated limits.
|
|
44
|
+
*
|
|
45
|
+
* @param session — The agent session to deduct from.
|
|
46
|
+
* @param amountSol — The amount in SOL to deduct.
|
|
47
|
+
* @returns A new `SapSpendingLimits` object with the updated `remainingSessionSol`.
|
|
48
|
+
*
|
|
49
|
+
* @usedBy Tool handlers across the SAP MCP runtime.
|
|
28
50
|
*/
|
|
29
51
|
export function deductFromSession(session, amountSol) {
|
|
30
52
|
const newLimits = {
|
|
@@ -39,7 +61,15 @@ export function deductFromSession(session, amountSol) {
|
|
|
39
61
|
return newLimits;
|
|
40
62
|
}
|
|
41
63
|
/**
|
|
42
|
-
*
|
|
64
|
+
* @name resetDailyLimits
|
|
65
|
+
* @description Resets the session's remaining SOL balance to the maximum per-session limit.
|
|
66
|
+
*
|
|
67
|
+
* Called periodically to reset daily spending counters. In production, a separate
|
|
68
|
+
* daily counter stored in Redis/DB would be reset here.
|
|
69
|
+
*
|
|
70
|
+
* @param session — The agent session whose limits to reset.
|
|
71
|
+
*
|
|
72
|
+
* @usedBy Scheduled limit reset tasks in the SAP MCP runtime.
|
|
43
73
|
*/
|
|
44
74
|
export function resetDailyLimits(session) {
|
|
45
75
|
// Reset daily spending counter (if tracked separately)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-limits.js","sourceRoot":"","sources":["../../src/session/session-limits.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-limits.js","sourceRoot":"","sources":["../../src/session/session-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAwB,EACxB,SAAiB;IAEjB,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAEtC,8BAA8B;IAC9B,IAAI,SAAS,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,UAAU,SAAS,sCAAsC,MAAM,CAAC,oBAAoB,MAAM;SACnG,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,IAAI,SAAS,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC3C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,UAAU,SAAS,0CAA0C,MAAM,CAAC,mBAAmB,MAAM;SACtG,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAwB,EACxB,SAAiB;IAEjB,MAAM,SAAS,GAAG;QAChB,GAAG,OAAO,CAAC,cAAc;QACzB,mBAAmB,EAAE,OAAO,CAAC,cAAc,CAAC,mBAAmB,GAAG,SAAS;KAC5E,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS;QACT,YAAY,EAAE,SAAS,CAAC,mBAAmB;KAC5C,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAwB;IACvD,uDAAuD;IACvD,8CAA8C;IAC9C,8EAA8E;IAE9E,OAAO,CAAC,cAAc,CAAC,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAErF,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,YAAY;QACjD,gBAAgB,EAAE,OAAO,CAAC,cAAc,CAAC,gBAAgB;KAC1D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,13 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name session/session-permissions
|
|
3
|
+
* @description Session permission definitions, categories, and utility functions for the SAP MCP runtime.
|
|
4
|
+
*
|
|
5
|
+
* Defines the full set of permissions, groups them by category, and provides
|
|
6
|
+
* helpers for validation, category lookups, and read/write classification.
|
|
7
|
+
*
|
|
8
|
+
* @flow
|
|
9
|
+
* 1. `ALL_PERMISSIONS` defines the canonical list of allowed permission strings.
|
|
10
|
+
* 2. `PERMISSION_CATEGORIES` groups permissions by domain (registry, identity, payments, etc.).
|
|
11
|
+
* 3. Utility functions (`isValidPermission`, `getPermissionsByCategory`, `isWritePermission`,
|
|
12
|
+
* `toReadPermission`) are used by session creation and validation logic.
|
|
13
|
+
*
|
|
14
|
+
* @module session/session-permissions
|
|
3
15
|
*/
|
|
4
16
|
import type { SapPermission } from '../core/types.js';
|
|
5
17
|
/**
|
|
6
|
-
*
|
|
18
|
+
* @name ALL_PERMISSIONS
|
|
19
|
+
* @description The canonical list of all permissions recognized by the SAP MCP runtime.
|
|
20
|
+
*
|
|
21
|
+
* @usedBy `isValidPermission`, `agent-session.ts`, `delegated-session.ts`
|
|
7
22
|
*/
|
|
8
23
|
export declare const ALL_PERMISSIONS: SapPermission[];
|
|
9
24
|
/**
|
|
10
|
-
*
|
|
25
|
+
* @name PERMISSION_CATEGORIES
|
|
26
|
+
* @description Permission groups keyed by domain category.
|
|
27
|
+
*
|
|
28
|
+
* @property registry — Registry read/write permissions.
|
|
29
|
+
* @property identity — Identity read/write permissions.
|
|
30
|
+
* @property reputation — Reputation read/write permissions.
|
|
31
|
+
* @property payments — Payments read/write permissions.
|
|
32
|
+
* @property settlement — Settlement read/write permissions.
|
|
33
|
+
* @property memory — Memory read/write permissions.
|
|
34
|
+
* @property transaction — Transaction submission permission.
|
|
35
|
+
*
|
|
36
|
+
* @usedBy `getPermissionsByCategory`, permission UI in the TUI wizard.
|
|
11
37
|
*/
|
|
12
38
|
export declare const PERMISSION_CATEGORIES: {
|
|
13
39
|
readonly registry: readonly ["registry:read", "registry:write"];
|
|
@@ -19,19 +45,43 @@ export declare const PERMISSION_CATEGORIES: {
|
|
|
19
45
|
readonly transaction: readonly ["transaction:submit"];
|
|
20
46
|
};
|
|
21
47
|
/**
|
|
22
|
-
*
|
|
48
|
+
* @name isValidPermission
|
|
49
|
+
* @description Checks whether a permission string is in the canonical `ALL_PERMISSIONS` list.
|
|
50
|
+
*
|
|
51
|
+
* @param permission — Permission string to validate.
|
|
52
|
+
* @returns `true` if the permission is recognized, `false` otherwise.
|
|
53
|
+
*
|
|
54
|
+
* @usedBy `agent-session.ts:createAgentSession`, `core/guards.ts`
|
|
23
55
|
*/
|
|
24
56
|
export declare function isValidPermission(permission: string): boolean;
|
|
25
57
|
/**
|
|
26
|
-
*
|
|
58
|
+
* @name getPermissionsByCategory
|
|
59
|
+
* @description Returns all permissions belonging to a specific category.
|
|
60
|
+
*
|
|
61
|
+
* @param category — Category key from `PERMISSION_CATEGORIES`.
|
|
62
|
+
* @returns Array of permissions in the specified category.
|
|
63
|
+
*
|
|
64
|
+
* @usedBy Permission UI and session creation logic.
|
|
27
65
|
*/
|
|
28
66
|
export declare function getPermissionsByCategory(category: keyof typeof PERMISSION_CATEGORIES): SapPermission[];
|
|
29
67
|
/**
|
|
30
|
-
*
|
|
68
|
+
* @name isWritePermission
|
|
69
|
+
* @description Checks whether a permission is a write-level permission (ends with `:write`).
|
|
70
|
+
*
|
|
71
|
+
* @param permission — Permission string to check.
|
|
72
|
+
* @returns `true` if the permission grants write access, `false` otherwise.
|
|
73
|
+
*
|
|
74
|
+
* @usedBy Session validation and policy enforcement.
|
|
31
75
|
*/
|
|
32
76
|
export declare function isWritePermission(permission: SapPermission): boolean;
|
|
33
77
|
/**
|
|
34
|
-
*
|
|
78
|
+
* @name toReadPermission
|
|
79
|
+
* @description Converts a write permission to its read-only counterpart by replacing `:write` with `:read`.
|
|
80
|
+
*
|
|
81
|
+
* @param permission — Permission string to convert.
|
|
82
|
+
* @returns The read-only version of the permission.
|
|
83
|
+
*
|
|
84
|
+
* @usedBy Session downgrade logic and read-only mode enforcement.
|
|
35
85
|
*/
|
|
36
86
|
export declare function toReadPermission(permission: SapPermission): SapPermission;
|
|
37
87
|
//# sourceMappingURL=session-permissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-permissions.d.ts","sourceRoot":"","sources":["../../src/session/session-permissions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-permissions.d.ts","sourceRoot":"","sources":["../../src/session/session-permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EAc1C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;CAQ2B,CAAC;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,OAAO,qBAAqB,GAAG,aAAa,EAAE,CAEtG;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAEpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,GAAG,aAAa,CAEzE"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name session/session-permissions
|
|
3
|
+
* @description Session permission definitions, categories, and utility functions for the SAP MCP runtime.
|
|
4
|
+
*
|
|
5
|
+
* Defines the full set of permissions, groups them by category, and provides
|
|
6
|
+
* helpers for validation, category lookups, and read/write classification.
|
|
7
|
+
*
|
|
8
|
+
* @flow
|
|
9
|
+
* 1. `ALL_PERMISSIONS` defines the canonical list of allowed permission strings.
|
|
10
|
+
* 2. `PERMISSION_CATEGORIES` groups permissions by domain (registry, identity, payments, etc.).
|
|
11
|
+
* 3. Utility functions (`isValidPermission`, `getPermissionsByCategory`, `isWritePermission`,
|
|
12
|
+
* `toReadPermission`) are used by session creation and validation logic.
|
|
13
|
+
*
|
|
14
|
+
* @module session/session-permissions
|
|
3
15
|
*/
|
|
4
16
|
/**
|
|
5
|
-
*
|
|
17
|
+
* @name ALL_PERMISSIONS
|
|
18
|
+
* @description The canonical list of all permissions recognized by the SAP MCP runtime.
|
|
19
|
+
*
|
|
20
|
+
* @usedBy `isValidPermission`, `agent-session.ts`, `delegated-session.ts`
|
|
6
21
|
*/
|
|
7
22
|
export const ALL_PERMISSIONS = [
|
|
8
23
|
'registry:read',
|
|
@@ -20,7 +35,18 @@ export const ALL_PERMISSIONS = [
|
|
|
20
35
|
'transaction:submit',
|
|
21
36
|
];
|
|
22
37
|
/**
|
|
23
|
-
*
|
|
38
|
+
* @name PERMISSION_CATEGORIES
|
|
39
|
+
* @description Permission groups keyed by domain category.
|
|
40
|
+
*
|
|
41
|
+
* @property registry — Registry read/write permissions.
|
|
42
|
+
* @property identity — Identity read/write permissions.
|
|
43
|
+
* @property reputation — Reputation read/write permissions.
|
|
44
|
+
* @property payments — Payments read/write permissions.
|
|
45
|
+
* @property settlement — Settlement read/write permissions.
|
|
46
|
+
* @property memory — Memory read/write permissions.
|
|
47
|
+
* @property transaction — Transaction submission permission.
|
|
48
|
+
*
|
|
49
|
+
* @usedBy `getPermissionsByCategory`, permission UI in the TUI wizard.
|
|
24
50
|
*/
|
|
25
51
|
export const PERMISSION_CATEGORIES = {
|
|
26
52
|
registry: ['registry:read', 'registry:write'],
|
|
@@ -32,25 +58,49 @@ export const PERMISSION_CATEGORIES = {
|
|
|
32
58
|
transaction: ['transaction:submit'],
|
|
33
59
|
};
|
|
34
60
|
/**
|
|
35
|
-
*
|
|
61
|
+
* @name isValidPermission
|
|
62
|
+
* @description Checks whether a permission string is in the canonical `ALL_PERMISSIONS` list.
|
|
63
|
+
*
|
|
64
|
+
* @param permission — Permission string to validate.
|
|
65
|
+
* @returns `true` if the permission is recognized, `false` otherwise.
|
|
66
|
+
*
|
|
67
|
+
* @usedBy `agent-session.ts:createAgentSession`, `core/guards.ts`
|
|
36
68
|
*/
|
|
37
69
|
export function isValidPermission(permission) {
|
|
38
70
|
return ALL_PERMISSIONS.includes(permission);
|
|
39
71
|
}
|
|
40
72
|
/**
|
|
41
|
-
*
|
|
73
|
+
* @name getPermissionsByCategory
|
|
74
|
+
* @description Returns all permissions belonging to a specific category.
|
|
75
|
+
*
|
|
76
|
+
* @param category — Category key from `PERMISSION_CATEGORIES`.
|
|
77
|
+
* @returns Array of permissions in the specified category.
|
|
78
|
+
*
|
|
79
|
+
* @usedBy Permission UI and session creation logic.
|
|
42
80
|
*/
|
|
43
81
|
export function getPermissionsByCategory(category) {
|
|
44
82
|
return [...PERMISSION_CATEGORIES[category]];
|
|
45
83
|
}
|
|
46
84
|
/**
|
|
47
|
-
*
|
|
85
|
+
* @name isWritePermission
|
|
86
|
+
* @description Checks whether a permission is a write-level permission (ends with `:write`).
|
|
87
|
+
*
|
|
88
|
+
* @param permission — Permission string to check.
|
|
89
|
+
* @returns `true` if the permission grants write access, `false` otherwise.
|
|
90
|
+
*
|
|
91
|
+
* @usedBy Session validation and policy enforcement.
|
|
48
92
|
*/
|
|
49
93
|
export function isWritePermission(permission) {
|
|
50
94
|
return permission.endsWith(':write');
|
|
51
95
|
}
|
|
52
96
|
/**
|
|
53
|
-
*
|
|
97
|
+
* @name toReadPermission
|
|
98
|
+
* @description Converts a write permission to its read-only counterpart by replacing `:write` with `:read`.
|
|
99
|
+
*
|
|
100
|
+
* @param permission — Permission string to convert.
|
|
101
|
+
* @returns The read-only version of the permission.
|
|
102
|
+
*
|
|
103
|
+
* @usedBy Session downgrade logic and read-only mode enforcement.
|
|
54
104
|
*/
|
|
55
105
|
export function toReadPermission(permission) {
|
|
56
106
|
return permission.replace(':write', ':read');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-permissions.js","sourceRoot":"","sources":["../../src/session/session-permissions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-permissions.js","sourceRoot":"","sources":["../../src/session/session-permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,oBAAoB;CACrB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7C,QAAQ,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7C,UAAU,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IACnD,QAAQ,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7C,UAAU,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IACnD,MAAM,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;IACvC,WAAW,EAAE,CAAC,oBAAoB,CAAC;CACwB,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,OAAO,eAAe,CAAC,QAAQ,CAAC,UAA2B,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAA4C;IACnF,OAAO,CAAC,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAyB;IACzD,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAyB;IACxD,OAAO,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAkB,CAAC;AAChE,CAAC"}
|
|
@@ -34,5 +34,13 @@ declare class SessionStore {
|
|
|
34
34
|
getAll(): SapAgentSession[];
|
|
35
35
|
}
|
|
36
36
|
declare const store: SessionStore;
|
|
37
|
-
|
|
37
|
+
/**
|
|
38
|
+
* @name clearSessionCleanupTimer
|
|
39
|
+
* @description Stop the hourly cleanup interval. Called during graceful
|
|
40
|
+
* shutdown and in test teardown to prevent timer leaks.
|
|
41
|
+
*
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
declare function clearSessionCleanupTimer(): void;
|
|
45
|
+
export { store as sessionStore, clearSessionCleanupTimer };
|
|
38
46
|
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAA2C;IAE3D;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAKtD;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAInD;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAMlC;;OAEG;IACH,OAAO,IAAI,IAAI;IAcf;;OAEG;IACH,MAAM,IAAI,eAAe,EAAE;CAG5B;AAGD,QAAA,MAAM,KAAK,cAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAA2C;IAE3D;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAKtD;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAInD;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAMlC;;OAEG;IACH,OAAO,IAAI,IAAI;IAcf;;OAEG;IACH,MAAM,IAAI,eAAe,EAAE;CAG5B;AAGD,QAAA,MAAM,KAAK,cAAqB,CAAC;AAUjC;;;;;;GAMG;AACH,iBAAS,wBAAwB,IAAI,IAAI,CAExC;AAED,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -56,7 +56,22 @@ class SessionStore {
|
|
|
56
56
|
}
|
|
57
57
|
// Singleton instance
|
|
58
58
|
const store = new SessionStore();
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
/**
|
|
60
|
+
* @description Hourly cleanup interval for the singleton session store.
|
|
61
|
+
* Uses `.unref()` so the timer does not keep the process alive during
|
|
62
|
+
* graceful shutdown.
|
|
63
|
+
*/
|
|
64
|
+
const sessionCleanupTimer = setInterval(() => store.cleanup(), 60 * 60 * 1000);
|
|
65
|
+
sessionCleanupTimer.unref();
|
|
66
|
+
/**
|
|
67
|
+
* @name clearSessionCleanupTimer
|
|
68
|
+
* @description Stop the hourly cleanup interval. Called during graceful
|
|
69
|
+
* shutdown and in test teardown to prevent timer leaks.
|
|
70
|
+
*
|
|
71
|
+
* @internal
|
|
72
|
+
*/
|
|
73
|
+
function clearSessionCleanupTimer() {
|
|
74
|
+
clearInterval(sessionCleanupTimer);
|
|
75
|
+
}
|
|
76
|
+
export { store as sessionStore, clearSessionCleanupTimer };
|
|
62
77
|
//# sourceMappingURL=session-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,MAAM,YAAY;IACR,QAAQ,GAAiC,IAAI,GAAG,EAAE,CAAC;IAE3D;;OAEG;IACH,GAAG,CAAC,SAAiB,EAAE,OAAwB;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAiB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3D,IAAI,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;AAEjC
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,MAAM,YAAY;IACR,QAAQ,GAAiC,IAAI,GAAG,EAAE,CAAC;IAE3D;;OAEG;IACH,GAAG,CAAC,SAAiB,EAAE,OAAwB;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAiB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3D,IAAI,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;AAEjC;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC/E,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAE5B;;;;;;GAMG;AACH,SAAS,wBAAwB;IAC/B,aAAa,CAAC,mBAAmB,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,wBAAwB,EAAE,CAAC"}
|