@dominikcz/greg 0.9.27
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/README.md +397 -0
- package/bin/greg.js +241 -0
- package/bin/init.js +351 -0
- package/bin/templates/docs/getting-started.md +47 -0
- package/bin/templates/docs/index.md +11 -0
- package/bin/templates/greg.config.js +39 -0
- package/bin/templates/greg.config.ts +38 -0
- package/bin/templates/index.html +16 -0
- package/bin/templates/src/App.svelte +5 -0
- package/bin/templates/src/app.css +20 -0
- package/bin/templates/src/main.js +9 -0
- package/bin/templates/svelte.config.js +1 -0
- package/bin/templates/tsconfig.json +21 -0
- package/bin/templates/vite.config.js +23 -0
- package/docs/__partials/markdown/examples/basic.md +4 -0
- package/docs/__partials/markdown/examples/diff.md +10 -0
- package/docs/__partials/markdown/examples/focus.md +5 -0
- package/docs/__partials/markdown/examples/language-title.md +3 -0
- package/docs/__partials/markdown/examples/line-highlighting.md +5 -0
- package/docs/__partials/markdown/examples/line-numbers.md +5 -0
- package/docs/__partials/note.md +4 -0
- package/docs/guide/__shared-warning.md +4 -0
- package/docs/guide/asset-handling.md +88 -0
- package/docs/guide/deploying.md +162 -0
- package/docs/guide/getting-started.md +334 -0
- package/docs/guide/index.md +23 -0
- package/docs/guide/localization.md +290 -0
- package/docs/guide/markdown/code.md +95 -0
- package/docs/guide/markdown/components-and-mermaid.md +43 -0
- package/docs/guide/markdown/containers.md +110 -0
- package/docs/guide/markdown/header-anchors.md +34 -0
- package/docs/guide/markdown/includes.md +84 -0
- package/docs/guide/markdown/index.md +20 -0
- package/docs/guide/markdown/inline-attributes.md +21 -0
- package/docs/guide/markdown/links-and-toc.md +64 -0
- package/docs/guide/markdown/math.md +54 -0
- package/docs/guide/markdown/syntax-highlighting.md +75 -0
- package/docs/guide/routing.md +150 -0
- package/docs/guide/using-svelte.md +88 -0
- package/docs/guide/versioning.md +281 -0
- package/docs/incompatibilities.md +48 -0
- package/docs/index.md +43 -0
- package/docs/reference/badge.md +100 -0
- package/docs/reference/carbon-ads.md +46 -0
- package/docs/reference/code-group.md +126 -0
- package/docs/reference/home-page.md +232 -0
- package/docs/reference/index.md +18 -0
- package/docs/reference/markdowndocs.md +275 -0
- package/docs/reference/outline.md +79 -0
- package/docs/reference/search.md +263 -0
- package/docs/reference/steps.md +200 -0
- package/docs/reference/team-page.md +189 -0
- package/docs/reference/theme.md +150 -0
- package/fakeDocsGenerator/generate_docs.js +310 -0
- package/package.json +92 -0
- package/scripts/build-versions.js +609 -0
- package/scripts/generate-static.js +79 -0
- package/scripts/render-markdown.js +420 -0
- package/src/lib/MarkdownDocs/AiChat.svelte +936 -0
- package/src/lib/MarkdownDocs/BackToTop.svelte +68 -0
- package/src/lib/MarkdownDocs/Breadcrumb.svelte +68 -0
- package/src/lib/MarkdownDocs/DocsNavigation.svelte +149 -0
- package/src/lib/MarkdownDocs/DocsSiteHeader.svelte +758 -0
- package/src/lib/MarkdownDocs/DocsVersionSwitcher.svelte +103 -0
- package/src/lib/MarkdownDocs/MarkdownDocs.svelte +2115 -0
- package/src/lib/MarkdownDocs/MarkdownRenderer.svelte +487 -0
- package/src/lib/MarkdownDocs/Outline.svelte +238 -0
- package/src/lib/MarkdownDocs/PrevNext.svelte +115 -0
- package/src/lib/MarkdownDocs/SearchModal.svelte +1241 -0
- package/src/lib/MarkdownDocs/TreeView.svelte +32 -0
- package/src/lib/MarkdownDocs/TreeViewItem.svelte +219 -0
- package/src/lib/MarkdownDocs/VersionOutdatedNotice.svelte +72 -0
- package/src/lib/MarkdownDocs/__tests__/codeDirectives.test.js +54 -0
- package/src/lib/MarkdownDocs/__tests__/common.test.js +41 -0
- package/src/lib/MarkdownDocs/__tests__/docsExamplesLint.test.js +77 -0
- package/src/lib/MarkdownDocs/__tests__/fixtures/docs/markdown/__partial-basic.md +3 -0
- package/src/lib/MarkdownDocs/__tests__/fixtures/docs/markdown/snippet.js +9 -0
- package/src/lib/MarkdownDocs/__tests__/fixtures/includes/part.md +11 -0
- package/src/lib/MarkdownDocs/__tests__/fixtures/includes/wrapper.md +5 -0
- package/src/lib/MarkdownDocs/__tests__/fixtures/snippets/sample.js +8 -0
- package/src/lib/MarkdownDocs/__tests__/fixtures/snippets/sample.md +5 -0
- package/src/lib/MarkdownDocs/__tests__/helpers.js +67 -0
- package/src/lib/MarkdownDocs/__tests__/localeUtils.test.js +204 -0
- package/src/lib/MarkdownDocs/__tests__/markdown.test.js +704 -0
- package/src/lib/MarkdownDocs/__tests__/markdownRendererRuntime.test.js +65 -0
- package/src/lib/MarkdownDocs/__tests__/searchIndexBuilder.test.js +117 -0
- package/src/lib/MarkdownDocs/__tests__/sqliteStore.test.js +202 -0
- package/src/lib/MarkdownDocs/__tests__/useRouter.test.js +16 -0
- package/src/lib/MarkdownDocs/ai/adapters/customAdapter.js +14 -0
- package/src/lib/MarkdownDocs/ai/adapters/customAdapter.ts +43 -0
- package/src/lib/MarkdownDocs/ai/adapters/ollamaAdapter.js +81 -0
- package/src/lib/MarkdownDocs/ai/adapters/ollamaAdapter.ts +116 -0
- package/src/lib/MarkdownDocs/ai/adapters/openaiAdapter.js +92 -0
- package/src/lib/MarkdownDocs/ai/adapters/openaiAdapter.ts +137 -0
- package/src/lib/MarkdownDocs/ai/aiProvider.ts +31 -0
- package/src/lib/MarkdownDocs/ai/characters.js +52 -0
- package/src/lib/MarkdownDocs/ai/characters.ts +69 -0
- package/src/lib/MarkdownDocs/ai/chunkStore.ts +25 -0
- package/src/lib/MarkdownDocs/ai/chunker.js +85 -0
- package/src/lib/MarkdownDocs/ai/chunker.ts +135 -0
- package/src/lib/MarkdownDocs/ai/docLinker.js +26 -0
- package/src/lib/MarkdownDocs/ai/docLinker.ts +36 -0
- package/src/lib/MarkdownDocs/ai/promptBuilder.js +33 -0
- package/src/lib/MarkdownDocs/ai/promptBuilder.ts +53 -0
- package/src/lib/MarkdownDocs/ai/ragPipeline.js +54 -0
- package/src/lib/MarkdownDocs/ai/ragPipeline.ts +106 -0
- package/src/lib/MarkdownDocs/ai/stores/memoryStore.js +88 -0
- package/src/lib/MarkdownDocs/ai/stores/memoryStore.ts +112 -0
- package/src/lib/MarkdownDocs/ai/stores/sqliteStore.ts +372 -0
- package/src/lib/MarkdownDocs/ai/types.ts +71 -0
- package/src/lib/MarkdownDocs/aiServer.js +288 -0
- package/src/lib/MarkdownDocs/codeDirectives.js +191 -0
- package/src/lib/MarkdownDocs/codeFenceInfo.js +45 -0
- package/src/lib/MarkdownDocs/codeGroup.ts +46 -0
- package/src/lib/MarkdownDocs/common.ts +47 -0
- package/src/lib/MarkdownDocs/docsUtils.js +281 -0
- package/src/lib/MarkdownDocs/index.plugins.js +22 -0
- package/src/lib/MarkdownDocs/layouts/LayoutDoc.svelte +8 -0
- package/src/lib/MarkdownDocs/layouts/LayoutHome.svelte +58 -0
- package/src/lib/MarkdownDocs/layouts/LayoutPage.svelte +9 -0
- package/src/lib/MarkdownDocs/loadGregConfig.js +82 -0
- package/src/lib/MarkdownDocs/localeUtils.ts +682 -0
- package/src/lib/MarkdownDocs/markdownRendererRuntime.ts +314 -0
- package/src/lib/MarkdownDocs/mermaidThemes.js +319 -0
- package/src/lib/MarkdownDocs/navigationUtils.js +22 -0
- package/src/lib/MarkdownDocs/rehypeCodeGroup.js +326 -0
- package/src/lib/MarkdownDocs/rehypeCodeTitle.js +96 -0
- package/src/lib/MarkdownDocs/rehypeToc.js +170 -0
- package/src/lib/MarkdownDocs/remarkCodeMeta.js +22 -0
- package/src/lib/MarkdownDocs/remarkContainers.js +329 -0
- package/src/lib/MarkdownDocs/remarkCustomAnchors.js +42 -0
- package/src/lib/MarkdownDocs/remarkEscapeSvelte.js +33 -0
- package/src/lib/MarkdownDocs/remarkGlobalComponents.js +65 -0
- package/src/lib/MarkdownDocs/remarkImports.js +461 -0
- package/src/lib/MarkdownDocs/remarkImportsBrowser.js +349 -0
- package/src/lib/MarkdownDocs/remarkInlineAttrs.js +95 -0
- package/src/lib/MarkdownDocs/remarkMathToHtml.js +138 -0
- package/src/lib/MarkdownDocs/searchIndexBuilder.js +497 -0
- package/src/lib/MarkdownDocs/searchServer.js +263 -0
- package/src/lib/MarkdownDocs/treeViewTypes.ts +11 -0
- package/src/lib/MarkdownDocs/useRouter.svelte.ts +114 -0
- package/src/lib/MarkdownDocs/useSplitter.svelte.ts +33 -0
- package/src/lib/MarkdownDocs/versioningDefaults.js +20 -0
- package/src/lib/MarkdownDocs/vitePluginAiServer.js +204 -0
- package/src/lib/MarkdownDocs/vitePluginCopyDocs.js +153 -0
- package/src/lib/MarkdownDocs/vitePluginFrontmatter.js +109 -0
- package/src/lib/MarkdownDocs/vitePluginGregConfig.js +108 -0
- package/src/lib/MarkdownDocs/vitePluginSearchIndex.js +57 -0
- package/src/lib/MarkdownDocs/vitePluginSearchServer.js +190 -0
- package/src/lib/components/Badge.svelte +59 -0
- package/src/lib/components/Button.svelte +138 -0
- package/src/lib/components/CarbonAds.svelte +99 -0
- package/src/lib/components/CodeGroup.svelte +102 -0
- package/src/lib/components/Feature.svelte +209 -0
- package/src/lib/components/Features.svelte +123 -0
- package/src/lib/components/Hero.svelte +399 -0
- package/src/lib/components/Image.svelte +128 -0
- package/src/lib/components/Link.svelte +105 -0
- package/src/lib/components/SocialLink.svelte +84 -0
- package/src/lib/components/SocialLinks.svelte +33 -0
- package/src/lib/components/Steps.svelte +143 -0
- package/src/lib/components/TeamMember.svelte +273 -0
- package/src/lib/components/TeamMembers.svelte +81 -0
- package/src/lib/components/TeamPage.svelte +65 -0
- package/src/lib/components/TeamPageSection.svelte +108 -0
- package/src/lib/components/TeamPageTitle.svelte +89 -0
- package/src/lib/components/index.js +24 -0
- package/src/lib/portal/context.js +12 -0
- package/src/lib/portal/index.js +3 -0
- package/src/lib/portal/portal.svelte +14 -0
- package/src/lib/portal/slot.svelte +8 -0
- package/src/lib/scss/__code.scss +128 -0
- package/src/lib/scss/__containers.scss +99 -0
- package/src/lib/scss/__markdown.scss +447 -0
- package/src/lib/scss/__scrollbar.scss +60 -0
- package/src/lib/scss/__steps.scss +100 -0
- package/src/lib/scss/__theme.scss +238 -0
- package/src/lib/scss/__toc.scss +55 -0
- package/src/lib/scss/__utilities.scss +7 -0
- package/src/lib/scss/greg.scss +9 -0
- package/src/lib/spinner/spinner.svelte +42 -0
- package/svelte.config.js +146 -0
- package/types/index.d.ts +456 -0
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript types for @dominikcz/greg
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export type OutlineLevel = false | number | [number, number] | 'deep';
|
|
6
|
+
export type OutlineOption = OutlineLevel | { level?: OutlineLevel; label?: string };
|
|
7
|
+
|
|
8
|
+
export type BadgeSpec = string | { text: string; type?: 'info' | 'tip' | 'warning' | 'danger' | 'custom' };
|
|
9
|
+
|
|
10
|
+
export type NavItem = {
|
|
11
|
+
text: string;
|
|
12
|
+
link?: string;
|
|
13
|
+
/** Opens the link in a new tab. */
|
|
14
|
+
target?: string;
|
|
15
|
+
/** Nested links rendered as a dropdown menu. */
|
|
16
|
+
items?: NavItem[];
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type ThemeableImage =
|
|
20
|
+
| string
|
|
21
|
+
| { src: string; alt?: string }
|
|
22
|
+
| { light: string; dark: string; alt?: string };
|
|
23
|
+
|
|
24
|
+
export type SocialLinkItem = {
|
|
25
|
+
icon: string | { svg: string };
|
|
26
|
+
link: string;
|
|
27
|
+
ariaLabel?: string;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export type SidebarItem = {
|
|
31
|
+
text: string;
|
|
32
|
+
link?: string;
|
|
33
|
+
/** Opens the link in a new tab. */
|
|
34
|
+
target?: string;
|
|
35
|
+
/** Link rel attribute, e.g. 'noopener noreferrer'. */
|
|
36
|
+
rel?: string;
|
|
37
|
+
items?: SidebarItem[];
|
|
38
|
+
/** Auto-generate children from this docs sub-path. */
|
|
39
|
+
auto?: string;
|
|
40
|
+
badge?: BadgeSpec;
|
|
41
|
+
collapsed?: boolean;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export type LocaleThemeConfig = {
|
|
45
|
+
nav?: NavItem[];
|
|
46
|
+
sidebar?: 'auto' | SidebarItem[];
|
|
47
|
+
outline?: OutlineOption | boolean;
|
|
48
|
+
/** VitePress-compatible text label for last-modified meta. */
|
|
49
|
+
lastUpdatedText?: string;
|
|
50
|
+
/** VitePress-compatible language switcher aria-label. */
|
|
51
|
+
langMenuLabel?: string;
|
|
52
|
+
/** VitePress-compatible mobile sidebar menu label. */
|
|
53
|
+
sidebarMenuLabel?: string;
|
|
54
|
+
/** VitePress-compatible skip-to-content label. */
|
|
55
|
+
skipToContentLabel?: string;
|
|
56
|
+
/** VitePress-compatible back-to-top aria-label. */
|
|
57
|
+
returnToTopLabel?: string;
|
|
58
|
+
/** VitePress-compatible theme switch group label. */
|
|
59
|
+
darkModeSwitchLabel?: string;
|
|
60
|
+
/** VitePress-compatible light mode toggle title. */
|
|
61
|
+
lightModeSwitchTitle?: string;
|
|
62
|
+
/** VitePress-compatible dark mode toggle title. */
|
|
63
|
+
darkModeSwitchTitle?: string;
|
|
64
|
+
/** VitePress-style search localization map. */
|
|
65
|
+
search?: {
|
|
66
|
+
locales?: Record<
|
|
67
|
+
string,
|
|
68
|
+
{
|
|
69
|
+
button?: {
|
|
70
|
+
buttonText?: string;
|
|
71
|
+
buttonAriaLabel?: string;
|
|
72
|
+
};
|
|
73
|
+
modal?: {
|
|
74
|
+
noResultsText?: string;
|
|
75
|
+
footer?: {
|
|
76
|
+
selectText?: string;
|
|
77
|
+
navigateText?: string;
|
|
78
|
+
closeText?: string;
|
|
79
|
+
};
|
|
80
|
+
searchBox?: {
|
|
81
|
+
placeholder?: string;
|
|
82
|
+
};
|
|
83
|
+
startScreen?: {
|
|
84
|
+
noRecentSearchesText?: string;
|
|
85
|
+
};
|
|
86
|
+
errorScreen?: {
|
|
87
|
+
titleText?: string;
|
|
88
|
+
};
|
|
89
|
+
loadingScreen?: {
|
|
90
|
+
loadingText?: string;
|
|
91
|
+
};
|
|
92
|
+
/** AI knowledge-base (Ask AI tab) localization strings. */
|
|
93
|
+
ai?: {
|
|
94
|
+
/** Text for the "Ask AI" tab button. */
|
|
95
|
+
tabLabel?: string;
|
|
96
|
+
/** Textarea placeholder. */
|
|
97
|
+
placeholder?: string;
|
|
98
|
+
/** Introductory hint shown before the first message. */
|
|
99
|
+
startText?: string;
|
|
100
|
+
/** Spinner / in-progress text while AI generates answer. */
|
|
101
|
+
loadingText?: string;
|
|
102
|
+
/** Error message shown when the request fails. */
|
|
103
|
+
errorText?: string;
|
|
104
|
+
/** Label above the list of cited sources. */
|
|
105
|
+
sourcesLabel?: string;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
>;
|
|
110
|
+
};
|
|
111
|
+
/** VitePress-compatible labels above prev/next links. */
|
|
112
|
+
docFooter?: {
|
|
113
|
+
prev?: string | false;
|
|
114
|
+
next?: string | false;
|
|
115
|
+
};
|
|
116
|
+
siteTitle?: string | false;
|
|
117
|
+
logo?: ThemeableImage;
|
|
118
|
+
socialLinks?: SocialLinkItem[];
|
|
119
|
+
editLink?: {
|
|
120
|
+
pattern: string;
|
|
121
|
+
text?: string;
|
|
122
|
+
};
|
|
123
|
+
footer?: {
|
|
124
|
+
message?: string;
|
|
125
|
+
copyright?: string;
|
|
126
|
+
};
|
|
127
|
+
aside?: boolean | 'left';
|
|
128
|
+
/** VitePress-compatible full lastUpdated options. */
|
|
129
|
+
lastUpdated?: {
|
|
130
|
+
text?: string;
|
|
131
|
+
formatOptions?: Intl.DateTimeFormatOptions & { forceLocale?: boolean };
|
|
132
|
+
};
|
|
133
|
+
externalLinkIcon?: boolean;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
export type LocaleConfig = {
|
|
137
|
+
/** e.g. 'en-US', 'pl-PL' */
|
|
138
|
+
lang?: string;
|
|
139
|
+
/** Text direction for locale, e.g. 'ltr' or 'rtl'. */
|
|
140
|
+
dir?: 'ltr' | 'rtl';
|
|
141
|
+
/** Locale-specific site title (mapped to header title). */
|
|
142
|
+
title?: string;
|
|
143
|
+
description?: string;
|
|
144
|
+
label?: string;
|
|
145
|
+
link?: string;
|
|
146
|
+
themeConfig?: LocaleThemeConfig;
|
|
147
|
+
[key: string]: unknown;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export type BranchVersionSource = {
|
|
151
|
+
/** Version identifier used in output paths, e.g. 'latest' or '1.2'. */
|
|
152
|
+
version: string;
|
|
153
|
+
/** Git branch or ref name to read docs from. */
|
|
154
|
+
branch: string;
|
|
155
|
+
/** Optional display title in version selectors/UIs. */
|
|
156
|
+
title?: string;
|
|
157
|
+
/** Relative path to docs directory in that branch. Default: 'docs'. */
|
|
158
|
+
docsDir?: string;
|
|
159
|
+
/** Route prefix used while building this version. Default: '/docs'. */
|
|
160
|
+
srcDir?: string;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
export type FolderVersionSource = {
|
|
164
|
+
/** Version identifier used in output paths, e.g. 'latest' or '1.2'. */
|
|
165
|
+
version: string;
|
|
166
|
+
/** Relative or absolute directory path containing markdown docs sources. */
|
|
167
|
+
dir: string;
|
|
168
|
+
/** Optional display title in version selectors/UIs. */
|
|
169
|
+
title?: string;
|
|
170
|
+
/** Route prefix used while building this version. Default: '/docs'. */
|
|
171
|
+
srcDir?: string;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
export type GregVersioningConfig = {
|
|
175
|
+
/** Version source strategy. Default: 'branches'. */
|
|
176
|
+
strategy?: 'branches' | 'folders';
|
|
177
|
+
/** Base output directory for built versions. Default: 'dist/__versions'. */
|
|
178
|
+
outDir?: string;
|
|
179
|
+
/** Hosting root for synced default version output. Default: parent directory of `outDir`. */
|
|
180
|
+
hostOutDir?: string;
|
|
181
|
+
/** Default version or alias used by consumers. */
|
|
182
|
+
default?: string;
|
|
183
|
+
/** Optional URL prefix for version pages in manifest. Default: '/__versions'. */
|
|
184
|
+
pathPrefix?: string;
|
|
185
|
+
/** Alias map, e.g. { latest: '2.1', stable: '2.0' }. */
|
|
186
|
+
aliases?: Record<string, string>;
|
|
187
|
+
/** Optional UI labels/messages for version selector and outdated notice. */
|
|
188
|
+
ui?: {
|
|
189
|
+
/** Label shown next to the versions dropdown. */
|
|
190
|
+
versionMenuLabel?: string;
|
|
191
|
+
/** Header fallback text shown when versions.json cannot be loaded. */
|
|
192
|
+
manifestUnavailableText?: string;
|
|
193
|
+
/** Show header fallback status when versions.json cannot be loaded. Default: true. */
|
|
194
|
+
showManifestUnavailableStatus?: boolean;
|
|
195
|
+
/** Outdated notice text. Use placeholders: {current}, {default}. */
|
|
196
|
+
outdatedVersionMessage?: string;
|
|
197
|
+
/** Button label in outdated notice. */
|
|
198
|
+
outdatedVersionActionLabel?: string;
|
|
199
|
+
};
|
|
200
|
+
/** Locale-specific versioning UI overrides, keyed by locale path (e.g. '/', '/pl/'). */
|
|
201
|
+
locales?: Record<
|
|
202
|
+
string,
|
|
203
|
+
{
|
|
204
|
+
ui?: {
|
|
205
|
+
versionMenuLabel?: string;
|
|
206
|
+
manifestUnavailableText?: string;
|
|
207
|
+
outdatedVersionMessage?: string;
|
|
208
|
+
outdatedVersionActionLabel?: string;
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
>;
|
|
212
|
+
/** Branch-based version sources. */
|
|
213
|
+
branches?: BranchVersionSource[];
|
|
214
|
+
/** Folder-based version sources. */
|
|
215
|
+
folders?: FolderVersionSource[];
|
|
216
|
+
/**
|
|
217
|
+
* For folder strategy: discover versions under this directory when `folders`
|
|
218
|
+
* is omitted. Each direct child folder is treated as one version id.
|
|
219
|
+
* Default: 'versions'.
|
|
220
|
+
*/
|
|
221
|
+
foldersDir?: string;
|
|
222
|
+
/**
|
|
223
|
+
* For branch strategy: cache directory for extracted docs snapshots.
|
|
224
|
+
* Default: '.greg/version-cache'.
|
|
225
|
+
*/
|
|
226
|
+
branchCacheDir?: string;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
/** Custom AI persona definition. */
|
|
230
|
+
export type AiCharacterConfig = {
|
|
231
|
+
/** Unique identifier (used as `character` param in API calls). */
|
|
232
|
+
id: string;
|
|
233
|
+
/** Display name shown in the character selector. */
|
|
234
|
+
name: string;
|
|
235
|
+
/** Emoji, short string, or image URL shown in the character selector and chat messages. */
|
|
236
|
+
icon: string;
|
|
237
|
+
/** Short description visible in the selector tooltip. */
|
|
238
|
+
description?: string;
|
|
239
|
+
/** System prompt injected at the start of every conversation for this persona. */
|
|
240
|
+
systemPrompt: string;
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
/** SQLite store configuration (`search.ai.sqlite`). */
|
|
244
|
+
export type SqliteStoreConfig = {
|
|
245
|
+
/** Path to the SQLite database file. Default: 'docs.db'. */
|
|
246
|
+
dbPath?: string;
|
|
247
|
+
/**
|
|
248
|
+
* Embedding vector dimensions. Required for vector search.
|
|
249
|
+
* Common values: 1536 (OpenAI text-embedding-3-small), 768 (nomic-embed-text).
|
|
250
|
+
* Omit or set to 0 for BM25-only mode.
|
|
251
|
+
*/
|
|
252
|
+
embeddingDimensions?: number;
|
|
253
|
+
/** Texts per embedding API call. Default: 64. */
|
|
254
|
+
embeddingBatchSize?: number;
|
|
255
|
+
/**
|
|
256
|
+
* BM25 weight in hybrid ranking (0–1). Default: 0.3.
|
|
257
|
+
* Vector weight = 1 − bm25Weight. Only relevant with vector search.
|
|
258
|
+
*/
|
|
259
|
+
bm25Weight?: number;
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
/** RAG / AI knowledge-base configuration (`search.ai`). */
|
|
263
|
+
export type AiConfig = {
|
|
264
|
+
/**
|
|
265
|
+
* Enable the AI knowledge base feature.
|
|
266
|
+
* When true an "Ask AI" tab appears in the search modal.
|
|
267
|
+
* Default: false.
|
|
268
|
+
*/
|
|
269
|
+
enabled?: boolean;
|
|
270
|
+
/** LLM provider. Default: 'ollama'. */
|
|
271
|
+
provider?: 'ollama' | 'openai' | 'custom';
|
|
272
|
+
/** Ollama-specific options (used when `provider === 'ollama'`). */
|
|
273
|
+
ollama?: {
|
|
274
|
+
/** Base URL of the Ollama HTTP API. Default: 'http://localhost:11434'. */
|
|
275
|
+
baseUrl?: string;
|
|
276
|
+
/** Chat completion model name. Default: 'llama3.2'. */
|
|
277
|
+
model?: string;
|
|
278
|
+
/** Embedding model name. Default: 'nomic-embed-text'. */
|
|
279
|
+
embeddingModel?: string;
|
|
280
|
+
};
|
|
281
|
+
/** OpenAI-compatible API options (used when `provider === 'openai'`). */
|
|
282
|
+
openai?: {
|
|
283
|
+
/** Chat completion model name. Default: 'gpt-4o-mini'. */
|
|
284
|
+
model?: string;
|
|
285
|
+
/** Embedding model name. Default: 'text-embedding-3-small'. */
|
|
286
|
+
embeddingModel?: string;
|
|
287
|
+
/** Override base URL for compatible APIs (Groq, Together, llama.cpp, …). */
|
|
288
|
+
baseUrl?: string;
|
|
289
|
+
/**
|
|
290
|
+
* API key. Prefer setting `GREG_OPENAI_API_KEY` env var instead of
|
|
291
|
+
* putting the key in config (which risks committing it to VCS).
|
|
292
|
+
*/
|
|
293
|
+
apiKey?: string;
|
|
294
|
+
};
|
|
295
|
+
/**
|
|
296
|
+
* Custom LLM provider function (used when `provider === 'custom'`).
|
|
297
|
+
* Receives the message array and optional options, must return a string.
|
|
298
|
+
*/
|
|
299
|
+
customProvider?: (messages: Array<{ role: string; content: string }>, options?: Record<string, unknown>) => Promise<string>;
|
|
300
|
+
/** Chunk store backend. Default: 'memory' (BM25, zero dependencies). */
|
|
301
|
+
store?: 'memory' | 'sqlite';
|
|
302
|
+
/** SQLite store options (used when `store === 'sqlite'`). */
|
|
303
|
+
sqlite?: SqliteStoreConfig;
|
|
304
|
+
/**
|
|
305
|
+
* Which built-in character IDs to include.
|
|
306
|
+
* Default: all five built-in characters are active.
|
|
307
|
+
* Built-in IDs: 'professional', 'friendly', 'pirate', 'sensei', 'concise'.
|
|
308
|
+
*/
|
|
309
|
+
characters?: string[];
|
|
310
|
+
/** Default character ID shown in the selector on first open. Default: 'professional'. */
|
|
311
|
+
defaultCharacter?: string;
|
|
312
|
+
/** Additional user-defined AI characters merged with the built-in ones. */
|
|
313
|
+
customCharacters?: AiCharacterConfig[];
|
|
314
|
+
/** Document chunking settings. */
|
|
315
|
+
chunking?: {
|
|
316
|
+
/** Maximum characters per chunk. Default: 1800. */
|
|
317
|
+
maxChunkSize?: number;
|
|
318
|
+
/** Overlap in characters between consecutive chunks. Default: 120. */
|
|
319
|
+
overlap?: number;
|
|
320
|
+
};
|
|
321
|
+
/**
|
|
322
|
+
* URL of the standalone AI server (for production deployments).
|
|
323
|
+
* Example: 'http://localhost:3200/api/ai'
|
|
324
|
+
* When omitted, the dev/preview Vite plugin serves the AI API in-process.
|
|
325
|
+
*/
|
|
326
|
+
serverUrl?: string;
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
export type GregConfig = {
|
|
330
|
+
/** VitePress-compatible base public path (e.g. '/docs/'). Default: '/'. */
|
|
331
|
+
base?: string;
|
|
332
|
+
/** VitePress-compatible build output directory. Default: 'dist'. */
|
|
333
|
+
outDir?: string;
|
|
334
|
+
/**
|
|
335
|
+
* Physical docs source directory (or directories), relative to project root.
|
|
336
|
+
* - String: single folder, e.g. `'docs'`
|
|
337
|
+
* - Array: multiple folders scanned and merged, e.g. `['docs', 'extra-docs']`
|
|
338
|
+
* Default: `'docs'`
|
|
339
|
+
*/
|
|
340
|
+
srcDir?: string | string[];
|
|
341
|
+
/** Version badge shown in the header. Empty string = hidden. */
|
|
342
|
+
version?: string;
|
|
343
|
+
/** Site title shown in the header. */
|
|
344
|
+
mainTitle?: string;
|
|
345
|
+
/**
|
|
346
|
+
* VitePress-compatible outline setting.
|
|
347
|
+
* false – disable outline
|
|
348
|
+
* 2 – h2 only
|
|
349
|
+
* [2, 3] – h2 and h3 (default)
|
|
350
|
+
* 'deep' – h2–h6
|
|
351
|
+
* { level: [2,3], label: 'On this page' }
|
|
352
|
+
*/
|
|
353
|
+
outline?: OutlineOption | boolean;
|
|
354
|
+
/** Default mermaid diagram theme. */
|
|
355
|
+
mermaidTheme?: string;
|
|
356
|
+
/** Carbon Ads configuration. */
|
|
357
|
+
carbonAds?: { code: string; placement: string } | null;
|
|
358
|
+
/** Show breadcrumb navigation above content (doc layout only). Default: true. */
|
|
359
|
+
breadcrumb?: boolean;
|
|
360
|
+
/** Show a "Back to top" button. Default: true. */
|
|
361
|
+
backToTop?: boolean;
|
|
362
|
+
/**
|
|
363
|
+
* Show last-modified date below content.
|
|
364
|
+
* true – default format, browser locale
|
|
365
|
+
* object – full control: { text?, locale?, formatOptions? }
|
|
366
|
+
*/
|
|
367
|
+
lastModified?: boolean | { text?: string; locale?: string; formatOptions?: Intl.DateTimeFormatOptions };
|
|
368
|
+
/**
|
|
369
|
+
* Top navigation bar items (VitePress-compatible).
|
|
370
|
+
* Rendered between the site title and the search/theme controls.
|
|
371
|
+
*/
|
|
372
|
+
nav?: NavItem[];
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* VitePress-compatible locale map.
|
|
376
|
+
* Example keys: '/', '/pl/', '/de/'.
|
|
377
|
+
* Locale root path is resolved relative to `srcDir`.
|
|
378
|
+
*/
|
|
379
|
+
locales?: Record<string, LocaleConfig>;
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* VitePress-compatible i18n routing behavior.
|
|
383
|
+
* true (default): switch locale while preserving relative page path when possible.
|
|
384
|
+
* false: switch locale to locale root.
|
|
385
|
+
*/
|
|
386
|
+
i18nRouting?: boolean;
|
|
387
|
+
|
|
388
|
+
/** VitePress-compatible language switcher aria-label. */
|
|
389
|
+
langMenuLabel?: string;
|
|
390
|
+
/** VitePress-compatible mobile sidebar menu label. */
|
|
391
|
+
sidebarMenuLabel?: string;
|
|
392
|
+
/** VitePress-compatible skip-to-content label. */
|
|
393
|
+
skipToContentLabel?: string;
|
|
394
|
+
/** VitePress-compatible back-to-top aria-label. */
|
|
395
|
+
returnToTopLabel?: string;
|
|
396
|
+
/** VitePress-compatible theme switch group label. */
|
|
397
|
+
darkModeSwitchLabel?: string;
|
|
398
|
+
/** VitePress-compatible light mode toggle title. */
|
|
399
|
+
lightModeSwitchTitle?: string;
|
|
400
|
+
/** VitePress-compatible dark mode toggle title. */
|
|
401
|
+
darkModeSwitchTitle?: string;
|
|
402
|
+
/** VitePress-compatible labels above prev/next links. */
|
|
403
|
+
docFooter?: {
|
|
404
|
+
prev?: string | false;
|
|
405
|
+
next?: string | false;
|
|
406
|
+
};
|
|
407
|
+
siteTitle?: string | false;
|
|
408
|
+
logo?: ThemeableImage;
|
|
409
|
+
socialLinks?: SocialLinkItem[];
|
|
410
|
+
editLink?: {
|
|
411
|
+
pattern: string;
|
|
412
|
+
text?: string;
|
|
413
|
+
};
|
|
414
|
+
footer?: {
|
|
415
|
+
message?: string;
|
|
416
|
+
copyright?: string;
|
|
417
|
+
};
|
|
418
|
+
aside?: boolean | 'left';
|
|
419
|
+
/** VitePress-compatible full lastUpdated options. */
|
|
420
|
+
lastUpdated?: {
|
|
421
|
+
text?: string;
|
|
422
|
+
formatOptions?: Intl.DateTimeFormatOptions & { forceLocale?: boolean };
|
|
423
|
+
};
|
|
424
|
+
externalLinkIcon?: boolean;
|
|
425
|
+
|
|
426
|
+
/** Search mode and fuzzy matching tuning. */
|
|
427
|
+
search?: {
|
|
428
|
+
/** Search backend mode. */
|
|
429
|
+
provider?: 'server' | 'local' | 'none';
|
|
430
|
+
/** Endpoint used when provider is 'server'. */
|
|
431
|
+
serverUrl?: string;
|
|
432
|
+
/** Fuzzy matching settings for local/dev/prod search backends. */
|
|
433
|
+
fuzzy?: {
|
|
434
|
+
/** Fuse threshold (0..1), lower = stricter. Default: 0.35 */
|
|
435
|
+
threshold?: number;
|
|
436
|
+
/** Minimum contiguous match length. Default: 3 */
|
|
437
|
+
minMatchCharLength?: number;
|
|
438
|
+
/** Ignore match position in text. Default: true */
|
|
439
|
+
ignoreLocation?: boolean;
|
|
440
|
+
};
|
|
441
|
+
/** AI knowledge-base (RAG) configuration. */
|
|
442
|
+
ai?: AiConfig;
|
|
443
|
+
};
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* Sidebar configuration.
|
|
449
|
+
* 'auto' – generate sidebar from docs folder structure (default)
|
|
450
|
+
* SidebarItem[] – manual tree, optionally with auto sub-sections
|
|
451
|
+
*/
|
|
452
|
+
sidebar?: 'auto' | SidebarItem[];
|
|
453
|
+
/** Multi-version docs build configuration. */
|
|
454
|
+
versioning?: GregVersioningConfig;
|
|
455
|
+
[key: string]: unknown;
|
|
456
|
+
};
|