76 lines
7.1 KiB
Markdown
76 lines
7.1 KiB
Markdown
# LANC1 : guillemets du lanceur HyperAIStudio
|
|
|
|
Lot LANC1, session « Lanceur ». Niveau N1. Skills : sk-protocol, sk-windows-shell, sk-change-safety. Copie `D:\Game\LifePlay-master 5.8`, branche `ue5.8`.
|
|
|
|
Date : 2026-10-12/13. Statut : **lot clos**, sans commit puisque le fichier n'est pas suivi. La correction est **PASS** : le projet s'ouvre. **MCP prêt : prouvé par STE-H10 (a)**, par arbitrage de Big Boss (§ 5). Limite connue : la régénération par le plugin efface la correction (§ 2).
|
|
|
|
## 1. Objet
|
|
`.hyperai\scripts\Start-HyperAIStudioEditor.ps1`, l. 13-14 : le chemin du projet est passé sans guillemets à `Start-Process`. `Start-Process` joint les éléments de `-ArgumentList` par des espaces sans les mettre entre guillemets. L'espace de « LifePlay-master 5.8 » coupe donc l'argument, et l'éditeur s'ouvre sur le navigateur de projets. Constaté par MCPA le 2026-10-11. Correction approuvée par l'utilisateur dans la session MCPA (2026-10-12, MCPA-T1-ESSAI § 6 point 4).
|
|
|
|
## 2. Statut du fichier (établi)
|
|
- **Non suivi par git** : `git ls-files .hyperai/scripts` est vide. `git check-ignore -v` renvoie `.git/info/exclude:12:/.hyperai/`. Le lot n'a donc ni CHG ni ticket au gardien : livrable seul, accepté par Big Boss.
|
|
- **Régénéré par HyperAIStudio** : le plugin écrit ce fichier dans `Plugins\Marketplace\HyperAIStudio\Source\HyperAIStudio\Private\HyperAIStudioService.cpp`.
|
|
- La même ligne sans guillemets s'y trouve, l. 6240-6241.
|
|
- L'écriture passe par `GenerateHelperScripts` (`WriteFileIfChanged`, l. 6471).
|
|
- Trois fonctions l'appellent : `GenerateProjectFiles` (l. 3599, par `GenerateManagedProjectFilesTransactional`), `GenerateManagedProjectFilesTransactional` (l. 6099) et `BuildTerminalLaunchPlanForPrompt` (l. 4461, lancement d'un terminal agent depuis le plugin).
|
|
- **Toute régénération par le plugin efface la correction.** Le plugin est lui aussi hors git (`.git/info/exclude:15:/Plugins/Marketplace/`). Il n'a pas été modifié (hors lot).
|
|
|
|
## 3. Instantané
|
|
Sous `D:\Game\LifePlay_Backup_5.5\LANC1\` :
|
|
- `Start-HyperAIStudioEditor.ps1.avant` : sha256 `b23625c9f8818bc1d551674970f61273862c598cd7cc952f58978178dd54da26`, identique à l'original au moment de la copie.
|
|
- `Start-HyperAIStudioEditor.ps1.apres` : sha256 `dbcf2b1e46b9eb8ad4161fb1df704b8a9056cc44709c795ae83d64f1af3ec74b`.
|
|
|
|
Retour arrière : recopier `.avant` sur `.hyperai\scripts\Start-HyperAIStudioEditor.ps1`.
|
|
|
|
## 4. Correction
|
|
Une seule ligne, la l. 13 :
|
|
```
|
|
< $args = @($ProjectFile, '-ModelContextProtocolStartServer', "-ModelContextProtocolPort=$Port")
|
|
> $args = @("`"$ProjectFile`"", '-ModelContextProtocolStartServer', "-ModelContextProtocolPort=$Port")
|
|
```
|
|
Rien d'autre ne change. La l. 10, recherche du processus par `-like "*$ProjectFile*"`, reste valable avec les guillemets.
|
|
|
|
Mesuré (hors éditeur) :
|
|
- `diff` entre `.avant` et le fichier : 1 ligne (13c13).
|
|
- Analyse syntaxique : `Parser]::ParseFile` → 0 erreur (pwsh 7).
|
|
- Fins de ligne : `tr -cd '\r' | wc -c` → 16, CRLF conservé comme dans l'original.
|
|
- Argument joint : `"D:/Game/LifePlay-master 5.8/LifePlay.uproject" -ModelContextProtocolStartServer -ModelContextProtocolPort=8000`.
|
|
|
|
## 5. Essai de lancement
|
|
En attente du GO de Big Boss. Plan approuvé :
|
|
1. Lancer le script corrigé.
|
|
2. Relever la ligne de commande du processus `UnrealEditor.exe` et le projet chargé.
|
|
3. Vérifier que `Wait-HyperAIStudioMCP.ps1` donne PASS.
|
|
4. Fermer l'éditeur sans rien sauvegarder (TopRight, Person et GI sont gelés).
|
|
5. Envoyer le BUILD-FIN avec `Tools\CopieEtat.ps1 -Lot LANC1`.
|
|
|
|
### Résultat (BUILD-GO de Big Boss, nuit du 2026-10-12 au 13)
|
|
- **Avant** : `CopieEtat -Lot LANC1 -Assets …` donne proc=0, modifies=0. Empreintes MD5 : GI `FE4406A0…`, Person `D1B4C63D…`, TopRight `1FCB94A6…`, conformes à l'attendu. L'alerte GIT porte sur 17 fichiers de l'addon `Plugins/LPSandbox` (13 M, 4 ??) : elle est antérieure à l'essai et vient d'autres lots.
|
|
- **Lancement** : `Start-HyperAIStudioEditor.ps1 -TimeoutSeconds 400`.
|
|
- **Ligne de commande du processus (PASS, établi)** : `"…\UnrealEditor.exe" "D:/Game/LifePlay-master 5.8/LifePlay.uproject" -ModelContextProtocolStartServer -ModelContextProtocolPort=8000`. Le chemin arrive entier, entre guillemets.
|
|
- **Projet chargé (PASS, établi)** : `Saved\Logs\LifePlay.log` contient `Running engine for game: LifePlay`. Le plugin ModelContextProtocol est monté et le port 127.0.0.1:8000 écoute, tenu par le processus de l'éditeur. Il n'y a plus de navigateur de projets.
|
|
- **MCP prêt (NON PROUVÉ)** : `Wait-HyperAIStudioMCP` sort en code 1 après 401 s.
|
|
- Cause : la fenêtre de l'éditeur est la boîte modale **« Restaurer les paquets »**, qui bloque le fil de jeu.
|
|
- Paquet proposé : `/Game/BPs/GI`, depuis `Saved\Autosaves\Game\BPs\GI_Auto2.uasset` du 2026-10-11 à 07:43, selon `PackageRestoreData.json`.
|
|
- Cette cause est sans lien avec la correction.
|
|
- **Boîte non touchée.** Restaurer modifierait GI, qui est gelé. Ignorer effacerait des données de reprise qui ne sont pas à LANC1. Décision laissée à Big Boss et à l'utilisateur.
|
|
- **Fermeture** : `Stop-Process` sur le processus de l'éditeur, sans sauvegarde.
|
|
- **Après** : proc=0, modifies=0, empreintes MD5 inchangées (identiques à l'avant). `PackageRestoreData.json` (2026-10-11 07:43, 352 o) et les `GI_Auto1/2.uasset` sont inchangés.
|
|
|
|
Verdict : la correction est **PASS** (le projet s'ouvre). L'essai du MCP prêt reste **bloqué** par la boîte de restauration de GI.
|
|
|
|
### Arbitrage de Big Boss (BUILD-FIN acceptée)
|
|
- Origine des fichiers d'autosave de GI : l'écriture interrompue de STE.
|
|
- Suite : STE déplace ces fichiers en sauvegarde, puis lance l'éditeur par ce lanceur corrigé.
|
|
- **MCP prêt : prouvé par STE-H10 (a).** La ligne « MCP prêt » de STE tient lieu de fin de cet essai, et LANC1 ne le rejoue pas. Au moment de la clôture de LANC1, cette ligne n'est pas encore écrite : la preuve est déléguée à STE-H10 (a).
|
|
- **Limite connue** : HyperAIStudio régénère ce script (`HyperAIStudioService.cpp` l. 6240-6241, `GenerateHelperScripts`), et toute régénération efface la correction (§ 2 et § 6).
|
|
|
|
## 6. Suites hors lot
|
|
- Données de reprise de GI (`Saved\Autosaves\PackageRestoreData.json`, `GI_Auto1/2.uasset`, 2026-10-11 07:32 et 07:43). Elles font apparaître la boîte « Restaurer les paquets » à chaque ouverture interactive de l'éditeur, ce qui bloque le MCP. Trois issues :
|
|
- restaurer (GI change : interdit pendant le gel) ;
|
|
- ignorer (les données de reprise sont perdues) ;
|
|
- mettre ces fichiers de côté par instantané avant d'ignorer.
|
|
|
|
Tranché par Big Boss : STE met ces fichiers en sauvegarde (voir § 5, Arbitrage).
|
|
- Source du plugin (`HyperAIStudioService.cpp` l. 6240) : la correction du script sera perdue à la prochaine régénération. **Décision de l'utilisateur (2026-10-13) : « garde la commande headless ».** La commande headless de `lp-mcp` § 2 reste la voie officielle et le plugin n'est pas corrigé. Le lanceur corrigé reste en place comme voie d'appoint, sans garantie qu'il survive à une régénération.
|
|
- Le script assigne la variable automatique `$args` (l. 13-14). Cela fonctionne, mais c'est une mauvaise pratique PowerShell. Non corrigé (correction minimale demandée).
|