File size: 2,638 Bytes
b27eb78
 
 
 
 
0711be9
b27eb78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c6064d
 
b27eb78
 
 
 
 
0711be9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8c6064d
0711be9
 
 
8c6064d
 
b27eb78
 
 
 
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from pathlib import Path

import click

from second_brain_online.application.agents import get_agent
from second_brain_online.application.ui.custom_gradio_ui import CustomGradioUI


@click.command()
@click.option(
    "--retriever-config-path",
    type=click.Path(exists=True),
    required=True,
    help="Path to the retriever config file",
)
@click.option(
    "--ui",
    is_flag=True,
    default=False,
    help="Launch with Gradio UI instead of CLI mode",
)
@click.option(
    "--query",
    "-q",
    type=str,
    default="What is the feature/training/inference (FTI) pipelines architecture?",
    help="Query to run in CLI mode",
)
def main(retriever_config_path: Path, ui: bool, query: str) -> None:
    """Run the agent either in Gradio UI or CLI mode.

    Args:
        ui: If True, launches Gradio UI. If False, runs in CLI mode
        query: Query string to run in CLI mode
    """
    agent = get_agent(retriever_config_path=Path(retriever_config_path))
    if ui:
        # Pass the AgentWrapper directly so it uses our custom run() method
        CustomGradioUI(agent).launch()
    else:
        assert query, "Query is required in CLI mode"

        result = agent.run(query)

        # DEBUG: Print raw result
        print("\n" + "="*80)
        print("DEBUG: RAW AGENT RESULT")
        print("="*80)
        print(f"Type: {type(result)}")
        print(f"Full Content:\n{result}")
        print("="*80)
        
        # DEBUG: Check agent object attributes
        print("\n" + "="*80)
        print("DEBUG: AGENT OBJECT ATTRIBUTES")
        print("="*80)
        print(f"Agent type: {type(agent)}")
        print(f"Agent attributes: {dir(agent)}")
        if hasattr(agent, '_AgentWrapper__agent'):
            actual_agent = agent._AgentWrapper__agent
            print(f"Actual agent type: {type(actual_agent)}")
            print(f"Actual agent attributes: {dir(actual_agent)}")
            if hasattr(actual_agent, 'conversation_history'):
                print(f"Conversation history: {actual_agent.conversation_history}")
            if hasattr(actual_agent, 'messages'):
                print(f"Messages: {actual_agent.messages}")
            if hasattr(actual_agent, 'logs'):
                print(f"Logs: {actual_agent.logs}")
            if hasattr(actual_agent, 'state'):
                print(f"State: {actual_agent.state}")
        print("="*80)
        
        # Display the raw result directly (it's already perfectly formatted)
        print("\n" + "="*80)
        print("FINAL OUTPUT")
        print("="*80)
        print(result)
        print("="*80)


if __name__ == "__main__":
    main()