PraisonAI 2.2.32__cp313-cp313-manylinux_2_39_x86_64.whl → 2.2.33__cp313-cp313-manylinux_2_39_x86_64.whl
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.
Potentially problematic release.
This version of PraisonAI might be problematic. Click here for more details.
- praisonai/cli.py +5 -0
- praisonai/deploy.py +1 -1
- praisonai/ui/code.py +244 -12
- {praisonai-2.2.32.dist-info → praisonai-2.2.33.dist-info}/METADATA +2 -2
- {praisonai-2.2.32.dist-info → praisonai-2.2.33.dist-info}/RECORD +7 -7
- {praisonai-2.2.32.dist-info → praisonai-2.2.33.dist-info}/WHEEL +0 -0
- {praisonai-2.2.32.dist-info → praisonai-2.2.33.dist-info}/entry_points.txt +0 -0
praisonai/cli.py
CHANGED
|
@@ -529,6 +529,7 @@ class PraisonAI:
|
|
|
529
529
|
parser.add_argument("--call", action="store_true", help="Start the PraisonAI Call server")
|
|
530
530
|
parser.add_argument("--public", action="store_true", help="Use ngrok to expose the server publicly (only with --call)")
|
|
531
531
|
parser.add_argument("--merge", action="store_true", help="Merge existing agents.yaml with auto-generated agents instead of overwriting")
|
|
532
|
+
parser.add_argument("--claudecode", action="store_true", help="Enable Claude Code integration for file modifications and coding tasks")
|
|
532
533
|
|
|
533
534
|
# If we're in a test environment, parse with empty args to avoid pytest interference
|
|
534
535
|
if in_test_env:
|
|
@@ -549,6 +550,10 @@ class PraisonAI:
|
|
|
549
550
|
if args.command == 'code':
|
|
550
551
|
args.ui = 'chainlit'
|
|
551
552
|
args.code = True
|
|
553
|
+
|
|
554
|
+
# Handle --claudecode flag for code command
|
|
555
|
+
if getattr(args, 'claudecode', False):
|
|
556
|
+
os.environ["PRAISONAI_CLAUDECODE_ENABLED"] = "true"
|
|
552
557
|
if args.command == 'realtime':
|
|
553
558
|
args.realtime = True
|
|
554
559
|
if args.command == 'call':
|
praisonai/deploy.py
CHANGED
|
@@ -56,7 +56,7 @@ class CloudDeployer:
|
|
|
56
56
|
file.write("FROM python:3.11-slim\n")
|
|
57
57
|
file.write("WORKDIR /app\n")
|
|
58
58
|
file.write("COPY . .\n")
|
|
59
|
-
file.write("RUN pip install flask praisonai==2.2.
|
|
59
|
+
file.write("RUN pip install flask praisonai==2.2.33 gunicorn markdown\n")
|
|
60
60
|
file.write("EXPOSE 8080\n")
|
|
61
61
|
file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
|
|
62
62
|
|
praisonai/ui/code.py
CHANGED
|
@@ -13,16 +13,25 @@ from PIL import Image
|
|
|
13
13
|
from context import ContextGatherer
|
|
14
14
|
from tavily import TavilyClient
|
|
15
15
|
from crawl4ai import AsyncWebCrawler
|
|
16
|
+
import subprocess
|
|
16
17
|
|
|
17
18
|
# Local application/library imports
|
|
18
19
|
import chainlit as cl
|
|
19
|
-
from chainlit.input_widget import TextInput
|
|
20
|
+
from chainlit.input_widget import TextInput, Switch
|
|
20
21
|
from chainlit.types import ThreadDict
|
|
21
22
|
import chainlit.data as cl_data
|
|
22
|
-
from litellm import acompletion
|
|
23
|
-
import litellm
|
|
24
23
|
from db import DatabaseManager
|
|
25
24
|
|
|
25
|
+
# PraisonAI Agents imports
|
|
26
|
+
try:
|
|
27
|
+
from praisonaiagents import Agent
|
|
28
|
+
PRAISONAI_AGENTS_AVAILABLE = True
|
|
29
|
+
except ImportError:
|
|
30
|
+
PRAISONAI_AGENTS_AVAILABLE = False
|
|
31
|
+
# Fallback to litellm for backward compatibility
|
|
32
|
+
from litellm import acompletion
|
|
33
|
+
import litellm
|
|
34
|
+
|
|
26
35
|
# Load environment variables
|
|
27
36
|
load_dotenv()
|
|
28
37
|
|
|
@@ -41,14 +50,131 @@ logger.addHandler(console_handler)
|
|
|
41
50
|
# Set the logging level for the logger
|
|
42
51
|
logger.setLevel(log_level)
|
|
43
52
|
|
|
44
|
-
# Configure litellm
|
|
45
|
-
|
|
46
|
-
litellm
|
|
47
|
-
litellm.
|
|
48
|
-
litellm.
|
|
49
|
-
litellm.
|
|
50
|
-
litellm.
|
|
51
|
-
litellm.
|
|
53
|
+
# Configure litellm for backward compatibility (only if praisonaiagents not available)
|
|
54
|
+
if not PRAISONAI_AGENTS_AVAILABLE:
|
|
55
|
+
import litellm
|
|
56
|
+
litellm.set_verbose = False
|
|
57
|
+
litellm.success_callback = []
|
|
58
|
+
litellm._async_success_callback = []
|
|
59
|
+
litellm.callbacks = []
|
|
60
|
+
litellm.drop_params = True
|
|
61
|
+
litellm.modify_params = True
|
|
62
|
+
litellm.suppress_debug_messages = True
|
|
63
|
+
|
|
64
|
+
# Claude Code Tool Function
|
|
65
|
+
async def claude_code_tool(query: str) -> str:
|
|
66
|
+
"""
|
|
67
|
+
Execute Claude Code CLI commands for file modifications and coding tasks.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
query: The user's request that requires file modifications or coding assistance
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
The output from Claude Code execution
|
|
74
|
+
"""
|
|
75
|
+
try:
|
|
76
|
+
# Check if the current working directory is a git repository
|
|
77
|
+
repo_path = os.environ.get("PRAISONAI_CODE_REPO_PATH", ".")
|
|
78
|
+
|
|
79
|
+
# Try to detect if git is available and if we're in a git repo
|
|
80
|
+
git_available = False
|
|
81
|
+
try:
|
|
82
|
+
subprocess.run(["git", "status"], cwd=repo_path, capture_output=True, check=True)
|
|
83
|
+
git_available = True
|
|
84
|
+
except (subprocess.CalledProcessError, FileNotFoundError):
|
|
85
|
+
git_available = False
|
|
86
|
+
|
|
87
|
+
# Build Claude Code command
|
|
88
|
+
claude_cmd = ["claude", "--dangerously-skip-permissions", "-p", query]
|
|
89
|
+
|
|
90
|
+
# Check if it's a continuation (simple heuristic)
|
|
91
|
+
user_session_context = cl.user_session.get("claude_code_context", False)
|
|
92
|
+
if user_session_context:
|
|
93
|
+
claude_cmd.insert(1, "--continue")
|
|
94
|
+
|
|
95
|
+
# Execute Claude Code command
|
|
96
|
+
result = subprocess.run(
|
|
97
|
+
claude_cmd,
|
|
98
|
+
cwd=repo_path,
|
|
99
|
+
capture_output=True,
|
|
100
|
+
text=True,
|
|
101
|
+
timeout=300 # 5 minutes timeout
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
# Set context for future requests
|
|
105
|
+
cl.user_session.set("claude_code_context", True)
|
|
106
|
+
|
|
107
|
+
output = result.stdout
|
|
108
|
+
if result.stderr:
|
|
109
|
+
output += f"\n\nErrors:\n{result.stderr}"
|
|
110
|
+
|
|
111
|
+
# If git is available and changes were made, try to create a branch and PR
|
|
112
|
+
if git_available and result.returncode == 0:
|
|
113
|
+
try:
|
|
114
|
+
# Check for changes
|
|
115
|
+
git_status = subprocess.run(
|
|
116
|
+
["git", "status", "--porcelain"],
|
|
117
|
+
cwd=repo_path,
|
|
118
|
+
capture_output=True,
|
|
119
|
+
text=True,
|
|
120
|
+
check=True
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
if git_status.stdout.strip():
|
|
124
|
+
# Create a branch for the changes
|
|
125
|
+
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
126
|
+
branch_name = f"claude-code-{timestamp}"
|
|
127
|
+
|
|
128
|
+
# Create and switch to new branch
|
|
129
|
+
subprocess.run(["git", "checkout", "-b", branch_name], cwd=repo_path, check=True)
|
|
130
|
+
|
|
131
|
+
# Add and commit changes
|
|
132
|
+
subprocess.run(["git", "add", "."], cwd=repo_path, check=True)
|
|
133
|
+
commit_message = f"Claude Code changes: {query[:50]}..."
|
|
134
|
+
subprocess.run(
|
|
135
|
+
["git", "commit", "-m", commit_message],
|
|
136
|
+
cwd=repo_path,
|
|
137
|
+
check=True
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
# Push to remote (if configured)
|
|
141
|
+
try:
|
|
142
|
+
subprocess.run(
|
|
143
|
+
["git", "push", "-u", "origin", branch_name],
|
|
144
|
+
cwd=repo_path,
|
|
145
|
+
check=True
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
# Generate PR URL (assuming GitHub)
|
|
149
|
+
remote_url = subprocess.run(
|
|
150
|
+
["git", "config", "--get", "remote.origin.url"],
|
|
151
|
+
cwd=repo_path,
|
|
152
|
+
capture_output=True,
|
|
153
|
+
text=True
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
if remote_url.returncode == 0:
|
|
157
|
+
repo_url = remote_url.stdout.strip()
|
|
158
|
+
if repo_url.endswith(".git"):
|
|
159
|
+
repo_url = repo_url[:-4]
|
|
160
|
+
if "github.com" in repo_url:
|
|
161
|
+
pr_url = f"{repo_url}/compare/main...{branch_name}?quick_pull=1"
|
|
162
|
+
output += f"\n\n📋 **Pull Request Created:**\n{pr_url}"
|
|
163
|
+
|
|
164
|
+
except subprocess.CalledProcessError:
|
|
165
|
+
output += f"\n\n🌲 **Branch created:** {branch_name} (push manually if needed)"
|
|
166
|
+
|
|
167
|
+
except subprocess.CalledProcessError as e:
|
|
168
|
+
output += f"\n\nGit operations failed: {e}"
|
|
169
|
+
|
|
170
|
+
return output
|
|
171
|
+
|
|
172
|
+
except subprocess.TimeoutExpired:
|
|
173
|
+
return "Claude Code execution timed out after 5 minutes."
|
|
174
|
+
except subprocess.CalledProcessError as e:
|
|
175
|
+
return f"Claude Code execution failed: {e}\nStdout: {e.stdout}\nStderr: {e.stderr}"
|
|
176
|
+
except Exception as e:
|
|
177
|
+
return f"Error executing Claude Code: {str(e)}"
|
|
52
178
|
|
|
53
179
|
CHAINLIT_AUTH_SECRET = os.getenv("CHAINLIT_AUTH_SECRET")
|
|
54
180
|
|
|
@@ -109,6 +235,12 @@ async def start():
|
|
|
109
235
|
model_name = os.getenv("MODEL_NAME", "gpt-4o-mini")
|
|
110
236
|
cl.user_session.set("model_name", model_name)
|
|
111
237
|
logger.debug(f"Model name: {model_name}")
|
|
238
|
+
|
|
239
|
+
# Load Claude Code setting (check CLI flag first, then database setting)
|
|
240
|
+
claude_code_enabled = os.getenv("PRAISONAI_CLAUDECODE_ENABLED", "false").lower() == "true"
|
|
241
|
+
if not claude_code_enabled:
|
|
242
|
+
claude_code_enabled = (load_setting("claude_code_enabled") or "false").lower() == "true"
|
|
243
|
+
|
|
112
244
|
settings = cl.ChatSettings(
|
|
113
245
|
[
|
|
114
246
|
TextInput(
|
|
@@ -116,6 +248,11 @@ async def start():
|
|
|
116
248
|
label="Enter the Model Name",
|
|
117
249
|
placeholder="e.g., gpt-4o-mini",
|
|
118
250
|
initial=model_name
|
|
251
|
+
),
|
|
252
|
+
Switch(
|
|
253
|
+
id="claude_code_enabled",
|
|
254
|
+
label="Enable Claude Code (file modifications & coding)",
|
|
255
|
+
initial=claude_code_enabled
|
|
119
256
|
)
|
|
120
257
|
]
|
|
121
258
|
)
|
|
@@ -134,10 +271,13 @@ async def setup_agent(settings):
|
|
|
134
271
|
logger.debug(settings)
|
|
135
272
|
cl.user_session.set("settings", settings)
|
|
136
273
|
model_name = settings["model_name"]
|
|
274
|
+
claude_code_enabled = settings.get("claude_code_enabled", False)
|
|
137
275
|
cl.user_session.set("model_name", model_name)
|
|
276
|
+
cl.user_session.set("claude_code_enabled", claude_code_enabled)
|
|
138
277
|
|
|
139
278
|
# Save in settings table
|
|
140
279
|
save_setting("model_name", model_name)
|
|
280
|
+
save_setting("claude_code_enabled", str(claude_code_enabled).lower())
|
|
141
281
|
|
|
142
282
|
# Save in thread metadata
|
|
143
283
|
thread_id = cl.user_session.get("thread_id")
|
|
@@ -152,6 +292,7 @@ async def setup_agent(settings):
|
|
|
152
292
|
metadata = {}
|
|
153
293
|
|
|
154
294
|
metadata["model_name"] = model_name
|
|
295
|
+
metadata["claude_code_enabled"] = claude_code_enabled
|
|
155
296
|
|
|
156
297
|
# Always store metadata as a dictionary
|
|
157
298
|
await cl_data._data_layer.update_thread(thread_id, metadata=metadata)
|
|
@@ -221,6 +362,7 @@ tools = [{
|
|
|
221
362
|
@cl.on_message
|
|
222
363
|
async def main(message: cl.Message):
|
|
223
364
|
model_name = load_setting("model_name") or os.getenv("MODEL_NAME") or "gpt-4o-mini"
|
|
365
|
+
claude_code_enabled = cl.user_session.get("claude_code_enabled", False)
|
|
224
366
|
message_history = cl.user_session.get("message_history", [])
|
|
225
367
|
repo_path_to_use = os.environ.get("PRAISONAI_CODE_REPO_PATH", ".")
|
|
226
368
|
gatherer = ContextGatherer(directory=repo_path_to_use)
|
|
@@ -258,6 +400,87 @@ Context:
|
|
|
258
400
|
msg = cl.Message(content="")
|
|
259
401
|
await msg.send()
|
|
260
402
|
|
|
403
|
+
# Use PraisonAI Agents if available, otherwise fallback to litellm
|
|
404
|
+
if PRAISONAI_AGENTS_AVAILABLE:
|
|
405
|
+
await handle_with_praisonai_agents(message, user_message, model_name, claude_code_enabled, msg, image)
|
|
406
|
+
else:
|
|
407
|
+
await handle_with_litellm(user_message, model_name, message_history, msg, image)
|
|
408
|
+
|
|
409
|
+
async def handle_with_praisonai_agents(message, user_message, model_name, claude_code_enabled, msg, image):
|
|
410
|
+
"""Handle message using PraisonAI Agents framework with optional Claude Code tool"""
|
|
411
|
+
try:
|
|
412
|
+
# Prepare tools list
|
|
413
|
+
available_tools = []
|
|
414
|
+
|
|
415
|
+
# Add Tavily search tool if API key available
|
|
416
|
+
if tavily_api_key:
|
|
417
|
+
available_tools.append(tavily_web_search)
|
|
418
|
+
|
|
419
|
+
# Add Claude Code tool if enabled
|
|
420
|
+
if claude_code_enabled:
|
|
421
|
+
available_tools.append(claude_code_tool)
|
|
422
|
+
|
|
423
|
+
# Create agent instructions
|
|
424
|
+
instructions = """You are a helpful AI assistant. Use the available tools when needed to provide comprehensive responses.
|
|
425
|
+
|
|
426
|
+
If Claude Code tool is available and the user's request involves:
|
|
427
|
+
- File modifications, code changes, or implementation tasks
|
|
428
|
+
- Creating, editing, or debugging code
|
|
429
|
+
- Project setup or development tasks
|
|
430
|
+
- Git operations or version control
|
|
431
|
+
|
|
432
|
+
Then use the Claude Code tool to handle those requests.
|
|
433
|
+
|
|
434
|
+
For informational questions, explanations, or general conversations, respond normally without using Claude Code."""
|
|
435
|
+
|
|
436
|
+
# Create agent
|
|
437
|
+
agent = Agent(
|
|
438
|
+
name="PraisonAI Assistant",
|
|
439
|
+
instructions=instructions,
|
|
440
|
+
llm=model_name,
|
|
441
|
+
tools=available_tools if available_tools else None
|
|
442
|
+
)
|
|
443
|
+
|
|
444
|
+
# Execute agent with streaming
|
|
445
|
+
full_response = ""
|
|
446
|
+
|
|
447
|
+
# Use agent's streaming capabilities if available
|
|
448
|
+
try:
|
|
449
|
+
# For now, use synchronous execution and stream the result
|
|
450
|
+
# TODO: Implement proper streaming when PraisonAI agents support it
|
|
451
|
+
result = agent.start(user_message)
|
|
452
|
+
|
|
453
|
+
# Stream the response character by character for better UX
|
|
454
|
+
if hasattr(result, 'raw'):
|
|
455
|
+
response_text = result.raw
|
|
456
|
+
else:
|
|
457
|
+
response_text = str(result)
|
|
458
|
+
|
|
459
|
+
for char in response_text:
|
|
460
|
+
await msg.stream_token(char)
|
|
461
|
+
full_response += char
|
|
462
|
+
# Small delay to make streaming visible
|
|
463
|
+
await asyncio.sleep(0.01)
|
|
464
|
+
|
|
465
|
+
except Exception as e:
|
|
466
|
+
error_response = f"Error executing agent: {str(e)}"
|
|
467
|
+
for char in error_response:
|
|
468
|
+
await msg.stream_token(char)
|
|
469
|
+
full_response += char
|
|
470
|
+
await asyncio.sleep(0.01)
|
|
471
|
+
|
|
472
|
+
msg.content = full_response
|
|
473
|
+
await msg.update()
|
|
474
|
+
|
|
475
|
+
except Exception as e:
|
|
476
|
+
error_msg = f"Failed to use PraisonAI Agents: {str(e)}"
|
|
477
|
+
logger.error(error_msg)
|
|
478
|
+
await msg.stream_token(error_msg)
|
|
479
|
+
msg.content = error_msg
|
|
480
|
+
await msg.update()
|
|
481
|
+
|
|
482
|
+
async def handle_with_litellm(user_message, model_name, message_history, msg, image):
|
|
483
|
+
"""Fallback handler using litellm for backward compatibility"""
|
|
261
484
|
# Prepare the completion parameters using the helper function
|
|
262
485
|
completion_params = _build_completion_params(
|
|
263
486
|
model_name,
|
|
@@ -279,7 +502,7 @@ Context:
|
|
|
279
502
|
]
|
|
280
503
|
}
|
|
281
504
|
# Use a vision-capable model when an image is present
|
|
282
|
-
completion_params["model"] = "gpt-4-vision-preview"
|
|
505
|
+
completion_params["model"] = "gpt-4-vision-preview"
|
|
283
506
|
|
|
284
507
|
# Only add tools and tool_choice if Tavily API key is available and no image is uploaded
|
|
285
508
|
if tavily_api_key:
|
|
@@ -412,6 +635,10 @@ async def send_count():
|
|
|
412
635
|
async def on_chat_resume(thread: ThreadDict):
|
|
413
636
|
logger.info(f"Resuming chat: {thread['id']}")
|
|
414
637
|
model_name = load_setting("model_name") or os.getenv("MODEL_NAME") or "gpt-4o-mini"
|
|
638
|
+
# Load Claude Code setting (check CLI flag first, then database setting)
|
|
639
|
+
claude_code_enabled = os.getenv("PRAISONAI_CLAUDECODE_ENABLED", "false").lower() == "true"
|
|
640
|
+
if not claude_code_enabled:
|
|
641
|
+
claude_code_enabled = (load_setting("claude_code_enabled") or "false").lower() == "true"
|
|
415
642
|
logger.debug(f"Model name: {model_name}")
|
|
416
643
|
settings = cl.ChatSettings(
|
|
417
644
|
[
|
|
@@ -420,6 +647,11 @@ async def on_chat_resume(thread: ThreadDict):
|
|
|
420
647
|
label="Enter the Model Name",
|
|
421
648
|
placeholder="e.g., gpt-4o-mini",
|
|
422
649
|
initial=model_name
|
|
650
|
+
),
|
|
651
|
+
Switch(
|
|
652
|
+
id="claude_code_enabled",
|
|
653
|
+
label="Enable Claude Code (file modifications & coding)",
|
|
654
|
+
initial=claude_code_enabled
|
|
423
655
|
)
|
|
424
656
|
]
|
|
425
657
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.33
|
|
4
4
|
Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
|
|
5
5
|
Author: Mervin Praison
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -64,7 +64,7 @@ Requires-Dist: playwright (>=1.47.0) ; extra == "code"
|
|
|
64
64
|
Requires-Dist: plotly (>=5.24.0) ; extra == "realtime"
|
|
65
65
|
Requires-Dist: praisonai-tools (>=0.0.15) ; extra == "autogen"
|
|
66
66
|
Requires-Dist: praisonai-tools (>=0.0.15) ; extra == "crewai"
|
|
67
|
-
Requires-Dist: praisonaiagents (>=0.0.
|
|
67
|
+
Requires-Dist: praisonaiagents (>=0.0.106)
|
|
68
68
|
Requires-Dist: pyautogen (>=0.2.19) ; extra == "autogen"
|
|
69
69
|
Requires-Dist: pydantic (<=2.10.1) ; extra == "chat"
|
|
70
70
|
Requires-Dist: pydantic (<=2.10.1) ; extra == "code"
|
|
@@ -5,8 +5,8 @@ praisonai/agents_generator.py,sha256=IMD5VTYL0fUEiCUcoADGAfe2tBtPHJa-tRmN8g525bM
|
|
|
5
5
|
praisonai/api/call.py,sha256=-dV9DKNDi4w9vN6K63TUh15_PC0M5KzYOmBqHbuJqq0,11079
|
|
6
6
|
praisonai/auto.py,sha256=0omuyIIuu-zBAXpsGo3JwuhX6zpjQg3ZtqbPtF5LZbg,12331
|
|
7
7
|
praisonai/chainlit_ui.py,sha256=1lmqZ7_W9Pp1ueFYLvOq1YoH5NnKy3blssDrVvn95pc,12236
|
|
8
|
-
praisonai/cli.py,sha256=
|
|
9
|
-
praisonai/deploy.py,sha256=
|
|
8
|
+
praisonai/cli.py,sha256=4mG3TVE4DJxOC2KFfJcOiOhd814q9WEK2W2XNp7fIY8,36627
|
|
9
|
+
praisonai/deploy.py,sha256=GJYcyXkp7CuOb2Hy6U_6bYmd6vrxZGVOetptn9n_PNY,6028
|
|
10
10
|
praisonai/inbuilt_tools/__init__.py,sha256=mZOEximj3zCyJHq9Lz0bGXhQpBsa_QR-R-yA9UKC3zI,565
|
|
11
11
|
praisonai/inbuilt_tools/autogen_tools.py,sha256=kJdEv61BTYvdHOaURNEpBcWq8Rs-oC03loNFTIjT-ak,4687
|
|
12
12
|
praisonai/inc/__init__.py,sha256=sPDlYBBwdk0VlWzaaM_lG0_LD07lS2HRGvPdxXJFiYg,62
|
|
@@ -41,7 +41,7 @@ praisonai/ui/README.md,sha256=QG9yucvBieVjCjWFzu6hL9xNtYllkoqyJ_q1b0YYAco,1124
|
|
|
41
41
|
praisonai/ui/agents.py,sha256=-QfO3wK5-_bzPkwAslfGBNQuiXAtrHBqT5Ty_E5vnr0,32831
|
|
42
42
|
praisonai/ui/callbacks.py,sha256=V4_-GjxmjDFmugUZGfQHKtNSysx7rT6i1UblbM_8lIM,1968
|
|
43
43
|
praisonai/ui/chat.py,sha256=mfNU-fmJt4-x3sKe10DuiieOTZYsP5046yGlZq3yVI0,13570
|
|
44
|
-
praisonai/ui/code.py,sha256=
|
|
44
|
+
praisonai/ui/code.py,sha256=pBD7v35qCRSq2Q5YXKmGWUf3J7gAnBJDQoJSe90r9qQ,26449
|
|
45
45
|
praisonai/ui/colab.py,sha256=A2NceDVazMy53mIpp-NIn5w3y8aQKwQu5LmHTepVwlo,19584
|
|
46
46
|
praisonai/ui/colab_chainlit.py,sha256=wrB1O0ttRlmOH8aMxU8QdGpse-X54U87ZcEEA3R1aFg,2432
|
|
47
47
|
praisonai/ui/components/aicoder.py,sha256=kcO0jLZVFnA3TP8-WZnSYrIQMpFTwqeByxwOhreMX-A,11781
|
|
@@ -74,7 +74,7 @@ praisonai/ui/sql_alchemy.py,sha256=ilWAWicUGja7ADbXW9_OgIYeyKNuAQ1ZI_RMqjmMI9k,2
|
|
|
74
74
|
praisonai/ui/tools.md,sha256=Ad3YH_ZCLMWlz3mDXllQnQ_S5l55LWqLdcZSh-EXrHI,3956
|
|
75
75
|
praisonai/upload_vision.py,sha256=lMpFn993UiYVJxRNZQTmcbPbEajQ5TFKCNGK1Icn_hg,5253
|
|
76
76
|
praisonai/version.py,sha256=ugyuFliEqtAwQmH4sTlc16YXKYbFWDmfyk87fErB8-8,21
|
|
77
|
-
praisonai-2.2.
|
|
78
|
-
praisonai-2.2.
|
|
79
|
-
praisonai-2.2.
|
|
80
|
-
praisonai-2.2.
|
|
77
|
+
praisonai-2.2.33.dist-info/METADATA,sha256=jz3maSJ-2WTTVul2ej5DcjCeP3aSX6EDomDmnKmsvSc,4762
|
|
78
|
+
praisonai-2.2.33.dist-info/WHEEL,sha256=dCzwOzx-VmbmLA5u8QpkARaxx3rsePBxa1nmZphhNQk,110
|
|
79
|
+
praisonai-2.2.33.dist-info/entry_points.txt,sha256=QSSfuXjZMhf16FZ201I_oSoX_s1nWYbi_4_UXPE3S-o,145
|
|
80
|
+
praisonai-2.2.33.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|