@oobe-protocol-labs/sap-mcp-server 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +159 -0
- package/CHANGELOG.md +55 -0
- package/LICENSE +21 -0
- package/README.md +223 -0
- package/config.example.json +64 -0
- package/config.schema.json +370 -0
- package/config.secure-example.json +100 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/mcp/errors.d.ts +7 -0
- package/dist/adapters/mcp/errors.d.ts.map +1 -0
- package/dist/adapters/mcp/errors.js +10 -0
- package/dist/adapters/mcp/errors.js.map +1 -0
- package/dist/adapters/mcp/index.d.ts +8 -0
- package/dist/adapters/mcp/index.d.ts.map +1 -0
- package/dist/adapters/mcp/index.js +8 -0
- package/dist/adapters/mcp/index.js.map +1 -0
- package/dist/adapters/mcp/prompt-response.d.ts +13 -0
- package/dist/adapters/mcp/prompt-response.d.ts.map +1 -0
- package/dist/adapters/mcp/prompt-response.js +7 -0
- package/dist/adapters/mcp/prompt-response.js.map +1 -0
- package/dist/adapters/mcp/resource-response.d.ts +8 -0
- package/dist/adapters/mcp/resource-response.d.ts.map +1 -0
- package/dist/adapters/mcp/resource-response.js +7 -0
- package/dist/adapters/mcp/resource-response.js.map +1 -0
- package/dist/adapters/mcp/sdk-compat.d.ts +191 -0
- package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -0
- package/dist/adapters/mcp/sdk-compat.js +606 -0
- package/dist/adapters/mcp/sdk-compat.js.map +1 -0
- package/dist/adapters/mcp/tool-response.d.ts +32 -0
- package/dist/adapters/mcp/tool-response.d.ts.map +1 -0
- package/dist/adapters/mcp/tool-response.js +27 -0
- package/dist/adapters/mcp/tool-response.js.map +1 -0
- package/dist/adapters/solana/commitment.d.ts +9 -0
- package/dist/adapters/solana/commitment.d.ts.map +1 -0
- package/dist/adapters/solana/commitment.js +14 -0
- package/dist/adapters/solana/commitment.js.map +1 -0
- package/dist/adapters/solana/connection.d.ts +10 -0
- package/dist/adapters/solana/connection.d.ts.map +1 -0
- package/dist/adapters/solana/connection.js +13 -0
- package/dist/adapters/solana/connection.js.map +1 -0
- package/dist/adapters/solana/index.d.ts +7 -0
- package/dist/adapters/solana/index.d.ts.map +1 -0
- package/dist/adapters/solana/index.js +7 -0
- package/dist/adapters/solana/index.js.map +1 -0
- package/dist/adapters/solana/public-key.d.ts +9 -0
- package/dist/adapters/solana/public-key.d.ts.map +1 -0
- package/dist/adapters/solana/public-key.js +11 -0
- package/dist/adapters/solana/public-key.js.map +1 -0
- package/dist/cli.d.ts +29 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +269 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/defaults.d.ts +28 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +28 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/env.d.ts +297 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +563 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/mcp-client-injection.d.ts +113 -0
- package/dist/config/mcp-client-injection.d.ts.map +1 -0
- package/dist/config/mcp-client-injection.js +453 -0
- package/dist/config/mcp-client-injection.js.map +1 -0
- package/dist/config/paths.d.ts +37 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +93 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/profiles.d.ts +85 -0
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/config/profiles.js +346 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/config/schema.d.ts +9 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +8 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/secure-config.d.ts +607 -0
- package/dist/config/secure-config.d.ts.map +1 -0
- package/dist/config/secure-config.js +526 -0
- package/dist/config/secure-config.js.map +1 -0
- package/dist/config/setup.d.ts +42 -0
- package/dist/config/setup.d.ts.map +1 -0
- package/dist/config/setup.js +173 -0
- package/dist/config/setup.js.map +1 -0
- package/dist/config/wizard.d.ts +15 -0
- package/dist/config/wizard.d.ts.map +1 -0
- package/dist/config/wizard.js +1176 -0
- package/dist/config/wizard.js.map +1 -0
- package/dist/config-cli.d.ts +21 -0
- package/dist/config-cli.d.ts.map +1 -0
- package/dist/config-cli.js +679 -0
- package/dist/config-cli.js.map +1 -0
- package/dist/core/constants.d.ts +78 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +78 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/errors.d.ts +188 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +337 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/guards.d.ts +41 -0
- package/dist/core/guards.d.ts.map +1 -0
- package/dist/core/guards.js +93 -0
- package/dist/core/guards.js.map +1 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +10 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +64 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +159 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/result.d.ts +49 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js +61 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/types.d.ts +147 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +8 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/payments/http-adapter.d.ts +76 -0
- package/dist/payments/http-adapter.d.ts.map +1 -0
- package/dist/payments/http-adapter.js +126 -0
- package/dist/payments/http-adapter.js.map +1 -0
- package/dist/payments/index.d.ts +12 -0
- package/dist/payments/index.d.ts.map +1 -0
- package/dist/payments/index.js +9 -0
- package/dist/payments/index.js.map +1 -0
- package/dist/payments/json-rpc.d.ts +49 -0
- package/dist/payments/json-rpc.d.ts.map +1 -0
- package/dist/payments/json-rpc.js +53 -0
- package/dist/payments/json-rpc.js.map +1 -0
- package/dist/payments/monetization-gate.d.ts +49 -0
- package/dist/payments/monetization-gate.d.ts.map +1 -0
- package/dist/payments/monetization-gate.js +398 -0
- package/dist/payments/monetization-gate.js.map +1 -0
- package/dist/payments/oobe-facilitator-server.d.ts +71 -0
- package/dist/payments/oobe-facilitator-server.d.ts.map +1 -0
- package/dist/payments/oobe-facilitator-server.js +409 -0
- package/dist/payments/oobe-facilitator-server.js.map +1 -0
- package/dist/payments/pay-sh-spec.d.ts +44 -0
- package/dist/payments/pay-sh-spec.d.ts.map +1 -0
- package/dist/payments/pay-sh-spec.js +218 -0
- package/dist/payments/pay-sh-spec.js.map +1 -0
- package/dist/payments/pricing.d.ts +60 -0
- package/dist/payments/pricing.d.ts.map +1 -0
- package/dist/payments/pricing.js +272 -0
- package/dist/payments/pricing.js.map +1 -0
- package/dist/payments/usage-ledger.d.ts +84 -0
- package/dist/payments/usage-ledger.d.ts.map +1 -0
- package/dist/payments/usage-ledger.js +126 -0
- package/dist/payments/usage-ledger.js.map +1 -0
- package/dist/policy/bento-policy-engine.d.ts +71 -0
- package/dist/policy/bento-policy-engine.d.ts.map +1 -0
- package/dist/policy/bento-policy-engine.js +218 -0
- package/dist/policy/bento-policy-engine.js.map +1 -0
- package/dist/policy/default-policies.d.ts +9 -0
- package/dist/policy/default-policies.d.ts.map +1 -0
- package/dist/policy/default-policies.js +69 -0
- package/dist/policy/default-policies.js.map +1 -0
- package/dist/policy/hybrid-policy-engine.d.ts +95 -0
- package/dist/policy/hybrid-policy-engine.d.ts.map +1 -0
- package/dist/policy/hybrid-policy-engine.js +297 -0
- package/dist/policy/hybrid-policy-engine.js.map +1 -0
- package/dist/policy/index.d.ts +10 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +10 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/local-policy-engine.d.ts +119 -0
- package/dist/policy/local-policy-engine.d.ts.map +1 -0
- package/dist/policy/local-policy-engine.js +318 -0
- package/dist/policy/local-policy-engine.js.map +1 -0
- package/dist/policy/permission-checks.d.ts +19 -0
- package/dist/policy/permission-checks.d.ts.map +1 -0
- package/dist/policy/permission-checks.js +60 -0
- package/dist/policy/permission-checks.js.map +1 -0
- package/dist/policy/policy-engine.d.ts +57 -0
- package/dist/policy/policy-engine.d.ts.map +1 -0
- package/dist/policy/policy-engine.js +162 -0
- package/dist/policy/policy-engine.js.map +1 -0
- package/dist/policy/policy-types.d.ts +46 -0
- package/dist/policy/policy-types.d.ts.map +1 -0
- package/dist/policy/policy-types.js +5 -0
- package/dist/policy/policy-types.js.map +1 -0
- package/dist/policy/risk-level.d.ts +18 -0
- package/dist/policy/risk-level.d.ts.map +1 -0
- package/dist/policy/risk-level.js +46 -0
- package/dist/policy/risk-level.js.map +1 -0
- package/dist/policy/spending-limits.d.ts +17 -0
- package/dist/policy/spending-limits.d.ts.map +1 -0
- package/dist/policy/spending-limits.js +40 -0
- package/dist/policy/spending-limits.js.map +1 -0
- package/dist/prompts/context/sap-agent-context.prompt.d.ts +64 -0
- package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -0
- package/dist/prompts/context/sap-agent-context.prompt.js +336 -0
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -0
- package/dist/prompts/developer/debug-sap-error.prompt.d.ts +13 -0
- package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -0
- package/dist/prompts/developer/debug-sap-error.prompt.js +78 -0
- package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +13 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.js +132 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -0
- package/dist/prompts/developer/index.d.ts +6 -0
- package/dist/prompts/developer/index.d.ts.map +1 -0
- package/dist/prompts/developer/index.js +6 -0
- package/dist/prompts/developer/index.js.map +1 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +13 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +97 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -0
- package/dist/prompts/execution-proof/index.d.ts +6 -0
- package/dist/prompts/execution-proof/index.d.ts.map +1 -0
- package/dist/prompts/execution-proof/index.js +6 -0
- package/dist/prompts/execution-proof/index.js.map +1 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +13 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +95 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -0
- package/dist/prompts/index.d.ts +5 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +5 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/payments/create-paid-api.prompt.d.ts +13 -0
- package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -0
- package/dist/prompts/payments/create-paid-api.prompt.js +142 -0
- package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +13 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.js +83 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -0
- package/dist/prompts/payments/index.d.ts +6 -0
- package/dist/prompts/payments/index.d.ts.map +1 -0
- package/dist/prompts/payments/index.js +6 -0
- package/dist/prompts/payments/index.js.map +1 -0
- package/dist/prompts/register-prompts.d.ts +10 -0
- package/dist/prompts/register-prompts.d.ts.map +1 -0
- package/dist/prompts/register-prompts.js +40 -0
- package/dist/prompts/register-prompts.js.map +1 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +13 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.js +85 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -0
- package/dist/prompts/registry/index.d.ts +6 -0
- package/dist/prompts/registry/index.d.ts.map +1 -0
- package/dist/prompts/registry/index.js +6 -0
- package/dist/prompts/registry/index.js.map +1 -0
- package/dist/prompts/registry/register-sap-agent.prompt.d.ts +13 -0
- package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -0
- package/dist/prompts/registry/register-sap-agent.prompt.js +152 -0
- package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -0
- package/dist/remote/auth/index.d.ts +86 -0
- package/dist/remote/auth/index.d.ts.map +1 -0
- package/dist/remote/auth/index.js +152 -0
- package/dist/remote/auth/index.js.map +1 -0
- package/dist/remote/server.d.ts +140 -0
- package/dist/remote/server.d.ts.map +1 -0
- package/dist/remote/server.js +412 -0
- package/dist/remote/server.js.map +1 -0
- package/dist/resources/current/sap-current-config.resource.d.ts +30 -0
- package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -0
- package/dist/resources/current/sap-current-config.resource.js +142 -0
- package/dist/resources/current/sap-current-config.resource.js.map +1 -0
- package/dist/resources/execution-proof/index.d.ts +5 -0
- package/dist/resources/execution-proof/index.d.ts.map +1 -0
- package/dist/resources/execution-proof/index.js +5 -0
- package/dist/resources/execution-proof/index.js.map +1 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +13 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.js +75 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -0
- package/dist/resources/index.d.ts +5 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +5 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/memory/index.d.ts +5 -0
- package/dist/resources/memory/index.d.ts.map +1 -0
- package/dist/resources/memory/index.js +5 -0
- package/dist/resources/memory/index.js.map +1 -0
- package/dist/resources/memory/sap-memory.resource.d.ts +13 -0
- package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -0
- package/dist/resources/memory/sap-memory.resource.js +77 -0
- package/dist/resources/memory/sap-memory.resource.js.map +1 -0
- package/dist/resources/profile/sap-active-profile.resource.d.ts +51 -0
- package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -0
- package/dist/resources/profile/sap-active-profile.resource.js +119 -0
- package/dist/resources/profile/sap-active-profile.resource.js.map +1 -0
- package/dist/resources/register-resources.d.ts +10 -0
- package/dist/resources/register-resources.d.ts.map +1 -0
- package/dist/resources/register-resources.js +33 -0
- package/dist/resources/register-resources.js.map +1 -0
- package/dist/resources/registry/index.d.ts +6 -0
- package/dist/resources/registry/index.d.ts.map +1 -0
- package/dist/resources/registry/index.js +6 -0
- package/dist/resources/registry/index.js.map +1 -0
- package/dist/resources/registry/sap-agent.resource.d.ts +13 -0
- package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -0
- package/dist/resources/registry/sap-agent.resource.js +75 -0
- package/dist/resources/registry/sap-agent.resource.js.map +1 -0
- package/dist/resources/registry/sap-global-registry.resource.d.ts +13 -0
- package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -0
- package/dist/resources/registry/sap-global-registry.resource.js +71 -0
- package/dist/resources/registry/sap-global-registry.resource.js.map +1 -0
- package/dist/resources/reputation/index.d.ts +5 -0
- package/dist/resources/reputation/index.d.ts.map +1 -0
- package/dist/resources/reputation/index.js +5 -0
- package/dist/resources/reputation/index.js.map +1 -0
- package/dist/resources/reputation/sap-reputation.resource.d.ts +13 -0
- package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -0
- package/dist/resources/reputation/sap-reputation.resource.js +75 -0
- package/dist/resources/reputation/sap-reputation.resource.js.map +1 -0
- package/dist/resources/stats/sap-network-stats.resource.d.ts +14 -0
- package/dist/resources/stats/sap-network-stats.resource.d.ts.map +1 -0
- package/dist/resources/stats/sap-network-stats.resource.js +86 -0
- package/dist/resources/stats/sap-network-stats.resource.js.map +1 -0
- package/dist/resources/tool-schema/index.d.ts +5 -0
- package/dist/resources/tool-schema/index.d.ts.map +1 -0
- package/dist/resources/tool-schema/index.js +5 -0
- package/dist/resources/tool-schema/index.js.map +1 -0
- package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +13 -0
- package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -0
- package/dist/resources/tool-schema/sap-tool-schema.resource.js +75 -0
- package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -0
- package/dist/sap/index.d.ts +7 -0
- package/dist/sap/index.d.ts.map +1 -0
- package/dist/sap/index.js +6 -0
- package/dist/sap/index.js.map +1 -0
- package/dist/sap/sap-client-manager.d.ts +54 -0
- package/dist/sap/sap-client-manager.d.ts.map +1 -0
- package/dist/sap/sap-client-manager.js +129 -0
- package/dist/sap/sap-client-manager.js.map +1 -0
- package/dist/sap/sap-errors.d.ts +13 -0
- package/dist/sap/sap-errors.d.ts.map +1 -0
- package/dist/sap/sap-errors.js +23 -0
- package/dist/sap/sap-errors.js.map +1 -0
- package/dist/sap/sap-types.d.ts +69 -0
- package/dist/sap/sap-types.d.ts.map +1 -0
- package/dist/sap/sap-types.js +5 -0
- package/dist/sap/sap-types.js.map +1 -0
- package/dist/schemas/common.schema.d.ts +42 -0
- package/dist/schemas/common.schema.d.ts.map +1 -0
- package/dist/schemas/common.schema.js +36 -0
- package/dist/schemas/common.schema.js.map +1 -0
- package/dist/schemas/developer.schema.d.ts +31 -0
- package/dist/schemas/developer.schema.d.ts.map +1 -0
- package/dist/schemas/developer.schema.js +19 -0
- package/dist/schemas/developer.schema.js.map +1 -0
- package/dist/schemas/execution-proof.schema.d.ts +44 -0
- package/dist/schemas/execution-proof.schema.d.ts.map +1 -0
- package/dist/schemas/execution-proof.schema.js +26 -0
- package/dist/schemas/execution-proof.schema.js.map +1 -0
- package/dist/schemas/identity.schema.d.ts +34 -0
- package/dist/schemas/identity.schema.d.ts.map +1 -0
- package/dist/schemas/identity.schema.js +21 -0
- package/dist/schemas/identity.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +15 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +15 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/memory.schema.d.ts +34 -0
- package/dist/schemas/memory.schema.d.ts.map +1 -0
- package/dist/schemas/memory.schema.js +21 -0
- package/dist/schemas/memory.schema.js.map +1 -0
- package/dist/schemas/payments.schema.d.ts +37 -0
- package/dist/schemas/payments.schema.d.ts.map +1 -0
- package/dist/schemas/payments.schema.js +22 -0
- package/dist/schemas/payments.schema.js.map +1 -0
- package/dist/schemas/registry.schema.d.ts +65 -0
- package/dist/schemas/registry.schema.d.ts.map +1 -0
- package/dist/schemas/registry.schema.js +34 -0
- package/dist/schemas/registry.schema.js.map +1 -0
- package/dist/schemas/reputation.schema.d.ts +31 -0
- package/dist/schemas/reputation.schema.d.ts.map +1 -0
- package/dist/schemas/reputation.schema.js +20 -0
- package/dist/schemas/reputation.schema.js.map +1 -0
- package/dist/schemas/settlement.schema.d.ts +50 -0
- package/dist/schemas/settlement.schema.d.ts.map +1 -0
- package/dist/schemas/settlement.schema.js +29 -0
- package/dist/schemas/settlement.schema.js.map +1 -0
- package/dist/schemas/tool-schema.schema.d.ts +56 -0
- package/dist/schemas/tool-schema.schema.d.ts.map +1 -0
- package/dist/schemas/tool-schema.schema.js +26 -0
- package/dist/schemas/tool-schema.schema.js.map +1 -0
- package/dist/schemas/transaction.schema.d.ts +34 -0
- package/dist/schemas/transaction.schema.d.ts.map +1 -0
- package/dist/schemas/transaction.schema.js +20 -0
- package/dist/schemas/transaction.schema.js.map +1 -0
- package/dist/security/approval-required.d.ts +9 -0
- package/dist/security/approval-required.d.ts.map +1 -0
- package/dist/security/approval-required.js +10 -0
- package/dist/security/approval-required.js.map +1 -0
- package/dist/security/index.d.ts +9 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/private-key-guard.d.ts +11 -0
- package/dist/security/private-key-guard.d.ts.map +1 -0
- package/dist/security/private-key-guard.js +22 -0
- package/dist/security/private-key-guard.js.map +1 -0
- package/dist/security/prompt-injection-notes.d.ts +13 -0
- package/dist/security/prompt-injection-notes.d.ts.map +1 -0
- package/dist/security/prompt-injection-notes.js +23 -0
- package/dist/security/prompt-injection-notes.js.map +1 -0
- package/dist/security/tool-permissions.d.ts +30 -0
- package/dist/security/tool-permissions.d.ts.map +1 -0
- package/dist/security/tool-permissions.js +270 -0
- package/dist/security/tool-permissions.js.map +1 -0
- package/dist/security/unsafe-action-guard.d.ts +28 -0
- package/dist/security/unsafe-action-guard.d.ts.map +1 -0
- package/dist/security/unsafe-action-guard.js +175 -0
- package/dist/security/unsafe-action-guard.js.map +1 -0
- package/dist/server/create-server.d.ts +12 -0
- package/dist/server/create-server.d.ts.map +1 -0
- package/dist/server/create-server.js +57 -0
- package/dist/server/create-server.js.map +1 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +7 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/register-capabilities.d.ts +10 -0
- package/dist/server/register-capabilities.d.ts.map +1 -0
- package/dist/server/register-capabilities.js +23 -0
- package/dist/server/register-capabilities.js.map +1 -0
- package/dist/server/server-metadata.d.ts +32 -0
- package/dist/server/server-metadata.d.ts.map +1 -0
- package/dist/server/server-metadata.js +32 -0
- package/dist/server/server-metadata.js.map +1 -0
- package/dist/session/agent-session.d.ts +25 -0
- package/dist/session/agent-session.d.ts.map +1 -0
- package/dist/session/agent-session.js +35 -0
- package/dist/session/agent-session.js.map +1 -0
- package/dist/session/delegated-session.d.ts +20 -0
- package/dist/session/delegated-session.d.ts.map +1 -0
- package/dist/session/delegated-session.js +47 -0
- package/dist/session/delegated-session.js.map +1 -0
- package/dist/session/index.d.ts +10 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +9 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/redis-session-store.d.ts +89 -0
- package/dist/session/redis-session-store.d.ts.map +1 -0
- package/dist/session/redis-session-store.js +219 -0
- package/dist/session/redis-session-store.js.map +1 -0
- package/dist/session/session-limits.d.ts +20 -0
- package/dist/session/session-limits.d.ts.map +1 -0
- package/dist/session/session-limits.js +55 -0
- package/dist/session/session-limits.js.map +1 -0
- package/dist/session/session-permissions.d.ts +37 -0
- package/dist/session/session-permissions.d.ts.map +1 -0
- package/dist/session/session-permissions.js +58 -0
- package/dist/session/session-permissions.js.map +1 -0
- package/dist/session/session-store.d.ts +38 -0
- package/dist/session/session-store.d.ts.map +1 -0
- package/dist/session/session-store.js +62 -0
- package/dist/session/session-store.js.map +1 -0
- package/dist/session/session-types.d.ts +33 -0
- package/dist/session/session-types.d.ts.map +1 -0
- package/dist/session/session-types.js +5 -0
- package/dist/session/session-types.js.map +1 -0
- package/dist/signer/external-signer.d.ts +16 -0
- package/dist/signer/external-signer.d.ts.map +1 -0
- package/dist/signer/external-signer.js +128 -0
- package/dist/signer/external-signer.js.map +1 -0
- package/dist/signer/index.d.ts +9 -0
- package/dist/signer/index.d.ts.map +1 -0
- package/dist/signer/index.js +8 -0
- package/dist/signer/index.js.map +1 -0
- package/dist/signer/load-keypair.d.ts +15 -0
- package/dist/signer/load-keypair.d.ts.map +1 -0
- package/dist/signer/load-keypair.js +39 -0
- package/dist/signer/load-keypair.js.map +1 -0
- package/dist/signer/local-keypair-signer.d.ts +11 -0
- package/dist/signer/local-keypair-signer.d.ts.map +1 -0
- package/dist/signer/local-keypair-signer.js +46 -0
- package/dist/signer/local-keypair-signer.js.map +1 -0
- package/dist/signer/signer-resolver.d.ts +10 -0
- package/dist/signer/signer-resolver.d.ts.map +1 -0
- package/dist/signer/signer-resolver.js +63 -0
- package/dist/signer/signer-resolver.js.map +1 -0
- package/dist/signer/signer-types.d.ts +35 -0
- package/dist/signer/signer-types.d.ts.map +1 -0
- package/dist/signer/signer-types.js +5 -0
- package/dist/signer/signer-types.js.map +1 -0
- package/dist/signer/signing-proxy.d.ts +45 -0
- package/dist/signer/signing-proxy.d.ts.map +1 -0
- package/dist/signer/signing-proxy.js +300 -0
- package/dist/signer/signing-proxy.js.map +1 -0
- package/dist/tools/client-sdk-tools.d.ts +22 -0
- package/dist/tools/client-sdk-tools.d.ts.map +1 -0
- package/dist/tools/client-sdk-tools.js +220 -0
- package/dist/tools/client-sdk-tools.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +17 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/profile-tools.d.ts +12 -0
- package/dist/tools/profile-tools.d.ts.map +1 -0
- package/dist/tools/profile-tools.js +250 -0
- package/dist/tools/profile-tools.js.map +1 -0
- package/dist/tools/register-tools.d.ts +12 -0
- package/dist/tools/register-tools.d.ts.map +1 -0
- package/dist/tools/register-tools.js +36 -0
- package/dist/tools/register-tools.js.map +1 -0
- package/dist/tools/sap-network-stats.tool.d.ts +14 -0
- package/dist/tools/sap-network-stats.tool.d.ts.map +1 -0
- package/dist/tools/sap-network-stats.tool.js +101 -0
- package/dist/tools/sap-network-stats.tool.js.map +1 -0
- package/dist/tools/sap-sdk-tools.d.ts +15 -0
- package/dist/tools/sap-sdk-tools.d.ts.map +1 -0
- package/dist/tools/sap-sdk-tools.js +1515 -0
- package/dist/tools/sap-sdk-tools.js.map +1 -0
- package/dist/tools/sap-sns-tools.d.ts +35 -0
- package/dist/tools/sap-sns-tools.d.ts.map +1 -0
- package/dist/tools/sap-sns-tools.js +626 -0
- package/dist/tools/sap-sns-tools.js.map +1 -0
- package/dist/tools/skills-tools.d.ts +12 -0
- package/dist/tools/skills-tools.d.ts.map +1 -0
- package/dist/tools/skills-tools.js +273 -0
- package/dist/tools/skills-tools.js.map +1 -0
- package/dist/tools/transaction-tools.d.ts +14 -0
- package/dist/tools/transaction-tools.d.ts.map +1 -0
- package/dist/tools/transaction-tools.js +297 -0
- package/dist/tools/transaction-tools.js.map +1 -0
- package/dist/transports/http.d.ts +40 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +212 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/index.d.ts +6 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +6 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/transports/stdio.d.ts +14 -0
- package/dist/transports/stdio.d.ts.map +1 -0
- package/dist/transports/stdio.js +32 -0
- package/dist/transports/stdio.js.map +1 -0
- package/dist/tui/components.d.ts +59 -0
- package/dist/tui/components.d.ts.map +1 -0
- package/dist/tui/components.js +82 -0
- package/dist/tui/components.js.map +1 -0
- package/dist/tui/config-wizard.d.ts +12 -0
- package/dist/tui/config-wizard.d.ts.map +1 -0
- package/dist/tui/config-wizard.js +348 -0
- package/dist/tui/config-wizard.js.map +1 -0
- package/dist/tui/wizard-save.d.ts +51 -0
- package/dist/tui/wizard-save.d.ts.map +1 -0
- package/dist/tui/wizard-save.js +148 -0
- package/dist/tui/wizard-save.js.map +1 -0
- package/docs/00_README.md +45 -0
- package/docs/01_PRODUCT_OVERVIEW.md +69 -0
- package/docs/02_ARCHITECTURE_AND_REQUEST_FLOW.md +120 -0
- package/docs/03_CONFIGURATION_AND_WIZARD.md +143 -0
- package/docs/04_LOCAL_STDIO_USAGE.md +118 -0
- package/docs/05_REMOTE_VPS_DEPLOYMENT.md +136 -0
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +162 -0
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +114 -0
- package/docs/08_SECURITY_POLICY_AND_SIGNING.md +134 -0
- package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +72 -0
- package/docs/10_OPERATIONS_RELEASE_AND_PM2.md +90 -0
- package/docs/11_CODE_QUALITY_AUDIT.md +49 -0
- package/ecosystem.config.example.cjs +55 -0
- package/package.json +132 -0
- package/skills/README.md +146 -0
- package/skills/sap-agent-registry/SKILL.md +39 -0
- package/skills/sap-agentkit/SKILL.md +40 -0
- package/skills/sap-defi/SKILL.md +51 -0
- package/skills/sap-discovery-indexing/SKILL.md +33 -0
- package/skills/sap-escrow-settlement/SKILL.md +37 -0
- package/skills/sap-ledger-session/SKILL.md +24 -0
- package/skills/sap-market-data/SKILL.md +36 -0
- package/skills/sap-mcp/SKILL.md +202 -0
- package/skills/sap-mcp/TOOL_REFERENCE.md +184 -0
- package/skills/sap-memory-vault/SKILL.md +29 -0
- package/skills/sap-nft-metaplex/SKILL.md +38 -0
- package/skills/sap-operations/SKILL.md +97 -0
- package/skills/sap-payments-x402/SKILL.md +47 -0
- package/skills/sap-reputation-attestation/SKILL.md +30 -0
- package/skills/sap-sns/SKILL.md +51 -0
- package/skills/sap-social-gaming/SKILL.md +30 -0
- package/skills/sap-solana-token/SKILL.md +32 -0
- package/skills/sap-staking/SKILL.md +24 -0
- package/skills/sap-tool-registry/SKILL.md +29 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session permissions management
|
|
3
|
+
*/
|
|
4
|
+
import type { SapPermission } from '../core/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* All available permissions
|
|
7
|
+
*/
|
|
8
|
+
export declare const ALL_PERMISSIONS: SapPermission[];
|
|
9
|
+
/**
|
|
10
|
+
* Permission categories
|
|
11
|
+
*/
|
|
12
|
+
export declare const PERMISSION_CATEGORIES: {
|
|
13
|
+
readonly registry: readonly ["registry:read", "registry:write"];
|
|
14
|
+
readonly identity: readonly ["identity:read", "identity:write"];
|
|
15
|
+
readonly reputation: readonly ["reputation:read", "reputation:write"];
|
|
16
|
+
readonly payments: readonly ["payments:read", "payments:write"];
|
|
17
|
+
readonly settlement: readonly ["settlement:read", "settlement:write"];
|
|
18
|
+
readonly memory: readonly ["memory:read", "memory:write"];
|
|
19
|
+
readonly transaction: readonly ["transaction:submit"];
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Check if permission is valid
|
|
23
|
+
*/
|
|
24
|
+
export declare function isValidPermission(permission: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Get permissions by category
|
|
27
|
+
*/
|
|
28
|
+
export declare function getPermissionsByCategory(category: keyof typeof PERMISSION_CATEGORIES): SapPermission[];
|
|
29
|
+
/**
|
|
30
|
+
* Check if permission is write permission
|
|
31
|
+
*/
|
|
32
|
+
export declare function isWritePermission(permission: SapPermission): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Get read-only version of permission
|
|
35
|
+
*/
|
|
36
|
+
export declare function toReadPermission(permission: SapPermission): SapPermission;
|
|
37
|
+
//# sourceMappingURL=session-permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-permissions.d.ts","sourceRoot":"","sources":["../../src/session/session-permissions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EAc1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;CAQ2B,CAAC;AAE9D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,OAAO,qBAAqB,GAAG,aAAa,EAAE,CAEtG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAEpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,GAAG,aAAa,CAEzE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session permissions management
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* All available permissions
|
|
6
|
+
*/
|
|
7
|
+
export const ALL_PERMISSIONS = [
|
|
8
|
+
'registry:read',
|
|
9
|
+
'registry:write',
|
|
10
|
+
'identity:read',
|
|
11
|
+
'identity:write',
|
|
12
|
+
'reputation:read',
|
|
13
|
+
'reputation:write',
|
|
14
|
+
'payments:read',
|
|
15
|
+
'payments:write',
|
|
16
|
+
'settlement:read',
|
|
17
|
+
'settlement:write',
|
|
18
|
+
'memory:read',
|
|
19
|
+
'memory:write',
|
|
20
|
+
'transaction:submit',
|
|
21
|
+
];
|
|
22
|
+
/**
|
|
23
|
+
* Permission categories
|
|
24
|
+
*/
|
|
25
|
+
export const PERMISSION_CATEGORIES = {
|
|
26
|
+
registry: ['registry:read', 'registry:write'],
|
|
27
|
+
identity: ['identity:read', 'identity:write'],
|
|
28
|
+
reputation: ['reputation:read', 'reputation:write'],
|
|
29
|
+
payments: ['payments:read', 'payments:write'],
|
|
30
|
+
settlement: ['settlement:read', 'settlement:write'],
|
|
31
|
+
memory: ['memory:read', 'memory:write'],
|
|
32
|
+
transaction: ['transaction:submit'],
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Check if permission is valid
|
|
36
|
+
*/
|
|
37
|
+
export function isValidPermission(permission) {
|
|
38
|
+
return ALL_PERMISSIONS.includes(permission);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get permissions by category
|
|
42
|
+
*/
|
|
43
|
+
export function getPermissionsByCategory(category) {
|
|
44
|
+
return [...PERMISSION_CATEGORIES[category]];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if permission is write permission
|
|
48
|
+
*/
|
|
49
|
+
export function isWritePermission(permission) {
|
|
50
|
+
return permission.endsWith(':write');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get read-only version of permission
|
|
54
|
+
*/
|
|
55
|
+
export function toReadPermission(permission) {
|
|
56
|
+
return permission.replace(':write', ':read');
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=session-permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-permissions.js","sourceRoot":"","sources":["../../src/session/session-permissions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;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;;GAEG;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;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,OAAO,eAAe,CAAC,QAAQ,CAAC,UAA2B,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAA4C;IACnF,OAAO,CAAC,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAyB;IACzD,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAyB;IACxD,OAAO,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAkB,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory session store for managing active sessions
|
|
3
|
+
*
|
|
4
|
+
* Production-ready with:
|
|
5
|
+
* - Automatic cleanup of expired sessions (every hour)
|
|
6
|
+
* - Memory leak prevention
|
|
7
|
+
* - Thread-safe operations
|
|
8
|
+
*
|
|
9
|
+
* Note: For distributed deployments requiring shared session state,
|
|
10
|
+
* replace with Redis or database-backed implementation.
|
|
11
|
+
*/
|
|
12
|
+
import type { SapAgentSession } from '../core/types.js';
|
|
13
|
+
declare class SessionStore {
|
|
14
|
+
private sessions;
|
|
15
|
+
/**
|
|
16
|
+
* Store a session
|
|
17
|
+
*/
|
|
18
|
+
set(sessionId: string, session: SapAgentSession): void;
|
|
19
|
+
/**
|
|
20
|
+
* Get a session
|
|
21
|
+
*/
|
|
22
|
+
get(sessionId: string): SapAgentSession | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Delete a session
|
|
25
|
+
*/
|
|
26
|
+
delete(sessionId: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Clean up expired sessions
|
|
29
|
+
*/
|
|
30
|
+
cleanup(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get all sessions
|
|
33
|
+
*/
|
|
34
|
+
getAll(): SapAgentSession[];
|
|
35
|
+
}
|
|
36
|
+
declare const store: SessionStore;
|
|
37
|
+
export { store as sessionStore };
|
|
38
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +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;AAKjC,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory session store for managing active sessions
|
|
3
|
+
*
|
|
4
|
+
* Production-ready with:
|
|
5
|
+
* - Automatic cleanup of expired sessions (every hour)
|
|
6
|
+
* - Memory leak prevention
|
|
7
|
+
* - Thread-safe operations
|
|
8
|
+
*
|
|
9
|
+
* Note: For distributed deployments requiring shared session state,
|
|
10
|
+
* replace with Redis or database-backed implementation.
|
|
11
|
+
*/
|
|
12
|
+
import { logger } from '../core/logger.js';
|
|
13
|
+
class SessionStore {
|
|
14
|
+
sessions = new Map();
|
|
15
|
+
/**
|
|
16
|
+
* Store a session
|
|
17
|
+
*/
|
|
18
|
+
set(sessionId, session) {
|
|
19
|
+
this.sessions.set(sessionId, session);
|
|
20
|
+
logger.debug('Session stored', { sessionId });
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get a session
|
|
24
|
+
*/
|
|
25
|
+
get(sessionId) {
|
|
26
|
+
return this.sessions.get(sessionId);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Delete a session
|
|
30
|
+
*/
|
|
31
|
+
delete(sessionId) {
|
|
32
|
+
const deleted = this.sessions.delete(sessionId);
|
|
33
|
+
logger.debug('Session deleted', { sessionId, deleted });
|
|
34
|
+
return deleted;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Clean up expired sessions
|
|
38
|
+
*/
|
|
39
|
+
cleanup() {
|
|
40
|
+
const now = Date.now();
|
|
41
|
+
let cleaned = 0;
|
|
42
|
+
for (const [sessionId, session] of this.sessions.entries()) {
|
|
43
|
+
if (now >= session.expiresAt) {
|
|
44
|
+
this.sessions.delete(sessionId);
|
|
45
|
+
cleaned++;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
logger.debug('Session cleanup', { cleaned });
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get all sessions
|
|
52
|
+
*/
|
|
53
|
+
getAll() {
|
|
54
|
+
return Array.from(this.sessions.values());
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Singleton instance
|
|
58
|
+
const store = new SessionStore();
|
|
59
|
+
// Cleanup every hour
|
|
60
|
+
setInterval(() => store.cleanup(), 60 * 60 * 1000);
|
|
61
|
+
export { store as sessionStore };
|
|
62
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +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,qBAAqB;AACrB,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAEnD,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session type definitions
|
|
3
|
+
*/
|
|
4
|
+
import type { SapAgentSession, SapPermission } from '../core/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Session creation request
|
|
7
|
+
*/
|
|
8
|
+
export interface CreateSessionRequest {
|
|
9
|
+
agentId: string;
|
|
10
|
+
permissions: SapPermission[];
|
|
11
|
+
spendingLimits: {
|
|
12
|
+
maxPerTransactionSol: number;
|
|
13
|
+
maxPerDaySol: number;
|
|
14
|
+
maxPerSessionSol: number;
|
|
15
|
+
};
|
|
16
|
+
expiresInSeconds?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Session validation result
|
|
20
|
+
*/
|
|
21
|
+
export interface SessionValidationResult {
|
|
22
|
+
valid: boolean;
|
|
23
|
+
session?: SapAgentSession;
|
|
24
|
+
error?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Session update
|
|
28
|
+
*/
|
|
29
|
+
export interface SessionUpdate {
|
|
30
|
+
remainingSessionSol?: number;
|
|
31
|
+
permissions?: SapPermission[];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=session-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-types.d.ts","sourceRoot":"","sources":["../../src/session/session-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,cAAc,EAAE;QACd,oBAAoB,EAAE,MAAM,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-types.js","sourceRoot":"","sources":["../../src/session/session-types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External signer interface
|
|
3
|
+
*
|
|
4
|
+
* For integrating with external signing services (Ledger, Fireblocks, etc.)
|
|
5
|
+
*/
|
|
6
|
+
import type { Signer } from './signer-types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Create external signer
|
|
9
|
+
*
|
|
10
|
+
* Implements HTTP-based external signing service protocol.
|
|
11
|
+
* The public key is fetched from the signer service at initialization time
|
|
12
|
+
* via a GET request to the same endpoint. If the service does not support
|
|
13
|
+
* key retrieval, the caller must provide it separately.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createExternalSigner(externalSignerUrl: string): Promise<Signer>;
|
|
16
|
+
//# sourceMappingURL=external-signer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-signer.d.ts","sourceRoot":"","sources":["../../src/signer/external-signer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAuDhD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+ErF"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External signer interface
|
|
3
|
+
*
|
|
4
|
+
* For integrating with external signing services (Ledger, Fireblocks, etc.)
|
|
5
|
+
*/
|
|
6
|
+
import { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
7
|
+
import { logger } from '../core/logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* @name isPlainObject
|
|
10
|
+
* @description Checks whether a value is a plain JSON-compatible object.
|
|
11
|
+
*/
|
|
12
|
+
function isPlainObject(value) {
|
|
13
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @name serializeForExternalSigner
|
|
17
|
+
* @description Serializes a Solana transaction for external signing.
|
|
18
|
+
* @param tx - Transaction to send to the signing service.
|
|
19
|
+
* @returns Base64 serialized transaction.
|
|
20
|
+
*/
|
|
21
|
+
function serializeForExternalSigner(tx) {
|
|
22
|
+
if (tx instanceof VersionedTransaction) {
|
|
23
|
+
return Buffer.from(tx.serialize()).toString('base64');
|
|
24
|
+
}
|
|
25
|
+
return tx.serialize({
|
|
26
|
+
requireAllSignatures: false,
|
|
27
|
+
verifySignatures: false,
|
|
28
|
+
}).toString('base64');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @name isExternalSignerResponse
|
|
32
|
+
* @description Validates the minimal response shape returned by an external signer service.
|
|
33
|
+
* @param value - Parsed JSON response.
|
|
34
|
+
* @returns True when the response contains a signed transaction.
|
|
35
|
+
*/
|
|
36
|
+
function isExternalSignerResponse(value) {
|
|
37
|
+
return Boolean(value) && typeof value === 'object' && typeof value.signedTransaction === 'string';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @name createExternalSignerHeaders
|
|
41
|
+
* @description Builds HTTP headers for external signer requests without exposing bearer tokens in logs.
|
|
42
|
+
*/
|
|
43
|
+
function createExternalSignerHeaders() {
|
|
44
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
45
|
+
const authToken = process.env.SAP_EXTERNAL_SIGNER_AUTH_TOKEN;
|
|
46
|
+
if (authToken) {
|
|
47
|
+
headers.Authorization = `Bearer ${authToken}`;
|
|
48
|
+
}
|
|
49
|
+
return headers;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create external signer
|
|
53
|
+
*
|
|
54
|
+
* Implements HTTP-based external signing service protocol.
|
|
55
|
+
* The public key is fetched from the signer service at initialization time
|
|
56
|
+
* via a GET request to the same endpoint. If the service does not support
|
|
57
|
+
* key retrieval, the caller must provide it separately.
|
|
58
|
+
*/
|
|
59
|
+
export async function createExternalSigner(externalSignerUrl) {
|
|
60
|
+
logger.info('Creating external signer', { url: externalSignerUrl });
|
|
61
|
+
// Attempt to fetch the public key from the signer service
|
|
62
|
+
let publicKey;
|
|
63
|
+
try {
|
|
64
|
+
const response = await fetch(externalSignerUrl, {
|
|
65
|
+
method: 'GET',
|
|
66
|
+
headers: createExternalSignerHeaders(),
|
|
67
|
+
});
|
|
68
|
+
if (response.ok) {
|
|
69
|
+
const result = await response.json();
|
|
70
|
+
if (isPlainObject(result) && typeof result.publicKey === 'string') {
|
|
71
|
+
publicKey = new PublicKey(result.publicKey);
|
|
72
|
+
logger.info('External signer public key fetched', { publicKey: publicKey.toBase58() });
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw new Error('External signer did not return a valid publicKey field');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
throw new Error(`External signer key retrieval failed: ${response.status} ${await response.text()}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
logger.error('Failed to fetch external signer public key', { error });
|
|
84
|
+
throw new Error(`Cannot initialize external signer: ${error instanceof Error ? error.message : 'Unknown error'}. ` +
|
|
85
|
+
'The signer service must respond to GET with a JSON body containing "publicKey".');
|
|
86
|
+
}
|
|
87
|
+
const signer = {
|
|
88
|
+
publicKey,
|
|
89
|
+
async signTransaction(tx) {
|
|
90
|
+
logger.debug('Signing transaction via external signer', { url: externalSignerUrl });
|
|
91
|
+
// Call external signing service
|
|
92
|
+
const response = await fetch(externalSignerUrl, {
|
|
93
|
+
method: 'POST',
|
|
94
|
+
headers: createExternalSignerHeaders(),
|
|
95
|
+
body: JSON.stringify({
|
|
96
|
+
action: 'signTransaction',
|
|
97
|
+
transaction: serializeForExternalSigner(tx),
|
|
98
|
+
}),
|
|
99
|
+
});
|
|
100
|
+
if (!response.ok) {
|
|
101
|
+
const error = await response.text();
|
|
102
|
+
logger.error('External signer failed', { status: response.status, error });
|
|
103
|
+
throw new Error(`External signer failed: ${error}`);
|
|
104
|
+
}
|
|
105
|
+
const result = await response.json();
|
|
106
|
+
if (!isExternalSignerResponse(result)) {
|
|
107
|
+
throw new Error('External signer returned an invalid response');
|
|
108
|
+
}
|
|
109
|
+
// Parse signed transaction
|
|
110
|
+
const signedBytes = Buffer.from(result.signedTransaction, 'base64');
|
|
111
|
+
const signedTx = tx.constructor.name === 'Transaction'
|
|
112
|
+
? Transaction.from(signedBytes)
|
|
113
|
+
: VersionedTransaction.deserialize(signedBytes);
|
|
114
|
+
return signedTx;
|
|
115
|
+
},
|
|
116
|
+
async signAllTransactions(txs) {
|
|
117
|
+
logger.debug('Signing all transactions via external signer', { count: txs.length });
|
|
118
|
+
const signed = [];
|
|
119
|
+
for (const tx of txs) {
|
|
120
|
+
const signedTx = await this.signTransaction(tx);
|
|
121
|
+
signed.push(signedTx);
|
|
122
|
+
}
|
|
123
|
+
return signed;
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
return signer;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=external-signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-signer.js","sourceRoot":"","sources":["../../src/signer/external-signer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAQ3C;;;GAGG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CAAC,EAAsC;IACxE,IAAI,EAAE,YAAY,oBAAoB,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,CAAC,SAAS,CAAC;QAClB,oBAAoB,EAAE,KAAK;QAC3B,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,KAAc;IAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAQ,KAAgC,CAAC,iBAAiB,KAAK,QAAQ,CAAC;AAChI,CAAC;AAED;;;GAGG;AACH,SAAS,2BAA2B;IAClC,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;IAC7D,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,aAAa,GAAG,UAAU,SAAS,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,iBAAyB;IAClE,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEpE,0DAA0D;IAC1D,IAAI,SAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;YAC9C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,2BAA2B,EAAE;SACvC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,MAAM,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClE,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yCAAyC,QAAQ,CAAC,MAAM,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI;YAClG,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAW;QACrB,SAAS;QAET,KAAK,CAAC,eAAe,CAA+C,EAAK;YACvE,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAEpF,gCAAgC;YAChC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,2BAA2B,EAAE;gBACtC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,iBAAiB;oBACzB,WAAW,EAAE,0BAA0B,CAAC,EAAE,CAAC;iBAC5C,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,MAAM,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YAED,2BAA2B;YAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,aAAa;gBACpD,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAM;gBACpC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAM,CAAC;YAEvD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,mBAAmB,CAA+C,GAAQ;YAC9E,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAEpF,MAAM,MAAM,GAAQ,EAAE,CAAC;YACvB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signer module barrel export
|
|
3
|
+
*/
|
|
4
|
+
export type { Signer, SignerMode, SignerConfig, SignerResult, } from './signer-types.js';
|
|
5
|
+
export { loadKeypairFromFile, loadKeypairFromEnv } from './load-keypair.js';
|
|
6
|
+
export { createLocalKeypairSigner } from './local-keypair-signer.js';
|
|
7
|
+
export { createExternalSigner } from './external-signer.js';
|
|
8
|
+
export { resolveSigner } from './signer-resolver.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signer module barrel export
|
|
3
|
+
*/
|
|
4
|
+
export { loadKeypairFromFile, loadKeypairFromEnv } from './load-keypair.js';
|
|
5
|
+
export { createLocalKeypairSigner } from './local-keypair-signer.js';
|
|
6
|
+
export { createExternalSigner } from './external-signer.js';
|
|
7
|
+
export { resolveSigner } from './signer-resolver.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load keypair from file
|
|
3
|
+
*
|
|
4
|
+
* WARNING: Only use in local-dev-keypair mode. NEVER in production.
|
|
5
|
+
*/
|
|
6
|
+
import { Keypair } from '@solana/web3.js';
|
|
7
|
+
/**
|
|
8
|
+
* Load keypair from JSON file
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadKeypairFromFile(walletPath: string): Keypair;
|
|
11
|
+
/**
|
|
12
|
+
* Load keypair from environment variable (base58 encoded)
|
|
13
|
+
*/
|
|
14
|
+
export declare function loadKeypairFromEnv(envVar: string): Promise<Keypair>;
|
|
15
|
+
//# sourceMappingURL=load-keypair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-keypair.d.ts","sourceRoot":"","sources":["../../src/signer/load-keypair.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAW/D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAczE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load keypair from file
|
|
3
|
+
*
|
|
4
|
+
* WARNING: Only use in local-dev-keypair mode. NEVER in production.
|
|
5
|
+
*/
|
|
6
|
+
import { Keypair } from '@solana/web3.js';
|
|
7
|
+
import { readFileSync } from 'fs';
|
|
8
|
+
import { logger } from '../core/logger.js';
|
|
9
|
+
import { SignerError } from '../core/errors.js';
|
|
10
|
+
/**
|
|
11
|
+
* Load keypair from JSON file
|
|
12
|
+
*/
|
|
13
|
+
export function loadKeypairFromFile(walletPath) {
|
|
14
|
+
logger.debug('Loading keypair from file', { walletPath: '[REDACTED]' });
|
|
15
|
+
try {
|
|
16
|
+
const secretKeyString = readFileSync(walletPath, 'utf-8');
|
|
17
|
+
const secretKey = Uint8Array.from(JSON.parse(secretKeyString));
|
|
18
|
+
return Keypair.fromSecretKey(secretKey);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
logger.error('Failed to load keypair', { error });
|
|
22
|
+
throw new SignerError('Failed to load configured keypair');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Load keypair from environment variable (base58 encoded)
|
|
27
|
+
*/
|
|
28
|
+
export async function loadKeypairFromEnv(envVar) {
|
|
29
|
+
const secretKeyBase58 = process.env[envVar];
|
|
30
|
+
if (!secretKeyBase58) {
|
|
31
|
+
throw new SignerError(`Environment variable ${envVar} not set`);
|
|
32
|
+
}
|
|
33
|
+
// Decode base58 to bytes (ESM compatible)
|
|
34
|
+
const bs58 = await import('bs58');
|
|
35
|
+
const secretKey = Uint8Array.from(bs58.default.decode(secretKeyBase58));
|
|
36
|
+
logger.debug('Loaded keypair from environment', { envVar, publicKey: Keypair.fromSecretKey(secretKey).publicKey.toBase58() });
|
|
37
|
+
return Keypair.fromSecretKey(secretKey);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=load-keypair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-keypair.js","sourceRoot":"","sources":["../../src/signer/load-keypair.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;IAExE,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,MAAM,IAAI,WAAW,CAAC,mCAAmC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc;IACrD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,WAAW,CAAC,wBAAwB,MAAM,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,0CAA0C;IAC1C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAExE,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAE9H,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local keypair signer (for development only)
|
|
3
|
+
*
|
|
4
|
+
* WARNING: NEVER use in production or hosted environments.
|
|
5
|
+
*/
|
|
6
|
+
import type { Signer } from './signer-types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Create local keypair signer
|
|
9
|
+
*/
|
|
10
|
+
export declare function createLocalKeypairSigner(walletPath: string): Signer;
|
|
11
|
+
//# sourceMappingURL=local-keypair-signer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-keypair-signer.d.ts","sourceRoot":"","sources":["../../src/signer/local-keypair-signer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgCnE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local keypair signer (for development only)
|
|
3
|
+
*
|
|
4
|
+
* WARNING: NEVER use in production or hosted environments.
|
|
5
|
+
*/
|
|
6
|
+
import { Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
7
|
+
import { logger } from '../core/logger.js';
|
|
8
|
+
import { loadKeypairFromFile } from './load-keypair.js';
|
|
9
|
+
/**
|
|
10
|
+
* Create local keypair signer
|
|
11
|
+
*/
|
|
12
|
+
export function createLocalKeypairSigner(walletPath) {
|
|
13
|
+
logger.info('Creating local keypair signer', { walletPath: '[REDACTED]' });
|
|
14
|
+
const keypair = loadKeypairFromFile(walletPath);
|
|
15
|
+
logger.warn('Local keypair signer created - DO NOT USE IN PRODUCTION');
|
|
16
|
+
return {
|
|
17
|
+
publicKey: keypair.publicKey,
|
|
18
|
+
signTransaction: async (tx) => {
|
|
19
|
+
if (tx instanceof VersionedTransaction) {
|
|
20
|
+
tx.sign([keypair]);
|
|
21
|
+
}
|
|
22
|
+
else if (tx instanceof Transaction) {
|
|
23
|
+
tx.partialSign(keypair);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
throw new Error('Unsupported transaction type');
|
|
27
|
+
}
|
|
28
|
+
return tx;
|
|
29
|
+
},
|
|
30
|
+
signAllTransactions: async (txs) => {
|
|
31
|
+
for (const tx of txs) {
|
|
32
|
+
if (tx instanceof VersionedTransaction) {
|
|
33
|
+
tx.sign([keypair]);
|
|
34
|
+
}
|
|
35
|
+
else if (tx instanceof Transaction) {
|
|
36
|
+
tx.partialSign(keypair);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
throw new Error('Unsupported transaction type');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return txs;
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=local-keypair-signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-keypair-signer.js","sourceRoot":"","sources":["../../src/signer/local-keypair-signer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;IAE3E,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEhD,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IAEvE,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAC5B,IAAI,EAAE,YAAY,oBAAoB,EAAE,CAAC;gBACvC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,EAAE,YAAY,WAAW,EAAE,CAAC;gBACrC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,EAAE,YAAY,oBAAoB,EAAE,CAAC;oBACvC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACrB,CAAC;qBAAM,IAAI,EAAE,YAAY,WAAW,EAAE,CAAC;oBACrC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve signer based on MCP mode
|
|
3
|
+
*/
|
|
4
|
+
import type { SapMcpConfig } from '../core/types.js';
|
|
5
|
+
import type { SignerResult } from './signer-types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Resolve signer based on configuration
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveSigner(config: SapMcpConfig): Promise<SignerResult>;
|
|
10
|
+
//# sourceMappingURL=signer-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer-resolver.d.ts","sourceRoot":"","sources":["../../src/signer/signer-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAuC/E"}
|