|
6 | 6 | ClineCodeSnippetExtractor,
|
7 | 7 | CodeSnippetExtractor,
|
8 | 8 | DefaultCodeSnippetExtractor,
|
| 9 | + KoduCodeSnippetExtractor, |
9 | 10 | OpenInterpreterCodeSnippetExtractor,
|
10 | 11 | )
|
11 | 12 |
|
@@ -39,6 +40,19 @@ def _extract_from_user_messages(self, data: dict) -> set[str]:
|
39 | 40 | filenames.extend(extracted_snippets.keys())
|
40 | 41 | return set(filenames)
|
41 | 42 |
|
| 43 | + def _extract_from_list_user_messages(self, data: dict) -> set[str]: |
| 44 | + filenames: List[str] = [] |
| 45 | + for msg in data.get("messages", []): |
| 46 | + if msg.get("role", "") == "user": |
| 47 | + msgs_content = msg.get("content", []) |
| 48 | + for msg_content in msgs_content: |
| 49 | + if msg_content.get("type", "") == "text": |
| 50 | + extracted_snippets = self._snippet_extractor.extract_unique_snippets( |
| 51 | + msg_content.get("text") |
| 52 | + ) |
| 53 | + filenames.extend(extracted_snippets.keys()) |
| 54 | + return set(filenames) |
| 55 | + |
42 | 56 | @abstractmethod
|
43 | 57 | def extract_unique_filenames(self, data: dict) -> set[str]:
|
44 | 58 | """
|
@@ -70,27 +84,8 @@ class ClineBodySnippetExtractor(BodyCodeSnippetExtractor):
|
70 | 84 | def __init__(self):
|
71 | 85 | self._snippet_extractor = ClineCodeSnippetExtractor()
|
72 | 86 |
|
73 |
| - def _extract_from_user_messages(self, data: dict) -> set[str]: |
74 |
| - """ |
75 |
| - The method extracts the code snippets from the user messages in the data got from Cline. |
76 |
| -
|
77 |
| - It returns a set of filenames extracted from the code snippets. |
78 |
| - """ |
79 |
| - |
80 |
| - filenames: List[str] = [] |
81 |
| - for msg in data.get("messages", []): |
82 |
| - if msg.get("role", "") == "user": |
83 |
| - msgs_content = msg.get("content", []) |
84 |
| - for msg_content in msgs_content: |
85 |
| - if msg_content.get("type", "") == "text": |
86 |
| - extracted_snippets = self._snippet_extractor.extract_unique_snippets( |
87 |
| - msg_content.get("text") |
88 |
| - ) |
89 |
| - filenames.extend(extracted_snippets.keys()) |
90 |
| - return set(filenames) |
91 |
| - |
92 | 87 | def extract_unique_filenames(self, data: dict) -> set[str]:
|
93 |
| - return self._extract_from_user_messages(data) |
| 88 | + return self._extract_from_list_user_messages(data) |
94 | 89 |
|
95 | 90 |
|
96 | 91 | class OpenInterpreterBodySnippetExtractor(BodyCodeSnippetExtractor):
|
@@ -136,3 +131,12 @@ def extract_unique_filenames(self, data: dict) -> set[str]:
|
136 | 131 | )
|
137 | 132 | filenames.extend(extracted_snippets.keys())
|
138 | 133 | return set(filenames)
|
| 134 | + |
| 135 | + |
| 136 | +class KoduBodySnippetExtractor(BodyCodeSnippetExtractor): |
| 137 | + |
| 138 | + def __init__(self): |
| 139 | + self._snippet_extractor = KoduCodeSnippetExtractor() |
| 140 | + |
| 141 | + def extract_unique_filenames(self, data: dict) -> set[str]: |
| 142 | + return self._extract_from_list_user_messages(data) |
0 commit comments