novahiz 0.11.6 → 0.11.8
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 +20 -0
- package/README.md +6 -1
- package/install/install.mjs +92 -58
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,26 @@ 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.8] - 2026-10-23
|
|
9
|
+
|
|
10
|
+
### Removed
|
|
11
|
+
|
|
12
|
+
- **Support Linux et macOS retire** - Novahiz ne supporte plus que Windows.
|
|
13
|
+
L'installation et les MCP ne sont plus testes ni documentes pour Linux ni
|
|
14
|
+
macOS. La section d'installation du README ne couvre plus que Windows.
|
|
15
|
+
|
|
16
|
+
## [0.11.7] - 2026-10-23
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **MCP Novahiz ne fonctionnent pas sur Linux** - OpenCode (en mode GUI/Desktop) ne
|
|
21
|
+
n'hérite pas du PATH du shell, donc `node` seul ne se résolvait pas pour les MCP
|
|
22
|
+
locaux (`novahiz-core`, `novahiz-gate`, `novahiz-docs`, `novahiz-search`,
|
|
23
|
+
`novahiz-scheduler`, `novahiz-scan`). L'installateur utilise maintenant le chemin
|
|
24
|
+
absolu de `node` (`process.execPath`) et propage le `PATH` de l'installateur via
|
|
25
|
+
`environment` à chaque MCP. Le MCP `dart` est omis si le Dart SDK n'est pas
|
|
26
|
+
présent (`which dart` / `where dart`).
|
|
27
|
+
|
|
8
28
|
## [0.11.6] - 2026-10-23
|
|
9
29
|
|
|
10
30
|
### 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.7** — `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,13 @@
|
|
|
43
43
|
|
|
44
44
|
### Option 1 — npm (recommandé)
|
|
45
45
|
|
|
46
|
+
#### Windows
|
|
47
|
+
|
|
48
|
+
Sur Windows, aucune configuration préalable n'est nécessaire :
|
|
49
|
+
|
|
46
50
|
```bash
|
|
47
51
|
npm install -g novahiz
|
|
52
|
+
novahiz setup
|
|
48
53
|
novahiz doctor
|
|
49
54
|
```
|
|
50
55
|
|
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
|
},
|