|
6 | 6 | "fmt" |
7 | 7 | "io" |
8 | 8 | "net/http" |
9 | | - "strings" |
10 | 9 | "paperdebugger/internal/libs/db" |
11 | 10 | "paperdebugger/internal/services" |
12 | 11 | "paperdebugger/internal/services/toolkit/registry" |
@@ -55,10 +54,10 @@ func (loader *XtraMCPLoader) LoadToolsFromBackend(toolRegistry *registry.ToolReg |
55 | 54 | // Register each tool dynamically, passing the session ID |
56 | 55 | for _, toolSchema := range toolSchemas { |
57 | 56 | dynamicTool := NewDynamicTool(loader.db, loader.projectService, toolSchema, loader.baseURL, loader.sessionID) |
58 | | - |
| 57 | + |
59 | 58 | // Register the tool with the registry |
60 | 59 | toolRegistry.Register(toolSchema.Name, dynamicTool.Description, dynamicTool.Call) |
61 | | - |
| 60 | + |
62 | 61 | fmt.Printf("Registered dynamic tool: %s\n", toolSchema.Name) |
63 | 62 | } |
64 | 63 |
|
@@ -196,18 +195,9 @@ func (loader *XtraMCPLoader) fetchAvailableTools() ([]ToolSchema, error) { |
196 | 195 | return nil, fmt.Errorf("failed to read response body: %w", err) |
197 | 196 | } |
198 | 197 |
|
199 | | - // Parse SSE format - extract JSON from "data: " lines |
200 | | - lines := strings.Split(string(bodyBytes), "\n") |
201 | | - var extractedJSON string |
202 | | - for _, line := range lines { |
203 | | - if strings.HasPrefix(line, "data: ") { |
204 | | - extractedJSON = strings.TrimPrefix(line, "data: ") |
205 | | - break |
206 | | - } |
207 | | - } |
208 | | - |
209 | | - if extractedJSON == "" { |
210 | | - return nil, fmt.Errorf("no data line found in SSE response") |
| 198 | + extractedJSON, err := parseSSEResponse(bodyBytes) |
| 199 | + if err != nil { |
| 200 | + return nil, fmt.Errorf("failed to parse SSE response: %w", err) |
211 | 201 | } |
212 | 202 |
|
213 | 203 | // Parse the extracted JSON |
|
0 commit comments