palaryn 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/LICENSE +21 -0
- package/README.md +716 -0
- package/dist/sdk/typescript/src/client.d.ts +71 -0
- package/dist/sdk/typescript/src/client.d.ts.map +1 -0
- package/dist/sdk/typescript/src/client.js +176 -0
- package/dist/sdk/typescript/src/client.js.map +1 -0
- package/dist/sdk/typescript/src/errors.d.ts +50 -0
- package/dist/sdk/typescript/src/errors.d.ts.map +1 -0
- package/dist/sdk/typescript/src/errors.js +103 -0
- package/dist/sdk/typescript/src/errors.js.map +1 -0
- package/dist/sdk/typescript/src/index.d.ts +4 -0
- package/dist/sdk/typescript/src/index.d.ts.map +1 -0
- package/dist/sdk/typescript/src/index.js +15 -0
- package/dist/sdk/typescript/src/index.js.map +1 -0
- package/dist/sdk/typescript/src/types.d.ts +101 -0
- package/dist/sdk/typescript/src/types.d.ts.map +1 -0
- package/dist/sdk/typescript/src/types.js +6 -0
- package/dist/sdk/typescript/src/types.js.map +1 -0
- package/dist/src/admin/index.d.ts +2 -0
- package/dist/src/admin/index.d.ts.map +1 -0
- package/dist/src/admin/index.js +6 -0
- package/dist/src/admin/index.js.map +1 -0
- package/dist/src/admin/routes.d.ts +5 -0
- package/dist/src/admin/routes.d.ts.map +1 -0
- package/dist/src/admin/routes.js +471 -0
- package/dist/src/admin/routes.js.map +1 -0
- package/dist/src/admin/templates.d.ts +51 -0
- package/dist/src/admin/templates.d.ts.map +1 -0
- package/dist/src/admin/templates.js +500 -0
- package/dist/src/admin/templates.js.map +1 -0
- package/dist/src/anomaly/detector.d.ts +141 -0
- package/dist/src/anomaly/detector.d.ts.map +1 -0
- package/dist/src/anomaly/detector.js +554 -0
- package/dist/src/anomaly/detector.js.map +1 -0
- package/dist/src/anomaly/index.d.ts +2 -0
- package/dist/src/anomaly/index.d.ts.map +1 -0
- package/dist/src/anomaly/index.js +7 -0
- package/dist/src/anomaly/index.js.map +1 -0
- package/dist/src/approval/manager.d.ts +147 -0
- package/dist/src/approval/manager.d.ts.map +1 -0
- package/dist/src/approval/manager.js +511 -0
- package/dist/src/approval/manager.js.map +1 -0
- package/dist/src/approval/webhook.d.ts +36 -0
- package/dist/src/approval/webhook.d.ts.map +1 -0
- package/dist/src/approval/webhook.js +135 -0
- package/dist/src/approval/webhook.js.map +1 -0
- package/dist/src/audit/logger.d.ts +70 -0
- package/dist/src/audit/logger.d.ts.map +1 -0
- package/dist/src/audit/logger.js +440 -0
- package/dist/src/audit/logger.js.map +1 -0
- package/dist/src/auth/index.d.ts +6 -0
- package/dist/src/auth/index.d.ts.map +1 -0
- package/dist/src/auth/index.js +22 -0
- package/dist/src/auth/index.js.map +1 -0
- package/dist/src/auth/password.d.ts +3 -0
- package/dist/src/auth/password.d.ts.map +1 -0
- package/dist/src/auth/password.js +25 -0
- package/dist/src/auth/password.js.map +1 -0
- package/dist/src/auth/pkce.d.ts +13 -0
- package/dist/src/auth/pkce.d.ts.map +1 -0
- package/dist/src/auth/pkce.js +58 -0
- package/dist/src/auth/pkce.js.map +1 -0
- package/dist/src/auth/providers.d.ts +28 -0
- package/dist/src/auth/providers.d.ts.map +1 -0
- package/dist/src/auth/providers.js +198 -0
- package/dist/src/auth/providers.js.map +1 -0
- package/dist/src/auth/routes.d.ts +14 -0
- package/dist/src/auth/routes.d.ts.map +1 -0
- package/dist/src/auth/routes.js +431 -0
- package/dist/src/auth/routes.js.map +1 -0
- package/dist/src/auth/session.d.ts +24 -0
- package/dist/src/auth/session.d.ts.map +1 -0
- package/dist/src/auth/session.js +105 -0
- package/dist/src/auth/session.js.map +1 -0
- package/dist/src/billing/index.d.ts +7 -0
- package/dist/src/billing/index.d.ts.map +1 -0
- package/dist/src/billing/index.js +14 -0
- package/dist/src/billing/index.js.map +1 -0
- package/dist/src/billing/plan-enforcer.d.ts +44 -0
- package/dist/src/billing/plan-enforcer.d.ts.map +1 -0
- package/dist/src/billing/plan-enforcer.js +110 -0
- package/dist/src/billing/plan-enforcer.js.map +1 -0
- package/dist/src/billing/routes.d.ts +15 -0
- package/dist/src/billing/routes.d.ts.map +1 -0
- package/dist/src/billing/routes.js +193 -0
- package/dist/src/billing/routes.js.map +1 -0
- package/dist/src/billing/stripe-client.d.ts +14 -0
- package/dist/src/billing/stripe-client.d.ts.map +1 -0
- package/dist/src/billing/stripe-client.js +51 -0
- package/dist/src/billing/stripe-client.js.map +1 -0
- package/dist/src/billing/webhook-handler.d.ts +19 -0
- package/dist/src/billing/webhook-handler.d.ts.map +1 -0
- package/dist/src/billing/webhook-handler.js +169 -0
- package/dist/src/billing/webhook-handler.js.map +1 -0
- package/dist/src/billing/webhook-routes.d.ts +5 -0
- package/dist/src/billing/webhook-routes.d.ts.map +1 -0
- package/dist/src/billing/webhook-routes.js +30 -0
- package/dist/src/billing/webhook-routes.js.map +1 -0
- package/dist/src/budget/manager.d.ts +95 -0
- package/dist/src/budget/manager.d.ts.map +1 -0
- package/dist/src/budget/manager.js +547 -0
- package/dist/src/budget/manager.js.map +1 -0
- package/dist/src/budget/usage-extractor.d.ts +38 -0
- package/dist/src/budget/usage-extractor.d.ts.map +1 -0
- package/dist/src/budget/usage-extractor.js +165 -0
- package/dist/src/budget/usage-extractor.js.map +1 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +115 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config/defaults.d.ts +3 -0
- package/dist/src/config/defaults.d.ts.map +1 -0
- package/dist/src/config/defaults.js +243 -0
- package/dist/src/config/defaults.js.map +1 -0
- package/dist/src/config/validate.d.ts +15 -0
- package/dist/src/config/validate.d.ts.map +1 -0
- package/dist/src/config/validate.js +105 -0
- package/dist/src/config/validate.js.map +1 -0
- package/dist/src/dlp/composite-scanner.d.ts +47 -0
- package/dist/src/dlp/composite-scanner.d.ts.map +1 -0
- package/dist/src/dlp/composite-scanner.js +186 -0
- package/dist/src/dlp/composite-scanner.js.map +1 -0
- package/dist/src/dlp/index.d.ts +10 -0
- package/dist/src/dlp/index.d.ts.map +1 -0
- package/dist/src/dlp/index.js +26 -0
- package/dist/src/dlp/index.js.map +1 -0
- package/dist/src/dlp/interfaces.d.ts +33 -0
- package/dist/src/dlp/interfaces.d.ts.map +1 -0
- package/dist/src/dlp/interfaces.js +3 -0
- package/dist/src/dlp/interfaces.js.map +1 -0
- package/dist/src/dlp/patterns.d.ts +9 -0
- package/dist/src/dlp/patterns.d.ts.map +1 -0
- package/dist/src/dlp/patterns.js +25 -0
- package/dist/src/dlp/patterns.js.map +1 -0
- package/dist/src/dlp/prompt-injection-backend.d.ts +68 -0
- package/dist/src/dlp/prompt-injection-backend.d.ts.map +1 -0
- package/dist/src/dlp/prompt-injection-backend.js +148 -0
- package/dist/src/dlp/prompt-injection-backend.js.map +1 -0
- package/dist/src/dlp/prompt-injection-patterns.d.ts +32 -0
- package/dist/src/dlp/prompt-injection-patterns.d.ts.map +1 -0
- package/dist/src/dlp/prompt-injection-patterns.js +290 -0
- package/dist/src/dlp/prompt-injection-patterns.js.map +1 -0
- package/dist/src/dlp/regex-backend.d.ts +32 -0
- package/dist/src/dlp/regex-backend.d.ts.map +1 -0
- package/dist/src/dlp/regex-backend.js +153 -0
- package/dist/src/dlp/regex-backend.js.map +1 -0
- package/dist/src/dlp/scanner.d.ts +122 -0
- package/dist/src/dlp/scanner.d.ts.map +1 -0
- package/dist/src/dlp/scanner.js +444 -0
- package/dist/src/dlp/scanner.js.map +1 -0
- package/dist/src/dlp/text-normalizer.d.ts +41 -0
- package/dist/src/dlp/text-normalizer.d.ts.map +1 -0
- package/dist/src/dlp/text-normalizer.js +203 -0
- package/dist/src/dlp/text-normalizer.js.map +1 -0
- package/dist/src/dlp/trufflehog-backend.d.ts +64 -0
- package/dist/src/dlp/trufflehog-backend.d.ts.map +1 -0
- package/dist/src/dlp/trufflehog-backend.js +151 -0
- package/dist/src/dlp/trufflehog-backend.js.map +1 -0
- package/dist/src/executor/http-executor.d.ts +25 -0
- package/dist/src/executor/http-executor.d.ts.map +1 -0
- package/dist/src/executor/http-executor.js +333 -0
- package/dist/src/executor/http-executor.js.map +1 -0
- package/dist/src/executor/index.d.ts +6 -0
- package/dist/src/executor/index.d.ts.map +1 -0
- package/dist/src/executor/index.js +12 -0
- package/dist/src/executor/index.js.map +1 -0
- package/dist/src/executor/interfaces.d.ts +11 -0
- package/dist/src/executor/interfaces.d.ts.map +1 -0
- package/dist/src/executor/interfaces.js +3 -0
- package/dist/src/executor/interfaces.js.map +1 -0
- package/dist/src/executor/noop-executor.d.ts +13 -0
- package/dist/src/executor/noop-executor.d.ts.map +1 -0
- package/dist/src/executor/noop-executor.js +21 -0
- package/dist/src/executor/noop-executor.js.map +1 -0
- package/dist/src/executor/registry.d.ts +30 -0
- package/dist/src/executor/registry.d.ts.map +1 -0
- package/dist/src/executor/registry.js +62 -0
- package/dist/src/executor/registry.js.map +1 -0
- package/dist/src/executor/slack-executor.d.ts +24 -0
- package/dist/src/executor/slack-executor.d.ts.map +1 -0
- package/dist/src/executor/slack-executor.js +147 -0
- package/dist/src/executor/slack-executor.js.map +1 -0
- package/dist/src/index.d.ts +25 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +74 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcp/auth-verifier.d.ts +23 -0
- package/dist/src/mcp/auth-verifier.d.ts.map +1 -0
- package/dist/src/mcp/auth-verifier.js +162 -0
- package/dist/src/mcp/auth-verifier.js.map +1 -0
- package/dist/src/mcp/bridge.d.ts +132 -0
- package/dist/src/mcp/bridge.d.ts.map +1 -0
- package/dist/src/mcp/bridge.js +734 -0
- package/dist/src/mcp/bridge.js.map +1 -0
- package/dist/src/mcp/http-transport.d.ts +32 -0
- package/dist/src/mcp/http-transport.d.ts.map +1 -0
- package/dist/src/mcp/http-transport.js +538 -0
- package/dist/src/mcp/http-transport.js.map +1 -0
- package/dist/src/mcp/index.d.ts +10 -0
- package/dist/src/mcp/index.d.ts.map +1 -0
- package/dist/src/mcp/index.js +17 -0
- package/dist/src/mcp/index.js.map +1 -0
- package/dist/src/mcp/oauth-pages.d.ts +23 -0
- package/dist/src/mcp/oauth-pages.d.ts.map +1 -0
- package/dist/src/mcp/oauth-pages.js +121 -0
- package/dist/src/mcp/oauth-pages.js.map +1 -0
- package/dist/src/mcp/oauth-postgres-stores.d.ts +55 -0
- package/dist/src/mcp/oauth-postgres-stores.d.ts.map +1 -0
- package/dist/src/mcp/oauth-postgres-stores.js +226 -0
- package/dist/src/mcp/oauth-postgres-stores.js.map +1 -0
- package/dist/src/mcp/oauth-provider.d.ts +95 -0
- package/dist/src/mcp/oauth-provider.d.ts.map +1 -0
- package/dist/src/mcp/oauth-provider.js +360 -0
- package/dist/src/mcp/oauth-provider.js.map +1 -0
- package/dist/src/mcp/oauth-stores.d.ts +62 -0
- package/dist/src/mcp/oauth-stores.d.ts.map +1 -0
- package/dist/src/mcp/oauth-stores.js +154 -0
- package/dist/src/mcp/oauth-stores.js.map +1 -0
- package/dist/src/mcp/server.d.ts +18 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +51 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/metrics/collector.d.ts +106 -0
- package/dist/src/metrics/collector.d.ts.map +1 -0
- package/dist/src/metrics/collector.js +311 -0
- package/dist/src/metrics/collector.js.map +1 -0
- package/dist/src/metrics/index.d.ts +2 -0
- package/dist/src/metrics/index.d.ts.map +1 -0
- package/dist/src/metrics/index.js +6 -0
- package/dist/src/metrics/index.js.map +1 -0
- package/dist/src/middleware/auth.d.ts +77 -0
- package/dist/src/middleware/auth.d.ts.map +1 -0
- package/dist/src/middleware/auth.js +720 -0
- package/dist/src/middleware/auth.js.map +1 -0
- package/dist/src/middleware/session.d.ts +18 -0
- package/dist/src/middleware/session.d.ts.map +1 -0
- package/dist/src/middleware/session.js +67 -0
- package/dist/src/middleware/session.js.map +1 -0
- package/dist/src/middleware/validate.d.ts +3 -0
- package/dist/src/middleware/validate.d.ts.map +1 -0
- package/dist/src/middleware/validate.js +85 -0
- package/dist/src/middleware/validate.js.map +1 -0
- package/dist/src/policy/engine.d.ts +107 -0
- package/dist/src/policy/engine.d.ts.map +1 -0
- package/dist/src/policy/engine.js +646 -0
- package/dist/src/policy/engine.js.map +1 -0
- package/dist/src/policy/index.d.ts +3 -0
- package/dist/src/policy/index.d.ts.map +1 -0
- package/dist/src/policy/index.js +8 -0
- package/dist/src/policy/index.js.map +1 -0
- package/dist/src/policy/opa-engine.d.ts +176 -0
- package/dist/src/policy/opa-engine.d.ts.map +1 -0
- package/dist/src/policy/opa-engine.js +790 -0
- package/dist/src/policy/opa-engine.js.map +1 -0
- package/dist/src/proxy/forward-proxy.d.ts +30 -0
- package/dist/src/proxy/forward-proxy.d.ts.map +1 -0
- package/dist/src/proxy/forward-proxy.js +580 -0
- package/dist/src/proxy/forward-proxy.js.map +1 -0
- package/dist/src/proxy/index.d.ts +2 -0
- package/dist/src/proxy/index.d.ts.map +1 -0
- package/dist/src/proxy/index.js +8 -0
- package/dist/src/proxy/index.js.map +1 -0
- package/dist/src/ratelimit/limiter.d.ts +45 -0
- package/dist/src/ratelimit/limiter.d.ts.map +1 -0
- package/dist/src/ratelimit/limiter.js +158 -0
- package/dist/src/ratelimit/limiter.js.map +1 -0
- package/dist/src/replay/engine.d.ts +40 -0
- package/dist/src/replay/engine.d.ts.map +1 -0
- package/dist/src/replay/engine.js +106 -0
- package/dist/src/replay/engine.js.map +1 -0
- package/dist/src/replay/index.d.ts +2 -0
- package/dist/src/replay/index.d.ts.map +1 -0
- package/dist/src/replay/index.js +6 -0
- package/dist/src/replay/index.js.map +1 -0
- package/dist/src/saas/index.d.ts +2 -0
- package/dist/src/saas/index.d.ts.map +1 -0
- package/dist/src/saas/index.js +18 -0
- package/dist/src/saas/index.js.map +1 -0
- package/dist/src/saas/routes.d.ts +18 -0
- package/dist/src/saas/routes.d.ts.map +1 -0
- package/dist/src/saas/routes.js +1566 -0
- package/dist/src/saas/routes.js.map +1 -0
- package/dist/src/server/app.d.ts +44 -0
- package/dist/src/server/app.d.ts.map +1 -0
- package/dist/src/server/app.js +854 -0
- package/dist/src/server/app.js.map +1 -0
- package/dist/src/server/errors.d.ts +32 -0
- package/dist/src/server/errors.d.ts.map +1 -0
- package/dist/src/server/errors.js +39 -0
- package/dist/src/server/errors.js.map +1 -0
- package/dist/src/server/gateway.d.ts +165 -0
- package/dist/src/server/gateway.d.ts.map +1 -0
- package/dist/src/server/gateway.js +964 -0
- package/dist/src/server/gateway.js.map +1 -0
- package/dist/src/server/index.d.ts +2 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +295 -0
- package/dist/src/server/index.js.map +1 -0
- package/dist/src/server/logger.d.ts +33 -0
- package/dist/src/server/logger.d.ts.map +1 -0
- package/dist/src/server/logger.js +230 -0
- package/dist/src/server/logger.js.map +1 -0
- package/dist/src/server/stream-proxy.d.ts +32 -0
- package/dist/src/server/stream-proxy.d.ts.map +1 -0
- package/dist/src/server/stream-proxy.js +184 -0
- package/dist/src/server/stream-proxy.js.map +1 -0
- package/dist/src/storage/file-persistence.d.ts +48 -0
- package/dist/src/storage/file-persistence.d.ts.map +1 -0
- package/dist/src/storage/file-persistence.js +280 -0
- package/dist/src/storage/file-persistence.js.map +1 -0
- package/dist/src/storage/index.d.ts +5 -0
- package/dist/src/storage/index.d.ts.map +1 -0
- package/dist/src/storage/index.js +21 -0
- package/dist/src/storage/index.js.map +1 -0
- package/dist/src/storage/interfaces.d.ts +237 -0
- package/dist/src/storage/interfaces.d.ts.map +1 -0
- package/dist/src/storage/interfaces.js +3 -0
- package/dist/src/storage/interfaces.js.map +1 -0
- package/dist/src/storage/memory.d.ts +162 -0
- package/dist/src/storage/memory.d.ts.map +1 -0
- package/dist/src/storage/memory.js +603 -0
- package/dist/src/storage/memory.js.map +1 -0
- package/dist/src/storage/postgres.d.ts +267 -0
- package/dist/src/storage/postgres.d.ts.map +1 -0
- package/dist/src/storage/postgres.js +1555 -0
- package/dist/src/storage/postgres.js.map +1 -0
- package/dist/src/storage/redis.d.ts +202 -0
- package/dist/src/storage/redis.d.ts.map +1 -0
- package/dist/src/storage/redis.js +629 -0
- package/dist/src/storage/redis.js.map +1 -0
- package/dist/src/tracing/index.d.ts +2 -0
- package/dist/src/tracing/index.d.ts.map +1 -0
- package/dist/src/tracing/index.js +6 -0
- package/dist/src/tracing/index.js.map +1 -0
- package/dist/src/tracing/provider.d.ts +43 -0
- package/dist/src/tracing/provider.d.ts.map +1 -0
- package/dist/src/tracing/provider.js +74 -0
- package/dist/src/tracing/provider.js.map +1 -0
- package/dist/src/trust/calculator.d.ts +54 -0
- package/dist/src/trust/calculator.d.ts.map +1 -0
- package/dist/src/trust/calculator.js +102 -0
- package/dist/src/trust/calculator.js.map +1 -0
- package/dist/src/trust/index.d.ts +2 -0
- package/dist/src/trust/index.d.ts.map +1 -0
- package/dist/src/trust/index.js +7 -0
- package/dist/src/trust/index.js.map +1 -0
- package/dist/src/types/budget.d.ts +30 -0
- package/dist/src/types/budget.d.ts.map +1 -0
- package/dist/src/types/budget.js +3 -0
- package/dist/src/types/budget.js.map +1 -0
- package/dist/src/types/config.d.ts +176 -0
- package/dist/src/types/config.d.ts.map +1 -0
- package/dist/src/types/config.js +3 -0
- package/dist/src/types/config.js.map +1 -0
- package/dist/src/types/events.d.ts +24 -0
- package/dist/src/types/events.d.ts.map +1 -0
- package/dist/src/types/events.js +3 -0
- package/dist/src/types/events.js.map +1 -0
- package/dist/src/types/index.d.ts +8 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +24 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/policy.d.ts +60 -0
- package/dist/src/types/policy.d.ts.map +1 -0
- package/dist/src/types/policy.js +3 -0
- package/dist/src/types/policy.js.map +1 -0
- package/dist/src/types/stripe-config.d.ts +12 -0
- package/dist/src/types/stripe-config.d.ts.map +1 -0
- package/dist/src/types/stripe-config.js +3 -0
- package/dist/src/types/stripe-config.js.map +1 -0
- package/dist/src/types/subscription.d.ts +24 -0
- package/dist/src/types/subscription.d.ts.map +1 -0
- package/dist/src/types/subscription.js +38 -0
- package/dist/src/types/subscription.js.map +1 -0
- package/dist/src/types/tool-call.d.ts +42 -0
- package/dist/src/types/tool-call.d.ts.map +1 -0
- package/dist/src/types/tool-call.js +3 -0
- package/dist/src/types/tool-call.js.map +1 -0
- package/dist/src/types/tool-result.d.ts +58 -0
- package/dist/src/types/tool-result.d.ts.map +1 -0
- package/dist/src/types/tool-result.js +3 -0
- package/dist/src/types/tool-result.js.map +1 -0
- package/dist/src/types/user.d.ts +101 -0
- package/dist/src/types/user.d.ts.map +1 -0
- package/dist/src/types/user.js +6 -0
- package/dist/src/types/user.js.map +1 -0
- package/dist/tests/integration/api.test.d.ts +2 -0
- package/dist/tests/integration/api.test.d.ts.map +1 -0
- package/dist/tests/integration/api.test.js +1199 -0
- package/dist/tests/integration/api.test.js.map +1 -0
- package/dist/tests/integration/proxy.test.d.ts +2 -0
- package/dist/tests/integration/proxy.test.d.ts.map +1 -0
- package/dist/tests/integration/proxy.test.js +251 -0
- package/dist/tests/integration/proxy.test.js.map +1 -0
- package/dist/tests/integration/storage.test.d.ts +16 -0
- package/dist/tests/integration/storage.test.d.ts.map +1 -0
- package/dist/tests/integration/storage.test.js +826 -0
- package/dist/tests/integration/storage.test.js.map +1 -0
- package/dist/tests/unit/admin.test.d.ts +2 -0
- package/dist/tests/unit/admin.test.d.ts.map +1 -0
- package/dist/tests/unit/admin.test.js +698 -0
- package/dist/tests/unit/admin.test.js.map +1 -0
- package/dist/tests/unit/anomaly-detector.test.d.ts +2 -0
- package/dist/tests/unit/anomaly-detector.test.d.ts.map +1 -0
- package/dist/tests/unit/anomaly-detector.test.js +903 -0
- package/dist/tests/unit/anomaly-detector.test.js.map +1 -0
- package/dist/tests/unit/approval-manager.test.d.ts +2 -0
- package/dist/tests/unit/approval-manager.test.d.ts.map +1 -0
- package/dist/tests/unit/approval-manager.test.js +528 -0
- package/dist/tests/unit/approval-manager.test.js.map +1 -0
- package/dist/tests/unit/approval-webhook.test.d.ts +2 -0
- package/dist/tests/unit/approval-webhook.test.d.ts.map +1 -0
- package/dist/tests/unit/approval-webhook.test.js +355 -0
- package/dist/tests/unit/approval-webhook.test.js.map +1 -0
- package/dist/tests/unit/audit-logger.test.d.ts +2 -0
- package/dist/tests/unit/audit-logger.test.d.ts.map +1 -0
- package/dist/tests/unit/audit-logger.test.js +635 -0
- package/dist/tests/unit/audit-logger.test.js.map +1 -0
- package/dist/tests/unit/auth-routes.test.d.ts +2 -0
- package/dist/tests/unit/auth-routes.test.d.ts.map +1 -0
- package/dist/tests/unit/auth-routes.test.js +281 -0
- package/dist/tests/unit/auth-routes.test.js.map +1 -0
- package/dist/tests/unit/auth.test.d.ts +2 -0
- package/dist/tests/unit/auth.test.d.ts.map +1 -0
- package/dist/tests/unit/auth.test.js +1382 -0
- package/dist/tests/unit/auth.test.js.map +1 -0
- package/dist/tests/unit/billing.test.d.ts +2 -0
- package/dist/tests/unit/billing.test.d.ts.map +1 -0
- package/dist/tests/unit/billing.test.js +579 -0
- package/dist/tests/unit/billing.test.js.map +1 -0
- package/dist/tests/unit/budget-manager.test.d.ts +2 -0
- package/dist/tests/unit/budget-manager.test.d.ts.map +1 -0
- package/dist/tests/unit/budget-manager.test.js +778 -0
- package/dist/tests/unit/budget-manager.test.js.map +1 -0
- package/dist/tests/unit/budget-race.test.d.ts +2 -0
- package/dist/tests/unit/budget-race.test.d.ts.map +1 -0
- package/dist/tests/unit/budget-race.test.js +58 -0
- package/dist/tests/unit/budget-race.test.js.map +1 -0
- package/dist/tests/unit/cli.test.d.ts +2 -0
- package/dist/tests/unit/cli.test.d.ts.map +1 -0
- package/dist/tests/unit/cli.test.js +93 -0
- package/dist/tests/unit/cli.test.js.map +1 -0
- package/dist/tests/unit/concurrency.test.d.ts +2 -0
- package/dist/tests/unit/concurrency.test.d.ts.map +1 -0
- package/dist/tests/unit/concurrency.test.js +1270 -0
- package/dist/tests/unit/concurrency.test.js.map +1 -0
- package/dist/tests/unit/config-validate.test.d.ts +2 -0
- package/dist/tests/unit/config-validate.test.d.ts.map +1 -0
- package/dist/tests/unit/config-validate.test.js +230 -0
- package/dist/tests/unit/config-validate.test.js.map +1 -0
- package/dist/tests/unit/defaults.test.d.ts +2 -0
- package/dist/tests/unit/defaults.test.d.ts.map +1 -0
- package/dist/tests/unit/defaults.test.js +364 -0
- package/dist/tests/unit/defaults.test.js.map +1 -0
- package/dist/tests/unit/dlp-backends.test.d.ts +2 -0
- package/dist/tests/unit/dlp-backends.test.d.ts.map +1 -0
- package/dist/tests/unit/dlp-backends.test.js +563 -0
- package/dist/tests/unit/dlp-backends.test.js.map +1 -0
- package/dist/tests/unit/dlp-scanner.test.d.ts +2 -0
- package/dist/tests/unit/dlp-scanner.test.d.ts.map +1 -0
- package/dist/tests/unit/dlp-scanner.test.js +739 -0
- package/dist/tests/unit/dlp-scanner.test.js.map +1 -0
- package/dist/tests/unit/error-responses.test.d.ts +2 -0
- package/dist/tests/unit/error-responses.test.d.ts.map +1 -0
- package/dist/tests/unit/error-responses.test.js +101 -0
- package/dist/tests/unit/error-responses.test.js.map +1 -0
- package/dist/tests/unit/executor-registry.test.d.ts +2 -0
- package/dist/tests/unit/executor-registry.test.d.ts.map +1 -0
- package/dist/tests/unit/executor-registry.test.js +390 -0
- package/dist/tests/unit/executor-registry.test.js.map +1 -0
- package/dist/tests/unit/forward-proxy.test.d.ts +2 -0
- package/dist/tests/unit/forward-proxy.test.d.ts.map +1 -0
- package/dist/tests/unit/forward-proxy.test.js +621 -0
- package/dist/tests/unit/forward-proxy.test.js.map +1 -0
- package/dist/tests/unit/gateway-features.test.d.ts +2 -0
- package/dist/tests/unit/gateway-features.test.d.ts.map +1 -0
- package/dist/tests/unit/gateway-features.test.js +753 -0
- package/dist/tests/unit/gateway-features.test.js.map +1 -0
- package/dist/tests/unit/http-executor.test.d.ts +2 -0
- package/dist/tests/unit/http-executor.test.d.ts.map +1 -0
- package/dist/tests/unit/http-executor.test.js +310 -0
- package/dist/tests/unit/http-executor.test.js.map +1 -0
- package/dist/tests/unit/mcp-bridge.test.d.ts +2 -0
- package/dist/tests/unit/mcp-bridge.test.d.ts.map +1 -0
- package/dist/tests/unit/mcp-bridge.test.js +1136 -0
- package/dist/tests/unit/mcp-bridge.test.js.map +1 -0
- package/dist/tests/unit/mcp-http-transport.test.d.ts +2 -0
- package/dist/tests/unit/mcp-http-transport.test.d.ts.map +1 -0
- package/dist/tests/unit/mcp-http-transport.test.js +899 -0
- package/dist/tests/unit/mcp-http-transport.test.js.map +1 -0
- package/dist/tests/unit/mcp-oauth.test.d.ts +2 -0
- package/dist/tests/unit/mcp-oauth.test.d.ts.map +1 -0
- package/dist/tests/unit/mcp-oauth.test.js +759 -0
- package/dist/tests/unit/mcp-oauth.test.js.map +1 -0
- package/dist/tests/unit/mcp-server.test.d.ts +15 -0
- package/dist/tests/unit/mcp-server.test.d.ts.map +1 -0
- package/dist/tests/unit/mcp-server.test.js +158 -0
- package/dist/tests/unit/mcp-server.test.js.map +1 -0
- package/dist/tests/unit/metrics.test.d.ts +2 -0
- package/dist/tests/unit/metrics.test.d.ts.map +1 -0
- package/dist/tests/unit/metrics.test.js +208 -0
- package/dist/tests/unit/metrics.test.js.map +1 -0
- package/dist/tests/unit/oauth.test.d.ts +2 -0
- package/dist/tests/unit/oauth.test.d.ts.map +1 -0
- package/dist/tests/unit/oauth.test.js +281 -0
- package/dist/tests/unit/oauth.test.js.map +1 -0
- package/dist/tests/unit/opa-circuit-breaker.test.d.ts +2 -0
- package/dist/tests/unit/opa-circuit-breaker.test.d.ts.map +1 -0
- package/dist/tests/unit/opa-circuit-breaker.test.js +297 -0
- package/dist/tests/unit/opa-circuit-breaker.test.js.map +1 -0
- package/dist/tests/unit/opa-engine.test.d.ts +2 -0
- package/dist/tests/unit/opa-engine.test.d.ts.map +1 -0
- package/dist/tests/unit/opa-engine.test.js +1813 -0
- package/dist/tests/unit/opa-engine.test.js.map +1 -0
- package/dist/tests/unit/pipeline-timing.test.d.ts +2 -0
- package/dist/tests/unit/pipeline-timing.test.d.ts.map +1 -0
- package/dist/tests/unit/pipeline-timing.test.js +528 -0
- package/dist/tests/unit/pipeline-timing.test.js.map +1 -0
- package/dist/tests/unit/policy-engine.test.d.ts +2 -0
- package/dist/tests/unit/policy-engine.test.d.ts.map +1 -0
- package/dist/tests/unit/policy-engine.test.js +1345 -0
- package/dist/tests/unit/policy-engine.test.js.map +1 -0
- package/dist/tests/unit/policy-store.test.d.ts +2 -0
- package/dist/tests/unit/policy-store.test.d.ts.map +1 -0
- package/dist/tests/unit/policy-store.test.js +60 -0
- package/dist/tests/unit/policy-store.test.js.map +1 -0
- package/dist/tests/unit/postgres-storage.test.d.ts +2 -0
- package/dist/tests/unit/postgres-storage.test.d.ts.map +1 -0
- package/dist/tests/unit/postgres-storage.test.js +614 -0
- package/dist/tests/unit/postgres-storage.test.js.map +1 -0
- package/dist/tests/unit/prompt-injection-backend.test.d.ts +2 -0
- package/dist/tests/unit/prompt-injection-backend.test.d.ts.map +1 -0
- package/dist/tests/unit/prompt-injection-backend.test.js +621 -0
- package/dist/tests/unit/prompt-injection-backend.test.js.map +1 -0
- package/dist/tests/unit/proxy-hardening.test.d.ts +2 -0
- package/dist/tests/unit/proxy-hardening.test.d.ts.map +1 -0
- package/dist/tests/unit/proxy-hardening.test.js +166 -0
- package/dist/tests/unit/proxy-hardening.test.js.map +1 -0
- package/dist/tests/unit/rate-limiter.test.d.ts +2 -0
- package/dist/tests/unit/rate-limiter.test.d.ts.map +1 -0
- package/dist/tests/unit/rate-limiter.test.js +443 -0
- package/dist/tests/unit/rate-limiter.test.js.map +1 -0
- package/dist/tests/unit/redis-storage.test.d.ts +2 -0
- package/dist/tests/unit/redis-storage.test.d.ts.map +1 -0
- package/dist/tests/unit/redis-storage.test.js +766 -0
- package/dist/tests/unit/redis-storage.test.js.map +1 -0
- package/dist/tests/unit/replay-engine.test.d.ts +2 -0
- package/dist/tests/unit/replay-engine.test.d.ts.map +1 -0
- package/dist/tests/unit/replay-engine.test.js +371 -0
- package/dist/tests/unit/replay-engine.test.js.map +1 -0
- package/dist/tests/unit/saas-routes.test.d.ts +2 -0
- package/dist/tests/unit/saas-routes.test.d.ts.map +1 -0
- package/dist/tests/unit/saas-routes.test.js +1399 -0
- package/dist/tests/unit/saas-routes.test.js.map +1 -0
- package/dist/tests/unit/session.test.d.ts +2 -0
- package/dist/tests/unit/session.test.d.ts.map +1 -0
- package/dist/tests/unit/session.test.js +532 -0
- package/dist/tests/unit/session.test.js.map +1 -0
- package/dist/tests/unit/slack-executor.test.d.ts +2 -0
- package/dist/tests/unit/slack-executor.test.d.ts.map +1 -0
- package/dist/tests/unit/slack-executor.test.js +209 -0
- package/dist/tests/unit/slack-executor.test.js.map +1 -0
- package/dist/tests/unit/storage-hardening.test.d.ts +2 -0
- package/dist/tests/unit/storage-hardening.test.d.ts.map +1 -0
- package/dist/tests/unit/storage-hardening.test.js +165 -0
- package/dist/tests/unit/storage-hardening.test.js.map +1 -0
- package/dist/tests/unit/storage.test.d.ts +2 -0
- package/dist/tests/unit/storage.test.d.ts.map +1 -0
- package/dist/tests/unit/storage.test.js +698 -0
- package/dist/tests/unit/storage.test.js.map +1 -0
- package/dist/tests/unit/text-normalizer.test.d.ts +2 -0
- package/dist/tests/unit/text-normalizer.test.d.ts.map +1 -0
- package/dist/tests/unit/text-normalizer.test.js +229 -0
- package/dist/tests/unit/text-normalizer.test.js.map +1 -0
- package/dist/tests/unit/tracing.test.d.ts +2 -0
- package/dist/tests/unit/tracing.test.d.ts.map +1 -0
- package/dist/tests/unit/tracing.test.js +611 -0
- package/dist/tests/unit/tracing.test.js.map +1 -0
- package/dist/tests/unit/trust-calculator.test.d.ts +2 -0
- package/dist/tests/unit/trust-calculator.test.d.ts.map +1 -0
- package/dist/tests/unit/trust-calculator.test.js +497 -0
- package/dist/tests/unit/trust-calculator.test.js.map +1 -0
- package/dist/tests/unit/ts-sdk.test.d.ts +2 -0
- package/dist/tests/unit/ts-sdk.test.d.ts.map +1 -0
- package/dist/tests/unit/ts-sdk.test.js +421 -0
- package/dist/tests/unit/ts-sdk.test.js.map +1 -0
- package/dist/tests/unit/usage-extractor-llm.test.d.ts +2 -0
- package/dist/tests/unit/usage-extractor-llm.test.d.ts.map +1 -0
- package/dist/tests/unit/usage-extractor-llm.test.js +139 -0
- package/dist/tests/unit/usage-extractor-llm.test.js.map +1 -0
- package/dist/tests/unit/usage-extractor.test.d.ts +2 -0
- package/dist/tests/unit/usage-extractor.test.d.ts.map +1 -0
- package/dist/tests/unit/usage-extractor.test.js +271 -0
- package/dist/tests/unit/usage-extractor.test.js.map +1 -0
- package/dist/tests/unit/user-stores.test.d.ts +2 -0
- package/dist/tests/unit/user-stores.test.d.ts.map +1 -0
- package/dist/tests/unit/user-stores.test.js +687 -0
- package/dist/tests/unit/user-stores.test.js.map +1 -0
- package/dist/tests/unit/validate.test.d.ts +2 -0
- package/dist/tests/unit/validate.test.d.ts.map +1 -0
- package/dist/tests/unit/validate.test.js +545 -0
- package/dist/tests/unit/validate.test.js.map +1 -0
- package/package.json +86 -0
- package/policy-packs/README.md +42 -0
- package/policy-packs/default.yaml +46 -0
- package/policy-packs/dev_fast.yaml +54 -0
- package/policy-packs/prod_strict.yaml +83 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlackExecutor = void 0;
|
|
4
|
+
const web_api_1 = require("@slack/web-api");
|
|
5
|
+
/**
|
|
6
|
+
* Slack executor using the @slack/web-api WebClient.
|
|
7
|
+
* Handles tool calls with tool name `slack.*` (e.g., slack.post_message).
|
|
8
|
+
*/
|
|
9
|
+
class SlackExecutor {
|
|
10
|
+
constructor(token) {
|
|
11
|
+
this.client = new web_api_1.WebClient(token);
|
|
12
|
+
}
|
|
13
|
+
async execute(toolCall) {
|
|
14
|
+
const action = this.resolveAction(toolCall);
|
|
15
|
+
switch (action) {
|
|
16
|
+
case 'post_message':
|
|
17
|
+
return this.postMessage(toolCall);
|
|
18
|
+
case 'update_message':
|
|
19
|
+
return this.updateMessage(toolCall);
|
|
20
|
+
case 'add_reaction':
|
|
21
|
+
return this.addReaction(toolCall);
|
|
22
|
+
case 'list_channels':
|
|
23
|
+
return this.listChannels(toolCall);
|
|
24
|
+
case 'channel_history':
|
|
25
|
+
return this.channelHistory(toolCall);
|
|
26
|
+
case 'upload_file':
|
|
27
|
+
return this.uploadFile(toolCall);
|
|
28
|
+
default:
|
|
29
|
+
throw new Error(`Unsupported Slack action: ${action}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the Slack action from either `args.action` or the tool name suffix.
|
|
34
|
+
* e.g., tool name "slack.post_message" yields action "post_message".
|
|
35
|
+
*/
|
|
36
|
+
resolveAction(toolCall) {
|
|
37
|
+
if (toolCall.args.action && typeof toolCall.args.action === 'string') {
|
|
38
|
+
return toolCall.args.action;
|
|
39
|
+
}
|
|
40
|
+
const toolName = toolCall.tool.name;
|
|
41
|
+
const dotIndex = toolName.indexOf('.');
|
|
42
|
+
if (dotIndex !== -1) {
|
|
43
|
+
return toolName.substring(dotIndex + 1);
|
|
44
|
+
}
|
|
45
|
+
throw new Error(`Unsupported Slack action: ${toolName}`);
|
|
46
|
+
}
|
|
47
|
+
// Post a message to a channel
|
|
48
|
+
async postMessage(toolCall) {
|
|
49
|
+
const { channel, text, blocks } = toolCall.args;
|
|
50
|
+
if (!channel || typeof channel !== 'string') {
|
|
51
|
+
throw new Error('Missing or invalid "channel" argument for slack.post_message');
|
|
52
|
+
}
|
|
53
|
+
if (!text || typeof text !== 'string') {
|
|
54
|
+
throw new Error('Missing or invalid "text" argument for slack.post_message');
|
|
55
|
+
}
|
|
56
|
+
const result = await this.client.chat.postMessage({
|
|
57
|
+
channel,
|
|
58
|
+
text,
|
|
59
|
+
...(blocks ? { blocks: blocks } : {}),
|
|
60
|
+
});
|
|
61
|
+
return { http_status: 200, body: result, headers: {} };
|
|
62
|
+
}
|
|
63
|
+
// Update an existing message
|
|
64
|
+
async updateMessage(toolCall) {
|
|
65
|
+
const { channel, ts, text, blocks } = toolCall.args;
|
|
66
|
+
if (!channel || typeof channel !== 'string') {
|
|
67
|
+
throw new Error('Missing or invalid "channel" argument for slack.update_message');
|
|
68
|
+
}
|
|
69
|
+
if (!ts || typeof ts !== 'string') {
|
|
70
|
+
throw new Error('Missing or invalid "ts" argument for slack.update_message');
|
|
71
|
+
}
|
|
72
|
+
if (!text || typeof text !== 'string') {
|
|
73
|
+
throw new Error('Missing or invalid "text" argument for slack.update_message');
|
|
74
|
+
}
|
|
75
|
+
const result = await this.client.chat.update({
|
|
76
|
+
channel,
|
|
77
|
+
ts,
|
|
78
|
+
text,
|
|
79
|
+
...(blocks ? { blocks: blocks } : {}),
|
|
80
|
+
});
|
|
81
|
+
return { http_status: 200, body: result, headers: {} };
|
|
82
|
+
}
|
|
83
|
+
// Add a reaction to a message
|
|
84
|
+
async addReaction(toolCall) {
|
|
85
|
+
const { channel, timestamp, name } = toolCall.args;
|
|
86
|
+
if (!channel || typeof channel !== 'string') {
|
|
87
|
+
throw new Error('Missing or invalid "channel" argument for slack.add_reaction');
|
|
88
|
+
}
|
|
89
|
+
if (!timestamp || typeof timestamp !== 'string') {
|
|
90
|
+
throw new Error('Missing or invalid "timestamp" argument for slack.add_reaction');
|
|
91
|
+
}
|
|
92
|
+
if (!name || typeof name !== 'string') {
|
|
93
|
+
throw new Error('Missing or invalid "name" argument for slack.add_reaction');
|
|
94
|
+
}
|
|
95
|
+
const result = await this.client.reactions.add({
|
|
96
|
+
channel,
|
|
97
|
+
timestamp,
|
|
98
|
+
name,
|
|
99
|
+
});
|
|
100
|
+
return { http_status: 200, body: result, headers: {} };
|
|
101
|
+
}
|
|
102
|
+
// List channels
|
|
103
|
+
async listChannels(toolCall) {
|
|
104
|
+
const { types, limit } = toolCall.args;
|
|
105
|
+
const result = await this.client.conversations.list({
|
|
106
|
+
types: types || 'public_channel',
|
|
107
|
+
...(limit ? { limit: limit } : {}),
|
|
108
|
+
});
|
|
109
|
+
return { http_status: 200, body: result, headers: {} };
|
|
110
|
+
}
|
|
111
|
+
// Get channel history
|
|
112
|
+
async channelHistory(toolCall) {
|
|
113
|
+
const { channel, limit, oldest, latest } = toolCall.args;
|
|
114
|
+
if (!channel || typeof channel !== 'string') {
|
|
115
|
+
throw new Error('Missing or invalid "channel" argument for slack.channel_history');
|
|
116
|
+
}
|
|
117
|
+
const result = await this.client.conversations.history({
|
|
118
|
+
channel,
|
|
119
|
+
...(limit ? { limit: limit } : {}),
|
|
120
|
+
...(oldest ? { oldest: oldest } : {}),
|
|
121
|
+
...(latest ? { latest: latest } : {}),
|
|
122
|
+
});
|
|
123
|
+
return { http_status: 200, body: result, headers: {} };
|
|
124
|
+
}
|
|
125
|
+
// Upload a file
|
|
126
|
+
async uploadFile(toolCall) {
|
|
127
|
+
const { channels, content, filename, title } = toolCall.args;
|
|
128
|
+
if (!channels || typeof channels !== 'string') {
|
|
129
|
+
throw new Error('Missing or invalid "channels" argument for slack.upload_file');
|
|
130
|
+
}
|
|
131
|
+
if (!content || typeof content !== 'string') {
|
|
132
|
+
throw new Error('Missing or invalid "content" argument for slack.upload_file');
|
|
133
|
+
}
|
|
134
|
+
if (!filename || typeof filename !== 'string') {
|
|
135
|
+
throw new Error('Missing or invalid "filename" argument for slack.upload_file');
|
|
136
|
+
}
|
|
137
|
+
const result = await this.client.files.upload({
|
|
138
|
+
channels,
|
|
139
|
+
content,
|
|
140
|
+
filename,
|
|
141
|
+
...(title ? { title: title } : {}),
|
|
142
|
+
});
|
|
143
|
+
return { http_status: 200, body: result, headers: {} };
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.SlackExecutor = SlackExecutor;
|
|
147
|
+
//# sourceMappingURL=slack-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-executor.js","sourceRoot":"","sources":["../../../src/executor/slack-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { Gateway, PreExecuteResult } from './server/gateway';
|
|
2
|
+
export { createApp, HealthCheck, HealthCheckResult, CreateAppResult } from './server/app';
|
|
3
|
+
export { sendError, ErrorCode, ErrorResponse } from './server/errors';
|
|
4
|
+
export { PolicyEngine, OPAEngine } from './policy';
|
|
5
|
+
export { DLPScanner, DLPBackend, DLPDetection, RegexDLPBackend, TruffleHogBackend, CompositeDLPScanner } from './dlp';
|
|
6
|
+
export { BudgetManager, CostRecord } from './budget/manager';
|
|
7
|
+
export { UsageExtractor } from './budget/usage-extractor';
|
|
8
|
+
export { AuditLogger } from './audit/logger';
|
|
9
|
+
export { ToolExecutor, ExecutorRegistry, HttpExecutor, NoopExecutor, SlackExecutor } from './executor';
|
|
10
|
+
export { ApprovalManager } from './approval/manager';
|
|
11
|
+
export { ApprovalWebhook } from './approval/webhook';
|
|
12
|
+
export { RateLimiter } from './ratelimit/limiter';
|
|
13
|
+
export { GatewayMetrics } from './metrics';
|
|
14
|
+
export { GatewayTracer, TracingConfig } from './tracing';
|
|
15
|
+
export { DEFAULT_CONFIG } from './config/defaults';
|
|
16
|
+
export { validateConfig, ConfigIssue, ConfigValidationResult } from './config/validate';
|
|
17
|
+
export * from './storage';
|
|
18
|
+
export { MCPBridge, startMCPBridge } from './mcp';
|
|
19
|
+
export { createAdminRouter } from './admin';
|
|
20
|
+
export { parseProxyAuth, ProxyAuthResult } from './middleware/auth';
|
|
21
|
+
export { AnomalyDetector, AnomalyConfig, AnomalyAlert, AnomalyType } from './anomaly';
|
|
22
|
+
export { createForwardProxy, buildToolCallFromProxy, ForwardProxyServer } from './proxy';
|
|
23
|
+
export { SessionReplayEngine, ReplayComparison, ReplayResult } from './replay';
|
|
24
|
+
export * from './types';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACtH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACxF,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC/E,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.SessionReplayEngine = exports.buildToolCallFromProxy = exports.createForwardProxy = exports.AnomalyDetector = exports.parseProxyAuth = exports.createAdminRouter = exports.startMCPBridge = exports.MCPBridge = exports.validateConfig = exports.DEFAULT_CONFIG = exports.GatewayTracer = exports.GatewayMetrics = exports.RateLimiter = exports.ApprovalWebhook = exports.ApprovalManager = exports.SlackExecutor = exports.NoopExecutor = exports.HttpExecutor = exports.ExecutorRegistry = exports.AuditLogger = exports.UsageExtractor = exports.BudgetManager = exports.CompositeDLPScanner = exports.TruffleHogBackend = exports.RegexDLPBackend = exports.DLPScanner = exports.OPAEngine = exports.PolicyEngine = exports.ErrorCode = exports.sendError = exports.createApp = exports.Gateway = void 0;
|
|
18
|
+
var gateway_1 = require("./server/gateway");
|
|
19
|
+
Object.defineProperty(exports, "Gateway", { enumerable: true, get: function () { return gateway_1.Gateway; } });
|
|
20
|
+
var app_1 = require("./server/app");
|
|
21
|
+
Object.defineProperty(exports, "createApp", { enumerable: true, get: function () { return app_1.createApp; } });
|
|
22
|
+
var errors_1 = require("./server/errors");
|
|
23
|
+
Object.defineProperty(exports, "sendError", { enumerable: true, get: function () { return errors_1.sendError; } });
|
|
24
|
+
Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return errors_1.ErrorCode; } });
|
|
25
|
+
var policy_1 = require("./policy");
|
|
26
|
+
Object.defineProperty(exports, "PolicyEngine", { enumerable: true, get: function () { return policy_1.PolicyEngine; } });
|
|
27
|
+
Object.defineProperty(exports, "OPAEngine", { enumerable: true, get: function () { return policy_1.OPAEngine; } });
|
|
28
|
+
var dlp_1 = require("./dlp");
|
|
29
|
+
Object.defineProperty(exports, "DLPScanner", { enumerable: true, get: function () { return dlp_1.DLPScanner; } });
|
|
30
|
+
Object.defineProperty(exports, "RegexDLPBackend", { enumerable: true, get: function () { return dlp_1.RegexDLPBackend; } });
|
|
31
|
+
Object.defineProperty(exports, "TruffleHogBackend", { enumerable: true, get: function () { return dlp_1.TruffleHogBackend; } });
|
|
32
|
+
Object.defineProperty(exports, "CompositeDLPScanner", { enumerable: true, get: function () { return dlp_1.CompositeDLPScanner; } });
|
|
33
|
+
var manager_1 = require("./budget/manager");
|
|
34
|
+
Object.defineProperty(exports, "BudgetManager", { enumerable: true, get: function () { return manager_1.BudgetManager; } });
|
|
35
|
+
var usage_extractor_1 = require("./budget/usage-extractor");
|
|
36
|
+
Object.defineProperty(exports, "UsageExtractor", { enumerable: true, get: function () { return usage_extractor_1.UsageExtractor; } });
|
|
37
|
+
var logger_1 = require("./audit/logger");
|
|
38
|
+
Object.defineProperty(exports, "AuditLogger", { enumerable: true, get: function () { return logger_1.AuditLogger; } });
|
|
39
|
+
var executor_1 = require("./executor");
|
|
40
|
+
Object.defineProperty(exports, "ExecutorRegistry", { enumerable: true, get: function () { return executor_1.ExecutorRegistry; } });
|
|
41
|
+
Object.defineProperty(exports, "HttpExecutor", { enumerable: true, get: function () { return executor_1.HttpExecutor; } });
|
|
42
|
+
Object.defineProperty(exports, "NoopExecutor", { enumerable: true, get: function () { return executor_1.NoopExecutor; } });
|
|
43
|
+
Object.defineProperty(exports, "SlackExecutor", { enumerable: true, get: function () { return executor_1.SlackExecutor; } });
|
|
44
|
+
var manager_2 = require("./approval/manager");
|
|
45
|
+
Object.defineProperty(exports, "ApprovalManager", { enumerable: true, get: function () { return manager_2.ApprovalManager; } });
|
|
46
|
+
var webhook_1 = require("./approval/webhook");
|
|
47
|
+
Object.defineProperty(exports, "ApprovalWebhook", { enumerable: true, get: function () { return webhook_1.ApprovalWebhook; } });
|
|
48
|
+
var limiter_1 = require("./ratelimit/limiter");
|
|
49
|
+
Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return limiter_1.RateLimiter; } });
|
|
50
|
+
var metrics_1 = require("./metrics");
|
|
51
|
+
Object.defineProperty(exports, "GatewayMetrics", { enumerable: true, get: function () { return metrics_1.GatewayMetrics; } });
|
|
52
|
+
var tracing_1 = require("./tracing");
|
|
53
|
+
Object.defineProperty(exports, "GatewayTracer", { enumerable: true, get: function () { return tracing_1.GatewayTracer; } });
|
|
54
|
+
var defaults_1 = require("./config/defaults");
|
|
55
|
+
Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return defaults_1.DEFAULT_CONFIG; } });
|
|
56
|
+
var validate_1 = require("./config/validate");
|
|
57
|
+
Object.defineProperty(exports, "validateConfig", { enumerable: true, get: function () { return validate_1.validateConfig; } });
|
|
58
|
+
__exportStar(require("./storage"), exports);
|
|
59
|
+
var mcp_1 = require("./mcp");
|
|
60
|
+
Object.defineProperty(exports, "MCPBridge", { enumerable: true, get: function () { return mcp_1.MCPBridge; } });
|
|
61
|
+
Object.defineProperty(exports, "startMCPBridge", { enumerable: true, get: function () { return mcp_1.startMCPBridge; } });
|
|
62
|
+
var admin_1 = require("./admin");
|
|
63
|
+
Object.defineProperty(exports, "createAdminRouter", { enumerable: true, get: function () { return admin_1.createAdminRouter; } });
|
|
64
|
+
var auth_1 = require("./middleware/auth");
|
|
65
|
+
Object.defineProperty(exports, "parseProxyAuth", { enumerable: true, get: function () { return auth_1.parseProxyAuth; } });
|
|
66
|
+
var anomaly_1 = require("./anomaly");
|
|
67
|
+
Object.defineProperty(exports, "AnomalyDetector", { enumerable: true, get: function () { return anomaly_1.AnomalyDetector; } });
|
|
68
|
+
var proxy_1 = require("./proxy");
|
|
69
|
+
Object.defineProperty(exports, "createForwardProxy", { enumerable: true, get: function () { return proxy_1.createForwardProxy; } });
|
|
70
|
+
Object.defineProperty(exports, "buildToolCallFromProxy", { enumerable: true, get: function () { return proxy_1.buildToolCallFromProxy; } });
|
|
71
|
+
var replay_1 = require("./replay");
|
|
72
|
+
Object.defineProperty(exports, "SessionReplayEngine", { enumerable: true, get: function () { return replay_1.SessionReplayEngine; } });
|
|
73
|
+
__exportStar(require("./types"), exports);
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4CAA6D;AAApD,kGAAA,OAAO,OAAA;AAChB,oCAA0F;AAAjF,gGAAA,SAAS,OAAA;AAClB,0CAAsE;AAA7D,mGAAA,SAAS,OAAA;AAAE,mGAAA,SAAS,OAAA;AAC7B,mCAAmD;AAA1C,sGAAA,YAAY,OAAA;AAAE,mGAAA,SAAS,OAAA;AAChC,6BAAsH;AAA7G,iGAAA,UAAU,OAAA;AAA4B,sGAAA,eAAe,OAAA;AAAE,wGAAA,iBAAiB,OAAA;AAAE,0GAAA,mBAAmB,OAAA;AACtG,4CAA6D;AAApD,wGAAA,aAAa,OAAA;AACtB,4DAA0D;AAAjD,iHAAA,cAAc,OAAA;AACvB,yCAA6C;AAApC,qGAAA,WAAW,OAAA;AACpB,uCAAuG;AAAhF,4GAAA,gBAAgB,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,yGAAA,aAAa,OAAA;AAClF,8CAAqD;AAA5C,0GAAA,eAAe,OAAA;AACxB,8CAAqD;AAA5C,0GAAA,eAAe,OAAA;AACxB,+CAAkD;AAAzC,sGAAA,WAAW,OAAA;AACpB,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,qCAAyD;AAAhD,wGAAA,aAAa,OAAA;AACtB,8CAAmD;AAA1C,0GAAA,cAAc,OAAA;AACvB,8CAAwF;AAA/E,0GAAA,cAAc,OAAA;AACvB,4CAA0B;AAC1B,6BAAkD;AAAzC,gGAAA,SAAS,OAAA;AAAE,qGAAA,cAAc,OAAA;AAClC,iCAA4C;AAAnC,0GAAA,iBAAiB,OAAA;AAC1B,0CAAoE;AAA3D,sGAAA,cAAc,OAAA;AACvB,qCAAsF;AAA7E,0GAAA,eAAe,OAAA;AACxB,iCAAyF;AAAhF,2GAAA,kBAAkB,OAAA;AAAE,+GAAA,sBAAsB,OAAA;AACnD,mCAA+E;AAAtE,6GAAA,mBAAmB,OAAA;AAC5B,0CAAwB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OAuthTokenVerifier } from '@modelcontextprotocol/sdk/server/auth/provider.js';
|
|
2
|
+
import { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';
|
|
3
|
+
import { AuthConfig } from '../types/config';
|
|
4
|
+
import { UserApiKeyStore } from '../storage/interfaces';
|
|
5
|
+
import { PalarynOAuthProvider } from './oauth-provider';
|
|
6
|
+
export interface HybridVerifierDeps {
|
|
7
|
+
oauthProvider?: PalarynOAuthProvider;
|
|
8
|
+
authConfig: AuthConfig;
|
|
9
|
+
userApiKeyStore?: UserApiKeyStore;
|
|
10
|
+
}
|
|
11
|
+
export declare class HybridTokenVerifier implements OAuthTokenVerifier {
|
|
12
|
+
private oauthProvider?;
|
|
13
|
+
private authConfig;
|
|
14
|
+
private userApiKeyStore?;
|
|
15
|
+
constructor(deps: HybridVerifierDeps);
|
|
16
|
+
/**
|
|
17
|
+
* Constant-time API key lookup. Iterates all configured keys and uses
|
|
18
|
+
* crypto.timingSafeEqual to prevent timing-based side-channel attacks.
|
|
19
|
+
*/
|
|
20
|
+
private constantTimeLookup;
|
|
21
|
+
verifyAccessToken(token: string): Promise<AuthInfo>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=auth-verifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-verifier.d.ts","sourceRoot":"","sources":["../../../src/mcp/auth-verifier.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,OAAO,CAAC,aAAa,CAAC,CAAuB;IAC7C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,IAAI,EAAE,kBAAkB;IAMpC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAcpB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAmG1D"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.HybridTokenVerifier = void 0;
|
|
37
|
+
/**
|
|
38
|
+
* Hybrid OAuth Token Verifier for MCP bearer auth.
|
|
39
|
+
*
|
|
40
|
+
* Implements OAuthTokenVerifier from the MCP SDK. Tries OAuth token
|
|
41
|
+
* verification first, then falls back to API key lookup (config keys +
|
|
42
|
+
* SaaS user keys). This preserves backward compatibility so that existing
|
|
43
|
+
* `--header "Authorization: Bearer <api-key>"` usage still works.
|
|
44
|
+
*/
|
|
45
|
+
const crypto = __importStar(require("crypto"));
|
|
46
|
+
const auth_1 = require("../middleware/auth");
|
|
47
|
+
class HybridTokenVerifier {
|
|
48
|
+
constructor(deps) {
|
|
49
|
+
this.oauthProvider = deps.oauthProvider;
|
|
50
|
+
this.authConfig = deps.authConfig;
|
|
51
|
+
this.userApiKeyStore = deps.userApiKeyStore;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Constant-time API key lookup. Iterates all configured keys and uses
|
|
55
|
+
* crypto.timingSafeEqual to prevent timing-based side-channel attacks.
|
|
56
|
+
*/
|
|
57
|
+
constantTimeLookup(token) {
|
|
58
|
+
const tokenHash = crypto.createHash('sha256').update(token).digest();
|
|
59
|
+
let matched;
|
|
60
|
+
for (const key of Object.keys(this.authConfig.api_keys)) {
|
|
61
|
+
const keyHash = crypto.createHash('sha256').update(key).digest();
|
|
62
|
+
if (crypto.timingSafeEqual(tokenHash, keyHash)) {
|
|
63
|
+
matched = key;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return matched;
|
|
67
|
+
}
|
|
68
|
+
async verifyAccessToken(token) {
|
|
69
|
+
// 1. Try OAuth token first (if provider is configured)
|
|
70
|
+
if (this.oauthProvider) {
|
|
71
|
+
try {
|
|
72
|
+
return await this.oauthProvider.verifyAccessToken(token);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Not an OAuth token — fall through to API key
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// 2. Try config API keys (constant-time comparison to prevent timing attacks)
|
|
79
|
+
if (this.authConfig.enabled) {
|
|
80
|
+
const matchedKey = this.constantTimeLookup(token);
|
|
81
|
+
const keyConfig = matchedKey ? this.authConfig.api_keys[matchedKey] : undefined;
|
|
82
|
+
if (keyConfig && !keyConfig.revoked) {
|
|
83
|
+
if (keyConfig.expires_at) {
|
|
84
|
+
const expiresAt = new Date(keyConfig.expires_at);
|
|
85
|
+
if (expiresAt.getTime() <= Date.now()) {
|
|
86
|
+
throw new Error('API key has expired');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Fire-and-forget: update last_used_at
|
|
90
|
+
keyConfig.last_used_at = new Date().toISOString();
|
|
91
|
+
const roles = keyConfig.roles || [];
|
|
92
|
+
const permissions = (0, auth_1.resolvePermissions)(roles, this.authConfig.rbac);
|
|
93
|
+
return {
|
|
94
|
+
token,
|
|
95
|
+
clientId: 'api_key',
|
|
96
|
+
scopes: ['mcp:tools'],
|
|
97
|
+
expiresAt: keyConfig.expires_at
|
|
98
|
+
? Math.floor(new Date(keyConfig.expires_at).getTime() / 1000)
|
|
99
|
+
: Math.floor(Date.now() / 1000) + 86400, // default: 24h from now
|
|
100
|
+
extra: {
|
|
101
|
+
workspace_id: keyConfig.workspace_id,
|
|
102
|
+
actor_id: `apikey:${crypto.createHash('sha256').update(token).digest('hex').slice(0, 12)}`,
|
|
103
|
+
roles,
|
|
104
|
+
permissions,
|
|
105
|
+
auth_method: 'api_key',
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// 3. Try SaaS-generated API keys (UserApiKeyStore, supports salted + unsalted)
|
|
111
|
+
if (this.userApiKeyStore) {
|
|
112
|
+
let saasKey;
|
|
113
|
+
if (this.userApiKeyStore.verifyToken) {
|
|
114
|
+
saasKey = this.userApiKeyStore.verifyToken(token);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const keyHash = crypto.createHash('sha256').update(token).digest('hex');
|
|
118
|
+
saasKey = this.userApiKeyStore.getByKeyHash(keyHash);
|
|
119
|
+
}
|
|
120
|
+
if (saasKey && !saasKey.revoked) {
|
|
121
|
+
// Fire-and-forget: update last_used_at
|
|
122
|
+
this.userApiKeyStore.update(saasKey.id, { last_used_at: new Date().toISOString() });
|
|
123
|
+
const roles = saasKey.roles || [];
|
|
124
|
+
const permissions = (0, auth_1.resolvePermissions)(roles, this.authConfig.rbac);
|
|
125
|
+
return {
|
|
126
|
+
token,
|
|
127
|
+
clientId: 'api_key',
|
|
128
|
+
scopes: ['mcp:tools'],
|
|
129
|
+
expiresAt: Math.floor(Date.now() / 1000) + 86400, // 24h
|
|
130
|
+
extra: {
|
|
131
|
+
workspace_id: saasKey.workspace_id,
|
|
132
|
+
actor_id: `apikey:${crypto.createHash('sha256').update(token).digest('hex').slice(0, 12)}`,
|
|
133
|
+
user_id: saasKey.user_id,
|
|
134
|
+
roles,
|
|
135
|
+
permissions,
|
|
136
|
+
auth_method: 'api_key',
|
|
137
|
+
api_key_tags: saasKey.tags && saasKey.tags.length > 0 ? saasKey.tags : undefined,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// 4. Auth disabled — anonymous access
|
|
143
|
+
if (!this.authConfig.enabled) {
|
|
144
|
+
return {
|
|
145
|
+
token,
|
|
146
|
+
clientId: 'anonymous',
|
|
147
|
+
scopes: ['mcp:tools'],
|
|
148
|
+
expiresAt: Math.floor(Date.now() / 1000) + 86400,
|
|
149
|
+
extra: {
|
|
150
|
+
workspace_id: 'ws_default',
|
|
151
|
+
actor_id: 'anonymous',
|
|
152
|
+
roles: [],
|
|
153
|
+
permissions: [],
|
|
154
|
+
auth_method: 'none',
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
throw new Error('Invalid access token');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
exports.HybridTokenVerifier = HybridTokenVerifier;
|
|
162
|
+
//# sourceMappingURL=auth-verifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-verifier.js","sourceRoot":"","sources":["../../../src/mcp/auth-verifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Readable, Writable } from 'stream';
|
|
2
|
+
import { Gateway } from '../server/gateway';
|
|
3
|
+
import { Actor, Source } from '../types/tool-call';
|
|
4
|
+
import { GatewayConfig } from '../types/config';
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for the MCP bridge defaults.
|
|
7
|
+
* These values are used when MCP tool calls do not supply them explicitly.
|
|
8
|
+
*/
|
|
9
|
+
export interface MCPBridgeConfig {
|
|
10
|
+
/** Default workspace ID for tool calls */
|
|
11
|
+
workspace_id?: string;
|
|
12
|
+
/** Default actor for tool calls */
|
|
13
|
+
actor?: Actor;
|
|
14
|
+
/** Default source platform identifier */
|
|
15
|
+
source?: Source;
|
|
16
|
+
/** Default task ID (if not provided, a new UUID is generated per call) */
|
|
17
|
+
task_id?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* MCPBridge wraps a Palaryn Gateway instance as an MCP server, exposing
|
|
21
|
+
* the gateway's tool execution capabilities through the Model Context Protocol.
|
|
22
|
+
*
|
|
23
|
+
* Communication uses JSON-RPC 2.0 over stdio (line-delimited).
|
|
24
|
+
*
|
|
25
|
+
* It exposes three MCP tools:
|
|
26
|
+
* - `http_request` - Execute any HTTP request through the gateway
|
|
27
|
+
* - `http_get` - Shorthand for GET requests
|
|
28
|
+
* - `http_post` - Shorthand for POST requests
|
|
29
|
+
*
|
|
30
|
+
* Each tool constructs a proper ToolCall, runs it through the full gateway
|
|
31
|
+
* pipeline (policy, DLP, budget, rate limiting, execution), and returns
|
|
32
|
+
* the ToolResult as the MCP response.
|
|
33
|
+
*
|
|
34
|
+
* Supported MCP methods:
|
|
35
|
+
* - `initialize` - Protocol handshake (returns server info and capabilities)
|
|
36
|
+
* - `notifications/initialized` - Client acknowledgment (no-op notification)
|
|
37
|
+
* - `tools/list` - List available tools with their JSON schemas
|
|
38
|
+
* - `tools/call` - Execute a tool through the gateway
|
|
39
|
+
* - `ping` - Health check
|
|
40
|
+
*/
|
|
41
|
+
export declare class MCPBridge {
|
|
42
|
+
private gateway;
|
|
43
|
+
private bridgeConfig;
|
|
44
|
+
private transport;
|
|
45
|
+
private initialized;
|
|
46
|
+
constructor(gateway: Gateway, bridgeConfig?: MCPBridgeConfig);
|
|
47
|
+
/**
|
|
48
|
+
* Connect via stdio transport (reads from stdin, writes to stdout).
|
|
49
|
+
* This is the standard way to run an MCP server for CLI-based clients.
|
|
50
|
+
* Optionally accepts custom input/output streams for testing.
|
|
51
|
+
*/
|
|
52
|
+
connectStdio(input?: Readable, output?: Writable): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Close the transport and shut down the gateway.
|
|
55
|
+
*/
|
|
56
|
+
close(): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Returns the underlying Gateway instance.
|
|
59
|
+
*/
|
|
60
|
+
getGateway(): Gateway;
|
|
61
|
+
/**
|
|
62
|
+
* Whether the MCP handshake has been completed.
|
|
63
|
+
*/
|
|
64
|
+
isInitialized(): boolean;
|
|
65
|
+
/** Handle an incoming JSON-RPC message (request or notification). */
|
|
66
|
+
private handleMessage;
|
|
67
|
+
/** Handle a JSON-RPC notification (no response expected). */
|
|
68
|
+
private handleNotification;
|
|
69
|
+
/** Handle a JSON-RPC request and send a response. */
|
|
70
|
+
private handleRequest;
|
|
71
|
+
/** Handle `initialize` - protocol handshake. */
|
|
72
|
+
private handleInitialize;
|
|
73
|
+
/** Handle `tools/list` - return all registered tool definitions. */
|
|
74
|
+
private handleToolsList;
|
|
75
|
+
/** Handle `tools/call` - execute a tool through the gateway. */
|
|
76
|
+
private handleToolsCall;
|
|
77
|
+
/** Execute `http_request` tool - arbitrary HTTP method. */
|
|
78
|
+
private executeHttpRequest;
|
|
79
|
+
/** Execute `http_get` tool - GET request shorthand. */
|
|
80
|
+
private executeHttpGet;
|
|
81
|
+
/** Execute `http_post` tool - POST request shorthand. */
|
|
82
|
+
private executeHttpPost;
|
|
83
|
+
/**
|
|
84
|
+
* Build a ToolCall from MCP tool arguments, applying bridge defaults.
|
|
85
|
+
*/
|
|
86
|
+
private buildToolCall;
|
|
87
|
+
/**
|
|
88
|
+
* Execute a ToolCall through the gateway and format as MCP result.
|
|
89
|
+
*/
|
|
90
|
+
private executeAndFormat;
|
|
91
|
+
/**
|
|
92
|
+
* Convert a gateway ToolResult into an MCP CallToolResult.
|
|
93
|
+
*
|
|
94
|
+
* The result includes:
|
|
95
|
+
* - The tool output body (or error message) as the primary text content
|
|
96
|
+
* - Gateway metadata (status, policy decision, DLP report, budget, timing)
|
|
97
|
+
* as a second text content block for transparency
|
|
98
|
+
*/
|
|
99
|
+
private formatResult;
|
|
100
|
+
/**
|
|
101
|
+
* Map an HTTP method to a ToolInfo capability level.
|
|
102
|
+
*/
|
|
103
|
+
private methodToCapability;
|
|
104
|
+
/**
|
|
105
|
+
* Attempt to parse a body string as JSON, falling back to the raw string.
|
|
106
|
+
*/
|
|
107
|
+
private parseBody;
|
|
108
|
+
/**
|
|
109
|
+
* Create an MCP tool error result.
|
|
110
|
+
*/
|
|
111
|
+
private toolError;
|
|
112
|
+
/**
|
|
113
|
+
* Send a successful JSON-RPC response.
|
|
114
|
+
*/
|
|
115
|
+
private sendResult;
|
|
116
|
+
/**
|
|
117
|
+
* Send a JSON-RPC error response.
|
|
118
|
+
*/
|
|
119
|
+
private sendError;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Create a Gateway instance with the given config (or defaults),
|
|
123
|
+
* wrap it in an MCPBridge, and connect via stdio transport.
|
|
124
|
+
*
|
|
125
|
+
* This is the main entry point for running Palaryn as an MCP server.
|
|
126
|
+
*
|
|
127
|
+
* @param gatewayConfig - Full gateway configuration (defaults to DEFAULT_CONFIG with auth disabled)
|
|
128
|
+
* @param bridgeConfig - MCP bridge defaults for workspace, actor, source
|
|
129
|
+
* @returns The connected MCPBridge instance
|
|
130
|
+
*/
|
|
131
|
+
export declare function startMCPBridge(gatewayConfig?: Partial<GatewayConfig>, bridgeConfig?: MCPBridgeConfig): Promise<MCPBridge>;
|
|
132
|
+
//# sourceMappingURL=bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/mcp/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAA0B,KAAK,EAAE,MAAM,EAAY,MAAM,oBAAoB,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAiEhD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6RD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,eAAe;IAQ5D;;;;OAIG;IACG,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,aAAa,IAAI,OAAO;IAQxB,qEAAqE;IACrE,OAAO,CAAC,aAAa;IAarB,6DAA6D;IAC7D,OAAO,CAAC,kBAAkB;IAS1B,qDAAqD;YACvC,aAAa;IAwB3B,gDAAgD;IAChD,OAAO,CAAC,gBAAgB;IAcxB,oEAAoE;IACpE,OAAO,CAAC,eAAe;IAMvB,gEAAgE;YAClD,eAAe;IAgD7B,2DAA2D;YAC7C,kBAAkB;IA8BhC,uDAAuD;YACzC,cAAc;IA0B5B,yDAAyD;YAC3C,eAAe;IA+B7B;;OAEG;IACH,OAAO,CAAC,aAAa;IA+CrB;;OAEG;YACW,gBAAgB;IA0B9B;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IA+CpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,SAAS;CASlB;AAMD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EACtC,YAAY,CAAC,EAAE,eAAe,GAC7B,OAAO,CAAC,SAAS,CAAC,CAyBpB"}
|