@@ -76,7 +76,7 @@ public function handle(CodeEnvironmentsDetector $codeEnvironmentsDetector, Herd
7676 $ this ->outro ();
7777 }
7878
79- private function bootstrap (CodeEnvironmentsDetector $ codeEnvironmentsDetector , Herd $ herd , Terminal $ terminal ): void
79+ protected function bootstrap (CodeEnvironmentsDetector $ codeEnvironmentsDetector , Herd $ herd , Terminal $ terminal ): void
8080 {
8181 $ this ->codeEnvironmentsDetector = $ codeEnvironmentsDetector ;
8282 $ this ->herd = $ herd ;
@@ -93,14 +93,14 @@ private function bootstrap(CodeEnvironmentsDetector $codeEnvironmentsDetector, H
9393 $ this ->projectName = config ('app.name ' );
9494 }
9595
96- private function displayBoostHeader (): void
96+ protected function displayBoostHeader (): void
9797 {
9898 note ($ this ->boostLogo ());
9999 intro ('✦ Laravel Boost :: Install :: We Must Ship ✦ ' );
100100 note ("Let's give {$ this ->bgYellow ($ this ->black ($ this ->bold ($ this ->projectName )))} a Boost " );
101101 }
102102
103- private function boostLogo (): string
103+ protected function boostLogo (): string
104104 {
105105 return
106106 <<<'HEADER'
@@ -113,21 +113,21 @@ private function boostLogo(): string
113113 HEADER;
114114 }
115115
116- private function discoverEnvironment (): void
116+ protected function discoverEnvironment (): void
117117 {
118118 $ this ->systemInstalledCodeEnvironments = $ this ->codeEnvironmentsDetector ->discoverSystemInstalledCodeEnvironments ();
119119 $ this ->projectInstalledCodeEnvironments = $ this ->codeEnvironmentsDetector ->discoverProjectInstalledCodeEnvironments (base_path ());
120120 }
121121
122- private function collectInstallationPreferences (): void
122+ protected function collectInstallationPreferences (): void
123123 {
124124 $ this ->selectedBoostFeatures = $ this ->selectBoostFeatures ();
125125 $ this ->selectedTargetMcpClient = $ this ->selectTargetMcpClients ();
126126 $ this ->selectedTargetAgents = $ this ->selectTargetAgents ();
127127 $ this ->enforceTests = $ this ->determineTestEnforcement (ask: false );
128128 }
129129
130- private function performInstallation (): void
130+ protected function performInstallation (): void
131131 {
132132 $ this ->installGuidelines ();
133133
@@ -138,7 +138,7 @@ private function performInstallation(): void
138138 }
139139 }
140140
141- private function discoverTools (): array
141+ protected function discoverTools (): array
142142 {
143143 $ tools = [];
144144 $ toolDir = implode (DIRECTORY_SEPARATOR , [__DIR__ , '.. ' , 'Mcp ' , 'Tools ' ]);
@@ -159,7 +159,7 @@ private function discoverTools(): array
159159 return $ tools ;
160160 }
161161
162- private function outro (): void
162+ protected function outro (): void
163163 {
164164 $ label = 'https://boost.laravel.com/installed ' ;
165165
@@ -189,7 +189,7 @@ private function outro(): void
189189 echo $ this ->black ($ this ->bold ($ text .$ link )).$ this ->reset (PHP_EOL ).$ this ->reset (PHP_EOL );
190190 }
191191
192- private function hyperlink (string $ label , string $ url ): string
192+ protected function hyperlink (string $ label , string $ url ): string
193193 {
194194 return "\033]8;; {$ url }\007{$ label }\033]8;; \033\\" ;
195195 }
@@ -230,7 +230,7 @@ protected function determineTestEnforcement(bool $ask = true): bool
230230 /**
231231 * @return Collection<int, string>
232232 */
233- private function selectBoostFeatures (): Collection
233+ protected function selectBoostFeatures (): Collection
234234 {
235235 $ defaultInstallOptions = ['mcp_server ' , 'ai_guidelines ' ];
236236 $ installOptions = [
@@ -272,7 +272,7 @@ protected function boostToolsToDisable(): array
272272 /**
273273 * @return Collection<int, CodeEnvironment>
274274 */
275- private function selectTargetMcpClients (): Collection
275+ protected function selectTargetMcpClients (): Collection
276276 {
277277 if (! $ this ->shouldInstallMcp () && ! $ this ->shouldInstallHerdMcp ()) {
278278 return collect ();
@@ -287,7 +287,7 @@ private function selectTargetMcpClients(): Collection
287287 /**
288288 * @return Collection<int, CodeEnvironment>
289289 */
290- private function selectTargetAgents (): Collection
290+ protected function selectTargetAgents (): Collection
291291 {
292292 if (! $ this ->shouldInstallAiGuidelines ()) {
293293 return collect ();
@@ -304,7 +304,7 @@ private function selectTargetAgents(): Collection
304304 *
305305 * @return array{scroll: int, required: bool, displayMethod: string}
306306 */
307- private function getSelectionConfig (string $ contractClass ): array
307+ protected function getSelectionConfig (string $ contractClass ): array
308308 {
309309 return match ($ contractClass ) {
310310 Agent::class => ['scroll ' => 5 , 'required ' => false , 'displayMethod ' => 'agentName ' ],
@@ -316,7 +316,7 @@ private function getSelectionConfig(string $contractClass): array
316316 /**
317317 * @return Collection<int, CodeEnvironment>
318318 */
319- private function selectCodeEnvironments (string $ contractClass , string $ label ): Collection
319+ protected function selectCodeEnvironments (string $ contractClass , string $ label ): Collection
320320 {
321321 $ allEnvironments = $ this ->codeEnvironmentsDetector ->getCodeEnvironments ();
322322 $ config = $ this ->getSelectionConfig ($ contractClass );
@@ -366,7 +366,7 @@ private function selectCodeEnvironments(string $contractClass, string $label): C
366366 return $ selectedClasses ->map (fn ($ className ) => $ availableEnvironments ->first (fn ($ env ): bool => $ env ::class === $ className ));
367367 }
368368
369- private function installGuidelines (): void
369+ protected function installGuidelines (): void
370370 {
371371 if (! $ this ->shouldInstallAiGuidelines ()) {
372372 return ;
@@ -434,27 +434,27 @@ private function installGuidelines(): void
434434 }
435435 }
436436
437- private function shouldInstallAiGuidelines (): bool
437+ protected function shouldInstallAiGuidelines (): bool
438438 {
439439 return $ this ->selectedBoostFeatures ->contains ('ai_guidelines ' );
440440 }
441441
442- private function shouldInstallStyleGuidelines (): bool
442+ protected function shouldInstallStyleGuidelines (): bool
443443 {
444444 return false ;
445445 }
446446
447- private function shouldInstallMcp (): bool
447+ protected function shouldInstallMcp (): bool
448448 {
449449 return $ this ->selectedBoostFeatures ->contains ('mcp_server ' );
450450 }
451451
452- private function shouldInstallHerdMcp (): bool
452+ protected function shouldInstallHerdMcp (): bool
453453 {
454454 return $ this ->selectedBoostFeatures ->contains ('herd_mcp ' );
455455 }
456456
457- private function installMcpServerConfig (): void
457+ protected function installMcpServerConfig (): void
458458 {
459459 if (! $ this ->shouldInstallMcp () && ! $ this ->shouldInstallHerdMcp ()) {
460460 return ;
@@ -556,7 +556,7 @@ private function installMcpServerConfig(): void
556556 /**
557557 * Is the project actually using localization for their new features?
558558 */
559- private function detectLocalization (): bool
559+ protected function detectLocalization (): bool
560560 {
561561 $ actuallyUsing = false ;
562562
0 commit comments