camel-ai 0.2.72a4__py3-none-any.whl → 0.2.72a5__py3-none-any.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 camel-ai might be problematic. Click here for more details.

@@ -1447,44 +1447,46 @@ class TerminalToolkit(BaseToolkit):
1447
1447
  logger.info("TerminalToolkit cleanup initiated")
1448
1448
 
1449
1449
  # Clean up all processes in shell sessions
1450
- for session_id, session in self.shell_sessions.items():
1451
- process = session.get("process")
1452
- if process is not None and session.get("running", False):
1453
- try:
1454
- logger.info(
1455
- f"Terminating process in session '{session_id}'"
1456
- )
1457
-
1458
- # Close process input/output streams if open
1459
- if (
1460
- hasattr(process, 'stdin')
1461
- and process.stdin
1462
- and not process.stdin.closed
1463
- ):
1464
- process.stdin.close()
1465
-
1466
- # Terminate the process
1467
- process.terminate()
1450
+ if hasattr(self, 'shell_sessions'):
1451
+ for session_id, session in self.shell_sessions.items():
1452
+ process = session.get("process")
1453
+ if process is not None and session.get("running", False):
1468
1454
  try:
1469
- # Give the process a short time to terminate gracefully
1470
- process.wait(timeout=3)
1471
- except subprocess.TimeoutExpired:
1472
- # Force kill if the process doesn't terminate
1473
- # gracefully
1474
- logger.warning(
1475
- f"Process in session '{session_id}' did not "
1476
- f"terminate gracefully, forcing kill"
1455
+ logger.info(
1456
+ f"Terminating process in session '{session_id}'"
1477
1457
  )
1478
- process.kill()
1479
1458
 
1480
- # Mark the session as not running
1481
- session["running"] = False
1459
+ # Close process input/output streams if open
1460
+ if (
1461
+ hasattr(process, 'stdin')
1462
+ and process.stdin
1463
+ and not process.stdin.closed
1464
+ ):
1465
+ process.stdin.close()
1482
1466
 
1483
- except Exception as e:
1484
- logger.error(
1485
- f"Error cleaning up process in session "
1486
- f"'{session_id}': {e}"
1487
- )
1467
+ # Terminate the process
1468
+ process.terminate()
1469
+ try:
1470
+ # Give the process a short time to terminate
1471
+ # gracefully
1472
+ process.wait(timeout=3)
1473
+ except subprocess.TimeoutExpired:
1474
+ # Force kill if the process doesn't terminate
1475
+ # gracefully
1476
+ logger.warning(
1477
+ f"Process in session '{session_id}' did not "
1478
+ f"terminate gracefully, forcing kill"
1479
+ )
1480
+ process.kill()
1481
+
1482
+ # Mark the session as not running
1483
+ session["running"] = False
1484
+
1485
+ except Exception as e:
1486
+ logger.error(
1487
+ f"Error cleaning up process in session "
1488
+ f"'{session_id}': {e}"
1489
+ )
1488
1490
 
1489
1491
  # Clean up file output if it exists
1490
1492
  if hasattr(self, 'log_file') and self.is_macos:
camel/types/enums.py CHANGED
@@ -13,7 +13,7 @@
13
13
  # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import os
15
15
  from enum import Enum, EnumMeta
16
- from typing import cast
16
+ from typing import Union, cast
17
17
 
18
18
  from camel.logger import get_logger
19
19
  from camel.types.unified_model_type import UnifiedModelType
@@ -420,11 +420,14 @@ class ModelType(UnifiedModelType, Enum):
420
420
  def __str__(self):
421
421
  return self.value
422
422
 
423
- def __new__(cls, value) -> "ModelType":
423
+ def __repr__(self):
424
+ return self.value
425
+
426
+ def __new__(cls, value: Union["ModelType", str]) -> "ModelType":
424
427
  return cast("ModelType", UnifiedModelType.__new__(cls, value))
425
428
 
426
429
  @classmethod
427
- def from_name(cls, name):
430
+ def from_name(cls, name: str) -> "ModelType":
428
431
  r"""Returns the ModelType enum value from a string."""
429
432
  for model_type in cls:
430
433
  if model_type.value == name:
@@ -12,6 +12,7 @@
12
12
  # limitations under the License.
13
13
  # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  import logging
15
+ from enum import Enum
15
16
  from threading import Lock
16
17
  from typing import TYPE_CHECKING, ClassVar, Dict, Union, cast
17
18
 
@@ -32,17 +33,28 @@ class UnifiedModelType(str):
32
33
  _lock: ClassVar[Lock] = Lock()
33
34
 
34
35
  def __new__(cls, value: Union["ModelType", str]) -> "UnifiedModelType":
36
+ if isinstance(value, Enum):
37
+ str_value = value.value
38
+ else:
39
+ str_value = str(value)
40
+
35
41
  with cls._lock:
36
- if value not in cls._cache:
37
- instance = super().__new__(cls, value)
38
- cls._cache[value] = cast(UnifiedModelType, instance)
42
+ if str_value not in cls._cache:
43
+ instance = super().__new__(cls, str_value)
44
+ cls._cache[str_value] = cast(UnifiedModelType, instance)
39
45
  else:
40
- instance = cls._cache[value]
46
+ instance = cls._cache[str_value]
41
47
  return instance
42
48
 
43
49
  def __init__(self, value: Union["ModelType", str]) -> None:
44
50
  pass
45
51
 
52
+ def __repr__(self) -> str:
53
+ return super().__str__()
54
+
55
+ def __str__(self) -> str:
56
+ return super().__str__()
57
+
46
58
  @property
47
59
  def value_for_tiktoken(self) -> str:
48
60
  r"""Returns the model name for TikToken."""
camel/utils/mcp_client.py CHANGED
@@ -353,6 +353,14 @@ class MCPClient:
353
353
  finally:
354
354
  self._connection_context = None
355
355
 
356
+ # Add a small delay to allow subprocess cleanup on Windows
357
+ # This prevents "Event loop is closed" errors during shutdown
358
+ import asyncio
359
+ import sys
360
+
361
+ if sys.platform == "win32":
362
+ await asyncio.sleep(0.01)
363
+
356
364
  finally:
357
365
  # Ensure state is reset
358
366
  self._tools = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.72a4
3
+ Version: 0.2.72a5
4
4
  Summary: Communicative Agents for AI Society Study
5
5
  Project-URL: Homepage, https://www.camel-ai.org/
6
6
  Project-URL: Repository, https://github.com/camel-ai/camel
@@ -127,7 +127,7 @@ Requires-Dist: sympy<2,>=1.13.3; extra == 'all'
127
127
  Requires-Dist: tabulate>=0.9.0; extra == 'all'
128
128
  Requires-Dist: tavily-python<0.6,>=0.5.0; extra == 'all'
129
129
  Requires-Dist: textblob<0.18,>=0.17.1; extra == 'all'
130
- Requires-Dist: traceroot==0.0.3; extra == 'all'
130
+ Requires-Dist: traceroot==0.0.4a2; extra == 'all'
131
131
  Requires-Dist: transformers<5,>=4; extra == 'all'
132
132
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'all'
133
133
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'all'
@@ -191,7 +191,7 @@ Requires-Dist: ipykernel<7,>=6.0.0; extra == 'dev-tools'
191
191
  Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'dev-tools'
192
192
  Requires-Dist: langfuse>=2.60.5; extra == 'dev-tools'
193
193
  Requires-Dist: mcp>=1.3.0; extra == 'dev-tools'
194
- Requires-Dist: traceroot==0.0.3; extra == 'dev-tools'
194
+ Requires-Dist: traceroot==0.0.4a2; extra == 'dev-tools'
195
195
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'dev-tools'
196
196
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'dev-tools'
197
197
  Requires-Dist: typer>=0.15.2; extra == 'dev-tools'
@@ -1,4 +1,4 @@
1
- camel/__init__.py,sha256=-uCv1AX5Ap45hQH56gS_ZVzKQCGj0wr5aWajREYrato,901
1
+ camel/__init__.py,sha256=1CBJAF1mkpASoGuIu5or-PNvl4ZJZ11EMC1iSaJPBek,901
2
2
  camel/generators.py,sha256=JRqj9_m1PF4qT6UtybzTQ-KBT9MJQt18OAAYvQ_fr2o,13844
3
3
  camel/human.py,sha256=Xg8x1cS5KK4bQ1SDByiHZnzsRpvRP-KZViNvmu38xo4,5475
4
4
  camel/logger.py,sha256=WgEwael_eT6D-lVAKHpKIpwXSTjvLbny5jbV1Ab8lnA,5760
@@ -7,7 +7,7 @@ camel/agents/__init__.py,sha256=64weKqdvmpZcGWyVkO-OKASAmVUdrQjv60JApgPk_SA,1644
7
7
  camel/agents/_types.py,sha256=MeFZzay2kJA6evALQ-MbBTKW-0lu_0wBuKsxzH_4gWI,1552
8
8
  camel/agents/_utils.py,sha256=AR7Qqgbkmn4X2edYUQf1rdksGUyV5hm3iK1z-Dn0Mcg,6266
9
9
  camel/agents/base.py,sha256=c4bJYL3G3Z41SaFdMPMn8ZjLdFiFaVOFO6EQIfuCVR8,1124
10
- camel/agents/chat_agent.py,sha256=gF-Wq1YSL5C4_9pp9SN4jdfLrzF-d3xi51PnskQyi7k,159299
10
+ camel/agents/chat_agent.py,sha256=IAd0uY42DVsP8rV6XcgTO3G_iUREGI0NAq7KqFnZPHY,162638
11
11
  camel/agents/critic_agent.py,sha256=L6cTbYjyZB0DCa51tQ6LZLA6my8kHLC4nktHySH78H4,10433
12
12
  camel/agents/deductive_reasoner_agent.py,sha256=6BZGaq1hR6hKJuQtOfoYQnk_AkZpw_Mr7mUy2MspQgs,13540
13
13
  camel/agents/embodied_agent.py,sha256=XBxBu5ZMmSJ4B2U3Z7SMwvLlgp6yNpaBe8HNQmY9CZA,7536
@@ -201,7 +201,7 @@ camel/models/nvidia_model.py,sha256=WBn9PUz3FxqrSf8cfO3O6pyWL_0_9RYD8_t5qiEjGRQ,
201
201
  camel/models/ollama_model.py,sha256=srHz0-gC4w6S19l3AfVIEXbTlRCSJwRijXxXMoHkm8Y,4733
202
202
  camel/models/openai_audio_models.py,sha256=BSixkXlc8xirQLl2qCla-g6_y9wDLnMZVHukHrhzw98,13344
203
203
  camel/models/openai_compatible_model.py,sha256=CVKKMx34xyQh1t3Nx3RpUcS9dzIWAHKMGwKCS-mXK2c,16913
204
- camel/models/openai_model.py,sha256=tkgElziLXvb6ciLkqjZ-HNAfWebX5boCDH8xwTrEIBc,19875
204
+ camel/models/openai_model.py,sha256=5wBYBEAKEHMnP4Aej36nV1wA61K8SYLfMuMqR2Gr15U,20355
205
205
  camel/models/openrouter_model.py,sha256=mzWn_mSlp_2Ssnzyv_rs2ybGXkNOxqUzTkyyQFGkokw,4183
206
206
  camel/models/ppio_model.py,sha256=LoEyRNdcHI0z80AHJ2R1JO6JWtrIB0TnCcYa-71SOMw,4208
207
207
  camel/models/qianfan_model.py,sha256=7q8GkLBhPVzq5LxBxxQhbJrt7YZh7WwHxe8pILVZuqI,4292
@@ -316,7 +316,7 @@ camel/terminators/__init__.py,sha256=t8uqrkUnXEOYMXQDgaBkMFJ0EXFKI0kmx4cUimli3Ls
316
316
  camel/terminators/base.py,sha256=xmJzERX7GdSXcxZjAHHODa0rOxRChMSRboDCNHWSscs,1511
317
317
  camel/terminators/response_terminator.py,sha256=n3G5KP6Oj7-7WlRN0yFcrtLpqAJKaKS0bmhrWlFfCgQ,4982
318
318
  camel/terminators/token_limit_terminator.py,sha256=YWv6ZR8R9yI2Qnf_3xES5bEE_O5bb2CxQ0EUXfMh34c,2118
319
- camel/toolkits/__init__.py,sha256=xnzCDolb9-0sVI9cvsNPIYATgSHK6pnnHos-O7UOgKQ,5649
319
+ camel/toolkits/__init__.py,sha256=_pj0AsKLAQ3hezISovNfUESXGUDQ9R98YAs_jmRolhw,5719
320
320
  camel/toolkits/aci_toolkit.py,sha256=39AsXloBb16hHB7DKi6mFU6NPZ3iVpM2FZgaP4o4eLE,16060
321
321
  camel/toolkits/arxiv_toolkit.py,sha256=mw629nIN_ozaAxNv3nbvhonJKNI2-97ScRCBS3gVqNo,6297
322
322
  camel/toolkits/ask_news_toolkit.py,sha256=WfWaqwEo1Apbil3-Rb5y65Ws43NU4rAFWZu5VHe4los,23448
@@ -358,6 +358,7 @@ camel/toolkits/open_api_toolkit.py,sha256=Venfq8JwTMQfzRzzB7AYmYUMEX35hW0BjIv_oz
358
358
  camel/toolkits/openai_agent_toolkit.py,sha256=hT2ancdQigngAiY1LNnGJzZeiBDHUxrRGv6BdZTJizc,4696
359
359
  camel/toolkits/openai_image_toolkit.py,sha256=-7_3utTx3T2GgDSW5Sdz4yBDzUcBMimC2QUaXXvDWXg,11168
360
360
  camel/toolkits/openbb_toolkit.py,sha256=8yBZL9E2iSgskosBQhD3pTP56oV6gerWpFjIJc_2UMo,28935
361
+ camel/toolkits/origene_mcp_toolkit.py,sha256=tcYjYNiAyULQFtEgvCRa17WcBN7h-Um6dqulXnbCBdk,3085
361
362
  camel/toolkits/page_script.js,sha256=mXepZPnQNVLp_Wgb64lv7DMQIJYl_XIHJHLVt1OFZO4,13146
362
363
  camel/toolkits/playwright_mcp_toolkit.py,sha256=TRweKatFu-7UzfiuXrud2D_4OQjbf4tdP_sCBJ69FG8,3018
363
364
  camel/toolkits/pptx_toolkit.py,sha256=kE2sofzAm0Hmawj7oOu0Z7D-RdJRBAIG-Bdfxoag3zU,29136
@@ -373,7 +374,7 @@ camel/toolkits/slack_toolkit.py,sha256=ZT6Ndlce2qjGsyZaNMfQ54nSEi7DOC9Ro7YqtK-u5
373
374
  camel/toolkits/stripe_toolkit.py,sha256=07swo5znGTnorafC1uYLKB4NRcJIOPOx19J7tkpLYWk,10102
374
375
  camel/toolkits/sympy_toolkit.py,sha256=BAQnI8EFJydNUpKQWXBdleQ1Cm-srDBhFlqp9V9pbPQ,33757
375
376
  camel/toolkits/task_planning_toolkit.py,sha256=Ttw9fHae4omGC1SA-6uaeXVHJ1YkwiVloz_hO-fm1gw,4855
376
- camel/toolkits/terminal_toolkit.py,sha256=i01BSPGs3hbM76SXNt5XpUjco2AoUkWl5K0wUxxm5JQ,58349
377
+ camel/toolkits/terminal_toolkit.py,sha256=RssGBgrK8JGI188JQlmKwRnuJxwfj80swd9tbY1H2dM,58559
377
378
  camel/toolkits/thinking_toolkit.py,sha256=nZYLvKWIx2BM1DYu69I9B5EISAG7aYcLYXKv9663BVk,8000
378
379
  camel/toolkits/twitter_toolkit.py,sha256=Px4N8aUxUzy01LhGSWkdrC2JgwKkrY3cvxgMeJ2XYfU,15939
379
380
  camel/toolkits/video_analysis_toolkit.py,sha256=Wh08MAVvs3PtgXN88Sk0TXYaGfVmQAol8FPCXMPPpIM,23375
@@ -385,9 +386,9 @@ camel/toolkits/zapier_toolkit.py,sha256=A83y1UcfuopH7Fx82pORzypl1StbhBjB2HhyOqYa
385
386
  camel/toolkits/hybrid_browser_toolkit/__init__.py,sha256=vxjWhq7GjUKE5I9RGQU_GoikZJ-AVK4ertdvEqp9pd0,802
386
387
  camel/toolkits/hybrid_browser_toolkit/actions.py,sha256=x6X-kEdQx3K1ID-BBwdQEciX6C0KMt5QUszpnksnj3A,15003
387
388
  camel/toolkits/hybrid_browser_toolkit/agent.py,sha256=0ifwhYUDJ5GLxfdpC5KquPaW1a0QBAutp2Y9y0YFujw,11685
388
- camel/toolkits/hybrid_browser_toolkit/browser_session.py,sha256=LdXjF4eBFuqoRnbPU0ErBtR5wtbcv3cv-hBXtiDkgMg,27102
389
+ camel/toolkits/hybrid_browser_toolkit/browser_session.py,sha256=fgV1o4pWOQ_fUvmpk7UHYcJCqHY_cmivoY_OB0ZKv3s,26866
389
390
  camel/toolkits/hybrid_browser_toolkit/config_loader.py,sha256=0zpDq3aFKEva2jc38kgLHnyxypIDk9SOcMjoP26tozo,15414
390
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py,sha256=5rrwj7H3qKoSUaDBPozWxcGqbdCInUrhhDTPZ6O7ZBU,77550
391
+ camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py,sha256=0tNgYEEiTvgQ-_m2bRT3zSmClqyoHeF1VvMZuPce9Ow,77477
391
392
  camel/toolkits/hybrid_browser_toolkit/snapshot.py,sha256=3vQaFK5C1P8WnkK2eDMaFOizrZf4uUAW0LxdeoF4F2w,8539
392
393
  camel/toolkits/hybrid_browser_toolkit/stealth_script.js,sha256=z4XRSVUpAS87Sj36s3bY8XXhvRcHBlgsUOyMxV2HI80,27650
393
394
  camel/toolkits/hybrid_browser_toolkit/unified_analyzer.js,sha256=VnzIn0KcEtxuncJi-OPZzdWbLSeSHCH-7sviFAGNM8g,40823
@@ -417,10 +418,10 @@ camel/toolkits/open_api_specs/web_scraper/openapi.yaml,sha256=u_WalQ01e8W1D27VnZ
417
418
  camel/toolkits/open_api_specs/web_scraper/paths/__init__.py,sha256=OKCZrQCDwaWtXIN_2rA9FSqEvgpQRieRoHh7Ek6N16A,702
418
419
  camel/toolkits/open_api_specs/web_scraper/paths/scraper.py,sha256=aWy1_ppV4NVVEZfnbN3tu9XA9yAPAC9bRStJ5JuXMRU,1117
419
420
  camel/types/__init__.py,sha256=pFTg3CWGSCfwFdoxPDTf4dKV8DdJS1x-bBPuEOmtdf0,2549
420
- camel/types/enums.py,sha256=qEPE2r4Np7JgJqSsZmM0SNQ8_hy19aeCn5da3pK93so,62948
421
+ camel/types/enums.py,sha256=Zf37-MvLlbZt6WLNRMDi5UWiVDN1Q2CeZvLPSbFcg_Q,63051
421
422
  camel/types/mcp_registries.py,sha256=dl4LgYtSaUhsqAKpz28k_SA9La11qxqBvDLaEuyzrFE,4971
422
423
  camel/types/openai_types.py,sha256=8ZFzLe-zGmKNPfuVZFzxlxAX98lGf18gtrPhOgMmzus,2104
423
- camel/types/unified_model_type.py,sha256=ZweHiS4MQ1QbDEX3a3oUc-pvgueYP27Zt0SlAPcYg_4,5623
424
+ camel/types/unified_model_type.py,sha256=U3NUZux7QuMIxPW2H0qDp9BOyDJFHAx6jUmDNw5_9KM,5912
424
425
  camel/types/agents/__init__.py,sha256=cbvVkogPoZgcwZrgxLH6EtpGXk0kavF79nOic0Dc1vg,786
425
426
  camel/types/agents/tool_calling_record.py,sha256=xG0a9TJu-nQQ9aAxpZwYmgqnpjEbnm2cRjjG8uDSIbg,1979
426
427
  camel/utils/__init__.py,sha256=qQeMHZJ8Bbgpm4tBu-LWc_P3iFjXBlVfALdKTiD_s8I,3305
@@ -431,7 +432,7 @@ camel/utils/deduplication.py,sha256=UHikAtOW1TTDunf2t_wa2kFbmkrXWf7HfOKwLvwCxzo,
431
432
  camel/utils/filename.py,sha256=HYNc1wbSCgNR1CN21cwHxdAhpnsf5ySJ6jUDfeqOK20,2532
432
433
  camel/utils/langfuse.py,sha256=OowR6A790XG-b0UHiTYduYvS18PvSGFdmqki2Poogo0,8578
433
434
  camel/utils/mcp.py,sha256=iuthL8VuUXIRU34Nvx8guq7frfglpZoxewUKuAg3e1s,5077
434
- camel/utils/mcp_client.py,sha256=-EIUj6v2hXB75Xvj2FyEedwUMEpUUVXzXWNLLYGrJfE,37305
435
+ camel/utils/mcp_client.py,sha256=o-EPdJ5EL5M9sjkSADvLBz9IoHhtXteKGidauIxw3ps,37584
435
436
  camel/utils/message_summarizer.py,sha256=7AvPDlevle5uU3mXtfvSFS--nDjp9yqfrf546qTe9rE,5939
436
437
  camel/utils/response_format.py,sha256=xZcx6xBxeg3A0e7R0JCMJdNm2oQ1-diqVLs0JsiCkZU,5319
437
438
  camel/utils/token_counting.py,sha256=apkERzNoVc4sgvJvWVosvepX3KH8pVypVjrL4AA7RB4,17521
@@ -446,7 +447,7 @@ camel/verifiers/math_verifier.py,sha256=tA1D4S0sm8nsWISevxSN0hvSVtIUpqmJhzqfbuMo
446
447
  camel/verifiers/models.py,sha256=GdxYPr7UxNrR1577yW4kyroRcLGfd-H1GXgv8potDWU,2471
447
448
  camel/verifiers/physics_verifier.py,sha256=c1grrRddcrVN7szkxhv2QirwY9viIRSITWeWFF5HmLs,30187
448
449
  camel/verifiers/python_verifier.py,sha256=ogTz77wODfEcDN4tMVtiSkRQyoiZbHPY2fKybn59lHw,20558
449
- camel_ai-0.2.72a4.dist-info/METADATA,sha256=kOuH0htxiRDCQnwwcynOhM_PqLTFaIicdxG9lmE-kqw,49998
450
- camel_ai-0.2.72a4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
451
- camel_ai-0.2.72a4.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
452
- camel_ai-0.2.72a4.dist-info/RECORD,,
450
+ camel_ai-0.2.72a5.dist-info/METADATA,sha256=Wz9MWyKAIycL-cbi72RKL7fa0PGkah967IzH03-ag_o,50002
451
+ camel_ai-0.2.72a5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
452
+ camel_ai-0.2.72a5.dist-info/licenses/LICENSE,sha256=id0nB2my5kG0xXeimIu5zZrbHLS6EQvxvkKkzIHaT2k,11343
453
+ camel_ai-0.2.72a5.dist-info/RECORD,,