File size: 1,247 Bytes
c8fb072
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from src.sdlc.states.states import CoderState
from src.sdlc.prompts.prompts import FILE_MODIFY_INSTRNS
from src.sdlc.schema.codefiletypes import CodeFileTypes
from src.sdlc import logger

class SynthesizerNode:
    """Node logic implementation for synthesizing full code from multiple files."""

    def __init__(self, model):
        self.llm = model.with_structured_output(CodeFileTypes)

    def process(self, state: CoderState):
        """Synthesize full code from multiple generated files."""
        #expected_files = state["codefiletypes"]  # List of expected file types
        generated_files = state.get("generated_files", [])

        logger.info(f"IN code_synthesizer, generated code files : {generated_files}")

        # Wait for all expected files before proceeding
        # if len(generated_files) < len(expected_files):
        #     print(f"⚠️ Waiting for all generated files. Current: {len(generated_files)}, Expected: {len(expected_files)}")
        #     return  # Do nothing, let LangGraph retry when more data arrives

        # Convert to dictionary format: {filename: code}
        generated_code = {code_file.name: code_file.code for code_file in generated_files}

        return {"generated_code": generated_code}