@oobe-protocol-labs/sap-mcp-server 0.9.1 → 0.9.3
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 +732 -1
- package/README.md +9 -3
- package/USER_DOCS/00_START_HERE.md +51 -4
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
- package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +32 -3
- package/USER_DOCS/04_CLIENT_CONFIGS.md +14 -7
- package/USER_DOCS/05_SKILLS_AND_TOOLS.md +68 -8
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +20 -14
- package/USER_DOCS/07_SMITHERY_AND_MARKETPLACES.md +7 -0
- package/config.example.json +5 -4
- package/config.schema.json +9 -4
- 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 +232 -25
- package/dist/adapters/mcp/sdk-compat.js.map +1 -1
- package/dist/adapters/mcp/tool-response.d.ts +51 -3
- package/dist/adapters/mcp/tool-response.d.ts.map +1 -1
- package/dist/adapters/mcp/tool-response.js +48 -3
- 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 +15 -10
- 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 +136 -33
- package/dist/config/mcp-client-injection.js.map +1 -1
- package/dist/config/paths.d.ts +14 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +20 -1
- 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/wizard.d.ts +6 -0
- package/dist/config/wizard.d.ts.map +1 -1
- package/dist/config/wizard.js +102 -18
- package/dist/config/wizard.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 +14 -1
- package/dist/config-cli.js.map +1 -1
- package/dist/core/constants.d.ts +38 -6
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +49 -6
- 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/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/memory/async-processor.d.ts +107 -0
- package/dist/memory/async-processor.d.ts.map +1 -0
- package/dist/memory/async-processor.js +204 -0
- package/dist/memory/async-processor.js.map +1 -0
- package/dist/memory/auto-record.d.ts +47 -0
- package/dist/memory/auto-record.d.ts.map +1 -0
- package/dist/memory/auto-record.js +133 -0
- package/dist/memory/auto-record.js.map +1 -0
- package/dist/memory/database.d.ts +103 -0
- package/dist/memory/database.d.ts.map +1 -0
- package/dist/memory/database.js +337 -0
- package/dist/memory/database.js.map +1 -0
- package/dist/memory/hermes-bridge.d.ts +70 -0
- package/dist/memory/hermes-bridge.d.ts.map +1 -0
- package/dist/memory/hermes-bridge.js +155 -0
- package/dist/memory/hermes-bridge.js.map +1 -0
- package/dist/memory/index.d.ts +23 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +22 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-store.d.ts +76 -0
- package/dist/memory/memory-store.d.ts.map +1 -0
- package/dist/memory/memory-store.js +231 -0
- package/dist/memory/memory-store.js.map +1 -0
- package/dist/memory/stream-buffer-store.d.ts +69 -0
- package/dist/memory/stream-buffer-store.d.ts.map +1 -0
- package/dist/memory/stream-buffer-store.js +182 -0
- package/dist/memory/stream-buffer-store.js.map +1 -0
- package/dist/memory/tool-call-store.d.ts +68 -0
- package/dist/memory/tool-call-store.d.ts.map +1 -0
- package/dist/memory/tool-call-store.js +189 -0
- package/dist/memory/tool-call-store.js.map +1 -0
- package/dist/memory/types.d.ts +197 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +15 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/memory/utils.d.ts +30 -0
- package/dist/memory/utils.d.ts.map +1 -0
- package/dist/memory/utils.js +47 -0
- package/dist/memory/utils.js.map +1 -0
- 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 +22 -0
- package/dist/payments/hosted-tool-eligibility.d.ts.map +1 -0
- package/dist/payments/hosted-tool-eligibility.js +173 -0
- package/dist/payments/hosted-tool-eligibility.js.map +1 -0
- package/dist/payments/index.d.ts +2 -2
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +1 -1
- package/dist/payments/index.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 +33 -0
- package/dist/payments/monetization-gate.d.ts.map +1 -1
- package/dist/payments/monetization-gate.js +124 -12
- package/dist/payments/monetization-gate.js.map +1 -1
- package/dist/payments/pricing.d.ts +31 -0
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +317 -19
- 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 +121 -0
- package/dist/payments/x402-paid-call.d.ts.map +1 -1
- package/dist/payments/x402-paid-call.js +428 -1
- 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 +165 -0
- package/dist/premium/builtin-plugins.d.ts.map +1 -0
- package/dist/premium/builtin-plugins.js +422 -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 +133 -0
- package/dist/premium/provider-bridge.d.ts.map +1 -0
- package/dist/premium/provider-bridge.js +349 -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 +138 -0
- package/dist/premium/webhook-engine.d.ts.map +1 -0
- package/dist/premium/webhook-engine.js +516 -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 +20 -16
- 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 +7 -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 +16 -14
- 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 +22 -23
- 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 +347 -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 +23 -4
- package/dist/remote/public-home/sections.js.map +1 -1
- package/dist/remote/public-home/types.d.ts +9 -0
- package/dist/remote/public-home/types.d.ts.map +1 -1
- package/dist/remote/server.d.ts +20 -0
- package/dist/remote/server.d.ts.map +1 -1
- package/dist/remote/server.js +370 -9
- 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 +38 -6
- 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/tool-permissions.d.ts.map +1 -1
- package/dist/security/tool-permissions.js +12 -0
- package/dist/security/tool-permissions.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 +20 -4
- 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 +35 -1
- package/dist/server/server-metadata.d.ts.map +1 -1
- package/dist/server/server-metadata.js +36 -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 +19 -3
- package/dist/signer/local-keypair-signer.d.ts.map +1 -1
- package/dist/signer/local-keypair-signer.js +24 -4
- 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/strategies/strategy-store.d.ts +82 -0
- package/dist/strategies/strategy-store.d.ts.map +1 -0
- package/dist/strategies/strategy-store.js +165 -0
- package/dist/strategies/strategy-store.js.map +1 -0
- package/dist/tools/agent-start-tool.d.ts.map +1 -1
- package/dist/tools/agent-start-tool.js +481 -5
- 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 +32 -7
- 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 +8 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/magicblock-tools.d.ts +31 -6
- package/dist/tools/magicblock-tools.d.ts.map +1 -1
- package/dist/tools/magicblock-tools.js +178 -53
- package/dist/tools/magicblock-tools.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +26 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +533 -0
- package/dist/tools/memory-tools.js.map +1 -0
- 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 +1102 -0
- package/dist/tools/premium-tools.js.map +1 -0
- package/dist/tools/profile-tools.d.ts.map +1 -1
- package/dist/tools/profile-tools.js +18 -1
- package/dist/tools/profile-tools.js.map +1 -1
- package/dist/tools/quick-context-tool.d.ts +16 -0
- package/dist/tools/quick-context-tool.d.ts.map +1 -0
- package/dist/tools/quick-context-tool.js +304 -0
- package/dist/tools/quick-context-tool.js.map +1 -0
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +17 -0
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/sap-sdk-tools.d.ts +420 -1
- package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
- package/dist/tools/sap-sdk-tools.js +1548 -127
- package/dist/tools/sap-sdk-tools.js.map +1 -1
- package/dist/tools/sap-sns-tools.d.ts +2 -2
- package/dist/tools/sap-sns-tools.d.ts.map +1 -1
- package/dist/tools/sap-sns-tools.js +12 -8
- package/dist/tools/sap-sns-tools.js.map +1 -1
- package/dist/tools/skills-tools.d.ts +16 -0
- package/dist/tools/skills-tools.d.ts.map +1 -1
- package/dist/tools/skills-tools.js +282 -5
- package/dist/tools/skills-tools.js.map +1 -1
- package/dist/tools/tool-aliases.d.ts.map +1 -1
- package/dist/tools/tool-aliases.js +7 -0
- package/dist/tools/tool-aliases.js.map +1 -1
- package/dist/tools/transaction-tools.d.ts +135 -0
- package/dist/tools/transaction-tools.d.ts.map +1 -1
- package/dist/tools/transaction-tools.js +515 -16
- package/dist/tools/transaction-tools.js.map +1 -1
- package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
- package/dist/tools/x402-paid-call-tool.js +756 -23
- 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/dist/wizard-core/desktop-flow.d.ts.map +1 -1
- package/dist/wizard-core/desktop-flow.js +4 -2
- package/dist/wizard-core/desktop-flow.js.map +1 -1
- package/docs/03_CONFIGURATION_AND_WIZARD.md +5 -3
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +82 -4
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +7 -3
- package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +21 -3
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +8 -6
- package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +304 -0
- package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
- package/docs/BRANCH_AND_CI.md +67 -0
- package/docs/README.md +19 -2
- package/docs/magicblock-tools.md +70 -29
- package/package.json +10 -6
- package/server.json +3 -3
- package/skills/README.md +12 -2
- package/skills/sap-agent-registry/SKILL.md +99 -4
- package/skills/sap-defi/SKILL.md +8 -4
- package/skills/sap-discovery-indexing/SKILL.md +26 -4
- package/skills/sap-escrow-settlement/SKILL.md +22 -4
- package/skills/sap-mcp/SKILL.md +140 -22
- package/skills/sap-mcp/TOOL_REFERENCE.md +47 -7
- package/skills/sap-nft-metaplex/SKILL.md +22 -0
- package/skills/sap-operations/SKILL.md +32 -3
- package/skills/sap-payments-x402/SKILL.md +85 -8
- package/skills/sap-sns/SKILL.md +32 -10
- package/smithery.config.schema.json +7 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name premium/provider-bridge
|
|
3
|
+
* @description Dynamic loader and connection manager for premium provider adapters.
|
|
4
|
+
*
|
|
5
|
+
* Provider adapters live in the private subrepo (`sap-mcp-premium-private/providers/`).
|
|
6
|
+
* The public server loads them dynamically only when `SAP_MCP_ENABLE_PREMIUM_PLUGINS=true`
|
|
7
|
+
* and the corresponding provider env vars are configured.
|
|
8
|
+
*
|
|
9
|
+
* The bridge maintains a registry of active adapters keyed by `pluginId:capabilityId`,
|
|
10
|
+
* handles connect/disconnect lifecycle, and exposes health status to the metrics
|
|
11
|
+
* and monitoring layer.
|
|
12
|
+
*
|
|
13
|
+
* Security: adapters are loaded from the configured `SAP_MCP_PLUGIN_DIR` only.
|
|
14
|
+
* No code is ever loaded from MCP tool input or user-supplied JSON.
|
|
15
|
+
*
|
|
16
|
+
* @flow
|
|
17
|
+
* 1. `stream-broker.ts` / `webhook-engine.ts` need events for a capability.
|
|
18
|
+
* 2. → `getProviderAdapter(pluginId, capabilityId)` returns the adapter.
|
|
19
|
+
* 3. If not loaded, `loadProviderAdapter()` dynamically imports from the
|
|
20
|
+
* private subrepo providers directory.
|
|
21
|
+
* 4. Adapter `connect()` is called once, then `subscribe()` returns an
|
|
22
|
+
* async iterable of events.
|
|
23
|
+
* 5. `disconnectAllProviders()` is called on graceful shutdown.
|
|
24
|
+
*
|
|
25
|
+
* @module premium/provider-bridge
|
|
26
|
+
*/
|
|
27
|
+
import { existsSync } from 'node:fs';
|
|
28
|
+
import { join, resolve } from 'node:path';
|
|
29
|
+
import { pathToFileURL } from 'node:url';
|
|
30
|
+
import { findPremiumCapability } from './builtin-plugins.js';
|
|
31
|
+
import { privatePremiumPluginsEnabled } from './private-manifest-loader.js';
|
|
32
|
+
/**
|
|
33
|
+
* @description Registry of active provider adapters keyed by `pluginId:capabilityId`.
|
|
34
|
+
*/
|
|
35
|
+
const adapterRegistry = new Map();
|
|
36
|
+
/**
|
|
37
|
+
* @description Registry of load failures keyed by `pluginId:capabilityId`.
|
|
38
|
+
* Records the error message for each adapter that was attempted but failed to load.
|
|
39
|
+
* Used by `getAllProviderHealth()` to surface load failures in metrics.
|
|
40
|
+
*/
|
|
41
|
+
const loadFailureRegistry = new Map();
|
|
42
|
+
/**
|
|
43
|
+
* @name adapterKey
|
|
44
|
+
* @description Build the registry key for a plugin/capability pair.
|
|
45
|
+
*
|
|
46
|
+
* @param pluginId - The premium plugin id.
|
|
47
|
+
* @param capabilityId - The capability id within the plugin.
|
|
48
|
+
* @returns The registry key string.
|
|
49
|
+
*
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
function adapterKey(pluginId, capabilityId) {
|
|
53
|
+
return `${pluginId}:${capabilityId}`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* @name configuredPluginDir
|
|
57
|
+
* @description Resolve the configured plugin directory from `SAP_MCP_PLUGIN_DIR`.
|
|
58
|
+
*
|
|
59
|
+
* @returns The absolute resolved path, or `null` if the env var is unset/empty.
|
|
60
|
+
*
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
function configuredPluginDir() {
|
|
64
|
+
const raw = process.env.SAP_MCP_PLUGIN_DIR;
|
|
65
|
+
if (!raw || !raw.trim())
|
|
66
|
+
return null;
|
|
67
|
+
return resolve(raw.trim());
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @name loadProviderAdapter
|
|
71
|
+
* @description Dynamically load a provider adapter from the private subrepo.
|
|
72
|
+
*
|
|
73
|
+
* The adapter module must be located at:
|
|
74
|
+
* `<SAP_MCP_PLUGIN_DIR>/providers/<pluginId>/<capabilityId>.js`
|
|
75
|
+
* (or `.ts` if running via tsx/ts-node).
|
|
76
|
+
*
|
|
77
|
+
* The module must export a default factory function that returns a
|
|
78
|
+
* `PremiumProviderAdapter`:
|
|
79
|
+
*
|
|
80
|
+
* ```ts
|
|
81
|
+
* export default function createAdapter(): PremiumProviderAdapter { ... }
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @param pluginId - The premium plugin id.
|
|
85
|
+
* @param capabilityId - The capability id within the plugin.
|
|
86
|
+
* @returns The loaded and connected `PremiumProviderAdapter`, or `null` if
|
|
87
|
+
* private plugins are disabled, the dir is not configured, or the module
|
|
88
|
+
* is not found.
|
|
89
|
+
*
|
|
90
|
+
* @usedBy `getProviderAdapter`
|
|
91
|
+
*/
|
|
92
|
+
export async function loadProviderAdapter(pluginId, capabilityId) {
|
|
93
|
+
const key = adapterKey(pluginId, capabilityId);
|
|
94
|
+
if (!privatePremiumPluginsEnabled()) {
|
|
95
|
+
loadFailureRegistry.set(key, 'SAP_MCP_ENABLE_PREMIUM_PLUGINS is not set to true or 1.');
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const pluginDir = configuredPluginDir();
|
|
99
|
+
if (!pluginDir) {
|
|
100
|
+
loadFailureRegistry.set(key, 'SAP_MCP_PLUGIN_DIR is not configured.');
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
// Resolve the capability to check it exists and get provider env requirements.
|
|
104
|
+
const resolved = findPremiumCapability(pluginId, capabilityId);
|
|
105
|
+
if (!resolved) {
|
|
106
|
+
loadFailureRegistry.set(key, `Capability ${pluginId}:${capabilityId} not found in plugin catalog.`);
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
// Check that all required provider env vars are set.
|
|
110
|
+
const missingEnv = resolved.capability.providerEnv.filter(envName => !process.env[envName]);
|
|
111
|
+
if (missingEnv.length > 0) {
|
|
112
|
+
loadFailureRegistry.set(key, `Missing required env vars: ${missingEnv.join(', ')}`);
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
const existing = adapterRegistry.get(key);
|
|
116
|
+
if (existing)
|
|
117
|
+
return existing;
|
|
118
|
+
// Try .js first (built), then .ts (dev).
|
|
119
|
+
const jsPath = join(pluginDir, 'providers', pluginId, `${capabilityId}.js`);
|
|
120
|
+
const tsPath = join(pluginDir, 'providers', pluginId, `${capabilityId}.ts`);
|
|
121
|
+
let modulePath = null;
|
|
122
|
+
if (existsSync(jsPath)) {
|
|
123
|
+
modulePath = jsPath;
|
|
124
|
+
}
|
|
125
|
+
else if (existsSync(tsPath)) {
|
|
126
|
+
modulePath = tsPath;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
loadFailureRegistry.set(key, `Provider file not found at ${jsPath} (or .ts). Run 'npx tsc' in the subrepo to compile providers.`);
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
const moduleUrl = pathToFileURL(modulePath).href;
|
|
134
|
+
const imported = await import(moduleUrl);
|
|
135
|
+
if (typeof imported.default !== 'function') {
|
|
136
|
+
const msg = `Adapter module ${modulePath} has no default export function.`;
|
|
137
|
+
loadFailureRegistry.set(key, msg);
|
|
138
|
+
console.warn(`[provider-bridge] ${msg}`);
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
const adapter = imported.default();
|
|
142
|
+
if (!adapter || typeof adapter.connect !== 'function') {
|
|
143
|
+
const msg = `Adapter factory for ${modulePath} returned invalid adapter (missing connect).`;
|
|
144
|
+
loadFailureRegistry.set(key, msg);
|
|
145
|
+
console.warn(`[provider-bridge] ${msg}`);
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
await adapter.connect();
|
|
149
|
+
adapterRegistry.set(key, adapter);
|
|
150
|
+
loadFailureRegistry.delete(key);
|
|
151
|
+
return adapter;
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
155
|
+
const fullMsg = `Failed to load provider adapter from ${modulePath}: ${msg}`;
|
|
156
|
+
loadFailureRegistry.set(key, fullMsg);
|
|
157
|
+
console.error(`[provider-bridge] ${fullMsg}`);
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* @name getProviderAdapter
|
|
163
|
+
* @description Get or load a provider adapter for a plugin/capability pair.
|
|
164
|
+
*
|
|
165
|
+
* If the adapter is already in the registry, returns it directly.
|
|
166
|
+
* Otherwise, attempts to load it from the private subrepo.
|
|
167
|
+
*
|
|
168
|
+
* @param pluginId - The premium plugin id.
|
|
169
|
+
* @param capabilityId - The capability id within the plugin.
|
|
170
|
+
* @returns The `PremiumProviderAdapter`, or `null` if not available.
|
|
171
|
+
*
|
|
172
|
+
* @usedBy `stream-broker.ts`, `webhook-engine.ts`
|
|
173
|
+
*/
|
|
174
|
+
export async function getProviderAdapter(pluginId, capabilityId) {
|
|
175
|
+
const key = adapterKey(pluginId, capabilityId);
|
|
176
|
+
const existing = adapterRegistry.get(key);
|
|
177
|
+
if (existing)
|
|
178
|
+
return existing;
|
|
179
|
+
return loadProviderAdapter(pluginId, capabilityId);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* @name getProviderHealth
|
|
183
|
+
* @description Get health status for a specific provider adapter.
|
|
184
|
+
*
|
|
185
|
+
* @param pluginId - The premium plugin id.
|
|
186
|
+
* @param capabilityId - The capability id within the plugin.
|
|
187
|
+
* @returns `ProviderHealth` if the adapter is loaded, otherwise a default unhealthy status.
|
|
188
|
+
*
|
|
189
|
+
* @usedBy `metrics.ts`
|
|
190
|
+
*/
|
|
191
|
+
export async function getProviderHealth(pluginId, capabilityId) {
|
|
192
|
+
const adapter = adapterRegistry.get(adapterKey(pluginId, capabilityId));
|
|
193
|
+
if (!adapter) {
|
|
194
|
+
return { healthy: false, lastError: 'Adapter not loaded.' };
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
return await adapter.health();
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
return {
|
|
201
|
+
healthy: false,
|
|
202
|
+
lastError: error instanceof Error ? error.message : 'Unknown provider health error.',
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* @name getAllProviderHealth
|
|
208
|
+
* @description Get health status for all configured provider adapters.
|
|
209
|
+
*
|
|
210
|
+
* Proactively attempts to load every capability whose `providerEnv` vars are
|
|
211
|
+
* all set, then reports health for each. Capabilities that fail to load get
|
|
212
|
+
* an unhealthy entry with the failure reason in `lastError`.
|
|
213
|
+
*
|
|
214
|
+
* This ensures `providerHealth` is never `{}` when providers are configured —
|
|
215
|
+
* the agent can always see WHY a provider is not loading.
|
|
216
|
+
*
|
|
217
|
+
* @returns Record keyed by `pluginId:capabilityId` → `ProviderHealth`.
|
|
218
|
+
*
|
|
219
|
+
* @usedBy `metrics.ts`
|
|
220
|
+
*/
|
|
221
|
+
export async function getAllProviderHealth() {
|
|
222
|
+
const results = {};
|
|
223
|
+
// Import here to avoid circular dependency at module load time.
|
|
224
|
+
const { listPremiumPlugins } = await import('./builtin-plugins.js');
|
|
225
|
+
const plugins = listPremiumPlugins();
|
|
226
|
+
for (const plugin of plugins) {
|
|
227
|
+
for (const cap of plugin.capabilities) {
|
|
228
|
+
if (!cap.requiresProvider)
|
|
229
|
+
continue;
|
|
230
|
+
const key = adapterKey(plugin.id, cap.id);
|
|
231
|
+
// Skip if env vars are not configured — not a failure, just not ready.
|
|
232
|
+
const missingEnv = cap.providerEnv.filter(envName => !process.env[envName]);
|
|
233
|
+
if (missingEnv.length > 0)
|
|
234
|
+
continue;
|
|
235
|
+
// Env is configured — attempt to load (no-op if already loaded).
|
|
236
|
+
const adapter = await loadProviderAdapter(plugin.id, cap.id);
|
|
237
|
+
if (adapter) {
|
|
238
|
+
try {
|
|
239
|
+
results[key] = await adapter.health();
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
results[key] = {
|
|
243
|
+
healthy: false,
|
|
244
|
+
lastError: error instanceof Error ? error.message : 'Unknown provider health error.',
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
// Load failed — surface the failure reason from the registry.
|
|
250
|
+
const failureReason = loadFailureRegistry.get(key) ?? 'Adapter failed to load for unknown reason.';
|
|
251
|
+
results[key] = {
|
|
252
|
+
healthy: false,
|
|
253
|
+
lastError: failureReason,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return results;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* @name subscribeToProvider
|
|
262
|
+
* @description Subscribe to events from a provider adapter with filters.
|
|
263
|
+
*
|
|
264
|
+
* Convenience wrapper that loads the adapter and returns the async iterable.
|
|
265
|
+
*
|
|
266
|
+
* @param pluginId - The premium plugin id.
|
|
267
|
+
* @param capabilityId - The capability id within the plugin.
|
|
268
|
+
* @param filters — Filter object passed to the adapter's `subscribe()`.
|
|
269
|
+
* @returns Async iterable of `ProviderEvent`, or `null` if the adapter is not available.
|
|
270
|
+
*
|
|
271
|
+
* @usedBy `stream-broker.ts`, `webhook-engine.ts`
|
|
272
|
+
*/
|
|
273
|
+
export async function subscribeToProvider(pluginId, capabilityId, filters) {
|
|
274
|
+
const adapter = await getProviderAdapter(pluginId, capabilityId);
|
|
275
|
+
if (!adapter) {
|
|
276
|
+
const key = adapterKey(pluginId, capabilityId);
|
|
277
|
+
const failureReason = loadFailureRegistry.get(key) ?? 'unknown reason';
|
|
278
|
+
console.error(`[provider-bridge] subscribeToProvider: adapter not available for ${key}: ${failureReason}`);
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
return adapter.subscribe(filters);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* @name disconnectAllProviders
|
|
285
|
+
* @description Disconnect all loaded provider adapters gracefully.
|
|
286
|
+
*
|
|
287
|
+
* Called during server shutdown to clean up connections.
|
|
288
|
+
*
|
|
289
|
+
* @usedBy `remote/server.ts` shutdown handler
|
|
290
|
+
*/
|
|
291
|
+
export async function disconnectAllProviders() {
|
|
292
|
+
for (const [key, adapter] of adapterRegistry.entries()) {
|
|
293
|
+
try {
|
|
294
|
+
await adapter.disconnect();
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
// Best-effort disconnect — ignore errors during shutdown.
|
|
298
|
+
}
|
|
299
|
+
adapterRegistry.delete(key);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* @name preloadPremiumProviders
|
|
304
|
+
* @description Eagerly load and connect all configured provider adapters at startup.
|
|
305
|
+
*
|
|
306
|
+
* Called by the remote server during `start()` — before the HTTP listener
|
|
307
|
+
* accepts requests. This ensures providers are running when the first agent
|
|
308
|
+
* session arrives, eliminates cold-start latency, and surfaces configuration
|
|
309
|
+
* errors immediately in the startup logs.
|
|
310
|
+
*
|
|
311
|
+
* Iterates every capability that requires a provider, checks env readiness,
|
|
312
|
+
* and attempts to load + connect each adapter. Failures are logged but do not
|
|
313
|
+
* block server startup — the server starts regardless, and `providerHealth`
|
|
314
|
+
* will report the failure reason when queried.
|
|
315
|
+
*
|
|
316
|
+
* @usedBy `remote/server.ts:start()` — after premium memory manager init.
|
|
317
|
+
*/
|
|
318
|
+
export async function preloadPremiumProviders() {
|
|
319
|
+
const { listPremiumPlugins } = await import('./builtin-plugins.js');
|
|
320
|
+
const plugins = listPremiumPlugins();
|
|
321
|
+
let loaded = 0;
|
|
322
|
+
let failed = 0;
|
|
323
|
+
let skipped = 0;
|
|
324
|
+
for (const plugin of plugins) {
|
|
325
|
+
for (const cap of plugin.capabilities) {
|
|
326
|
+
if (!cap.requiresProvider)
|
|
327
|
+
continue;
|
|
328
|
+
// Skip if env vars are not configured.
|
|
329
|
+
const missingEnv = cap.providerEnv.filter(envName => !process.env[envName]);
|
|
330
|
+
if (missingEnv.length > 0) {
|
|
331
|
+
skipped++;
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
const key = adapterKey(plugin.id, cap.id);
|
|
335
|
+
const adapter = await loadProviderAdapter(plugin.id, cap.id);
|
|
336
|
+
if (adapter) {
|
|
337
|
+
loaded++;
|
|
338
|
+
console.log(`[provider-bridge] Preloaded ${key} — healthy`);
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
failed++;
|
|
342
|
+
const reason = loadFailureRegistry.get(key) ?? 'unknown reason';
|
|
343
|
+
console.error(`[provider-bridge] Failed to preload ${key} — ${reason}`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
console.log(`[provider-bridge] Preload complete: ${loaded} loaded, ${failed} failed, ${skipped} skipped (env not configured).`);
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=provider-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-bridge.js","sourceRoot":"","sources":["../../src/premium/provider-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAE5E;;GAEG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkC,CAAC;AAElE;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEtD;;;;;;;;;GASG;AACH,SAAS,UAAU,CAAC,QAAgB,EAAE,YAAoB;IACxD,OAAO,GAAG,QAAQ,IAAI,YAAY,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,YAAoB;IAEpB,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE/C,IAAI,CAAC,4BAA4B,EAAE,EAAE,CAAC;QACpC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,yDAAyD,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,QAAQ,IAAI,YAAY,+BAA+B,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qDAAqD;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5F,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,8BAA8B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,yCAAyC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;IAE5E,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,8BAA8B,MAAM,+DAA+D,CAAC,CAAC;QAClI,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAA+C,CAAC;QACvF,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,kBAAkB,UAAU,kCAAkC,CAAC;YAC3E,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,uBAAuB,UAAU,8CAA8C,CAAC;YAC5F,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,wCAAwC,UAAU,KAAK,GAAG,EAAE,CAAC;QAC7E,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,YAAoB;IAEpB,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,OAAO,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,YAAoB;IAEpB,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC;SACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,OAAO,GAAmC,EAAE,CAAC;IAEnD,gEAAgE;IAChE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IAErC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,gBAAgB;gBAAE,SAAS;YAEpC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE1C,uEAAuE;YACvE,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS;YAEpC,iEAAiE;YACjE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE7D,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;gBACxC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,GAAG;wBACb,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC;qBACrF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,8DAA8D;gBAC9D,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,4CAA4C,CAAC;gBACnG,OAAO,CAAC,GAAG,CAAC,GAAG;oBACb,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,aAAa;iBACzB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,YAAoB,EACpB,OAAgC;IAEhC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACjE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC;QACvE,OAAO,CAAC,KAAK,CACX,oEAAoE,GAAG,KAAK,aAAa,EAAE,CAC5F,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;QACD,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IAErC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,gBAAgB;gBAAE,SAAS;YAEpC,uCAAuC;YACvC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YAED,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE7D,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,YAAY,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC;gBAChE,OAAO,CAAC,KAAK,CAAC,uCAAuC,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CACT,uCAAuC,MAAM,YAAY,MAAM,YAAY,OAAO,gCAAgC,CACnH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name premium/session-manager
|
|
3
|
+
* @description In-memory lifecycle manager for premium session plans.
|
|
4
|
+
*
|
|
5
|
+
* When an agent calls `sap_premium_create_session_plan` (via `premium-tools.ts`),
|
|
6
|
+
* this module resolves the requested capability, clamps units/TTL to the
|
|
7
|
+
* capability's pricing bounds, checks provider env readiness, calculates the
|
|
8
|
+
* estimated USD price, and stores the resulting `PremiumSessionRecord` in an
|
|
9
|
+
* in-memory `Map` keyed by session id.
|
|
10
|
+
*
|
|
11
|
+
* Session lifecycle states:
|
|
12
|
+
*
|
|
13
|
+
* pending_payment → active → closed
|
|
14
|
+
* pending_payment → expired (if TTL passes before activation)
|
|
15
|
+
* blocked_requires_provider (if provider env vars are not set)
|
|
16
|
+
*
|
|
17
|
+
* Sessions auto-expire after their TTL and are pruned on every create/list
|
|
18
|
+
* call. A hard cap of 1 000 concurrent session plans prevents unbounded growth.
|
|
19
|
+
*
|
|
20
|
+
* @flow
|
|
21
|
+
* 1. MCP tool `sap_premium_session_start` → `createPremiumSessionPlan()`.
|
|
22
|
+
* 2. MCP tool `sap_premium_activate_session` → `activateSession()`.
|
|
23
|
+
* 3. MCP tool `sap_premium_close_session` → `closeSession()`.
|
|
24
|
+
* 4. MCP tool `sap_premium_session_status` → `getPremiumSession()` / `listPremiumSessions()`.
|
|
25
|
+
*
|
|
26
|
+
* @module premium/session-manager
|
|
27
|
+
*/
|
|
28
|
+
import type { PremiumActivationResult, PremiumSessionRecord, PremiumSessionRequest } from './types.js';
|
|
29
|
+
/**
|
|
30
|
+
* @name createPremiumSessionPlan
|
|
31
|
+
* @description Create and store a premium session plan for a buyer request.
|
|
32
|
+
*
|
|
33
|
+
* Resolution steps:
|
|
34
|
+
* 1. Prune expired/overflow sessions from the store.
|
|
35
|
+
* 2. Look up the capability via `findPremiumCapability` (builtin + private).
|
|
36
|
+
* 3. Clamp `requestedUnits` to [minUnits, maxUnits] and `ttlSeconds` to [60, 3600].
|
|
37
|
+
* 4. Compute `estimatedPriceUsd = requestedUnits × unitPriceUsd`.
|
|
38
|
+
* 5. Check whether all `providerEnv` vars are set in `process.env`.
|
|
39
|
+
* 6. Set status to `blocked_requires_provider` if provider is not ready,
|
|
40
|
+
* otherwise `pending_payment`.
|
|
41
|
+
* 7. Generate a `sap-premium-<uuid>` session id, store, and return the record.
|
|
42
|
+
*
|
|
43
|
+
* @param request - Buyer-provided session request (plugin, capability, units, TTL).
|
|
44
|
+
* @returns The stored `PremiumSessionRecord` with server-generated fields.
|
|
45
|
+
* @throws {Error} If the plugin/capability pair is not found in the catalog.
|
|
46
|
+
*
|
|
47
|
+
* @usedBy `premium-tools.ts` → MCP tool `sap_premium_session_start`
|
|
48
|
+
*/
|
|
49
|
+
export declare function createPremiumSessionPlan(request: PremiumSessionRequest): PremiumSessionRecord;
|
|
50
|
+
/**
|
|
51
|
+
* @name getPremiumSession
|
|
52
|
+
* @description Retrieve a session plan by id, lazily marking it as expired.
|
|
53
|
+
*
|
|
54
|
+
* If the session's `expiresAt` has passed and it is not already marked
|
|
55
|
+
* `expired`, the stored record is updated in place and the expired version
|
|
56
|
+
* is returned. A shallow copy is always returned to prevent external mutation
|
|
57
|
+
* of the internal store.
|
|
58
|
+
*
|
|
59
|
+
* @param sessionId - The session id returned by `createPremiumSessionPlan`.
|
|
60
|
+
* @returns The session record, or `null` if not found.
|
|
61
|
+
*
|
|
62
|
+
* @usedBy `premium-tools.ts` → MCP tool `sap_premium_session_status`
|
|
63
|
+
*/
|
|
64
|
+
export declare function getPremiumSession(sessionId: string): PremiumSessionRecord | null;
|
|
65
|
+
/**
|
|
66
|
+
* @name listPremiumSessions
|
|
67
|
+
* @description List all non-null session plans after pruning expired entries.
|
|
68
|
+
*
|
|
69
|
+
* @returns Array of all current session records (including lazily-expired ones).
|
|
70
|
+
*
|
|
71
|
+
* @usedBy `premium-tools.ts` → MCP tool `sap_premium_session_status`
|
|
72
|
+
*/
|
|
73
|
+
export declare function listPremiumSessions(): PremiumSessionRecord[];
|
|
74
|
+
/**
|
|
75
|
+
* @name activateSession
|
|
76
|
+
* @description Transition a session from `pending_payment` to `active`.
|
|
77
|
+
*
|
|
78
|
+
* Called by the activation manager after the x402/pay.sh receipt has been
|
|
79
|
+
* verified. The session's `nextAction` is updated to reflect the active state.
|
|
80
|
+
* If the session is not in `pending_payment` status, activation is rejected.
|
|
81
|
+
*
|
|
82
|
+
* @param sessionId - The session id to activate.
|
|
83
|
+
* @returns The activation result with `status=active` on success, or the
|
|
84
|
+
* blocking status on failure.
|
|
85
|
+
*
|
|
86
|
+
* @usedBy `activation-manager.ts:activateSession`
|
|
87
|
+
*/
|
|
88
|
+
export declare function activateSession(sessionId: string): PremiumActivationResult;
|
|
89
|
+
/**
|
|
90
|
+
* @name closeSession
|
|
91
|
+
* @description Transition an active session to `closed`.
|
|
92
|
+
*
|
|
93
|
+
* Called by the delivery rail when the unit quota is reached, when the buyer
|
|
94
|
+
* explicitly closes the session, or when the server shuts down gracefully.
|
|
95
|
+
*
|
|
96
|
+
* @param sessionId - The session id to close.
|
|
97
|
+
* @param reason - Human-readable reason for closure.
|
|
98
|
+
* @returns True if the session was closed, false if it was not found or not active.
|
|
99
|
+
*
|
|
100
|
+
* @usedBy `stream-broker.ts`, `webhook-engine.ts`, `premium-tools.ts`
|
|
101
|
+
*/
|
|
102
|
+
export declare function closeSession(sessionId: string, reason: string): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* @name decrementSessionQuota
|
|
105
|
+
* @description Decrement the remaining units quota for an active session.
|
|
106
|
+
*
|
|
107
|
+
* Called by the stream broker / webhook engine after each delivered event.
|
|
108
|
+
* When the quota reaches zero, the session is automatically closed.
|
|
109
|
+
*
|
|
110
|
+
* @param sessionId - The active session id.
|
|
111
|
+
* @returns The remaining units after decrement, or -1 if the session is not active.
|
|
112
|
+
*
|
|
113
|
+
* @usedBy `stream-broker.ts`, `webhook-engine.ts`
|
|
114
|
+
*/
|
|
115
|
+
export declare function decrementSessionQuota(sessionId: string): number;
|
|
116
|
+
/**
|
|
117
|
+
* @name clearAllSessions
|
|
118
|
+
* @description Clear all sessions from the in-memory store.
|
|
119
|
+
*
|
|
120
|
+
* Used in tests and during graceful server shutdown.
|
|
121
|
+
*
|
|
122
|
+
* @internal
|
|
123
|
+
*/
|
|
124
|
+
export declare function clearAllSessions(): void;
|
|
125
|
+
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/premium/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAmEvG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CA6C7F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAehF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,oBAAoB,EAAE,CAG5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB,CA0E1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAWvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgB/D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|