Skip to content

Commit 2860948

Browse files
committed
chore: initialize Claude Coder project
Zainicjalizuj codemcp dla C:/Users/karol/.kodu/claude-coder ```git-revs 59cf6510 (Base revision) 52b23403 Utworzenie adaptera narzędzi Roo dla Claude Coder aadfb951 Utworzenie parsera XML dla poleceń narzędzi w formacie Roo 633f8b44 Utworzenie menedżera narzędzi do integracji Claude Coder z interfejsem Roo e2e3154f Dodanie importu menedżera narzędzi Roo 09ddafd6 Utworzenie modułu integracji z Roo Code 1e73833c Dodanie importu integracji Roo e8300879 Dodanie właściwości rooIntegration do klasy ExtensionProvider ba055079 Dodanie importów dla modułów związanych z filozofią Roo Code d84600a5 Utworzenie menedżera trybów Roo 524f116a Dodanie inicjalizacji menedżera trybów Roo w funkcji activate HEAD Dodanie importów menedżera narzędzi i trybów Roo ``` codemcp-id: 4-chore-initialize-claude-coder-project
1 parent 18b0994 commit 2860948

File tree

7 files changed

+1212
-1
lines changed

7 files changed

+1212
-1
lines changed
Lines changed: 263 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,263 @@
1+
/**
2+
* @fileoverview Menedżer trybów w stylu Roo dla Claude Coder
3+
* Zarządza różnymi trybami pracy asystenta podobnie jak w Roo Code,
4+
* dostosowując zachowanie i dostępne narzędzia do aktualnego kontekstu.
5+
*/
6+
7+
import { RooToolsManager } from "../tools/roo-tools-manager";
8+
import { EventEmitter } from "events";
9+
10+
/**
11+
* Dostępne tryby pracy asystenta
12+
*/
13+
export enum RooMode {
14+
CODE = "code",
15+
ARCHITECT = "architect",
16+
ASK = "ask",
17+
DEBUG = "debug"
18+
}
19+
20+
/**
21+
* Interfejs opcji trybu
22+
*/
23+
export interface RooModeOptions {
24+
/** Nazwa trybu */
25+
name: string;
26+
/** Krótki opis trybu */
27+
description: string;
28+
/** Ikona dla trybu */
29+
icon: string;
30+
/** Pełna instrukcja systemowa dla trybu */
31+
systemPrompt: string;
32+
/** Domyślne narzędzia dostępne w trybie */
33+
availableTools: string[];
34+
}
35+
36+
/**
37+
* Klasa zarządzająca trybami Roo
38+
*/
39+
export class RooModeManager extends EventEmitter {
40+
/** Aktualnie wybrany tryb */
41+
private currentMode: RooMode = RooMode.CODE;
42+
/** Referencja do menedżera narzędzi */
43+
private toolsManager: RooToolsManager;
44+
/** Definicje trybów */
45+
private modes: Map<RooMode, RooModeOptions> = new Map();
46+
47+
/**
48+
* Konstruktor klasy RooModeManager
49+
* @param toolsManager Menedżer narzędzi
50+
*/
51+
constructor(toolsManager: RooToolsManager) {
52+
super();
53+
this.toolsManager = toolsManager;
54+
this.initModes();
55+
}
56+
57+
/**
58+
* Inicjalizuje dostępne tryby pracy z domyślnymi wartościami
59+
*/
60+
private initModes(): void {
61+
// Tryb CODE - programowanie
62+
this.modes.set(RooMode.CODE, {
63+
name: "Code",
64+
description: "Asystent programisty, expert w wielu językach i frameworkach",
65+
icon: "code",
66+
systemPrompt: `Jesteś Claude Coder, wysoko wykwalifikowanym inżynierem oprogramowania z rozległą wiedzą na temat wielu języków programowania, frameworków, wzorców projektowych i najlepszych praktyk. Twoim celem jest pomoc użytkownikowi w tworzeniu, debugowaniu i optymalizacji kodu.
67+
68+
Podczas pracy:
69+
1. Analizuj problemy krok po kroku i rozdzielaj je na mniejsze zadania
70+
2. Zawsze korzystaj z najlepszych praktyk dla danego języka/frameworka
71+
3. Gdy napotykasz problemy, wyjaśnij je jasno i proponuj rozwiązania
72+
4. Wykorzystuj dostępne narzędzia (odczyt/zapis plików, wykonywanie komend)
73+
5. Regularnie pytaj o informacje zwrotne, aby upewnić się, że tworzony kod spełnia oczekiwania
74+
75+
Zadawaj pytania tylko wtedy, gdy są absolutnie niezbędne do realizacji zadania.`,
76+
availableTools: [
77+
"read_file",
78+
"search_files",
79+
"list_files",
80+
"execute_command",
81+
"apply_diff",
82+
"write_to_file",
83+
"list_code_definition_names",
84+
"ask_followup_question",
85+
"attempt_completion"
86+
]
87+
});
88+
89+
// Tryb ARCHITECT - planowanie i architektura
90+
this.modes.set(RooMode.ARCHITECT, {
91+
name: "Architect",
92+
description: "Doświadczony projektant architektury oprogramowania",
93+
icon: "law",
94+
systemPrompt: `Jesteś Claude Architect, doświadczonym projektantem systemów i architektem oprogramowania. Twoim celem jest pomoc użytkownikowi w planowaniu, projektowaniu i dokumentowaniu architektury systemu.
95+
96+
Podczas pracy:
97+
1. Zadawaj dociekliwe pytania, aby lepiej zrozumieć wymagania
98+
2. Dziel projekty na logiczne komponenty i warstwy
99+
3. Proponuj wzorce architektoniczne odpowiednie dla kontekstu
100+
4. Twórz jasną i zwięzłą dokumentację projektową
101+
5. Myśl o skalowalności, bezpieczeństwie i wydajności od początku
102+
103+
Na tym etapie unikaj pisania szczegółowego kodu - skup się na strukturze wysokiego poziomu i dokumentacji.`,
104+
availableTools: [
105+
"read_file",
106+
"list_files",
107+
"search_files",
108+
"write_to_file",
109+
"ask_followup_question",
110+
"attempt_completion"
111+
]
112+
});
113+
114+
// Tryb ASK - pytania i odpowiedzi
115+
this.modes.set(RooMode.ASK, {
116+
name: "Ask",
117+
description: "Asystent techniczny odpowiadający na pytania",
118+
icon: "question",
119+
systemPrompt: `Jesteś Claude Ask, kompetentnym asystentem technicznym skoncentrowanym na odpowiadaniu na pytania i dostarczaniu informacji o rozwoju oprogramowania, technologiach i powiązanych tematach.
120+
121+
Podczas pracy:
122+
1. Odpowiadaj zwięźle i precyzyjnie na pytania użytkownika
123+
2. Wyjaśniaj koncepcje techniczne w sposób przystępny
124+
3. Używaj przykładów, gdy są pomocne w zrozumieniu
125+
4. Informuj o najlepszych praktykach i standardach branżowych
126+
5. Przyznawaj się do ograniczeń swojej wiedzy, gdy nie jesteś pewien
127+
128+
Skup się na dostarczaniu użytecznych informacji, a nie na wykonywaniu zadań.`,
129+
availableTools: [
130+
"read_file",
131+
"search_files",
132+
"list_files",
133+
"ask_followup_question",
134+
"attempt_completion"
135+
]
136+
});
137+
138+
// Tryb DEBUG - debugowanie
139+
this.modes.set(RooMode.DEBUG, {
140+
name: "Debug",
141+
description: "Ekspert debugowania rozwiązujący problemy w kodzie",
142+
icon: "bug",
143+
systemPrompt: `Jesteś Claude Debug, ekspertem w systematycznym diagnozowaniu i rozwiązywaniu problemów w kodzie. Twoim celem jest pomoc użytkownikowi w identyfikowaniu i naprawianiu błędów.
144+
145+
Podczas pracy:
146+
1. Systematycznie analizuj problemy, szukając głównych przyczyn
147+
2. Wyjaśniaj dokładnie, co powoduje błąd i jak go naprawić
148+
3. Proponuj rozwiązania oparte na najlepszych praktykach
149+
4. Pomagaj w testowaniu i weryfikacji napraw
150+
5. Sugeruj usprawnienia, które zapobiegną podobnym problemom w przyszłości
151+
152+
Skupiaj się na rozwiązywaniu konkretnych problemów i błędów w istniejącym kodzie.`,
153+
availableTools: [
154+
"read_file",
155+
"search_files",
156+
"list_files",
157+
"execute_command",
158+
"apply_diff",
159+
"list_code_definition_names",
160+
"ask_followup_question",
161+
"attempt_completion"
162+
]
163+
});
164+
}
165+
166+
/**
167+
* Przełącza na wybrany tryb pracy
168+
* @param mode Tryb do aktywacji
169+
* @returns Opcje wybranego trybu
170+
*/
171+
public switchMode(mode: RooMode): RooModeOptions {
172+
if (!this.modes.has(mode)) {
173+
throw new Error(`Nieznany tryb: ${mode}`);
174+
}
175+
176+
const previousMode = this.currentMode;
177+
this.currentMode = mode;
178+
179+
// Pobierz opcje trybu
180+
const modeOptions = this.modes.get(mode)!;
181+
182+
// Emituj zdarzenie zmiany trybu
183+
this.emit('modeChanged', {
184+
previousMode,
185+
currentMode: mode,
186+
modeOptions
187+
});
188+
189+
return modeOptions;
190+
}
191+
192+
/**
193+
* Pobiera aktualnie wybrany tryb
194+
* @returns Aktualny tryb
195+
*/
196+
public getCurrentMode(): RooMode {
197+
return this.currentMode;
198+
}
199+
200+
/**
201+
* Pobiera opcje dla aktualnego trybu
202+
* @returns Opcje aktualnego trybu
203+
*/
204+
public getCurrentModeOptions(): RooModeOptions {
205+
return this.modes.get(this.currentMode)!;
206+
}
207+
208+
/**
209+
* Pobiera instrukcję systemową dla aktualnego trybu
210+
* @returns Instrukcja systemowa
211+
*/
212+
public getCurrentSystemPrompt(): string {
213+
return this.modes.get(this.currentMode)!.systemPrompt;
214+
}
215+
216+
/**
217+
* Pobiera wszystkie dostępne tryby
218+
* @returns Lista wszystkich trybów
219+
*/
220+
public getAllModes(): { mode: RooMode; options: RooModeOptions }[] {
221+
return Array.from(this.modes.entries()).map(([mode, options]) => ({
222+
mode,
223+
options
224+
}));
225+
}
226+
227+
/**
228+
* Modyfikuje opcje trybu
229+
* @param mode Tryb do modyfikacji
230+
* @param options Nowe opcje (częściowe)
231+
*/
232+
public updateModeOptions(mode: RooMode, options: Partial<RooModeOptions>): void {
233+
if (!this.modes.has(mode)) {
234+
throw new Error(`Nieznany tryb: ${mode}`);
235+
}
236+
237+
const currentOptions = this.modes.get(mode)!;
238+
this.modes.set(mode, {
239+
...currentOptions,
240+
...options
241+
});
242+
243+
// Emituj zdarzenie aktualizacji trybu
244+
this.emit('modeUpdated', {
245+
mode,
246+
options: this.modes.get(mode)
247+
});
248+
}
249+
250+
/**
251+
* Sprawdza, czy narzędzie jest dostępne w aktualnym trybie
252+
* @param toolName Nazwa narzędzia
253+
* @returns True, jeśli narzędzie jest dostępne
254+
*/
255+
public isToolAvailableInCurrentMode(toolName: string): boolean {
256+
const modeOptions = this.modes.get(this.currentMode);
257+
if (!modeOptions) {
258+
return false;
259+
}
260+
261+
return modeOptions.availableTools.includes(toolName);
262+
}
263+
}

0 commit comments

Comments
 (0)