@fkom13/mcp-sftp-orchestrator 11.3.0 → 11.8.0

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/.env.example CHANGED
@@ -26,3 +26,9 @@ MCP_ALLOWED_ROOTS=
26
26
 
27
27
  # Activer ou désactiver Debug wrapper
28
28
  MCP_DEBUG=false
29
+
30
+ # Mode lecture seule (exploration safe) : refuse écritures / task_exec mutantes
31
+ # MCP_READONLY=1
32
+
33
+ # Réponses compactes (moins de tokens pour l'agent)
34
+ # MCP_COMPACT=1
package/CHANGELOG.md ADDED
@@ -0,0 +1,174 @@
1
+ # Changelog — MCP Orchestrator (`@fkom13/mcp-sftp-orchestrator`)
2
+
3
+ ## 11.8.0 — Security Refresh (2026-09-20)
4
+
5
+ - Met à jour `@modelcontextprotocol/sdk` de 1.29.x vers **1.30.0**.
6
+ - Met à jour `glob` vers **13.0.6** et `uuid` vers **11.1.1+**.
7
+ - Rafraîchit les dépendances transitives vulnérables (`ajv`, `fast-uri`, `minimatch`, `picomatch`, `qs`, `hono`, `ip-address`, `@hono/node-server`, brace expansion).
8
+ - `npm audit --omit=dev` passe de 11 vulnérabilités à **0**.
9
+ - Ajoute `.npmignore` pour empêcher la publication de `.gencodedoc/`, `data/`, `.env`, backups et artefacts locaux dans npm.
10
+ - Exclut `.gencodedoc` de ses propres scans afin d'éviter l'auto-indexation récursive des snapshots locaux.
11
+ - Conserve le transport MCP **stdio**, les 82 tools/capabilities et les hardenings 11.6/11.7 sans réduction de surface.
12
+ - Réaligne les constantes/runtime/tests/docs de version sur 11.8.0.
13
+ - Cette release devient la base de réalignement GitHub/npm et des vendors IACA.
14
+
15
+ ## 11.7.0 — AIX / Infrastructure Topology (2026-08-22)
16
+
17
+ - Conserve les **82 capabilities/tools** : aucune réduction artificielle de surface.
18
+ - Ajoute des **annotations MCP standard sur les 82 tools** (`readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`) via `toolMetadata.js`; les policies serveur restent l'autorité.
19
+ - Clarifie les descriptions de choix entre `system_diagnostics`, `infra_audit`, `fleet_status`, `server_inventory`, `infra_overview`, les familles exec/terminal/transfer/file/snapshot.
20
+ - Transforme `infra_overview` : sans alias = contexte de parc léger; avec alias/group/all = **topologie live** listeners + Docker/Compose + PM2 + systemd + Nginx avec graphe `domain -> proxy -> host port -> container/service`.
21
+ - Ajoute `outputSchema` + `structuredContent` à `infra_overview`.
22
+ - Cache topologique court (2 min), `force`, timeout par machine et réponse compacte par défaut.
23
+ - Fusionne les server blocks Nginx HTTP/HTTPS d'un même domaine dans une vue unique.
24
+ - `task_queue` et `task_history` deviennent filtrables/paginables/compactables; `task_logs` borne son volume.
25
+ - Nouvelle suite `test_aix_117.js`; certification MCP réelle : 82/82 tools annotés.
26
+ - Smoke live Contabo certifié : 52 conteneurs, 24 projets Compose, 60 listeners, 30 domaines agrégés; résolution automatique de routes IACA/Connect/Hermes/DeepSeek/NIM/etc.
27
+
28
+ Archive candidate PC2 : `~/ea-audits/orchestrator-20260822/mcp-sftp-orchestrator-11.7.0-source.tgz`.
29
+
30
+
31
+ Format basé sur [Keep a Changelog](https://keepachangelog.com/).
32
+ Versions snappshottées via **gencodedoc** (IDs locaux sur le dépôt).
33
+
34
+ ---
35
+
36
+ ## [11.6.1] — 2026-08-22
37
+
38
+ ### Hardening MCP / multi-agent
39
+ - `server_to_server` supporte désormais les dossiers et le multi-fichiers ; comptage d'échec corrigé.
40
+ - `force:false` est enfin respecté en transfert serveur→serveur.
41
+ - `task_transfer_multi` accepte `server_to_server` avec `source_alias` global ou par entrée.
42
+ - `MCP_ALLOWED_ROOTS` descend au niveau `sourceAdapter` et bloque aussi les échappements par symlink.
43
+ - Guards `MCP_READONLY` / `readonly:true` ajoutés aux transferts, exec interactifs/séquences, shell, restores, tmux, tunnels et mutations de registres.
44
+ - Quoting tmux/tunnels durci via `escapeShellArg`.
45
+ - Interpolations shell restantes durcies (`fail2ban`, nom PM2, `docker --since`).
46
+ - Nouvelle suite `test_hardening_1161.js`.
47
+
48
+ ## [11.6.0] — 2026-07-15
49
+
50
+ **Snapshot gencodedoc : #22 (dev) → #23 (final docs)**
51
+ **82 tools MCP**
52
+
53
+ ### Added — couche sémantique agent (A–E)
54
+
55
+ - **Projets** (`projects.js`)
56
+ - `project_list` / `project_get` / `project_set` / `project_remove` / `project_resolve`
57
+ - Registre `data/projects.json` : local path ↔ remote alias/path/runtime/url
58
+ - Seed exemple : projet `p-image`
59
+ - **`project_diff`** : diff local↔remote d’un projet (ignore patterns du registre)
60
+ - **Work sessions** (`workSession.js`)
61
+ - `work_start` / `work_log` / `work_list` / `work_end`
62
+ - Journal `data/work_sessions.json` ; `work_end` met à jour `server_note` (`last_intervention`)
63
+ - Option snapshot remote au démarrage
64
+ - **`server_inventory`** (`inventory.js`) : inventaire léger (host, disk, mem, pm2, docker, `$HOME`, tailscale) avec **cache 10 min**
65
+ - **RO par alias** : `server_add.readonly` / `servers.json` `readonly:true` bloque write/exec sur cet alias
66
+ - **`MCP_COMPACT` / `compact:true`** : `utils.compactResult` pour réponses agent plus courtes
67
+
68
+ ### Added — trust SSH (v11.6 roadmap)
69
+
70
+ - **`ssh_authorize_key`** (`sshTrust.js`)
71
+ - Ajoute une **pubkey** dans `authorized_keys` distant
72
+ - Sources : `string` | `local_path` (.pub) | `alias` (dérive `.pub` / `ssh-keygen -y`)
73
+ - **Jamais** de copie de clé privée
74
+ - `dry_run: true` par défaut ; chmod 700/600 du `.ssh`
75
+
76
+ ### Security / hardening (portés depuis 11.3–11.4)
77
+
78
+ - Masquage secrets dans `api_list`, `server_list`, `system_diagnostics`, `infra_audit`
79
+ - Policy blocklist sur `shell_exec` et chaque étape de `task_exec_sequence`
80
+ - Fix faux positif blocklist `rm -rf /` vs `rm -rf /tmp/...`
81
+ - Port SSH configurable (`serverConfig.port`, défaut 22)
82
+ - `waitForJobCompletion` : statuts terminaux `partial` + `crashed`
83
+ - Fix timeout interactif (secondes confondues avec ms)
84
+ - Pool SSH rewrite : listeners non empilés, flag `ready`/`closed`
85
+ - `MCP_READONLY=1` global + dry-run commandes destructives sur `task_exec`
86
+
87
+ ### Tests
88
+
89
+ - `test_p0_unit.js` (24) — utils, policies, secrets, timeouts
90
+ - `test_p1_unit.js` (12) — groups, purge, destructive, version
91
+ - `test_p16_unit.js` (7) — projects, work session, compact, sshTrust
92
+ - `npm test` / `npm test:unit`
93
+
94
+ ### Data files
95
+
96
+ | Fichier | Rôle |
97
+ |---------|------|
98
+ | `data/projects.json` | Registre projets |
99
+ | `data/work_sessions.json` | Sessions de travail |
100
+ | `data/server_groups.json` | Groupes d’alias (v11.4) |
101
+ | `data/servers.json` | Alias SSH (+ `readonly?`, `port?`) |
102
+
103
+ ---
104
+
105
+ ## [11.4.0] — 2026-07-15
106
+
107
+ **Snapshot gencodedoc : #21** · **70 tools**
108
+
109
+ ### Added
110
+
111
+ - `fleet_status` — ping SSH parallèle (latence, load, disk, clé manquante)
112
+ - `infra_audit` — synthèse parc (version, serveurs masqués, notes, crashed, pool)
113
+ - `server_group_list` / `server_group_set` / `server_group_remove` — groupes (`group:oci`, …)
114
+ - `task_retry_all` — relance bulk crashed/failed (+ dry_run)
115
+ - `task_purge` — purge queue (dry_run par défaut)
116
+ - `task_exec` : résolution `all` / `group:x` / nom de groupe ; dry_run / force sur commandes destructives
117
+ - Modules : `fleet.js`, `groups.js`
118
+
119
+ ### Fixed
120
+
121
+ - Pool SSH : retry sans empiler les listeners ; readiness réelle
122
+ - SFTP `server_to_server` 100 % via pool `sourceAdapter` (plus de client SFTP inutile)
123
+ - Queue : `maxQueueSize` / `saveInterval` lus depuis config
124
+
125
+ ---
126
+
127
+ ## [11.3.0] — 2026-07-15
128
+
129
+ **Snapshot gencodedoc : #20** · alignement version runtime/package
130
+
131
+ ### Security
132
+
133
+ - `utils.redactSensitiveObject` / `maskSecret` sur diagnostics et listes API
134
+ - Policy sur shell + sequences
135
+ - Warning secrets en clair au boot
136
+
137
+ ### Fixed
138
+
139
+ - Interactive hybrid wait (timeout secondes vs ms)
140
+ - Job status `partial` considéré terminal
141
+ - Port SSH non hardcodé 22 partout
142
+ - Blocklist ancrage pour patterns finissant par `/`
143
+ - Double `sftp.end()` supprimé ; glob remote en `path.posix`
144
+
145
+ ### Added
146
+
147
+ - `test_p0_unit.js`
148
+
149
+ ---
150
+
151
+ ## [11.x / 10.x] — antérieurs (résumé)
152
+
153
+ | Version | Highlights |
154
+ |---------|------------|
155
+ | 10.4.0 | `sourceSchema` centralisé, `server_to_server` transfert |
156
+ | 10.3.0 | guide, notes, infra_overview, diffFormatter |
157
+ | 10.2.0 | File ops / diff / snapshot via pool SSH |
158
+ | 10.0.0 | Snapshots infra content-addressable |
159
+ | 9.3.0 | Shell sessions PTY persistantes |
160
+ | 9.2.0 | diff_files / diff_folders / compare_all_sources |
161
+ | 9.1.0 | file_read / write / edit + hash |
162
+ | 9.0.x | stdio only, help, sécu escapeShellArg |
163
+ | 8.x | SFTP force, timeouts, interactif, pool |
164
+
165
+ Voir aussi `ROADMAP.md` et `ROADMAP_EXTENDED.md` pour le détail historique des étapes 7–11.
166
+
167
+ ---
168
+
169
+ ## Liens
170
+
171
+ - Package : `@fkom13/mcp-sftp-orchestrator`
172
+ - Entry : `server.js` (stdio MCP)
173
+ - Tests : `npm test:unit` · `npm test`
174
+ - Snapshots code : gencodedoc dans le dépôt projet