Integrate-with-supabase-backend

This commit is contained in:
Harshavardhan Musanalli
2025-10-28 07:53:14 +01:00
parent 8832450a1f
commit 8328f8d5b3
6 changed files with 267 additions and 55 deletions

View File

@@ -130,7 +130,6 @@ func (w *WebSocketClient) Start() error {
// Stop closes the WebSocket connection
func (c *WebSocketClient) Stop() {
fmt.Println("🛑 Stopping WebSocket client...")
c.cancel()
if c.conn != nil {
c.conn.Close()
@@ -313,8 +312,6 @@ func (c *WebSocketClient) handleInvestigationTask(data interface{}) {
// executeDiagnosticCommands executes the commands from a diagnostic response
func (c *WebSocketClient) executeDiagnosticCommands(diagnosticPayload map[string]interface{}) (map[string]interface{}, error) {
fmt.Println("🔧 Executing diagnostic commands...")
results := map[string]interface{}{
"agent_id": c.agentID,
"execution_time": time.Now().UTC().Format(time.RFC3339),
@@ -360,8 +357,6 @@ func (c *WebSocketClient) executeDiagnosticCommands(diagnosticPayload map[string
if err != nil {
result["error"] = err.Error()
fmt.Printf("❌ Command [%s] failed: %v (exit code: %d)\n", id, err, exitCode)
} else {
// Command completed successfully - output captured
}
commandResults = append(commandResults, result)
@@ -374,17 +369,11 @@ func (c *WebSocketClient) executeDiagnosticCommands(diagnosticPayload map[string
// Execute eBPF programs if present
ebpfPrograms, hasEBPF := diagnosticPayload["ebpf_programs"].([]interface{})
if hasEBPF && len(ebpfPrograms) > 0 {
fmt.Printf("🔬 Executing %d eBPF programs...\n", len(ebpfPrograms))
ebpfResults := c.executeEBPFPrograms(ebpfPrograms)
results["ebpf_results"] = ebpfResults
results["total_ebpf_programs"] = len(ebpfPrograms)
} else {
fmt.Printf(" No eBPF programs in diagnostic payload\n")
}
fmt.Printf("✅ Executed %d commands, %d successful\n",
results["total_commands"], results["successful_commands"])
return results, nil
}
@@ -455,8 +444,6 @@ func (c *WebSocketClient) executeCommandsFromPayload(commands []interface{}) []m
if err != nil {
result["error"] = err.Error()
fmt.Printf("❌ Command [%s] failed: %v (exit code: %d)\n", id, err, exitCode)
} else {
fmt.Printf("✅ Command [%s] completed successfully\n", id)
}
commandResults = append(commandResults, result)
@@ -657,14 +644,10 @@ func (c *WebSocketClient) handlePendingInvestigation(investigation PendingInvest
},
}
fmt.Printf("🔄 Sending command results to TensorZero for continued analysis...\n")
fmt.Printf("📤 Command results payload size: %d bytes\n", len(commandsJSON))
// Use the episode ID from the investigation to maintain conversation continuity
episodeID := ""
if investigation.EpisodeID != nil {
episodeID = *investigation.EpisodeID
fmt.Printf("🔗 Using episode ID: %s\n", episodeID)
}
// Continue conversation until resolution (same as agent)
@@ -678,8 +661,6 @@ func (c *WebSocketClient) handlePendingInvestigation(investigation PendingInvest
return
}
fmt.Printf("✅ TensorZero responded successfully\n")
if len(tzResp.Choices) == 0 {
fmt.Printf("⚠️ No choices in TensorZero response\n")
c.updateInvestigationStatus(investigation.ID, "completed", resultsForDB, nil)
@@ -688,7 +669,7 @@ func (c *WebSocketClient) handlePendingInvestigation(investigation PendingInvest
aiContent := tzResp.Choices[0].Message.Content
if len(aiContent) > 300 {
fmt.Printf("🤖 AI Response preview: %s...\n", aiContent[:300])
// AI response received successfully
} else {
fmt.Printf("🤖 AI Response: %s\n", aiContent)
}
@@ -705,7 +686,6 @@ func (c *WebSocketClient) handlePendingInvestigation(investigation PendingInvest
if err := json.Unmarshal([]byte(aiContent), &resolutionResp); err == nil && resolutionResp.ResponseType == "resolution" {
// This is the final resolution - show summary and complete
fmt.Printf("✅ Detected RESOLUTION response - completing investigation\n")
fmt.Printf("\n=== DIAGNOSIS COMPLETE ===\n")
fmt.Printf("Root Cause: %s\n", resolutionResp.RootCause)
fmt.Printf("Resolution Plan: %s\n", resolutionResp.ResolutionPlan)
@@ -722,7 +702,6 @@ func (c *WebSocketClient) handlePendingInvestigation(investigation PendingInvest
}
if err := json.Unmarshal([]byte(aiContent), &diagnosticResp); err == nil && diagnosticResp.ResponseType == "diagnostic" {
fmt.Printf("✅ Detected DIAGNOSTIC response - continuing conversation\n")
fmt.Printf("🔄 AI requested additional diagnostics, executing...\n")
// Execute additional commands if any
@@ -738,7 +717,6 @@ func (c *WebSocketClient) handlePendingInvestigation(investigation PendingInvest
// Execute additional eBPF programs if any
if len(diagnosticResp.EBPFPrograms) > 0 {
fmt.Printf("🔬 Executing %d additional eBPF programs...\n", len(diagnosticResp.EBPFPrograms))
ebpfResults := c.executeEBPFPrograms(diagnosticResp.EBPFPrograms)
additionalResults["ebpf_results"] = ebpfResults
}
@@ -766,9 +744,7 @@ func (c *WebSocketClient) handlePendingInvestigation(investigation PendingInvest
// Attach final AI response to results for DB and mark as completed_with_analysis
resultsForDB["ai_response"] = finalAIContent
fmt.Printf("💾 Updating database with results and AI analysis...\n")
c.updateInvestigationStatus(investigation.ID, "completed_with_analysis", resultsForDB, nil)
fmt.Printf("✅ Investigation completed with AI analysis\n")
}
// updateInvestigationStatus updates the status of a pending investigation