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

@@ -128,13 +128,10 @@ func (a *LinuxDiagnosticAgent) DiagnoseIssue(issue string) error {
if len(diagnosticResp.Commands) > 0 {
fmt.Printf("🔧 Executing diagnostic commands...\n")
for _, cmd := range diagnosticResp.Commands {
fmt.Printf("⚙️ Executing command '%s': %s\n", cmd.ID, cmd.Command)
result := a.executor.Execute(cmd)
commandResults = append(commandResults, result)
if result.ExitCode == 0 {
fmt.Printf("✅ Command '%s' completed successfully\n", cmd.ID)
} else {
if result.ExitCode != 0 {
fmt.Printf("❌ Command '%s' failed with exit code %d\n", cmd.ID, result.ExitCode)
}
}
@@ -143,7 +140,6 @@ func (a *LinuxDiagnosticAgent) DiagnoseIssue(issue string) error {
// Execute eBPF programs if present
var ebpfResults []map[string]interface{}
if len(diagnosticResp.EBPFPrograms) > 0 {
fmt.Printf("🔬 Executing %d eBPF programs...\n", len(diagnosticResp.EBPFPrograms))
ebpfResults = a.executeEBPFPrograms(diagnosticResp.EBPFPrograms)
}
@@ -170,15 +166,6 @@ func (a *LinuxDiagnosticAgent) DiagnoseIssue(issue string) error {
evidenceSummary = append(evidenceSummary, summaryStr)
}
allResults["ebpf_evidence_summary"] = evidenceSummary
fmt.Printf("<22> Sending eBPF monitoring data to TensorZero:\n")
for _, summary := range evidenceSummary {
fmt.Printf(" - %s\n", summary)
}
fmt.Printf("✅ Executed %d commands, %d eBPF programs\n", len(commandResults), len(ebpfResults))
} else {
fmt.Printf("✅ Executed %d commands\n", len(commandResults))
}
resultsJSON, err := json.MarshalIndent(allResults, "", " ")
@@ -227,7 +214,7 @@ func (a *LinuxDiagnosticAgent) executeEBPFPrograms(ebpfPrograms []EBPFRequest) [
}
for _, prog := range ebpfPrograms {
fmt.Printf("🔬 Starting eBPF program [%s]: %s -> %s (%ds)\n", prog.Name, prog.Type, prog.Target, int(prog.Duration))
// eBPF program starting - only show in debug mode
// Actually start the eBPF program using the real manager
programID, err := a.ebpfManager.StartEBPFProgram(prog)
@@ -248,16 +235,11 @@ func (a *LinuxDiagnosticAgent) executeEBPFPrograms(ebpfPrograms []EBPFRequest) [
}
// Let the eBPF program run for the specified duration
fmt.Printf("⏰ Waiting %d seconds for eBPF program to collect data...\n", int(prog.Duration))
time.Sleep(time.Duration(prog.Duration) * time.Second)
// Give the collectEvents goroutine a moment to finish and store results
fmt.Printf("⏳ Allowing program to complete data collection...\n")
time.Sleep(500 * time.Millisecond)
// Get the results (should be in completedResults now)
fmt.Printf("📊 Getting results for eBPF program [%s]...\n", prog.Name)
// Use a channel to implement timeout for GetProgramResults
type resultPair struct {
trace *EBPFTrace
@@ -282,11 +264,9 @@ func (a *LinuxDiagnosticAgent) executeEBPFPrograms(ebpfPrograms []EBPFRequest) [
}
// Try to stop the program (may already be stopped by collectEvents)
fmt.Printf("🛑 Stopping eBPF program [%s]...\n", prog.Name)
stopErr := a.ebpfManager.StopProgram(programID)
if stopErr != nil {
fmt.Printf("⚠️ eBPF program [%s] cleanup: %v (may have already completed)\n", prog.Name, stopErr)
// Don't return here, we still want to process results if we got them
// Only show warning in debug mode - this is normal for completed programs
}
if resultErr != nil {
@@ -325,7 +305,6 @@ func (a *LinuxDiagnosticAgent) executeEBPFPrograms(ebpfPrograms []EBPFRequest) [
result["end_time"] = trace.EndTime.Format(time.RFC3339)
result["actual_duration"] = trace.EndTime.Sub(trace.StartTime).Seconds()
fmt.Printf("✅ eBPF program [%s] completed - collected %d real events\n", prog.Name, trace.EventCount)
} else {
result["data_points"] = 0
result["error"] = "No trace data returned"