create-byan-agent 2.60.0 → 2.60.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.
@@ -11,8 +11,12 @@
11
11
  // PRIMAIRE de son createur, pas celui du dossier ;
12
12
  // 2. avec le setgid pose, le fichier herite du groupe mais ressort en 644 car
13
13
  // le umask 022 retire l ecriture au groupe -> il faut umask(0o002) ;
14
- // 3. le setgid se propage aux sous-dossiers crees ensuite : une seule pose a
15
- // la racine suffit pour l arborescence creee apres ;
14
+ // 3. le setgid se propage aux sous-dossiers crees DANS un dossier qui le
15
+ // porte. La propagation ne vaut donc que pour ce qui est cree APRES la
16
+ // pose : sur une arborescence deja ecrite, il faut le donner a chaque
17
+ // dossier. Mesure du 2026-08-12 sur un serveur reel : avec le bit sur la
18
+ // seule racine, 1 dossier sur 1187 le portait et un sous-dossier cree
19
+ // ensuite ressortait au groupe primaire de son createur ;
16
20
  // 4. fs.constants n expose aucune constante S_ISGID, d ou le litteral 0o2000.
17
21
  //
18
22
  // Toutes les dependances a effet de bord (fs, platform, exec, umask) sont
@@ -167,9 +171,24 @@ function ensureOwnership(rootPath, target, options) {
167
171
  function ouvrirAuGroupe(p, st) {
168
172
  if (!groupWritable || typeof fs.chmodSync !== 'function') return;
169
173
  const actuel = Number(st.mode) & 0o7777;
170
- // g+w partout ; g+x en plus sur un dossier, sinon le groupe ne peut pas le
171
- // traverser meme en ayant le droit d y ecrire.
172
- const vise = actuel | 0o020 | (st.isDirectory && st.isDirectory() ? 0o010 : 0);
174
+ const estDossier = Boolean(st.isDirectory && st.isDirectory());
175
+ // g+w partout ; sur un dossier, g+x en plus (sinon le groupe ne peut pas le
176
+ // traverser meme en ayant le droit d'y ecrire) ET le setgid.
177
+ //
178
+ // LE SETGID VA SUR CHAQUE DOSSIER, PAS SEULEMENT SUR LA RACINE.
179
+ //
180
+ // Mesure du 2026-08-12 sur un serveur reel, avec --group docker : le gid
181
+ // etait bien pose sur les 7831 entrees, mais un seul dossier sur 1187
182
+ // portait le setgid — la racine. Un sous-dossier cree ensuite sous _byan/
183
+ // ressortait en gid 1003 (le groupe primaire de son createur) et mode 755.
184
+ // Le groupe partage tenait donc pour ce qui existait, et lachait pour tout
185
+ // ce qui serait ecrit apres : exactement ce dont un projet a plusieurs
186
+ // mains a besoin.
187
+ //
188
+ // Le bit ne se propage qu'AUX DOSSIERS CREES DANS un dossier qui le porte.
189
+ // Sur une arborescence deja posee, les sous-dossiers existent deja : il faut
190
+ // le leur donner un par un, pendant ce meme parcours.
191
+ const vise = actuel | 0o020 | (estDossier ? 0o010 | SETGID : 0);
173
192
  if (vise === actuel) return;
174
193
  try {
175
194
  fs.chmodSync(p, vise);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-byan-agent",
3
- "version": "2.60.0",
3
+ "version": "2.60.1",
4
4
  "description": "BYAN - Intelligent AI agent installer with multi-platform native support (Claude Code, Codex/OpenCode)",
5
5
  "bin": {
6
6
  "create-byan-agent": "bin/create-byan-agent-v2.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-byan-agent",
3
- "version": "2.60.0",
3
+ "version": "2.60.1",
4
4
  "description": "BYAN v2.8 - Intelligent AI agent creator with ELO trust system + scientific fact-check + Hermes universal dispatcher + native Claude Code integration (hooks, skills, MCP server). Multi-platform (Claude Code, Codex). Merise Agile + TDD + 71 Mantras. ~54% LLM cost savings.",
5
5
  "main": "src/index.js",
6
6
  "bin": {