@hgdc/docs 0.0.0-stage → 0.1.1
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/bin/hgdc-docs.mjs +48 -0
- package/docs.schema.json +294 -0
- package/package.json +51 -4
- package/src/build/auto-import.ts +74 -0
- package/src/build/markdown.ts +114 -0
- package/src/build/outputs.ts +91 -0
- package/src/build/public-files.ts +35 -0
- package/src/components/Accordion.astro +12 -0
- package/src/components/AccordionGroup.astro +4 -0
- package/src/components/Card.astro +15 -0
- package/src/components/CardGroup.astro +8 -0
- package/src/components/Check.astro +10 -0
- package/src/components/CodeGroup.astro +4 -0
- package/src/components/Columns.astro +8 -0
- package/src/components/Danger.astro +10 -0
- package/src/components/Frame.astro +11 -0
- package/src/components/Info.astro +10 -0
- package/src/components/Note.astro +10 -0
- package/src/components/Step.astro +11 -0
- package/src/components/Steps.astro +4 -0
- package/src/components/Tab.astro +9 -0
- package/src/components/Tabs.astro +9 -0
- package/src/components/Tip.astro +10 -0
- package/src/components/Warning.astro +10 -0
- package/src/core/answer-markdown.ts +109 -0
- package/src/core/assistant-api.ts +65 -0
- package/src/core/chunk.ts +134 -0
- package/src/core/config.ts +153 -0
- package/src/core/corpus.ts +42 -0
- package/src/core/json-schema.ts +12 -0
- package/src/core/llms.ts +95 -0
- package/src/core/navigation.ts +88 -0
- package/src/core/theme.ts +111 -0
- package/src/integration.ts +229 -0
- package/src/locals.d.ts +6 -0
- package/src/overrides/Assistant.astro +72 -0
- package/src/overrides/Head.astro +12 -0
- package/src/overrides/PageFrame.astro +15 -0
- package/src/overrides/PageTitle.astro +94 -0
- package/src/overrides/Sidebar.astro +60 -0
- package/src/overrides/route-data.ts +33 -0
- package/src/styles/theme.css +773 -0
- package/src/virtual.d.ts +6 -0
- package/src/widget/client.ts +252 -0
- package/template/.astro/collections/docs.schema.json +651 -0
- package/template/.astro/content-assets.mjs +1 -0
- package/template/.astro/content-modules.mjs +18 -0
- package/template/.astro/content.d.ts +179 -0
- package/template/.astro/types.d.ts +2 -0
- package/template/.build/.well-known/llms.txt +38 -0
- package/template/.build/404.html +42 -0
- package/template/.build/_astro/Assistant.astro_astro_type_script_index_0_lang.DWgmlr85.js +4 -0
- package/template/.build/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.C3fM4Kra.js +1 -0
- package/template/.build/_astro/Search.astro_astro_type_script_index_0_lang.g9hoxVJg.js +1 -0
- package/template/.build/_astro/TableOfContents.astro_astro_type_script_index_0_lang.BpJaGz7G.js +1 -0
- package/template/.build/_astro/common.8GHCkW7i.css +3 -0
- package/template/.build/_astro/ec.0vx5m.js +3 -0
- package/template/.build/_astro/ec.8nqtp.css +1 -0
- package/template/.build/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2 +0 -0
- package/template/.build/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2 +0 -0
- package/template/.build/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2 +0 -0
- package/template/.build/_astro/geist-latin-wght-normal.BgDaEnEv.woff2 +0 -0
- package/template/.build/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2 +0 -0
- package/template/.build/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
- package/template/.build/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
- package/template/.build/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
- package/template/.build/_astro/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
- package/template/.build/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
- package/template/.build/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
- package/template/.build/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
- package/template/.build/_astro/logo-clair.BqNh6JNi.svg +1 -0
- package/template/.build/_astro/logo-sombre.BkgsFXxh.svg +1 -0
- package/template/.build/_astro/page.cNngjUgL.js +1 -0
- package/template/.build/_astro/print.ehPL0gv-.css +1 -0
- package/template/.build/_astro/starlight-toc.D4UDIxQL.js +1 -0
- package/template/.build/_astro/ui-core.Clh5jUUO.js +2 -0
- package/template/.build/_hgdc/corpus.json +1 -0
- package/template/.build/demarrer/premiere-doc/index.html +84 -0
- package/template/.build/demarrer/premiere-doc.md +65 -0
- package/template/.build/explications/donnees/index.html +114 -0
- package/template/.build/explications/donnees.md +28 -0
- package/template/.build/explications/fonctionnement/index.html +92 -0
- package/template/.build/explications/fonctionnement.md +32 -0
- package/template/.build/guides/agents/index.html +113 -0
- package/template/.build/guides/agents.md +40 -0
- package/template/.build/guides/assistant/index.html +117 -0
- package/template/.build/guides/assistant.md +42 -0
- package/template/.build/guides/composants/index.html +97 -0
- package/template/.build/guides/composants.md +103 -0
- package/template/.build/guides/ecrire/index.html +115 -0
- package/template/.build/guides/ecrire.md +63 -0
- package/template/.build/guides/navigation/index.html +89 -0
- package/template/.build/guides/navigation.md +63 -0
- package/template/.build/guides/publier/index.html +86 -0
- package/template/.build/guides/publier.md +65 -0
- package/template/.build/guides/theme/index.html +86 -0
- package/template/.build/guides/theme.md +33 -0
- package/template/.build/images/favicon.svg +1 -0
- package/template/.build/images/logo-clair.svg +1 -0
- package/template/.build/images/logo-sombre.svg +1 -0
- package/template/.build/index.html +87 -0
- package/template/.build/index.md +35 -0
- package/template/.build/llms-full.txt +830 -0
- package/template/.build/llms.txt +38 -0
- package/template/.build/pagefind/fragment/fr-ch_148313b.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_424fd16.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_4f8575c.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_5a4d77d.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_6c36edc.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_73d7887.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_8234ed3.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_8f8a19e.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_9f1b981.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a19039d.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_d72cc1e.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_d732215.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_e2c46e3.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_e78d58b.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_e92f972.pf_fragment +0 -0
- package/template/.build/pagefind/index/fr-ch_f94c95d.pf_index +0 -0
- package/template/.build/pagefind/pagefind-component-ui.css +1509 -0
- package/template/.build/pagefind/pagefind-component-ui.js +56 -0
- package/template/.build/pagefind/pagefind-entry.json +1 -0
- package/template/.build/pagefind/pagefind-highlight.js +1070 -0
- package/template/.build/pagefind/pagefind-modular-ui.css +214 -0
- package/template/.build/pagefind/pagefind-modular-ui.js +8 -0
- package/template/.build/pagefind/pagefind-ui.css +1 -0
- package/template/.build/pagefind/pagefind-ui.js +2 -0
- package/template/.build/pagefind/pagefind-worker.js +6 -0
- package/template/.build/pagefind/pagefind.fr-ch_fb78ab42961f4.pf_meta +0 -0
- package/template/.build/pagefind/pagefind.js +6 -0
- package/template/.build/pagefind/wasm.fr-ch.pagefind +0 -0
- package/template/.build/pagefind/wasm.unknown.pagefind +0 -0
- package/template/.build/reference/api-assistant/index.html +161 -0
- package/template/.build/reference/api-assistant.md +60 -0
- package/template/.build/reference/cli/index.html +153 -0
- package/template/.build/reference/cli.md +31 -0
- package/template/.build/reference/docs-json/index.html +192 -0
- package/template/.build/reference/docs-json.md +43 -0
- package/template/.build/reference/mcp/index.html +151 -0
- package/template/.build/reference/mcp.md +49 -0
- package/template/astro.config.ts +6 -0
- package/template/node_modules/.vite/deps/_metadata.json +74 -0
- package/template/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
- package/template/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/template/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/template/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/template/node_modules/.vite/deps/astro_n_axobject-query.js +2705 -0
- package/template/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/template/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/template/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/template/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/template/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/template/node_modules/.vite/deps/audit-Do8QH17W.js +1543 -0
- package/template/node_modules/.vite/deps/audit-Do8QH17W.js.map +1 -0
- package/template/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
- package/template/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/template/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
- package/template/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/template/node_modules/.vite/deps/package.json +3 -0
- package/template/node_modules/.vite/deps/rolldown-runtime-C3I60J0A.js +4 -0
- package/template/node_modules/.vite/deps/settings-BYmTKrLi.js +189 -0
- package/template/node_modules/.vite/deps/settings-BYmTKrLi.js.map +1 -0
- package/template/node_modules/.vite/deps/toolbar-CEKhukuK.js +461 -0
- package/template/node_modules/.vite/deps/toolbar-CEKhukuK.js.map +1 -0
- package/template/node_modules/.vite/deps/ui-library-BO4--ANp.js +1015 -0
- package/template/node_modules/.vite/deps/ui-library-BO4--ANp.js.map +1 -0
- package/template/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
- package/template/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/template/node_modules/.vite/deps/xray-Lf9x6g8P.js +112 -0
- package/template/node_modules/.vite/deps/xray-Lf9x6g8P.js.map +1 -0
- package/template/src/content.config.ts +21 -0
- package/README.md +0 -3
|
@@ -0,0 +1,830 @@
|
|
|
1
|
+
# HGDC Docs
|
|
2
|
+
|
|
3
|
+
> Écrire une documentation en MDX, la publier avec HGDC Host et y brancher un assistant IA qui cite ses sources.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Source : /
|
|
8
|
+
|
|
9
|
+
# Bienvenue dans HGDC Docs
|
|
10
|
+
|
|
11
|
+
HGDC Docs transforme un dossier de pages MDX en site de documentation. Tu écris dans ton dépôt Git, HGDC Host publie le site à chaque push, et la console `docs.hgdc.ch` branche un assistant qui répond à tes visiteurs à partir de ta doc, et de rien d’autre.
|
|
12
|
+
|
|
13
|
+
[Ta première doc](/demarrer/premiere-doc/)
|
|
14
|
+
|
|
15
|
+
[Un dossier, un fichier `docs.json` et une page : ton site tourne en local en cinq minutes.](/demarrer/premiere-doc/)
|
|
16
|
+
|
|
17
|
+
[Publier avec HGDC Host](/guides/publier/)
|
|
18
|
+
|
|
19
|
+
[Relie le dépôt à HGDC Host : chaque push met le site à jour.](/guides/publier/)
|
|
20
|
+
|
|
21
|
+
[L'assistant IA](/guides/assistant/)
|
|
22
|
+
|
|
23
|
+
[Il répond aux questions de tes visiteurs et cite les pages qu’il a utilisées.](/guides/assistant/)
|
|
24
|
+
|
|
25
|
+
[Pour les agents](/guides/agents/)
|
|
26
|
+
|
|
27
|
+
[`llms.txt`, une version Markdown de chaque page et un serveur MCP en lecture.](/guides/agents/)
|
|
28
|
+
|
|
29
|
+
## Ce que tu obtiens
|
|
30
|
+
|
|
31
|
+
- **Un site rapide et lisible** : navigation par onglets et groupes, versions, mode clair et sombre, mise en page pensée pour le téléphone.
|
|
32
|
+
- **La recherche** : `Ctrl K` sur chaque page, sans service externe. L’index est construit avec le site.
|
|
33
|
+
- **Tes couleurs** : une couleur dans `docs.json` suffit. Le contraste des liens est ajusté pour rester lisible.
|
|
34
|
+
- **Un assistant sourcé** : il cherche dans tes pages, répond en quelques phrases et renvoie vers les sections exactes. S’il ne trouve rien, il le dit.
|
|
35
|
+
- **Une doc lisible par les IA** : `llms.txt`, `llms-full.txt`, un bouton « Copier pour un LLM » et un serveur MCP.
|
|
36
|
+
|
|
37
|
+
## Compatible avec Mintlify
|
|
38
|
+
|
|
39
|
+
Le fichier `docs.json` reprend celui de Mintlify : nom, couleurs, logo, navigation en onglets, groupes et versions. Les composants les plus courants (`<Note>`, `<Steps>`, `<Card>`, `<Tabs>`…) fonctionnent sans import. Une doc Mintlify se reprend en général sans réécrire les pages.
|
|
40
|
+
|
|
41
|
+
> **Tout reste en Suisse quand c'est possible**
|
|
42
|
+
>
|
|
43
|
+
> Le site est servi par HGDC Host. Les questions des visiteurs sont gardées 90 jours au plus. Voir [Données et confidentialité](/explications/donnees/).
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
Source : /demarrer/premiere-doc/
|
|
48
|
+
|
|
49
|
+
# Ta première doc en cinq minutes
|
|
50
|
+
|
|
51
|
+
Il te faut Node.js 22 ou plus récent, ou Bun. Tout le reste s’installe avec le paquet `@hgdc/docs`.
|
|
52
|
+
|
|
53
|
+
1. **Créer le dossier**
|
|
54
|
+
|
|
55
|
+
Un dépôt Git à part, ou un dossier `docs/` dans le dépôt de ton produit.
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
mkdir docs && cd docs
|
|
59
|
+
npm init -y
|
|
60
|
+
npm install --save-dev @hgdc/docs
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
2. **Écrire docs.json**
|
|
64
|
+
|
|
65
|
+
À la racine du dossier. Seuls `name` et `navigation` sont obligatoires.
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"name": "Documentation Acme",
|
|
70
|
+
"colors": { "primary": "#0f766e" },
|
|
71
|
+
"navigation": {
|
|
72
|
+
"groups": [{ "group": "Démarrer", "pages": ["index", "installation"] }]
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
3. **Écrire les pages**
|
|
78
|
+
|
|
79
|
+
Une page par entrée de la navigation : `index.mdx` et `installation.mdx`. Chaque page commence par un titre.
|
|
80
|
+
|
|
81
|
+
```mdx
|
|
82
|
+
---
|
|
83
|
+
title: Installation
|
|
84
|
+
description: Installer Acme en deux minutes.
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
Lance la commande suivante :
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
4. **Voir le site**
|
|
91
|
+
|
|
92
|
+
Ajoute les scripts dans `package.json`, puis lance `npm run dev`.
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"scripts": {
|
|
97
|
+
"dev": "hgdc-docs dev",
|
|
98
|
+
"build": "hgdc-docs build"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Le site s’ouvre sur `http://localhost:4321` et se recharge à chaque modification.
|
|
104
|
+
|
|
105
|
+
> **Note**
|
|
106
|
+
>
|
|
107
|
+
> `hgdc-docs build` écrit le site dans `dist/`. Ajoute `dist/` et `.hgdc-docs/` à ton `.gitignore`.
|
|
108
|
+
|
|
109
|
+
## Et ensuite
|
|
110
|
+
|
|
111
|
+
- [Publier avec HGDC Host](/guides/publier/) pour mettre le site en ligne.
|
|
112
|
+
- [Écrire en MDX](/guides/ecrire/) pour les titres, les liens, les images et le code.
|
|
113
|
+
- [docs.json](/reference/docs-json/) pour toutes les options.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
Source : /guides/publier/
|
|
118
|
+
|
|
119
|
+
# Publier avec HGDC Host
|
|
120
|
+
|
|
121
|
+
HGDC Host construit ton site à chaque push et le sert depuis son serveur. La console `docs.hgdc.ch` relit ensuite le site publié pour indexer l’assistant.
|
|
122
|
+
|
|
123
|
+
## Mettre la doc en ligne
|
|
124
|
+
|
|
125
|
+
1. **Importer le dépôt**
|
|
126
|
+
|
|
127
|
+
Dans HGDC Host, crée un projet à partir de ton dépôt GitHub. Host reconnaît une doc HGDC Docs (un `docs.json` et le paquet `@hgdc/docs` dans `package.json`) : il la construit avec `hgdc-docs build` et publie le dossier `dist/`. Aucun fichier de configuration à ajouter.
|
|
128
|
+
|
|
129
|
+
2. **Fusionner la pull request de Host**
|
|
130
|
+
|
|
131
|
+
Host propose une pull request qui ajoute son workflow de déploiement. Fusionne-la : la doc part en production.
|
|
132
|
+
|
|
133
|
+
3. **Pousser**
|
|
134
|
+
|
|
135
|
+
Chaque push sur la branche principale publie le site en production. Les autres branches ont leur préversion.
|
|
136
|
+
|
|
137
|
+
## Activer HGDC Docs
|
|
138
|
+
|
|
139
|
+
1. **Cliquer sur « Activer Docs »**
|
|
140
|
+
|
|
141
|
+
Sur la vue d’ensemble du projet dans HGDC Host, la carte **Assistant et recherche avec HGDC Docs** propose **Activer Docs**. Host crée le projet dans la console, dans la même organisation. Il faut être admin de l’organisation, et la doc doit déjà être en production.
|
|
142
|
+
|
|
143
|
+
2. **Publier une fois de plus**
|
|
144
|
+
|
|
145
|
+
Pousse une modification. Ce build reçoit l’identifiant du projet de la console : le site le porte sans que tu le recopies dans `docs.json`.
|
|
146
|
+
|
|
147
|
+
3. **Laisser faire**
|
|
148
|
+
|
|
149
|
+
À chaque mise en production, Host prévient la console, qui relit `/_hgdc/corpus.json` et indexe les pages en quelques secondes. La carte de Host affiche **HGDC Docs est activé** et mène à la console. En plus, la console relit le site tous les quarts d’heure : un appel perdu se rattrape seul.
|
|
150
|
+
|
|
151
|
+
> **Note**
|
|
152
|
+
>
|
|
153
|
+
> Le projet apparaît dans la console dès que tu t’y connectes avec ton compte HGDC. Ses réglages (domaines, assistant) s’y changent comme pour n’importe quel projet.
|
|
154
|
+
|
|
155
|
+
## Ton domaine
|
|
156
|
+
|
|
157
|
+
Le domaine se branche dans HGDC Host, comme pour n’importe quel site : Host annonce la nouvelle adresse à la console à la mise en production suivante. Si la doc répond sur plusieurs adresses (`docs.acme.ch` et `aide.acme.ch`), ajoute les autres dans **Réglages › Domaines** : l’assistant ne répond qu’aux pages servies par ces adresses.
|
|
158
|
+
|
|
159
|
+
## Relier un projet existant
|
|
160
|
+
|
|
161
|
+
Le dossier `dist/` est un site statique, il se dépose chez n’importe quel hébergeur. Hors de HGDC Host, ou pour un projet créé directement dans la console, relie la doc à la main.
|
|
162
|
+
|
|
163
|
+
1. **Créer le projet dans la console**
|
|
164
|
+
|
|
165
|
+
Sur `docs.hgdc.ch`, ouvre ton organisation, puis **Nouveau projet**. Donne l’adresse de production du site, par exemple `https://docs.acme.ch`.
|
|
166
|
+
|
|
167
|
+
2. **Copier l'identifiant dans docs.json**
|
|
168
|
+
|
|
169
|
+
La console affiche une ligne à copier. Ajoute-la dans `docs.json`, puis publie :
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
{ "project": "k57a8m2x9q4n1b3c5d7e9f0g2h4j6k8m" }
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Sans cet identifiant, le site fonctionne mais l’assistant reste caché, et la console refuse d’indexer un site qui ne porte pas le sien.
|
|
176
|
+
|
|
177
|
+
3. **Synchroniser**
|
|
178
|
+
|
|
179
|
+
Clique sur **Synchroniser** dans l’aperçu du projet. La console lit `/_hgdc/corpus.json` sur ton site et indexe chaque page, puis relit le site tous les quarts d’heure.
|
|
180
|
+
|
|
181
|
+
> **Adresse publique seulement**
|
|
182
|
+
>
|
|
183
|
+
> La console n’accepte qu’une adresse `https://` avec un nom de domaine public. Elle ne suit pas les redirections : donne l’adresse finale du site.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
Source : /guides/ecrire/
|
|
188
|
+
|
|
189
|
+
# Écrire en MDX
|
|
190
|
+
|
|
191
|
+
Chaque page est un fichier `.mdx` (ou `.md`) : du Markdown, plus des composants. Le chemin du fichier donne l’adresse de la page : `guides/publier.mdx` devient `/guides/publier/`.
|
|
192
|
+
|
|
193
|
+
## Métadonnées
|
|
194
|
+
|
|
195
|
+
Le haut de la page, entre deux lignes `---`, décrit la page.
|
|
196
|
+
|
|
197
|
+
```mdx
|
|
198
|
+
---
|
|
199
|
+
title: Publier avec HGDC Host
|
|
200
|
+
sidebarTitle: Publier
|
|
201
|
+
description: Mettre la doc en ligne et brancher l'assistant.
|
|
202
|
+
---
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
| Champ | Rôle |
|
|
206
|
+
| -------------- | ---------------------------------------------------------------------------- |
|
|
207
|
+
| `title` | Titre de la page, obligatoire. Aussi le titre de l’onglet du navigateur. |
|
|
208
|
+
| `sidebarTitle` | Libellé plus court dans la barre latérale. |
|
|
209
|
+
| `description` | Une phrase. Reprise par les moteurs de recherche, `llms.txt` et l’assistant. |
|
|
210
|
+
|
|
211
|
+
## Titres et sections
|
|
212
|
+
|
|
213
|
+
Commence les sections à `##`. Chaque titre reçoit une ancre (`#publier-avec-host`) : c’est elle que l’assistant cite dans ses sources. Un titre clair donne donc une source claire.
|
|
214
|
+
|
|
215
|
+
> **Astuce**
|
|
216
|
+
>
|
|
217
|
+
> Une section par question qu’on te pose. L’assistant découpe la doc par titre : une section courte et nommée simplement est retrouvée plus souvent.
|
|
218
|
+
|
|
219
|
+
## Liens
|
|
220
|
+
|
|
221
|
+
Les liens internes s’écrivent avec le chemin de la page : `[Publier](/guides/publier/)`. Pour une section : `[le domaine](/guides/publier/#ton-domaine)`.
|
|
222
|
+
|
|
223
|
+
## Images
|
|
224
|
+
|
|
225
|
+
Range les images dans `images/`, `img/`, `logo/`, `assets/` ou `static/`, et cite-les avec un chemin qui commence par `/`. Seuls les médias de ces dossiers, le logo et le favicon de `docs.json`, et tout le dossier `public/` (servi à la racine) sont publiés : un fichier oublié ailleurs dans le dépôt ne part jamais en ligne.
|
|
226
|
+
|
|
227
|
+
```mdx
|
|
228
|
+

|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Pour une légende, entoure l’image d’un cadre :
|
|
232
|
+
|
|
233
|
+
```mdx
|
|
234
|
+
<Frame caption="Le tableau de bord après la première publication">
|
|
235
|
+

|
|
236
|
+
</Frame>
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## Code
|
|
240
|
+
|
|
241
|
+
Les blocs de code sont colorés et ont un bouton Copier. Indique le langage après les trois accents graves :
|
|
242
|
+
|
|
243
|
+
````mdx
|
|
244
|
+
```bash
|
|
245
|
+
npm run build
|
|
246
|
+
```
|
|
247
|
+
````
|
|
248
|
+
|
|
249
|
+
## Ce qui n’est pas publié
|
|
250
|
+
|
|
251
|
+
Les fichiers qui commencent par `_` (comme `_brouillon.mdx`), `README.md`, `CHANGELOG.md` et les dossiers `node_modules`, `dist` ou cachés ne deviennent pas des pages.
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
Source : /guides/composants/
|
|
256
|
+
|
|
257
|
+
# Composants
|
|
258
|
+
|
|
259
|
+
Ces composants s’utilisent directement dans une page `.mdx`, sans `import`. Ils portent les mêmes noms que chez Mintlify.
|
|
260
|
+
|
|
261
|
+
## Encadrés
|
|
262
|
+
|
|
263
|
+
> **Note**
|
|
264
|
+
>
|
|
265
|
+
> Une information utile à côté du texte.
|
|
266
|
+
|
|
267
|
+
> **Astuce**
|
|
268
|
+
>
|
|
269
|
+
> Un conseil qui fait gagner du temps.
|
|
270
|
+
|
|
271
|
+
> **Attention**
|
|
272
|
+
>
|
|
273
|
+
> Un piège à éviter.
|
|
274
|
+
|
|
275
|
+
> **Danger**
|
|
276
|
+
>
|
|
277
|
+
> Une action qui détruit des données.
|
|
278
|
+
|
|
279
|
+
```mdx
|
|
280
|
+
<Note>Une information utile à côté du texte.</Note>
|
|
281
|
+
<Tip title="Astuce">Un conseil qui fait gagner du temps.</Tip>
|
|
282
|
+
<Warning>Un piège à éviter.</Warning>
|
|
283
|
+
<Danger>Une action qui détruit des données.</Danger>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
`<Info>` et `<Check>` existent aussi. Chacun accepte un `title`.
|
|
287
|
+
|
|
288
|
+
## Étapes
|
|
289
|
+
|
|
290
|
+
1. **Installer**
|
|
291
|
+
|
|
292
|
+
Ajoute le paquet.
|
|
293
|
+
|
|
294
|
+
2. **Configurer**
|
|
295
|
+
|
|
296
|
+
Écris `docs.json`.
|
|
297
|
+
|
|
298
|
+
```mdx
|
|
299
|
+
<Steps>
|
|
300
|
+
<Step title="Installer">Ajoute le paquet.</Step>
|
|
301
|
+
<Step title="Configurer">Écris `docs.json`.</Step>
|
|
302
|
+
</Steps>
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Cartes
|
|
306
|
+
|
|
307
|
+
[Avec un lien](/guides/publier/)
|
|
308
|
+
|
|
309
|
+
[Toute la carte est cliquable.](/guides/publier/)
|
|
310
|
+
|
|
311
|
+
Sans lien
|
|
312
|
+
|
|
313
|
+
Pour présenter une idée.
|
|
314
|
+
|
|
315
|
+
```mdx
|
|
316
|
+
<CardGroup cols={2}>
|
|
317
|
+
<Card title="Avec un lien" href="/guides/publier/">Toute la carte est cliquable.</Card>
|
|
318
|
+
<Card title="Sans lien">Pour présenter une idée.</Card>
|
|
319
|
+
</CardGroup>
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
`cols` va de 1 à 4. Sur téléphone, les cartes passent l’une sous l’autre.
|
|
323
|
+
|
|
324
|
+
## Onglets
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
npm install --save-dev @hgdc/docs
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
bun add --dev @hgdc/docs
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
```mdx
|
|
335
|
+
<Tabs>
|
|
336
|
+
<Tab title="npm">…</Tab>
|
|
337
|
+
<Tab title="Bun">…</Tab>
|
|
338
|
+
</Tabs>
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## Accordéons
|
|
342
|
+
|
|
343
|
+
Faut-il un compte HGDC pour écrire ?
|
|
344
|
+
|
|
345
|
+
Non. Le site se construit sans compte. Le compte sert à la console : publication suivie et assistant.
|
|
346
|
+
|
|
347
|
+
Puis-je garder mes composants Mintlify ?
|
|
348
|
+
|
|
349
|
+
Ceux de cette page, oui. Les autres s’affichent comme du texte : remplace-les ou écris-nous.
|
|
350
|
+
|
|
351
|
+
```mdx
|
|
352
|
+
<AccordionGroup>
|
|
353
|
+
<Accordion title="Question">Réponse.</Accordion>
|
|
354
|
+
</AccordionGroup>
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
## Dans le Markdown publié
|
|
358
|
+
|
|
359
|
+
Chaque composant a une forme Markdown : un encadré devient une citation qui commence par son titre en gras, une étape devient un élément de liste numérotée. C’est cette forme que lisent l’assistant, `llms.txt` et les outils d’IA.
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
Source : /guides/navigation/
|
|
364
|
+
|
|
365
|
+
# Navigation, onglets et versions
|
|
366
|
+
|
|
367
|
+
La navigation se décrit dans `docs.json`, sous `navigation`. Choisis **une** forme : `pages`, `groups`, `tabs` ou `versions`.
|
|
368
|
+
|
|
369
|
+
## Pages et groupes
|
|
370
|
+
|
|
371
|
+
Pour une petite doc, une liste de groupes suffit. Un groupe peut contenir d’autres groupes.
|
|
372
|
+
|
|
373
|
+
```json
|
|
374
|
+
{
|
|
375
|
+
"navigation": {
|
|
376
|
+
"groups": [
|
|
377
|
+
{ "group": "Démarrer", "pages": ["index", "installation"] },
|
|
378
|
+
{
|
|
379
|
+
"group": "Guides",
|
|
380
|
+
"pages": ["guides/facturer", { "group": "Avancé", "expanded": false, "pages": ["guides/webhooks"] }]
|
|
381
|
+
}
|
|
382
|
+
]
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
Une page s’écrit sans extension ni `/` au début : `guides/facturer` pour `guides/facturer.mdx`. Une page citée mais absente fait échouer le build, avec la liste de ce qui manque.
|
|
388
|
+
|
|
389
|
+
## Onglets
|
|
390
|
+
|
|
391
|
+
Au-delà d’une vingtaine de pages, sépare les grandes parties en onglets : guides, référence, explications. Les onglets s’affichent en haut de la barre latérale ; chacun a ses propres groupes.
|
|
392
|
+
|
|
393
|
+
```json
|
|
394
|
+
{
|
|
395
|
+
"navigation": {
|
|
396
|
+
"tabs": [
|
|
397
|
+
{ "tab": "Guides", "groups": [{ "group": "Démarrer", "pages": ["index"] }] },
|
|
398
|
+
{ "tab": "Référence", "groups": [{ "group": "API", "pages": ["reference/api"] }] }
|
|
399
|
+
]
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
> **Astuce**
|
|
405
|
+
>
|
|
406
|
+
> Cette doc suit le découpage Diataxis : des guides pour faire, une référence pour vérifier, des explications pour comprendre.
|
|
407
|
+
|
|
408
|
+
## Versions
|
|
409
|
+
|
|
410
|
+
Quand ton produit garde plusieurs versions en service, chacune peut avoir sa doc. Le visiteur passe de l’une à l’autre avec un menu en haut de la barre latérale.
|
|
411
|
+
|
|
412
|
+
```json
|
|
413
|
+
{
|
|
414
|
+
"navigation": {
|
|
415
|
+
"versions": [
|
|
416
|
+
{ "version": "v2", "default": true, "groups": [{ "group": "Démarrer", "pages": ["index"] }] },
|
|
417
|
+
{ "version": "v1", "groups": [{ "group": "Démarrer", "pages": ["v1/index"] }] }
|
|
418
|
+
]
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
La version par défaut est celle que lisent l’assistant en priorité et l’index `llms.txt`. Les autres y figurent dans une section « Optional ».
|
|
424
|
+
|
|
425
|
+
## Précédent et suivant
|
|
426
|
+
|
|
427
|
+
En bas de chaque page, les liens Précédent et Suivant suivent l’ordre de la navigation, sans sortir de l’onglet ouvert.
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
Source : /guides/theme/
|
|
432
|
+
|
|
433
|
+
# Thème et logo
|
|
434
|
+
|
|
435
|
+
Le site suit la DA de HGDC par défaut : gris neutres, coins arrondis, Inter pour le texte. Tu changes trois choses : la couleur, le logo et le favicon.
|
|
436
|
+
|
|
437
|
+
## Couleur
|
|
438
|
+
|
|
439
|
+
```json
|
|
440
|
+
{ "colors": { "primary": "#0f766e" } }
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
La couleur sert aux liens, à l’onglet actif et aux renvois de l’assistant. Sa teinte est gardée ; sa luminosité est ajustée pour que les liens restent lisibles (contraste de 4,5:1 au moins), en clair comme en sombre.
|
|
444
|
+
|
|
445
|
+
Pour une couleur différente en mode sombre, ajoute `"dark": "#5eead4"`.
|
|
446
|
+
|
|
447
|
+
> **Note**
|
|
448
|
+
>
|
|
449
|
+
> Dans la console, **Réglages › Thème** montre l’effet d’une couleur en clair et en sombre, et prépare la ligne à copier dans `docs.json`.
|
|
450
|
+
|
|
451
|
+
## Logo
|
|
452
|
+
|
|
453
|
+
```json
|
|
454
|
+
{ "logo": { "light": "/images/logo-clair.svg", "dark": "/images/logo-sombre.svg" } }
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
Le chemin part de la racine du dossier de la doc. Un SVG carré ou large, de 32 pixels de haut environ, rend le mieux. Une seule image : `"logo": "/images/logo.svg"`.
|
|
458
|
+
|
|
459
|
+
## Favicon
|
|
460
|
+
|
|
461
|
+
```json
|
|
462
|
+
{ "favicon": "/images/favicon.svg" }
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
Sans favicon, le site n’en annonce pas d’autre que `/favicon.svg` s’il existe.
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
Source : /guides/assistant/
|
|
470
|
+
|
|
471
|
+
# L'assistant IA
|
|
472
|
+
|
|
473
|
+
L’assistant ajoute un bouton **Demander à l’IA** en bas à droite de chaque page, et `Ctrl I` l’ouvre au clavier. Le visiteur pose sa question ; l’assistant cherche dans ta doc et répond en quelques phrases, avec des renvois numérotés vers les sections utilisées.
|
|
474
|
+
|
|
475
|
+
## D’où viennent les réponses
|
|
476
|
+
|
|
477
|
+
1. La question est cherchée dans les pages publiées de ta doc, et seulement là.
|
|
478
|
+
2. Les passages les plus proches sont donnés au modèle Claude, avec une consigne : répondre à partir de ces passages, citer chaque affirmation, ne rien inventer.
|
|
479
|
+
3. Seuls les passages réellement cités deviennent des sources sous la réponse.
|
|
480
|
+
|
|
481
|
+
Si rien dans la doc ne correspond, l’assistant répond qu’il ne trouve pas, sans appeler le modèle. Une réponse sans aucune source est traitée de la même façon.
|
|
482
|
+
|
|
483
|
+
> **Les réponses restent générées par IA**
|
|
484
|
+
>
|
|
485
|
+
> Le widget le rappelle sous chaque échange. Une source citée se vérifie en un clic.
|
|
486
|
+
|
|
487
|
+
## Activer et désactiver
|
|
488
|
+
|
|
489
|
+
L’assistant est actif dès que `docs.json` porte l’identifiant `project` et que la console a indexé le site. Pour le couper :
|
|
490
|
+
|
|
491
|
+
- dans la console, **Assistant › Assistant sur le site** (effet immédiat) ;
|
|
492
|
+
- ou dans `docs.json`, `"assistant": { "enabled": false }` (au prochain build).
|
|
493
|
+
|
|
494
|
+
## Quota
|
|
495
|
+
|
|
496
|
+
Chaque organisation dispose d’un nombre de questions par mois, toutes docs confondues : 500 dans l’offre de départ. La console affiche la consommation. Au-delà, l’assistant répond qu’il a atteint sa limite, et HGDC relève le plafond sur demande.
|
|
497
|
+
|
|
498
|
+
Pour éviter qu’un seul visiteur épuise le quota, chaque visiteur a droit à 6 questions par minute, et chaque doc à 30.
|
|
499
|
+
|
|
500
|
+
## Tester et lire le journal
|
|
501
|
+
|
|
502
|
+
**Assistant › Tester l’assistant** pose une question comme un visiteur. Le **journal** garde les questions des 90 derniers jours avec leur état :
|
|
503
|
+
|
|
504
|
+
| État | Ce que ça veut dire |
|
|
505
|
+
| -------- | ----------------------------------------------------------------- |
|
|
506
|
+
| Répondu | L’assistant a répondu en citant la doc. |
|
|
507
|
+
| Hors doc | Rien dans la doc ne répond. Souvent une page à écrire. |
|
|
508
|
+
| Erreur | Le modèle n’a pas répondu ; le visiteur a été invité à réessayer. |
|
|
509
|
+
|
|
510
|
+
> **Astuce**
|
|
511
|
+
>
|
|
512
|
+
> Lis les questions « hors doc » une fois par semaine : c’est la liste des pages qui manquent, écrite par tes visiteurs.
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
Source : /guides/agents/
|
|
517
|
+
|
|
518
|
+
# llms.txt et MCP
|
|
519
|
+
|
|
520
|
+
Les assistants de code et les agents lisent la documentation pour écrire du code juste. HGDC Docs leur donne trois portes d’entrée, sans rien à configurer.
|
|
521
|
+
|
|
522
|
+
## llms.txt
|
|
523
|
+
|
|
524
|
+
Chaque site publie à sa racine :
|
|
525
|
+
|
|
526
|
+
- `/llms.txt` : l’index de la doc au format [llmstxt.org](https://llmstxt.org), une ligne par page avec sa description, rangées par onglet et par groupe. Le même fichier répond aussi sur `/.well-known/llms.txt`.
|
|
527
|
+
- `/llms-full.txt` : toute la doc en un seul fichier Markdown.
|
|
528
|
+
|
|
529
|
+
## Une page en Markdown
|
|
530
|
+
|
|
531
|
+
Chaque page existe aussi en Markdown à la même adresse suivie de `.md` : `/guides/publier.md` pour `/guides/publier/`. Les pages l’annoncent dans leur `<head>` avec `rel="alternate"`.
|
|
532
|
+
|
|
533
|
+
En haut de chaque page, **Copier pour un LLM** copie ce Markdown. Le menu à côté ouvre la page dans Claude ou ChatGPT, ou affiche le Markdown.
|
|
534
|
+
|
|
535
|
+
## Serveur MCP
|
|
536
|
+
|
|
537
|
+
Chaque projet a un serveur MCP en lecture seule. L’adresse est dans l’aperçu du projet, dans la console :
|
|
538
|
+
|
|
539
|
+
```text
|
|
540
|
+
https://docs.hgdc.ch/mcp/<identifiant du projet>
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
Dans Claude Code :
|
|
544
|
+
|
|
545
|
+
```bash
|
|
546
|
+
claude mcp add --transport http acme-docs https://docs.hgdc.ch/mcp/<identifiant du projet>
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
Le serveur propose trois outils :
|
|
550
|
+
|
|
551
|
+
| Outil | Rôle |
|
|
552
|
+
| ------------- | -------------------------------------------------------------------------------------------- |
|
|
553
|
+
| `search_docs` | Cherche dans la doc et rend les passages les plus proches, avec l’adresse de chaque section. |
|
|
554
|
+
| `get_page` | Rend une page complète en Markdown, à partir de son chemin. |
|
|
555
|
+
| `list_pages` | Liste les pages avec leur titre et leur chemin. |
|
|
556
|
+
|
|
557
|
+
Le détail du protocole est dans la [référence MCP](/reference/mcp/).
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
Source : /reference/docs-json/
|
|
562
|
+
|
|
563
|
+
# docs.json
|
|
564
|
+
|
|
565
|
+
`docs.json` vit à la racine du dossier de la doc. Il reprend le format de Mintlify : les champs que HGDC Docs ne gère pas sont acceptés et ignorés. Pour l’autocomplétion dans ton éditeur, ajoute `"$schema": "https://docs.hgdc.ch/docs.schema.json"`.
|
|
566
|
+
|
|
567
|
+
## Champs
|
|
568
|
+
|
|
569
|
+
| Champ | Type | Obligatoire | Rôle |
|
|
570
|
+
| -------------------- | ---------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
571
|
+
| `name` | texte | oui | Nom de la doc, en tête du site et dans `llms.txt`. 80 caractères au plus. |
|
|
572
|
+
| `description` | texte | non | Une phrase de présentation. |
|
|
573
|
+
| `navigation` | objet | oui | Pages, groupes, onglets ou versions. Voir [Navigation](/guides/navigation/). |
|
|
574
|
+
| `project` | texte | non | Identifiant du projet dans la console. Active l’assistant et l’indexation. |
|
|
575
|
+
| `language` | `fr`, `en`, `de`, `it` | non | Langue de l’interface du site. `fr` par défaut. |
|
|
576
|
+
| `colors.primary` | couleur `#rrggbb` | non | Couleur des liens et des éléments actifs. |
|
|
577
|
+
| `colors.dark` | couleur `#rrggbb` | non | La même, en mode sombre. |
|
|
578
|
+
| `logo` | chemin, ou `{ light, dark }` | non | Logo affiché en tête. |
|
|
579
|
+
| `favicon` | chemin | non | Icône de l’onglet du navigateur. |
|
|
580
|
+
| `footer.socials` | objet | non | Liens vers tes réseaux : `github`, `gitlab`, `linkedin`, `x.com`, `mastodon`, `discord`, `youtube`, `instagram`, `bluesky`. |
|
|
581
|
+
| `assistant.enabled` | oui / non | non | `false` cache l’assistant du site. |
|
|
582
|
+
| `assistant.endpoint` | adresse | non | API de l’assistant, à ne changer que pour un environnement de test. |
|
|
583
|
+
|
|
584
|
+
## Navigation
|
|
585
|
+
|
|
586
|
+
Quatre formes, une seule à la fois :
|
|
587
|
+
|
|
588
|
+
| Forme | Exemple |
|
|
589
|
+
| ---------- | --------------------------------------------------------- |
|
|
590
|
+
| `pages` | `["index", "installation"]` |
|
|
591
|
+
| `groups` | `[{ "group": "Démarrer", "pages": ["index"] }]` |
|
|
592
|
+
| `tabs` | `[{ "tab": "Guides", "groups": [...] }]` |
|
|
593
|
+
| `versions` | `[{ "version": "v2", "default": true, "groups": [...] }]` |
|
|
594
|
+
|
|
595
|
+
Un groupe accepte `expanded: false` pour être replié par défaut, et peut contenir des groupes.
|
|
596
|
+
|
|
597
|
+
## Erreurs
|
|
598
|
+
|
|
599
|
+
Un `docs.json` invalide fait échouer le build avec la liste des problèmes, par exemple :
|
|
600
|
+
|
|
601
|
+
```text
|
|
602
|
+
docs.json invalide :
|
|
603
|
+
- colors.primary : couleur attendue au format #rrggbb
|
|
604
|
+
- navigation : utiliser une seule forme parmi versions, tabs, groups ou pages
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
---
|
|
608
|
+
|
|
609
|
+
Source : /reference/cli/
|
|
610
|
+
|
|
611
|
+
# La commande hgdc-docs
|
|
612
|
+
|
|
613
|
+
`hgdc-docs` est installée avec le paquet `@hgdc/docs`. Elle se lance depuis le dossier de la doc, ou avec le chemin du dossier en argument.
|
|
614
|
+
|
|
615
|
+
## Commandes
|
|
616
|
+
|
|
617
|
+
| Commande | Effet |
|
|
618
|
+
| ------------------- | ---------------------------------------------------------------------------------------------------------- |
|
|
619
|
+
| `hgdc-docs dev` | Site local sur `http://localhost:4321`, rechargé à chaque modification. |
|
|
620
|
+
| `hgdc-docs build` | Site statique dans `dist/`, avec la recherche, `llms.txt`, les pages Markdown et le corpus de l’assistant. |
|
|
621
|
+
| `hgdc-docs preview` | Sert le dernier build, pour vérifier avant de pousser. |
|
|
622
|
+
|
|
623
|
+
Options : `--port 4000` change le port de `dev` et `preview`, `--help` affiche l’aide.
|
|
624
|
+
|
|
625
|
+
## Variables d’environnement
|
|
626
|
+
|
|
627
|
+
| Variable | Rôle |
|
|
628
|
+
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
629
|
+
| `HGDC_DOCS_SITE` | Adresse publique du site (`https://docs.acme.ch`). Rend les liens de `llms.txt` absolus et produit le sitemap. Sur HGDC Host, l’adresse de production est reprise seule. |
|
|
630
|
+
| `HGDC_DOCS_OUT` | Dossier de sortie, `dist/` par défaut. |
|
|
631
|
+
| `HGDC_DOCS_API` | API de l’assistant, `https://docs.hgdc.ch` par défaut. |
|
|
632
|
+
|
|
633
|
+
## Ce que contient dist/
|
|
634
|
+
|
|
635
|
+
| Fichier | Contenu |
|
|
636
|
+
| --------------------------------------------------- | -------------------------------------------------------------- |
|
|
637
|
+
| `index.html`, `<page>/index.html` | Les pages du site. |
|
|
638
|
+
| `<page>.md` | Chaque page en Markdown. |
|
|
639
|
+
| `llms.txt`, `llms-full.txt`, `.well-known/llms.txt` | L’index et la doc complète pour les agents. |
|
|
640
|
+
| `pagefind/` | L’index de la recherche. |
|
|
641
|
+
| `_hgdc/corpus.json` | Le contenu publié, lu par la console pour indexer l’assistant. |
|
|
642
|
+
|
|
643
|
+
---
|
|
644
|
+
|
|
645
|
+
Source : /reference/api-assistant/
|
|
646
|
+
|
|
647
|
+
# API de l'assistant
|
|
648
|
+
|
|
649
|
+
Le widget du site appelle une seule route. Tu peux l’appeler toi-même pour intégrer l’assistant dans ton application, depuis une page servie par une adresse déclarée dans la console.
|
|
650
|
+
|
|
651
|
+
## Requête
|
|
652
|
+
|
|
653
|
+
```http
|
|
654
|
+
POST https://docs.hgdc.ch/api/v1/ask
|
|
655
|
+
Content-Type: application/json
|
|
656
|
+
Origin: https://docs.acme.ch
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
```json
|
|
660
|
+
{
|
|
661
|
+
"project": "k57a8m2x9q4n1b3c5d7e9f0g2h4j6k8m",
|
|
662
|
+
"question": "Comment publier ma doc ?",
|
|
663
|
+
"page": "/guides/publier/",
|
|
664
|
+
"previous": ["j97f2k8m1q4n6b3c5d7e9f0g2h4j6k8m"]
|
|
665
|
+
}
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
| Champ | Rôle |
|
|
669
|
+
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
670
|
+
| `project` | Identifiant du projet. |
|
|
671
|
+
| `question` | 2 à 1 000 caractères. |
|
|
672
|
+
| `page` | Chemin de la page ouverte. Ses passages sont légèrement favorisés. |
|
|
673
|
+
| `previous` | Les `id` des réponses précédentes de la conversation, 3 au plus. L’assistant relit lui-même ce qu’il a répondu, dans les deux dernières heures. |
|
|
674
|
+
|
|
675
|
+
L’en-tête `Origin` doit être l’adresse du site ou un des domaines déclarés dans **Réglages › Domaines**. Chaque visiteur a droit à 6 questions par minute et 100 par jour.
|
|
676
|
+
|
|
677
|
+
## Réponse
|
|
678
|
+
|
|
679
|
+
```json
|
|
680
|
+
{
|
|
681
|
+
"id": "j97f…",
|
|
682
|
+
"status": "answered",
|
|
683
|
+
"answer": "Importe le dépôt dans HGDC Host[^1], puis synchronise le projet dans la console[^2].",
|
|
684
|
+
"sources": [
|
|
685
|
+
{ "n": 1, "title": "Publier avec HGDC Host", "section": "Avec HGDC Host", "url": "https://docs.acme.ch/guides/publier/#avec-hgdc-host" },
|
|
686
|
+
{ "n": 2, "title": "Publier avec HGDC Host", "section": "Relier la console", "url": "https://docs.acme.ch/guides/publier/#relier-la-console" }
|
|
687
|
+
]
|
|
688
|
+
}
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
`answer` est du Markdown simple ; `[^n]` renvoie à la source `n`. `status` vaut `no_answer` quand la doc ne répond pas : `sources` est alors vide.
|
|
692
|
+
|
|
693
|
+
## Erreurs
|
|
694
|
+
|
|
695
|
+
| Code HTTP | `error.code` | Quand |
|
|
696
|
+
| --------- | -------------------- | --------------------------------------------------- |
|
|
697
|
+
| 400 | `invalid_request` | Corps illisible ou question trop courte. |
|
|
698
|
+
| 403 | `origin_not_allowed` | La page n’est pas servie par une adresse du projet. |
|
|
699
|
+
| 403 | `assistant_disabled` | L’assistant est coupé dans la console. |
|
|
700
|
+
| 404 | `project_not_found` | Identifiant inconnu. |
|
|
701
|
+
| 409 | `not_indexed` | Le site n’a pas encore été synchronisé. |
|
|
702
|
+
| 429 | `rate_limited` | Trop de questions en une minute. |
|
|
703
|
+
| 429 | `quota_exceeded` | Le quota mensuel de l’organisation est atteint. |
|
|
704
|
+
| 503 | `unavailable` | Le modèle ne répond pas. Réessayer plus tard. |
|
|
705
|
+
|
|
706
|
+
Chaque erreur porte aussi `error.message`, une phrase en français à montrer telle quelle.
|
|
707
|
+
|
|
708
|
+
---
|
|
709
|
+
|
|
710
|
+
Source : /reference/mcp/
|
|
711
|
+
|
|
712
|
+
# Serveur MCP
|
|
713
|
+
|
|
714
|
+
Le serveur suit le [Model Context Protocol](https://modelcontextprotocol.io), transport Streamable HTTP, sans session : chaque requête est indépendante.
|
|
715
|
+
|
|
716
|
+
```text
|
|
717
|
+
POST https://docs.hgdc.ch/mcp/<identifiant du projet>
|
|
718
|
+
Content-Type: application/json
|
|
719
|
+
Accept: application/json, text/event-stream
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
Il répond en JSON (`application/json`), jamais en flux. `GET` et `DELETE` répondent 405. Versions du protocole acceptées : `2025-11-25`, `2025-06-18`, `2025-03-26`.
|
|
723
|
+
|
|
724
|
+
## Méthodes
|
|
725
|
+
|
|
726
|
+
| Méthode | Réponse |
|
|
727
|
+
| ------------ | --------------------------------------------------------- |
|
|
728
|
+
| `initialize` | Nom du serveur, capacités (`tools`) et consignes d’usage. |
|
|
729
|
+
| `ping` | Objet vide. |
|
|
730
|
+
| `tools/list` | Les trois outils ci-dessous. |
|
|
731
|
+
| `tools/call` | Le résultat de l’outil, en texte. |
|
|
732
|
+
|
|
733
|
+
Une notification (message sans `id`) reçoit un 202 sans corps.
|
|
734
|
+
|
|
735
|
+
## Outils
|
|
736
|
+
|
|
737
|
+
### search_docs
|
|
738
|
+
|
|
739
|
+
| Paramètre | Type | Rôle |
|
|
740
|
+
| --------- | -------------- | --------------------------------- |
|
|
741
|
+
| `query` | texte | Question ou mots-clés. |
|
|
742
|
+
| `limit` | entier, 1 à 10 | Nombre de passages, 5 par défaut. |
|
|
743
|
+
|
|
744
|
+
Rend les passages trouvés, chacun avec son titre, sa section, son adresse et son texte.
|
|
745
|
+
|
|
746
|
+
### get_page
|
|
747
|
+
|
|
748
|
+
| Paramètre | Type | Rôle |
|
|
749
|
+
| --------- | ----- | ---------------------------------------------------------------- |
|
|
750
|
+
| `path` | texte | Chemin de la page (`/guides/publier/`), ou son adresse complète. |
|
|
751
|
+
|
|
752
|
+
Rend la page en Markdown, précédée de son adresse.
|
|
753
|
+
|
|
754
|
+
### list_pages
|
|
755
|
+
|
|
756
|
+
Sans paramètre. Rend la liste des pages publiées.
|
|
757
|
+
|
|
758
|
+
## Limites
|
|
759
|
+
|
|
760
|
+
Le serveur est public et en lecture seule : il ne donne accès qu’à ce que le site publie déjà. Chaque projet accepte 300 requêtes par minute, chaque visiteur 60. Au-delà, la réponse est un 429.
|
|
761
|
+
|
|
762
|
+
---
|
|
763
|
+
|
|
764
|
+
Source : /explications/fonctionnement/
|
|
765
|
+
|
|
766
|
+
# Comment ça marche
|
|
767
|
+
|
|
768
|
+
HGDC Docs tient en trois pièces : un modèle de site, HGDC Host qui le publie, et la console qui l’indexe pour l’assistant.
|
|
769
|
+
|
|
770
|
+
## 1. Le modèle de site
|
|
771
|
+
|
|
772
|
+
Le paquet `@hgdc/docs` contient un site Astro Starlight complet. `hgdc-docs build` lit ton `docs.json`, prend tes pages MDX et construit un site statique. Rien ne tourne côté serveur : le site est rapide et ne tombe pas en panne avec la console.
|
|
773
|
+
|
|
774
|
+
Pendant le build, chaque page est aussi convertie en Markdown à partir du HTML final. Les composants sont donc déjà rendus : ce que lit un agent est exactement ce que voit un visiteur.
|
|
775
|
+
|
|
776
|
+
## 2. La publication par HGDC Host
|
|
777
|
+
|
|
778
|
+
HGDC Host lance le build dans GitHub Actions à chaque push, puis sert le dossier `dist/` sur ton domaine. La doc est une source comme une autre : préversion par branche, retour arrière, domaine.
|
|
779
|
+
|
|
780
|
+
## 3. L’indexation par la console
|
|
781
|
+
|
|
782
|
+
La console relit `/_hgdc/corpus.json` sur le site publié : tous les quarts d’heure, ou quand tu cliques sur **Synchroniser**. Elle vérifie que le corpus porte bien l’identifiant du projet, puis :
|
|
783
|
+
|
|
784
|
+
1. découpe chaque page en passages, un par section (titre `##` ou plus fin) ;
|
|
785
|
+
2. compare avec l’index existant, passage par passage : seuls les passages nouveaux sont traités ;
|
|
786
|
+
3. calcule leur représentation vectorielle (embedding), qui permet de retrouver une reformulation ;
|
|
787
|
+
4. supprime les passages qui ne sont plus publiés.
|
|
788
|
+
|
|
789
|
+
Un build identique au précédent ne change rien à l’index.
|
|
790
|
+
|
|
791
|
+
## 4. La réponse
|
|
792
|
+
|
|
793
|
+
Une question passe par deux recherches : par mots (les termes exacts, comme `docs.json`) et par sens (les reformulations). Les deux classements sont fusionnés, les six meilleurs passages sont donnés au modèle Claude, qui répond en citant ceux qu’il utilise.
|
|
794
|
+
|
|
795
|
+
> **Note**
|
|
796
|
+
>
|
|
797
|
+
> L’index d’un projet est fermé aux autres : une recherche ne voit que les passages de son propre projet, vérifiés deux fois.
|
|
798
|
+
|
|
799
|
+
---
|
|
800
|
+
|
|
801
|
+
Source : /explications/donnees/
|
|
802
|
+
|
|
803
|
+
# Données et confidentialité
|
|
804
|
+
|
|
805
|
+
## Ce qui est stocké
|
|
806
|
+
|
|
807
|
+
| Donnée | Où | Durée |
|
|
808
|
+
| ------------------------------------------------ | ------------------ | ------------------------------ |
|
|
809
|
+
| Pages publiées, en Markdown, et passages indexés | Base de la console | Tant que le projet existe |
|
|
810
|
+
| Questions des visiteurs, réponses, sources | Base de la console | 90 jours |
|
|
811
|
+
| Consommation mensuelle de l’assistant | Base de la console | Tant que l’organisation existe |
|
|
812
|
+
|
|
813
|
+
La console ne stocke ni l’adresse IP ni l’identité des visiteurs. L’IP sert seulement, le temps de la requête, à limiter le nombre de questions par minute.
|
|
814
|
+
|
|
815
|
+
## Qui traite quoi
|
|
816
|
+
|
|
817
|
+
- **Le site** est servi par HGDC Host.
|
|
818
|
+
- **La recherche du site** tourne dans le navigateur du visiteur : aucune requête ne part.
|
|
819
|
+
- **Les embeddings** des passages et des questions sont calculés par Mistral AI, dans l’Union européenne.
|
|
820
|
+
- **Les réponses** sont rédigées par Claude, le modèle d’Anthropic, appelé directement ou par OpenRouter. La question et les passages trouvés lui sont envoyés.
|
|
821
|
+
|
|
822
|
+
Sans clé d’embeddings, la recherche de l’assistant reste en plein texte : rien ne part chez Mistral.
|
|
823
|
+
|
|
824
|
+
## Ce que voit l’assistant
|
|
825
|
+
|
|
826
|
+
Uniquement ce que ton site publie : il lit le corpus du site public. Une page qui n’est pas publiée n’existe pas pour lui. Il ne peut ni naviguer sur le web, ni agir : il lit des passages et écrit une réponse.
|
|
827
|
+
|
|
828
|
+
## Supprimer
|
|
829
|
+
|
|
830
|
+
Supprimer un projet dans la console efface son index, ses pages et son journal. Le site publié et ton dépôt ne sont pas touchés.
|