/** * log10x_advise_install: the wizard front door. * * Progressive Q-and-A driver for a k8s install of the Log10x Reporter or * Receiver. Each call merges the user's latest answer into a wizard * session (held alongside the discovery snapshot) and either: * * 1. Asks the next missing question (returning markdown that the agent * surfaces to the user), or * 2. Once all answers are in, emits a concrete install plan with the * license JWT pre-filled (auto-fetched from the gateway if absent). * * The five decisions, by dependency order: * * Q1. App — "deploy a dedicated DaemonSet forwarder" (Reporter) vs * "plug into existing forwarder" (Receiver). The biggest fork. * Q2. (Receiver only) Which forwarder — auto-uses the snapshot's * detected forwarder when there's exactly one; asks if multiple. * Q3. Backend — where TenXSummary metrics go. Default suggestion: * log10x SaaS unless airgapped or a backend agent is already * detected in the cluster. * Q4. (Backend ≠ log10x only) Airgapped — opt-in for CISO-friction * reduction. Skipped silently when backend=log10x (SaaS implies * not-airgapped). * Q5. License — auto-fetched from `/api/v1/license/demo` if the user * hasn't signed in. When `airgapped=true` and the only available * license is a demo, the wizard surfaces a soft warning that * demo licenses can't run airgapped (engine downgrades silently * to online mode), and offers sign-in or proceed-without-airgapped. * * State retention is via WizardSession on the snapshot store — the * MCP itself is stateless per call, but the snapshot store's 30-min TTL * gives the agent a coherent conversation thread. * * **Credential note.** The wizard mints a LICENSE JWT (not an api_key) * for the install plan. The license JWT is the credential the deployed * engine pods consume — it goes into the helm chart's `log10xLicenseJwt` * value. The wizard never touches the user's api_key; the api_key stays * with the MCP for user-action calls (queries, env management, etc.). * See `../lib/auth-model.ts` for the full split. */ import { z } from 'zod'; import '../lib/auth-model.js'; import type { Environments } from '../lib/environments.js'; import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { type StructuredOutput } from '../lib/output-types.js'; export declare const adviseInstallSchema: { snapshot_id: z.ZodOptional; app: z.ZodOptional>; forwarder: z.ZodOptional>; backends: z.ZodOptional, "many">>; airgapped: z.ZodOptional; backend_credentials: z.ZodOptional, z.ZodObject<{ secretName: z.ZodString; plainValues: z.ZodOptional>; }, "strip", z.ZodTypeAny, { secretName: string; plainValues?: Record | undefined; }, { secretName: string; plainValues?: Record | undefined; }>>>; license_source: z.ZodDefault>; license_jwt_paste: z.ZodOptional; namespace: z.ZodOptional; release_name: z.ZodOptional; action: z.ZodOptional>; }; declare const schemaObj: z.ZodObject<{ snapshot_id: z.ZodOptional; app: z.ZodOptional>; forwarder: z.ZodOptional>; backends: z.ZodOptional, "many">>; airgapped: z.ZodOptional; backend_credentials: z.ZodOptional, z.ZodObject<{ secretName: z.ZodString; plainValues: z.ZodOptional>; }, "strip", z.ZodTypeAny, { secretName: string; plainValues?: Record | undefined; }, { secretName: string; plainValues?: Record | undefined; }>>>; license_source: z.ZodDefault>; license_jwt_paste: z.ZodOptional; namespace: z.ZodOptional; release_name: z.ZodOptional; action: z.ZodOptional>; }, "strip", z.ZodTypeAny, { license_source: "demo" | "signin" | "paste"; namespace?: string | undefined; app?: "reporter" | "receiver" | undefined; forwarder?: "vector" | "fluentbit" | "fluentd" | "filebeat" | "logstash" | "otel-collector" | undefined; action?: "all" | "install" | "verify" | "teardown" | undefined; snapshot_id?: string | undefined; backends?: string[] | undefined; airgapped?: boolean | undefined; license_jwt_paste?: string | undefined; release_name?: string | undefined; backend_credentials?: Record | undefined; }> | undefined; }, { namespace?: string | undefined; app?: "reporter" | "receiver" | undefined; forwarder?: "vector" | "fluentbit" | "fluentd" | "filebeat" | "logstash" | "otel-collector" | undefined; action?: "all" | "install" | "verify" | "teardown" | undefined; snapshot_id?: string | undefined; backends?: string[] | undefined; airgapped?: boolean | undefined; license_source?: "demo" | "signin" | "paste" | undefined; license_jwt_paste?: string | undefined; release_name?: string | undefined; backend_credentials?: Record | undefined; }> | undefined; }>; export type AdviseInstallArgs = z.infer; export declare function executeAdviseInstall(args: AdviseInstallArgs, envs: Environments, mcpServer?: McpServer): Promise; export {};