novahiz 0.11.6 → 0.11.7
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/CHANGELOG.md +12 -0
- package/README.md +41 -1
- package/install/install.mjs +92 -58
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.11.7] - 2026-10-23
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **MCP Novahiz ne fonctionnent pas sur Linux** - OpenCode (en mode GUI/Desktop) ne
|
|
13
|
+
n'hérite pas du PATH du shell, donc `node` seul ne se résolvait pas pour les MCP
|
|
14
|
+
locaux (`novahiz-core`, `novahiz-gate`, `novahiz-docs`, `novahiz-search`,
|
|
15
|
+
`novahiz-scheduler`, `novahiz-scan`). L'installateur utilise maintenant le chemin
|
|
16
|
+
absolu de `node` (`process.execPath`) et propage le `PATH` de l'installateur via
|
|
17
|
+
`environment` à chaque MCP. Le MCP `dart` est omis si le Dart SDK n'est pas
|
|
18
|
+
présent (`which dart` / `where dart`).
|
|
19
|
+
|
|
8
20
|
## [0.11.6] - 2026-10-23
|
|
9
21
|
|
|
10
22
|
### Fixed
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
17 catégories, 94 skills, 13 gate rules, 8 MCP providers — tout déterministe, tout local, tout JSON.
|
|
6
6
|
|
|
7
|
-
> **Version 0.11.
|
|
7
|
+
> **Version 0.11.6** — `npm install -g novahiz` pose le CLI, et le premier `novahiz` lancé termine l'installation (core puis extras). `CHANGELOG.md` et `scripts/` sont dans le tarball.
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
┌──────────────────────────────────────────────────────────────────────────┐
|
|
@@ -43,8 +43,48 @@
|
|
|
43
43
|
|
|
44
44
|
### Option 1 — npm (recommandé)
|
|
45
45
|
|
|
46
|
+
#### Linux
|
|
47
|
+
|
|
48
|
+
Sur Linux, `/usr/local/lib/node_modules` appartient à `root`. Pour éviter d'utiliser `sudo` avec npm, configurez un préfixe dans votre dossier personnel :
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
mkdir -p ~/.npm-global
|
|
52
|
+
npm config set prefix '~/.npm-global'
|
|
53
|
+
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
54
|
+
source ~/.bashrc
|
|
55
|
+
npm install -g novahiz
|
|
56
|
+
novahiz setup
|
|
57
|
+
novahiz doctor
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Si vous préférez conserver l'installation système (nécessite `sudo`) :
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
sudo npm install -g novahiz
|
|
64
|
+
sudo novahiz setup
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### Windows
|
|
68
|
+
|
|
69
|
+
Sur Windows, aucune configuration préalable n'est nécessaire :
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npm install -g novahiz
|
|
73
|
+
novahiz setup
|
|
74
|
+
novahiz doctor
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### macOS
|
|
78
|
+
|
|
79
|
+
Sur macOS, aucune configuration particulière n'est nécessaire en général. Si vous obtenez une erreur de permissions sur `/usr/local/lib/node_modules`, utilisez la même méthode que sous Linux :
|
|
80
|
+
|
|
46
81
|
```bash
|
|
82
|
+
mkdir -p ~/.npm-global
|
|
83
|
+
npm config set prefix '~/.npm-global'
|
|
84
|
+
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
|
|
85
|
+
source ~/.zshrc
|
|
47
86
|
npm install -g novahiz
|
|
87
|
+
novahiz setup
|
|
48
88
|
novahiz doctor
|
|
49
89
|
```
|
|
50
90
|
|
package/install/install.mjs
CHANGED
|
@@ -746,6 +746,97 @@ async function main() {
|
|
|
746
746
|
const agentsSkillsDir = join(homedir(), ".agents", "skills");
|
|
747
747
|
const agentsSkillsDirLegacy = join(homedir(), ".config", ".agents", "skills");
|
|
748
748
|
|
|
749
|
+
// Le chemin absolu de node est essentiel : OpenCode (notamment en
|
|
750
|
+
// mode GUI/Desktop sur Linux) ne hérite pas du PATH du shell, donc
|
|
751
|
+
// `node` seul ne se résout pas. On utilise donc le chemin absolu du
|
|
752
|
+
// node qui lance l'installateur.
|
|
753
|
+
const nodeBin = process.execPath;
|
|
754
|
+
// On propage le PATH de l'installateur aux MCP locaux pour que `node`,
|
|
755
|
+
// `npx`, `dart` etc. soient trouvables même sans héritage du shell.
|
|
756
|
+
const mcpEnv = { PATH: process.env.PATH };
|
|
757
|
+
|
|
758
|
+
// Détermine si le Dart SDK est présent (nécessaire pour le MCP dart).
|
|
759
|
+
let hasDart = false;
|
|
760
|
+
try {
|
|
761
|
+
const dartCheck = spawnSync(
|
|
762
|
+
process.platform === "win32" ? "where" : "which",
|
|
763
|
+
["dart"],
|
|
764
|
+
{ encoding: "utf8", stdio: "pipe" }
|
|
765
|
+
);
|
|
766
|
+
hasDart = dartCheck.status === 0;
|
|
767
|
+
} catch {
|
|
768
|
+
// dart introuvable, le MCP dart sera omis
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
const mcp = {
|
|
772
|
+
"novahiz-docs": {
|
|
773
|
+
"type": "local",
|
|
774
|
+
"command": [nodeBin, join(home, "mcp", "novahiz-docs", "index.mjs")],
|
|
775
|
+
"environment": mcpEnv,
|
|
776
|
+
"enabled": true
|
|
777
|
+
},
|
|
778
|
+
"novahiz-search": {
|
|
779
|
+
"type": "local",
|
|
780
|
+
"command": [nodeBin, join(home, "mcp", "lodestone", "index.mjs")],
|
|
781
|
+
"timeout": 120000,
|
|
782
|
+
"environment": mcpEnv,
|
|
783
|
+
"enabled": true
|
|
784
|
+
},
|
|
785
|
+
// `novahiz-scheduler` is the local scheduler (mcp/clepsydre, zero npm
|
|
786
|
+
// dependency): it ships ready to run, no setup step.
|
|
787
|
+
"novahiz-scheduler": {
|
|
788
|
+
"type": "local",
|
|
789
|
+
"command": [nodeBin, join(home, "mcp", "clepsydre", "index.mjs")],
|
|
790
|
+
"timeout": 120000,
|
|
791
|
+
"environment": mcpEnv,
|
|
792
|
+
"enabled": true
|
|
793
|
+
},
|
|
794
|
+
"playwright": {
|
|
795
|
+
"type": "local",
|
|
796
|
+
// See playwrightBrowserFlag() in lib.mjs for the platform rule.
|
|
797
|
+
"command": ["npx", "-y", "@playwright/mcp@0.0.82", playwrightBrowserFlag()],
|
|
798
|
+
"environment": mcpEnv,
|
|
799
|
+
"enabled": true
|
|
800
|
+
},
|
|
801
|
+
// Trio runtime (audit 2026-10-08) : novahiz_classify (27 outils dont
|
|
802
|
+
// la classification du pipeline), novahiz_gate (la porte que le skill
|
|
803
|
+
// novahiz-gate appelle) et scan (argus). Le transform du plugin les
|
|
804
|
+
// inscrit aussi, mais un transform arrive apres la resolution MCP ne
|
|
805
|
+
// lie jamais les serveurs — en config statique la connexion est
|
|
806
|
+
// garantie des l'installation. Le plugin voit editor.get(id) deja
|
|
807
|
+
// present et les saute : aucun doublon. timeout 120s = cold start
|
|
808
|
+
// argus (audit 2026-09-25 P2).
|
|
809
|
+
"novahiz-core": {
|
|
810
|
+
"type": "local",
|
|
811
|
+
"command": [nodeBin, join(home, "mcp", "novahiz-tools", "index.mjs")],
|
|
812
|
+
"timeout": 120000,
|
|
813
|
+
"environment": mcpEnv,
|
|
814
|
+
"enabled": true
|
|
815
|
+
},
|
|
816
|
+
"novahiz-gate": {
|
|
817
|
+
"type": "local",
|
|
818
|
+
"command": [nodeBin, join(home, "mcp", "novahiz-gate", "index.mjs")],
|
|
819
|
+
"timeout": 120000,
|
|
820
|
+
"environment": mcpEnv,
|
|
821
|
+
"enabled": true
|
|
822
|
+
},
|
|
823
|
+
"novahiz-scan": {
|
|
824
|
+
"type": "local",
|
|
825
|
+
"command": [nodeBin, join(home, "mcp", "argus", "src", "cli.mjs")],
|
|
826
|
+
"timeout": 120000,
|
|
827
|
+
"environment": mcpEnv,
|
|
828
|
+
"enabled": true
|
|
829
|
+
}
|
|
830
|
+
};
|
|
831
|
+
if (hasDart) {
|
|
832
|
+
mcp["dart"] = {
|
|
833
|
+
"type": "local",
|
|
834
|
+
"command": ["dart", "mcp-server"],
|
|
835
|
+
"environment": mcpEnv,
|
|
836
|
+
"enabled": true
|
|
837
|
+
};
|
|
838
|
+
}
|
|
839
|
+
|
|
749
840
|
const openCodeConfig = {
|
|
750
841
|
"$schema": "https://opencode.ai/config.json",
|
|
751
842
|
// T3: sans ce champ, adapters/opencode/instructions.md n'est lu par
|
|
@@ -760,64 +851,7 @@ async function main() {
|
|
|
760
851
|
// (typescript-language-server, etc.) peuvent manquer — des entrees
|
|
761
852
|
// mortes = exactement le probleme qu'on veut jamais livrer.
|
|
762
853
|
"lsp": true,
|
|
763
|
-
"mcp":
|
|
764
|
-
"novahiz-docs": {
|
|
765
|
-
"type": "local",
|
|
766
|
-
"command": ["node", join(home, "mcp", "novahiz-docs", "index.mjs")],
|
|
767
|
-
"enabled": true
|
|
768
|
-
},
|
|
769
|
-
"novahiz-search": {
|
|
770
|
-
"type": "local",
|
|
771
|
-
"command": ["node", join(home, "mcp", "lodestone", "index.mjs")],
|
|
772
|
-
"timeout": 120000,
|
|
773
|
-
"enabled": true
|
|
774
|
-
},
|
|
775
|
-
// `novahiz-scheduler` is the local scheduler (mcp/clepsydre, zero npm
|
|
776
|
-
// dependency): it ships ready to run, no setup step.
|
|
777
|
-
"novahiz-scheduler": {
|
|
778
|
-
"type": "local",
|
|
779
|
-
"command": ["node", join(home, "mcp", "clepsydre", "index.mjs")],
|
|
780
|
-
"timeout": 120000,
|
|
781
|
-
"enabled": true
|
|
782
|
-
},
|
|
783
|
-
"playwright": {
|
|
784
|
-
"type": "local",
|
|
785
|
-
// See playwrightBrowserFlag() in lib.mjs for the platform rule.
|
|
786
|
-
"command": ["npx", "-y", "@playwright/mcp@0.0.82", playwrightBrowserFlag()],
|
|
787
|
-
"enabled": true
|
|
788
|
-
},
|
|
789
|
-
"dart": {
|
|
790
|
-
"type": "local",
|
|
791
|
-
"command": ["dart", "mcp-server"],
|
|
792
|
-
"enabled": true
|
|
793
|
-
},
|
|
794
|
-
// Trio runtime (audit 2026-10-08) : novahiz_classify (27 outils dont
|
|
795
|
-
// la classification du pipeline), novahiz_gate (la porte que le skill
|
|
796
|
-
// novahiz-gate appelle) et scan (argus). Le transform du plugin les
|
|
797
|
-
// inscrit aussi, mais un transform arrive apres la resolution MCP ne
|
|
798
|
-
// lie jamais les serveurs — en config statique la connexion est
|
|
799
|
-
// garantie des l'installation. Le plugin voit editor.get(id) deja
|
|
800
|
-
// present et les saute : aucun doublon. timeout 120s = cold start
|
|
801
|
-
// argus (audit 2026-09-25 P2).
|
|
802
|
-
"novahiz-core": {
|
|
803
|
-
"type": "local",
|
|
804
|
-
"command": ["node", join(home, "mcp", "novahiz-tools", "index.mjs")],
|
|
805
|
-
"timeout": 120000,
|
|
806
|
-
"enabled": true
|
|
807
|
-
},
|
|
808
|
-
"novahiz-gate": {
|
|
809
|
-
"type": "local",
|
|
810
|
-
"command": ["node", join(home, "mcp", "novahiz-gate", "index.mjs")],
|
|
811
|
-
"timeout": 120000,
|
|
812
|
-
"enabled": true
|
|
813
|
-
},
|
|
814
|
-
"novahiz-scan": {
|
|
815
|
-
"type": "local",
|
|
816
|
-
"command": ["node", join(home, "mcp", "argus", "src", "cli.mjs")],
|
|
817
|
-
"timeout": 120000,
|
|
818
|
-
"enabled": true
|
|
819
|
-
}
|
|
820
|
-
},
|
|
854
|
+
"mcp": mcp,
|
|
821
855
|
"skills": {
|
|
822
856
|
"paths": [skillsDir]
|
|
823
857
|
},
|