@nodefony/devkit 10.0.0-beta.2 → 10.0.0-beta.3
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 +5 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.152.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/decorate.js +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.152.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/decorateMetadata.js +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.152.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/decorateParam.js +1 -1
- package/dist/index.js +2 -2
- package/dist/nodefony/controllers/DevkitController.js +2 -2
- package/dist/nodefony/controllers/McpController.js +71 -6
- package/dist/nodefony/service/DevkitService.js +2 -2
- package/dist/nodefony/src/card.js +1 -2
- package/dist/types/nodefony/controllers/McpController.d.ts +12 -1
- package/docs/index.md +62 -14
- package/package.json +9 -9
- package/skills/nodefony-add-realtime-channel/SKILL.md +66 -9
- package/skills/nodefony-add-service/SKILL.md +11 -0
- package/skills/nodefony-authentication/SKILL.md +234 -0
- package/skills/nodefony-browser/SKILL.md +45 -21
- package/skills/nodefony-browser/references/sondes.md +13 -0
- package/skills/nodefony-browser/scripts/audit.mjs +59 -10
- package/skills/nodefony-browser/scripts/inspect.mjs +122 -4
- package/skills/nodefony-browser/scripts/lib/browser.mjs +112 -6
- package/skills/nodefony-browser/scripts/lib/probes.mjs +166 -7
- package/skills/nodefony-dev/SKILL.md +47 -81
- package/skills/nodefony-dev/scripts/docs.mjs +21 -5
- package/skills/nodefony-devops/SKILL.md +16 -13
- package/skills/nodefony-devops/references/compose.md +8 -0
- package/skills/nodefony-devops/references/frontal.md +5 -1
- package/skills/nodefony-devops/references/secrets.md +18 -4
- package/skills/nodefony-devops/references/variables.md +52 -19
- package/skills/nodefony-migrate-schema/SKILL.md +5 -2
- package/skills/nodefony-migrate-schema/references/verdicts.md +20 -19
- package/skills/nodefony-protect-route/SKILL.md +118 -17
- package/skills/nodefony-security-review/SKILL.md +127 -0
- package/skills/nodefony-security-review/scripts/review-diff.mjs +1090 -0
- package/skills/nodefony-troubleshoot/SKILL.md +151 -0
- package/skills/nodefony-troubleshoot/scripts/log-errors.mjs +465 -0
- package/skills/nodefony-upgrade/SKILL.md +130 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nodefony-upgrade
|
|
3
|
+
description: >
|
|
4
|
+
Monte une application Nodefony vers une nouvelle version du framework sans rien laisser derrière :
|
|
5
|
+
tous les paquets ensemble et sous le bon canal, puis `nodefony upgrade` pour la documentation des
|
|
6
|
+
agents, les skills et les fichiers livrés qu'un `npm install` ne refait pas, puis les ruptures
|
|
7
|
+
annoncées corrigées dans le code, le schéma migré et la preuve que tout tient. À charger AVANT de
|
|
8
|
+
lancer la montée de version, pas après un premier rouge. Une panne sans rapport avec une montée →
|
|
9
|
+
`nodefony-troubleshoot`.
|
|
10
|
+
Déclencheurs : "monter nodefony de version", "mettre à jour nodefony", "passer à la nouvelle
|
|
11
|
+
beta", "upgrade nodefony", "npm update nodefony", "une nouvelle version est sortie", "mes paquets
|
|
12
|
+
nodefony sont en retard", "après la mise à jour plus rien ne compile", "AGENTS.md est périmé".
|
|
13
|
+
metadata:
|
|
14
|
+
version: 1.0.0
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# nodefony-upgrade — les paquets, puis l'application, puis la preuve
|
|
18
|
+
|
|
19
|
+
> **Maintenance** : vérité courante, jamais un journal. Éditer en place ; l'historique vit dans
|
|
20
|
+
> `git log`. Pas de `references/` : ce qui doit atteindre un agent s'exécute ou vit dans ce corps.
|
|
21
|
+
|
|
22
|
+
## Passer la main
|
|
23
|
+
|
|
24
|
+
| Ce que tu fais en réalité | Le skill |
|
|
25
|
+
| ---------------------------------------------------------------- | ------------------------- |
|
|
26
|
+
| Rien n'a été mis à jour, et quelque chose a cessé de marcher | `nodefony-troubleshoot` |
|
|
27
|
+
| Une rupture touche une table ou une colonne : migration à écrire | `nodefony-migrate-schema` |
|
|
28
|
+
| Une rupture touche la connexion, `/me`, l'identité de la requête | `nodefony-authentication` |
|
|
29
|
+
| Monter l'image et la déployer une fois l'application au niveau | `nodefony-devops` |
|
|
30
|
+
| Coder autre chose dans la foulée | `nodefony-dev` |
|
|
31
|
+
|
|
32
|
+
## 1. La règle — trois couches, trois gestes
|
|
33
|
+
|
|
34
|
+
Une montée de version touche trois couches, et `npm install` n'en fait qu'une :
|
|
35
|
+
|
|
36
|
+
1. **Les paquets** (`node_modules`) — `npm install`.
|
|
37
|
+
2. **Ce que les paquets ont déposé dans l'application** à sa création : le bloc framework
|
|
38
|
+
d'`AGENTS.md`, les pointeurs de `.agents/skills/`, les copies livrées (décor Keycloak…). Ils
|
|
39
|
+
restent sur l'ancienne version sans que rien ne casse — `nodefony upgrade`.
|
|
40
|
+
3. **Ton code**, quand la version annonce une rupture — toi, guidé par le changelog et le
|
|
41
|
+
compilateur.
|
|
42
|
+
|
|
43
|
+
Sauter la couche 2 ne fait échouer aucun test : un agent lit simplement une porte qui décrit
|
|
44
|
+
l'ancienne version. Sauter la couche 3 se voit au premier `typecheck`.
|
|
45
|
+
|
|
46
|
+
## 2. La procédure
|
|
47
|
+
|
|
48
|
+
**Avant** : arbre propre, tests verts. Une montée sur un arbre déjà rouge mélange deux pannes.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
git status
|
|
52
|
+
npm test
|
|
53
|
+
npx nodefony outdated
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`outdated` liste les paquets en retard, regroupés. Note la version cible.
|
|
57
|
+
|
|
58
|
+
**Monter TOUS les paquets Nodefony, ensemble, sous le bon canal.** Ils sortent verrouillés : même
|
|
59
|
+
version pour `nodefony` et chaque `@nodefony/*`, devDependencies comprises (`@nodefony/devkit`
|
|
60
|
+
porte les skills). Nomme chacun de ceux que ton `package.json` déclare :
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm install nodefony@beta @nodefony/http@beta @nodefony/framework@beta @nodefony/security@beta
|
|
64
|
+
npm install -D @nodefony/devkit@beta
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
⚠️ Pendant la série 10, **`beta` est le canal de la préversion** ; `latest` sert encore l'ancienne
|
|
68
|
+
lignée 7 en JavaScript. Un `npm install nodefony` sans canal fait REDESCENDRE l'application.
|
|
69
|
+
|
|
70
|
+
**Remettre l'application au niveau des paquets** :
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npx nodefony upgrade
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Elle réécrit le bloc framework d'`AGENTS.md` (le texte hors des marqueurs `<!-- nodefony:start -->`
|
|
77
|
+
/ `<!-- nodefony:end -->` ne bouge pas), pose les pointeurs des skills apparus, rafraîchit les
|
|
78
|
+
copies livrées restées intactes. Ce qu'elle ne tranche pas est listé sous « À trancher à la main » :
|
|
79
|
+
une copie que l'application a retouchée, un `SKILL.md` écrit à la main, un skill que plus aucun
|
|
80
|
+
paquet ne livre. **Lis cette liste** : chaque ligne est une décision qui t'appartient.
|
|
81
|
+
|
|
82
|
+
**Lire les ruptures annoncées.** Le changelog est livré dans le paquet `nodefony` :
|
|
83
|
+
`node_modules/nodefony/CHANGELOG.md`, celui de la version INSTALLÉE — lu après la montée, il
|
|
84
|
+
couvre donc toutes les versions franchies, sans réseau. Absent (une version qui ne le livrait pas
|
|
85
|
+
encore) : `https://github.com/nodefony/nodefony-core/blob/main/CHANGELOG.md`. Dans la
|
|
86
|
+
section de chaque version franchie, les entrées marquées **`(breaking)`** sont celles qui
|
|
87
|
+
demandent une retouche de ton code — un nom renvoyé qui change, une option retirée, un défaut
|
|
88
|
+
inversé. Une rupture de comportement ne se voit pas au compilateur : seul le changelog la dit.
|
|
89
|
+
|
|
90
|
+
**Reconstruire, puis laisser le compilateur et les tests désigner le reste** :
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm run build
|
|
94
|
+
npm run typecheck
|
|
95
|
+
npm test
|
|
96
|
+
npx nodefony doctor
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Un symbole renommé ou retiré sort au `typecheck` avec son fichier et sa ligne. Un symbole
|
|
100
|
+
**déprécié** apparaît barré dans l'éditeur : il marche encore toute la série, son TSDoc nomme le
|
|
101
|
+
remplaçant. `doctor` signale ce qui reste en retard, chaque constat avec son geste.
|
|
102
|
+
|
|
103
|
+
**Si une rupture touche le schéma**, ou si le changelog l'annonce : `npx nodefony orm:migrate:status`,
|
|
104
|
+
puis la procédure de `nodefony-migrate-schema`.
|
|
105
|
+
|
|
106
|
+
## 3. Pièges
|
|
107
|
+
|
|
108
|
+
- **Monter un paquet seul n'est pas monter Nodefony.** Deux versions différentes de `nodefony`
|
|
109
|
+
dans `node_modules` se voient comme deux copies du cœur : l'application démarre amputée, ou pas
|
|
110
|
+
du tout. `npm ls nodefony` doit rendre une seule version.
|
|
111
|
+
- **Le canal par défaut ment pendant la série 10** : sans `@beta`, npm installe la 7.
|
|
112
|
+
- **Un vert ne prouve pas que la documentation des agents a suivi.** Seuls `doctor` ou
|
|
113
|
+
`npx nodefony upgrade --check` le voient.
|
|
114
|
+
- **`upgrade` ne recrée pas un `AGENTS.md` supprimé** : l'absence peut être un choix. Elle le dit.
|
|
115
|
+
- **Ne corrige pas une copie livrée « en retard » à la main** : si elle est intacte, `upgrade` la
|
|
116
|
+
remplace ; si tu l'as retouchée, reporte tes retouches sur la nouvelle version du paquet, à la
|
|
117
|
+
main et en connaissance de cause.
|
|
118
|
+
|
|
119
|
+
## 4. Gate — la montée est faite quand
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
npx nodefony upgrade --check
|
|
123
|
+
npm run typecheck
|
|
124
|
+
npm test
|
|
125
|
+
npx nodefony doctor
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
`upgrade --check` sort en 0 (sinon il dit ce qui reste en retard), le typecheck et les tests sont
|
|
129
|
+
verts, `doctor` ne signale rien de neuf. En intégration continue, `upgrade --check` refuse une
|
|
130
|
+
branche qui a monté ses paquets sans remettre l'application au niveau.
|