import { Plugin } from "vite"; import { DefaultTheme } from "vitepress"; interface TemplateVariables { /** * The title extracted from the frontmatter or the first h1 heading in the main document (`index.md`). * * @example 'Awesome tool' */ title?: string; /** * The description. * * @example 'Blazing fast build tool' */ description?: string; /** * The details. * * @example 'A multi-user version of the notebook designed for companies, classrooms and research labs' */ details?: string; /** * An automatically generated **T**able **O**f **C**ontents. * * @example * ```markdown * - [Title](/foo.md): Lorem ipsum dolor sit amet, consectetur adipiscing elit. * - [Title 2](/bar/baz.md): Cras vel nibh id ipsum pharetra efficitur. * ``` */ toc?: string; } interface CustomTemplateVariables extends TemplateVariables { /** Any custom variable */ [key: string]: string | undefined; } interface LlmstxtSettings extends TemplateVariables { /** * The domain that will be appended to the beginning of URLs in `llms.txt` and in the context of other files * * Domain attachment is not yet agreed upon (since it depends on the AI ​​whether it can resolve the relative paths that are currently there), but if you want you can add it * * ℹ️ **Note**: Domain cannot end with `/`. * * Without a {@link LlmstxtSettings.domain | `domain`}: * ```markdown * - [Title](/foo/bar.md) * ``` * * With a {@link LlmstxtSettings.domain | `domain`}: * ```markdown * - [Title](https://example.com/foo/bar.md) * ``` * * @example * ```typescript * llmstxt({ domain: 'https://example.com' }) * ``` */ domain?: string; /** * Indicates whether to generate the `llms.txt` file, which contains a list of sections with corresponding links. * * @default true */ generateLLMsTxt?: boolean; /** * Determines whether to generate the `llms-full.txt` which contains all the documentation in one file. * * @default true */ generateLLMsFullTxt?: boolean; /** * Determines whether to generate an LLM-friendly version of the documentation for each page on the website. * * @default true */ generateLLMFriendlyDocsForEachPage?: boolean; /** * Whether to strip HTML tags from Markdown files * * @default true */ stripHTML?: boolean; /** * The directory from which files will be processed. * * This is useful for configuring the plugin to generate documentation for LLMs in a specific language. * * @example * ```typescript * llmstxt({ * // Generate documentation for LLMs from English documentation only * workDir: 'en' * }) * ``` * * @default vitepress.srcDir */ workDir?: string; /** * An array of file path patterns to be ignored during processing. * * This is useful for excluding certain files from LLMs, such as those not related to documentation (e.g., sponsors, team, etc.). * * @example * ```typescript * llmstxt({ * ignoreFiles: [ * 'about/team/*', * 'sponsor/*' * // ... * ] * }) * ``` * * @default [] */ ignoreFiles?: string[]; /** * Whether to exclude unnecessary files (such as blog, sponsor or team information) that LLM does not need at all to save tokens ♻️ * * You can granularly disable certain page presets, see these options: * * - {@link LlmstxtSettings.excludeIndexPage | `excludeIndexPage`} * - {@link LlmstxtSettings.excludeBlog | `excludeBlog`} * - {@link LlmstxtSettings.excludeTeam | `excludeTeam`} * * @see {@link unnecessaryFilesList} for the list of files that will be excluded * * @default true */ excludeUnnecessaryFiles?: boolean; /** * Whether to exclude the `/index.md` page which usually has no content * * @see {@link unnecessaryFilesList.indexPage} * * @default true */ excludeIndexPage?: boolean; /** * Whether to exclude blog content * * @see {@link unnecessaryFilesList.blogs} * * @default true */ excludeBlog?: boolean; /** * Whether to exclude information about a team that usually does not provide practical information * * @see {@link unnecessaryFilesList.team} * * @default true */ excludeTeam?: boolean; /** * A custom template for the `llms.txt` file, allowing for a personalized order of elements. * * Available template elements include: * * - `{title}`: The title extracted from the frontmatter or the first h1 heading in the main document (`index.md`). * - `{description}`: The description. * - `{details}`: The details. * - `{toc}`: An automatically generated **T**able **O**f **C**ontents. * * You can also add custom variables using the {@link LlmstxtSettings.customTemplateVariables | `customTemplateVariables`} parameter * * @default * ```markdown * # {title} * * > {description} * * {details} * * ## Table of Contents * * {toc} * ``` */ customLLMsTxtTemplate?: string; /** * Custom variables for {@link LlmstxtSettings.customLLMsTxtTemplate | `customLLMsTxtTemplate`}. * * With this option you can edit or add variables to the template. * * You can change the title in `llms.txt` without having to change the template: * * @example * ```typescript * llmstxt({ * customTemplateVariables: { * title: 'Very custom title', * } * }) * ``` * * You can also combine this with a custom template: * * @example * ```typescript * llmstxt({ * customLLMsTxtTemplate: '# {title} {foo}', * customTemplateVariables: { * foo: 'Very custom title', * } * }) * ``` */ customTemplateVariables?: CustomTemplateVariables; /** * VitePress {@link DefaultTheme.Sidebar | Sidebar} * * Here you can insert your {@link DefaultTheme.Sidebar | `sidebar`} if it is not in the VitePress configuration * * Usually this parameter is used in rare cases */ sidebar?: DefaultTheme.Sidebar | ((configSidebar: DefaultTheme.Sidebar | undefined) => DefaultTheme.Sidebar | undefined | Promise); /** * Determines how many directory levels deep to generate `llms.txt` files. * * - `1` (default): Generate `llms.txt` only in the root directory * - `2`: Generate `llms.txt` in the root and first-level subdirectories * - `3`: Generate `llms.txt` in the root, first-level, and second-level subdirectories * * Each `llms.txt` file will contain content relevant to its directory and subdirectories. * * @example * ```typescript * llmstxt({ * // Generate llms.txt in root and first-level subdirectories * depth: 2 * }) * ``` * * @default 1 */ depth?: number; } /** * [VitePress](http://vitepress.dev/) plugin for generating raw documentation * for **LLMs** in Markdown format which is much lighter and more efficient for LLMs * * @param [userSettings={}] - Plugin settings. * * @see https://github.com/okineadev/vitepress-plugin-llms * @see https://llmstxt.org/ */ declare function llmstxt(userSettings?: LlmstxtSettings): [Plugin, Plugin]; export { llmstxt as default };