Feature: Context Service Analysis Integration As a developer using CleverAgents I want to analyze context files using LangGraph workflows So that I can understand the codebase better before making changes # TODO: Uncomment when step definitions are implemented # Background: # Given I have initialized a CleverAgents project # And I have a context service with LangGraph integration # # Scenario: Analyze context when no files are loaded # Given the current plan has no context files # When I analyze the context # Then the analysis result should have empty documents # And the analysis summary should indicate no files to analyze # And there should be no error in the analysis # # Scenario: Analyze context with a single Python file # Given I have a Python file "main.py" with content: # """ # import os # import sys # from pathlib import Path # # def main(): # print("Hello, World!") # """ # And I have added "main.py" to the LangGraph context # When I analyze the context # Then the analysis result should have 1 document # And the dependencies for "main.py" should include "os" # And the relevance score for "main.py" should be between 0.0 and 1.0 # And the summary should not be empty # # Scenario: Analyze context with multiple files # Given I have a Python file "utils.py" with content: # """ # def helper(): # return 42 # """ # And I have a Python file "app.py" with content: # """ # from utils import helper # print(helper()) # """ # And I have added "utils.py" to the LangGraph context # And I have added "app.py" to the LangGraph context # When I analyze the context # Then the analysis result should have 2 documents # And the dependencies should include entries for both files # And the relevance scores should have entries for both files # # Scenario: Get context summary # Given I have a Python file "sample.py" with content: # """ # # Sample module # class Sample: # pass # """ # And I have added "sample.py" to the LangGraph context # When I get the context summary # Then the summary should be a non-empty string # And the summary should not indicate an error # # Scenario: Get context dependencies # Given I have a Python file "deps.py" with content: # """ # import json # import requests # from typing import Dict # """ # And I have added "deps.py" to the LangGraph context # When I get the context dependencies # Then the dependencies dict should have an entry for "deps.py" # And the dependencies should be a non-empty list # # Scenario: Get relevant files with threshold # Given I have a Python file "important.py" with content: # """ # # Core business logic # def critical_function(): # return "important" # """ # And I have a Python file "trivial.py" with content: # """ # # Just comments # pass # """ # And I have added "important.py" to the LangGraph context # And I have added "trivial.py" to the LangGraph context # When I get relevant files with threshold 0.0 # Then the result should include both files with scores # And all LangGraph scores should be between 0.0 and 1.0 # # Scenario: Stream context analysis # Given I have a Python file "streaming.py" with content: # """ # print("test streaming") # """ # And I have added "streaming.py" to the LangGraph context # When I stream the context analysis # Then I should receive multiple events # And the events should include node execution results # # Scenario: Stream context analysis when no files are loaded # Given the current plan has no context files # When I stream the context analysis # Then the streaming output should report no files to analyze # # Scenario: Analyze context asynchronously # # Given I have a Python file "async_test.py" with content: # """ # async def async_func(): # return "async" # """ # And I have added "async_test.py" to the LangGraph context # When I analyze the context asynchronously # Then the async result should have documents # And the async result should have a summary # And there should be no error in the async result # # Scenario: Analyze context asynchronously when no files are loaded # Given the current plan has no context files # When I analyze the context asynchronously # Then the async analysis result should have empty documents # And the async analysis summary should indicate no files to analyze # # Scenario: Stream context analysis asynchronously with loaded files # Given I have a Python file "async_stream.py" with content: # """ # print("async stream") # """ # And I have added "async_stream.py" to the LangGraph context # When I stream the context analysis asynchronously # Then the async streaming events should include node execution results # # Scenario: Stream context analysis asynchronously with no files # Given the current plan has no context files # When I stream the context analysis asynchronously # Then the async streaming output should report no files to analyze # # Scenario: Handle non-existent files gracefully # Given I have added a non-existent file path to the analysis # # # When I analyze the context with the non-existent path # Then the analysis should complete without raising an exception # And the error field should contain file not found information # # Scenario: Get context agent instance # When I request a context analysis agent # Then I should receive a ContextAnalysisAgent instance # And the agent should have the standard workflow nodes # # Scenario: Prepare LangSmith metadata when tracing is enabled # Given LangSmith tracing is enabled for context analysis metadata # And I have a Python file "langsmith.py" with content: # """ # print("langsmith tracing") # """ # And I have added "langsmith.py" to the LangGraph context # When I prepare the LangGraph analysis config for run "LangSmithRun" in "stream" mode # Then the LangSmith config should include the current project metadata # And the LangSmith config should record 1 context file path