/** * Deploy-provider detection (issue #417). * * `isServerless()` collapses every serverless env to a single boolean; * this returns the discriminated identity so `@Tool({ availableWhen: { * provider: ['vercel'] } })` can express provider-specific rules. * * Order matters — first match wins. A user can override detection by * setting `FRONTMCP_PROVIDER=` explicitly (used by tests and by * Docker images that don't expose a discriminating env var). */ export type DeployProvider = 'bare' | 'docker' | 'vercel' | 'lambda' | 'cloudflare' | 'netlify' | 'azure' | 'gcp' | 'fly' | 'render' | 'railway'; /** * Detect the current deploy provider. Cached per process. * * Detection rules (first match wins): * * 1. `FRONTMCP_PROVIDER` env var (override; trust whatever the operator set). * 2. `VERCEL` env var → `'vercel'`. * 3. `AWS_LAMBDA_FUNCTION_NAME` → `'lambda'`. * 4. `CF_PAGES` → `'cloudflare'`. * 5. `NETLIFY` → `'netlify'`. * 6. `AZURE_FUNCTIONS_ENVIRONMENT` → `'azure'`. * 7. `K_SERVICE` (Cloud Run / Knative) → `'gcp'`. * 8. `FLY_APP_NAME` → `'fly'`. * 9. `RENDER` → `'render'`. * 10. `RAILWAY_ENVIRONMENT` → `'railway'`. * 11. `/.dockerenv` exists → `'docker'`. * 12. Fallback: `'bare'`. */ export declare function detectProvider(): DeployProvider; /** Test helper — reset the cache between specs. */ export declare function resetProviderCacheForTesting(): void;