/** * Kernelspec Discovery * * Discovers Jupyter kernelspecs from standard locations. * Similar to jupyter_client.kernelspec.find_kernel_specs() */ import { KernelSpec } from './types'; export type { KernelSpec } from './types'; /** * Standard kernelspec search paths */ export declare function getKernelSearchPaths(): string[]; /** * Read kernelspecs from a list of `…/kernels` directories. `seen` dedupes by * kernel name across calls (first path wins — Jupyter precedence order). */ export declare function readKernelSpecsFromPaths(searchPaths: string[], options?: { skipDefaultPythonSpecs?: boolean; seen?: Set; }): KernelSpec[]; /** The `share/jupyter/kernels` dir belonging to each interpreter's prefix. */ export declare function envKernelspecDirs(envPythonPaths: string[]): string[]; /** * Discover all available kernelspecs on the system * Uses 60-second in-memory cache to avoid repeated disk I/O */ export declare function discoverKernelSpecs(forceRefresh?: boolean): KernelSpec[]; /** * Invalidate the kernelspec cache (call after installing a new kernel) */ export declare function invalidateKernelspecCache(): void; /** * Get a specific kernelspec by name */ export declare function getKernelSpec(name: string): KernelSpec | null; /** * Env kernels (VSCode-style raw launch): any Python environment can be used * as a kernel WITHOUT registering a kernelspec on disk. The kernel name * `env:` resolves to a synthetic in-memory spec that launches * ` -m ipykernel_launcher` directly — only ipykernel needs to be * importable in the environment; jupyter itself is never required. */ export declare const ENV_KERNEL_PREFIX = "env:"; export declare function isEnvKernelName(name: string): boolean; /** The interpreter path encoded in an env: kernel name, or null. */ export declare function envKernelPythonPath(name: string): string | null; export declare function makeEnvKernelSpec(pythonPath: string, displayName?: string): KernelSpec; /** * Resolve a kernel name to a spec: env: names produce a synthetic raw-launch * spec, anything else falls back to registered kernelspecs on disk. */ export declare function resolveKernelSpec(name: string, displayName?: string): KernelSpec | null; /** * Check if a kernelspec exists */ export declare function hasKernelSpec(name: string): boolean;