PraisonAI 0.0.68__tar.gz → 0.0.70__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.

Potentially problematic release.


This version of PraisonAI might be problematic. Click here for more details.

Files changed (47) hide show
  1. {praisonai-0.0.68 → praisonai-0.0.70}/PKG-INFO +2 -2
  2. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/deploy.py +1 -1
  3. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/code.py +23 -4
  4. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/sql_alchemy.py +11 -1
  5. {praisonai-0.0.68 → praisonai-0.0.70}/pyproject.toml +3 -3
  6. {praisonai-0.0.68 → praisonai-0.0.70}/LICENSE +0 -0
  7. {praisonai-0.0.68 → praisonai-0.0.70}/README.md +0 -0
  8. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/__init__.py +0 -0
  9. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/__main__.py +0 -0
  10. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/agents_generator.py +0 -0
  11. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/auto.py +0 -0
  12. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/chainlit_ui.py +0 -0
  13. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/cli.py +0 -0
  14. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/inbuilt_tools/__init__.py +0 -0
  15. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  16. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/inc/__init__.py +0 -0
  17. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/inc/config.py +0 -0
  18. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/inc/models.py +0 -0
  19. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/android-chrome-192x192.png +0 -0
  20. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/android-chrome-512x512.png +0 -0
  21. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/apple-touch-icon.png +0 -0
  22. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/fantasy.svg +0 -0
  23. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/favicon-16x16.png +0 -0
  24. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/favicon-32x32.png +0 -0
  25. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/favicon.ico +0 -0
  26. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/game.svg +0 -0
  27. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/logo_dark.png +0 -0
  28. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/logo_light.png +0 -0
  29. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/movie.svg +0 -0
  30. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/public/thriller.svg +0 -0
  31. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/setup/__init__.py +0 -0
  32. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/setup/build.py +0 -0
  33. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/setup/config.yaml +0 -0
  34. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/setup/post_install.py +0 -0
  35. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/setup/setup_conda_env.py +0 -0
  36. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/setup/setup_conda_env.sh +0 -0
  37. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/test.py +0 -0
  38. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/train.py +0 -0
  39. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/chat.py +0 -0
  40. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/context.py +0 -0
  41. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/public/fantasy.svg +0 -0
  42. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/public/game.svg +0 -0
  43. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/public/logo_dark.png +0 -0
  44. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/public/logo_light.png +0 -0
  45. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/public/movie.svg +0 -0
  46. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/ui/public/thriller.svg +0 -0
  47. {praisonai-0.0.68 → praisonai-0.0.70}/praisonai/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PraisonAI
3
- Version: 0.0.68
3
+ Version: 0.0.70
4
4
  Summary: PraisonAI application combines AutoGen and CrewAI or similar frameworks into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customization, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  Requires-Python: >=3.10,<3.13
@@ -21,7 +21,7 @@ Provides-Extra: train
21
21
  Provides-Extra: ui
22
22
  Requires-Dist: agentops (>=0.2.6) ; extra == "agentops"
23
23
  Requires-Dist: aiosqlite (>=0.20.0) ; extra == "chat" or extra == "code"
24
- Requires-Dist: chainlit (>=1.1.404,<2.0.0) ; extra == "ui" or extra == "chat" or extra == "code"
24
+ Requires-Dist: chainlit (==1.2.0) ; extra == "ui" or extra == "chat" or extra == "code"
25
25
  Requires-Dist: crewai (>=0.32.0)
26
26
  Requires-Dist: flask (>=3.0.0) ; extra == "api"
27
27
  Requires-Dist: gradio (>=4.26.0) ; extra == "gradio"
@@ -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==0.0.68 gunicorn markdown\n")
59
+ file.write("RUN pip install flask praisonai==0.0.70 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
 
@@ -216,13 +216,19 @@ async def setup_agent(settings):
216
216
  # Save in thread metadata
217
217
  thread_id = cl.user_session.get("thread_id")
218
218
  if thread_id:
219
- thread = await cl_data.get_thread(thread_id)
219
+ thread = await cl_data._data_layer.get_thread(thread_id)
220
220
  if thread:
221
221
  metadata = thread.get("metadata", {})
222
+ if isinstance(metadata, str):
223
+ try:
224
+ metadata = json.loads(metadata)
225
+ except json.JSONDecodeError:
226
+ metadata = {}
227
+
222
228
  metadata["model_name"] = model_name
223
229
 
224
230
  # Always store metadata as a JSON string
225
- await cl_data.update_thread(thread_id, metadata=json.dumps(metadata))
231
+ await cl_data._data_layer.update_thread(thread_id, metadata=json.dumps(metadata))
226
232
 
227
233
  # Update the user session with the new metadata
228
234
  cl.user_session.set("metadata", metadata)
@@ -299,8 +305,14 @@ async def on_chat_resume(thread: ThreadDict):
299
305
  thread_id = thread["id"]
300
306
  cl.user_session.set("thread_id", thread["id"])
301
307
 
302
- # The metadata should now already be a dictionary
308
+ # Ensure metadata is a dictionary
303
309
  metadata = thread.get("metadata", {})
310
+ if isinstance(metadata, str):
311
+ try:
312
+ metadata = json.loads(metadata)
313
+ except json.JSONDecodeError:
314
+ metadata = {}
315
+
304
316
  cl.user_session.set("metadata", metadata)
305
317
 
306
318
  message_history = cl.user_session.get("message_history", [])
@@ -312,7 +324,14 @@ async def on_chat_resume(thread: ThreadDict):
312
324
  message_history.append({"role": "user", "content": message.get("output", "")})
313
325
  elif msg_type == "assistant_message":
314
326
  message_history.append({"role": "assistant", "content": message.get("output", "")})
327
+ elif msg_type == "run":
328
+ # Handle 'run' type messages
329
+ if message.get("isError"):
330
+ message_history.append({"role": "system", "content": f"Error: {message.get('output', '')}"})
331
+ else:
332
+ # You might want to handle non-error 'run' messages differently
333
+ pass
315
334
  else:
316
- logger.warning(f"Message without type: {message}")
335
+ logger.warning(f"Message without recognized type: {message}")
317
336
 
318
337
  cl.user_session.set("message_history", message_history)
@@ -612,6 +612,16 @@ class SQLAlchemyDataLayer(BaseDataLayer):
612
612
  for thread in user_threads:
613
613
  thread_id = thread["thread_id"]
614
614
  if thread_id is not None:
615
+ # Ensure metadata is a dictionary
616
+ metadata = thread["thread_metadata"]
617
+ if isinstance(metadata, str):
618
+ try:
619
+ metadata = json.loads(metadata)
620
+ except json.JSONDecodeError:
621
+ metadata = {}
622
+ elif metadata is None:
623
+ metadata = {}
624
+
615
625
  thread_dicts[thread_id] = ThreadDict(
616
626
  id=thread_id,
617
627
  createdAt=thread["thread_createdat"],
@@ -619,7 +629,7 @@ class SQLAlchemyDataLayer(BaseDataLayer):
619
629
  userId=thread["user_id"],
620
630
  userIdentifier=thread["user_identifier"],
621
631
  tags=thread["thread_tags"],
622
- metadata=thread["thread_metadata"],
632
+ metadata=metadata,
623
633
  steps=[],
624
634
  elements=[],
625
635
  )
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "PraisonAI"
3
- version = "0.0.68"
3
+ version = "0.0.70"
4
4
  description = "PraisonAI application combines AutoGen and CrewAI or similar frameworks into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customization, and efficient human-agent collaboration."
5
5
  authors = ["Mervin Praison"]
6
6
  license = ""
@@ -21,7 +21,7 @@ crewai = ">=0.32.0"
21
21
  markdown = ">=3.5"
22
22
  praisonai-tools = ">=0.0.7"
23
23
  pyparsing = ">=3.0.0"
24
- chainlit = {version = "^1.1.404", optional = true}
24
+ chainlit = {version = "==1.2.0", optional = true}
25
25
  gradio = {version = ">=4.26.0", optional = true}
26
26
  flask = {version = ">=3.0.0", optional = true}
27
27
  agentops = {version = ">=0.2.6", optional = true}
@@ -70,7 +70,7 @@ mkdocstrings-python = "*"
70
70
  pdoc3 = "*"
71
71
  xmlrunner = "*"
72
72
  unittest2 = "*"
73
- chainlit = "^1.1.404"
73
+ chainlit = "==1.2.0"
74
74
  gradio = ">=4.26.0"
75
75
  flask = ">=3.0.0"
76
76
  agentops = ">=0.2.6"
File without changes
File without changes
File without changes
File without changes
File without changes