package action import ( "bytes" "context" "encoding/json" "fmt" "io" "net/http" "os" "time" "github.com/rockliang/poimen/workflows/pkg/db" ) // IndexGraphRAGInput sends workflow relations to GraphRAG for indexing type IndexGraphRAGInput struct { WorkflowID string `json:"workflow_id"` Version int `json:"version"` Nodes []db.WorkflowNode `json:"nodes"` Relations []EdgeWithWording `json:"relations"` } // IndexGraphRAGOutput confirms indexing status type IndexGraphRAGOutput struct { WorkflowID string `json:"workflow_id"` Version int `json:"version"` IndexedEntities int `json:"indexed_entities"` IndexedEdges int `json:"indexed_edges"` Status string `json:"status"` GraphRAGChecksum string `json:"graph_rag_checksum"` IndexedAt string `json:"indexed_at"` } // IndexGraphRAGActivity indexes workflow canvas to GraphRAG (stub for now) func IndexGraphRAGActivity(ctx context.Context, input IndexGraphRAGInput) (IndexGraphRAGOutput, error) { output := IndexGraphRAGOutput{ WorkflowID: input.WorkflowID, Version: input.Version, Status: "indexed", IndexedEntities: len(input.Nodes), IndexedEdges: len(input.Relations), IndexedAt: time.Now().UTC().Format(time.RFC3339), } // Stub implementation - actual GraphRAG indexing would happen here // For now, just return success return output, nil } // QueryGraphRAGRelationsInput for direct relation discovery type QueryGraphRAGRelationsInput struct { WorkflowID string `json:"workflow_id"` Version int `json:"version"` Query string `json:"query"` TopK int `json:"top_k"` Filters map[string]interface{} `json:"filters,omitempty"` } // QueryGraphRAGRelationsOutput returns discovered relations type QueryGraphRAGRelationsOutput struct { Query string `json:"query"` Results []EdgeWithWording `json:"results"` TotalCount int `json:"total_count"` ExecutionMs int64 `json:"execution_time_ms"` } // QueryGraphRAGRelationsActivity queries GraphRAG for relation patterns (stub) func QueryGraphRAGRelationsActivity(ctx context.Context, input QueryGraphRAGRelationsInput) (QueryGraphRAGRelationsOutput, error) { output := QueryGraphRAGRelationsOutput{ Query: input.Query, Results: []EdgeWithWording{}, TotalCount: 0, } // Stub implementation - actual GraphRAG querying would happen here return output, nil }