praisonaiagents 0.0.149__tar.gz → 0.0.151__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/PKG-INFO +1 -1
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/__init__.py +12 -1
- praisonaiagents-0.0.151/praisonaiagents/flow_display.py +194 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/main.py +4 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents.egg-info/PKG-INFO +1 -1
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents.egg-info/SOURCES.txt +1 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/pyproject.toml +1 -1
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/README.md +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/_logging.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/_warning_patch.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/agent/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/agent/agent.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/agent/context_agent.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/agent/handoff.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/agent/image_agent.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/agent/router_agent.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/agents/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/agents/agents.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/agents/autoagents.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/approval.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/guardrails/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/guardrails/guardrail_result.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/guardrails/llm_guardrail.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/knowledge/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/knowledge/chunking.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/knowledge/knowledge.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/llm/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/llm/llm.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/llm/model_capabilities.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/llm/model_router.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/llm/openai_client.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/mcp/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/mcp/mcp.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/mcp/mcp_http_stream.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/mcp/mcp_sse.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/memory/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/memory/memory.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/process/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/process/process.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/session.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/task/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/task/task.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/integration.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/performance_cli.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/performance_monitor.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/performance_utils.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/telemetry.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/README.md +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/__init__.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/arxiv_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/calculator_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/csv_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/duckdb_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/duckduckgo_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/excel_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/file_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/json_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/mongodb_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/newspaper_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/pandas_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/python_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/searxng_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/shell_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/spider_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/test.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/train/data/generatecot.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/wikipedia_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/xml_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/yaml_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/yfinance_tools.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents.egg-info/dependency_links.txt +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents.egg-info/requires.txt +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents.egg-info/top_level.txt +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/setup.cfg +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test-graph-memory.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_context_agent.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_embedding_logging.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_fix_comprehensive.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_gemini_streaming_fix.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_handoff_compatibility.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_http_stream_basic.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_llm_self_reflection_direct.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_ollama_async_fix.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_ollama_fix.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_ollama_sequential_fix.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_posthog_fixed.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_self_reflection_comprehensive.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_self_reflection_fix_simple.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_self_reflection_fix_verification.py +0 -0
- {praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_validation_feedback.py +0 -0
@@ -32,6 +32,12 @@ from .session import Session
|
|
32
32
|
from .memory.memory import Memory
|
33
33
|
from .guardrails import GuardrailResult, LLMGuardrail
|
34
34
|
from .agent.handoff import Handoff, handoff, handoff_filters, RECOMMENDED_PROMPT_PREFIX, prompt_with_handoff_instructions
|
35
|
+
# Flow display
|
36
|
+
try:
|
37
|
+
from .flow_display import FlowDisplay, track_workflow
|
38
|
+
except ImportError:
|
39
|
+
FlowDisplay = None
|
40
|
+
track_workflow = None
|
35
41
|
from .main import (
|
36
42
|
TaskOutput,
|
37
43
|
ReflectionOutput,
|
@@ -135,4 +141,9 @@ __all__ = [
|
|
135
141
|
|
136
142
|
# Add MCP to __all__ if available
|
137
143
|
if _mcp_available:
|
138
|
-
__all__.append('MCP')
|
144
|
+
__all__.append('MCP')
|
145
|
+
|
146
|
+
# Add flow display if available
|
147
|
+
if FlowDisplay is not None:
|
148
|
+
__all__.extend(['FlowDisplay', 'track_workflow'])
|
149
|
+
|
@@ -0,0 +1,194 @@
|
|
1
|
+
"""
|
2
|
+
Flow Display for PraisonAI Agents
|
3
|
+
|
4
|
+
Visual display with agents in center and tools on sides.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from typing import Dict, List, Set, Tuple
|
8
|
+
from collections import defaultdict
|
9
|
+
import threading
|
10
|
+
from rich.console import Console
|
11
|
+
from rich.panel import Panel
|
12
|
+
from rich.text import Text
|
13
|
+
from rich.align import Align
|
14
|
+
from rich.columns import Columns
|
15
|
+
from rich.table import Table
|
16
|
+
from rich import box
|
17
|
+
|
18
|
+
class FlowDisplay:
|
19
|
+
"""Displays agent workflow with agents centered and tools on sides."""
|
20
|
+
|
21
|
+
def __init__(self):
|
22
|
+
self.console = Console()
|
23
|
+
self.agents = [] # List of agents in order
|
24
|
+
self.agent_tools = defaultdict(list) # agent -> [tools]
|
25
|
+
self.tracking = False
|
26
|
+
self.lock = threading.Lock()
|
27
|
+
|
28
|
+
def start(self):
|
29
|
+
"""Start tracking workflow."""
|
30
|
+
self.tracking = True
|
31
|
+
self.agents.clear()
|
32
|
+
self.agent_tools.clear()
|
33
|
+
|
34
|
+
# Register callbacks
|
35
|
+
try:
|
36
|
+
from praisonaiagents.main import register_display_callback
|
37
|
+
|
38
|
+
def on_interaction(**kwargs):
|
39
|
+
if self.tracking:
|
40
|
+
agent = kwargs.get('agent_name', 'Unknown')
|
41
|
+
self._add_agent(agent)
|
42
|
+
|
43
|
+
def on_tool_call(message, **kwargs):
|
44
|
+
if self.tracking and "called function" in message:
|
45
|
+
parts = message.split("'")
|
46
|
+
if len(parts) > 1:
|
47
|
+
tool_name = parts[1]
|
48
|
+
agent = kwargs.get('agent_name', 'Unknown')
|
49
|
+
self._add_tool(agent, tool_name)
|
50
|
+
|
51
|
+
register_display_callback('interaction', on_interaction)
|
52
|
+
register_display_callback('tool_call', on_tool_call)
|
53
|
+
|
54
|
+
except ImportError:
|
55
|
+
pass
|
56
|
+
|
57
|
+
def stop(self):
|
58
|
+
"""Stop tracking and display the flow."""
|
59
|
+
self.tracking = False
|
60
|
+
self.display()
|
61
|
+
|
62
|
+
def _add_agent(self, name: str):
|
63
|
+
"""Add an agent if not already present."""
|
64
|
+
with self.lock:
|
65
|
+
if name not in self.agents:
|
66
|
+
self.agents.append(name)
|
67
|
+
|
68
|
+
def _add_tool(self, agent_name: str, tool_name: str):
|
69
|
+
"""Add a tool to an agent."""
|
70
|
+
with self.lock:
|
71
|
+
if agent_name not in self.agents:
|
72
|
+
self.agents.append(agent_name)
|
73
|
+
if tool_name not in self.agent_tools[agent_name]:
|
74
|
+
self.agent_tools[agent_name].append(tool_name)
|
75
|
+
|
76
|
+
def display(self):
|
77
|
+
"""Display the flow chart with agents in center and tools on sides."""
|
78
|
+
if not self.agents:
|
79
|
+
return
|
80
|
+
|
81
|
+
self.console.print("\n[bold cyan]🔄 Agent Workflow Flow[/bold cyan]\n")
|
82
|
+
|
83
|
+
# Display start
|
84
|
+
self._display_centered_node("── start ──", "grey35")
|
85
|
+
self._display_arrow_down()
|
86
|
+
|
87
|
+
# Display each agent with their tools
|
88
|
+
for i, agent in enumerate(self.agents):
|
89
|
+
self._display_agent_with_tools(agent)
|
90
|
+
|
91
|
+
# Add arrow to next agent or end
|
92
|
+
if i < len(self.agents) - 1:
|
93
|
+
self._display_arrow_down()
|
94
|
+
|
95
|
+
# Display end
|
96
|
+
self._display_arrow_down()
|
97
|
+
self._display_centered_node("── end ──", "grey35")
|
98
|
+
|
99
|
+
def _display_agent_with_tools(self, agent: str):
|
100
|
+
"""Display agent with tools on the sides."""
|
101
|
+
tools = self.agent_tools.get(agent, [])
|
102
|
+
|
103
|
+
if not tools:
|
104
|
+
# No tools - just agent
|
105
|
+
self._display_centered_node(agent, "purple")
|
106
|
+
else:
|
107
|
+
# Split tools between left and right
|
108
|
+
left_tools = tools[::2] # Even indices
|
109
|
+
right_tools = tools[1::2] # Odd indices
|
110
|
+
|
111
|
+
# Create the layout
|
112
|
+
table = Table(show_header=False, show_edge=False, box=None, padding=0)
|
113
|
+
table.add_column(justify="center", min_width=20) # Left tools
|
114
|
+
table.add_column(justify="center", min_width=5) # Space
|
115
|
+
table.add_column(justify="center", min_width=20) # Agent
|
116
|
+
table.add_column(justify="center", min_width=5) # Space
|
117
|
+
table.add_column(justify="center", min_width=20) # Right tools
|
118
|
+
|
119
|
+
# Create panels
|
120
|
+
left_panel = self._create_tools_panel(left_tools) if left_tools else ""
|
121
|
+
agent_panel = Panel(
|
122
|
+
Text(agent, style="white on purple", justify="center"),
|
123
|
+
style="white on purple",
|
124
|
+
box=box.ROUNDED,
|
125
|
+
padding=(0, 2)
|
126
|
+
)
|
127
|
+
right_panel = self._create_tools_panel(right_tools) if right_tools else ""
|
128
|
+
|
129
|
+
# Add row
|
130
|
+
table.add_row(left_panel, "", agent_panel, "", right_panel)
|
131
|
+
|
132
|
+
# Display centered
|
133
|
+
self.console.print(Align.center(table))
|
134
|
+
|
135
|
+
# Show arrows
|
136
|
+
if left_tools or right_tools:
|
137
|
+
arrow_parts = []
|
138
|
+
if left_tools:
|
139
|
+
arrow_parts.append("←→")
|
140
|
+
else:
|
141
|
+
arrow_parts.append(" ")
|
142
|
+
|
143
|
+
arrow_parts.append(" ") # Center space
|
144
|
+
|
145
|
+
if right_tools:
|
146
|
+
arrow_parts.append("←→")
|
147
|
+
else:
|
148
|
+
arrow_parts.append(" ")
|
149
|
+
|
150
|
+
self.console.print(Align.center(Text("".join(arrow_parts))))
|
151
|
+
|
152
|
+
def _create_tools_panel(self, tools: List[str]) -> Panel:
|
153
|
+
"""Create a panel for tools."""
|
154
|
+
if not tools:
|
155
|
+
return ""
|
156
|
+
|
157
|
+
if len(tools) == 1:
|
158
|
+
return Panel(
|
159
|
+
Text(tools[0], style="black on yellow", justify="center"),
|
160
|
+
style="black on yellow",
|
161
|
+
box=box.ROUNDED,
|
162
|
+
padding=(0, 1)
|
163
|
+
)
|
164
|
+
else:
|
165
|
+
# Multiple tools
|
166
|
+
content = "\n".join(tools)
|
167
|
+
return Panel(
|
168
|
+
Text(content, style="black on yellow", justify="center"),
|
169
|
+
style="black on yellow",
|
170
|
+
box=box.ROUNDED,
|
171
|
+
padding=(0, 1)
|
172
|
+
)
|
173
|
+
|
174
|
+
def _display_centered_node(self, label: str, color: str):
|
175
|
+
"""Display a centered node."""
|
176
|
+
panel = Panel(
|
177
|
+
Text(label, style=f"white on {color}", justify="center"),
|
178
|
+
style=f"white on {color}",
|
179
|
+
box=box.ROUNDED,
|
180
|
+
padding=(0, 2)
|
181
|
+
)
|
182
|
+
self.console.print(Align.center(panel))
|
183
|
+
|
184
|
+
def _display_arrow_down(self):
|
185
|
+
"""Display a downward arrow."""
|
186
|
+
self.console.print()
|
187
|
+
self.console.print(Align.center("↓"))
|
188
|
+
self.console.print()
|
189
|
+
|
190
|
+
|
191
|
+
# Simple function to create and use
|
192
|
+
def track_workflow():
|
193
|
+
"""Create a flow display tracker."""
|
194
|
+
return FlowDisplay()
|
@@ -154,6 +154,10 @@ def display_interaction(message, response, markdown=True, generation_time=None,
|
|
154
154
|
|
155
155
|
message = _clean_display_content(str(message))
|
156
156
|
response = _clean_display_content(str(response))
|
157
|
+
|
158
|
+
# Skip display if response is empty (common with Gemini tool calls)
|
159
|
+
if not response or not response.strip():
|
160
|
+
return
|
157
161
|
|
158
162
|
# Execute synchronous callbacks
|
159
163
|
execute_sync_callback(
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/guardrails/guardrail_result.py
RENAMED
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/guardrails/llm_guardrail.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/llm/model_capabilities.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/integration.py
RENAMED
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/performance_cli.py
RENAMED
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/performance_monitor.py
RENAMED
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/telemetry/performance_utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/calculator_tools.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/duckduckgo_tools.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/newspaper_tools.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/train/data/generatecot.py
RENAMED
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents/tools/wikipedia_tools.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/praisonaiagents.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_llm_self_reflection_direct.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_self_reflection_comprehensive.py
RENAMED
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_self_reflection_fix_simple.py
RENAMED
File without changes
|
{praisonaiagents-0.0.149 → praisonaiagents-0.0.151}/tests/test_self_reflection_fix_verification.py
RENAMED
File without changes
|
File without changes
|