agent-lab-sdk 0.1.40__py3-none-any.whl → 0.1.41__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 agent-lab-sdk might be problematic. Click here for more details.

@@ -220,24 +220,33 @@ class AsyncAGWCheckpointSaver(BaseCheckpointSaver):
220
220
  self._client = None
221
221
 
222
222
  # ----------------------- universal dump/load ---------------------
223
- # def _safe_dump(self, obj: Any) -> Any:
224
- # """self.serde.dump → гарантированная JSON-строка."""
225
- # dumped = self.serde.dumps(obj)
226
- # if isinstance(dumped, (bytes, bytearray)):
227
- # return base64.b64encode(dumped).decode() # str
228
- # return dumped # уже json-совместимо
229
-
230
223
  def _safe_dump(self, obj: Any) -> Any:
231
- """bytes → python-object; fallback base64 для реально бинарных данных."""
232
- dumped = self.serde.dumps(obj)
224
+ """
225
+ JSON-first сериализация:
226
+ 1) Пытаемся через self.serde.dumps(obj).
227
+ - Если вернул bytes: пробуем декодировать в JSON-строку и распарсить.
228
+ - Если не JSON/не UTF-8 — заворачиваем как base64-строку.
229
+ - Если вернул dict/list/scalar — они уже JSON-совместимы.
230
+ 2) Если self.serde.dumps(obj) бросает исключение (например, для Send),
231
+ делаем типизированный фолбэк {"type": str, "blob": base64 | None}.
232
+ """
233
+ try:
234
+ dumped = self.serde.dumps(obj)
235
+ except Exception:
236
+ # typed fallback (как рекомендуют в LangGraph для нетривиальных типов)
237
+ # https://langchain-ai.github.io/langgraph/reference/checkpoints/
238
+ try:
239
+ t, b = self.serde.dumps_typed(obj)
240
+ except Exception:
241
+ # крайний случай: строковое представление
242
+ t, b = type(obj).__name__, str(obj).encode()
243
+ return {"type": t, "blob": base64.b64encode(b).decode() if b is not None else None}
244
+
233
245
  if isinstance(dumped, (bytes, bytearray)):
234
246
  try:
235
- # 1) bytes → str
236
247
  s = dumped.decode()
237
- # 2) str JSON → python (list/dict/scalar)
238
248
  return orjson.loads(s)
239
249
  except (UnicodeDecodeError, orjson.JSONDecodeError):
240
- # не UTF-8 или не JSON → base64
241
250
  return base64.b64encode(dumped).decode()
242
251
  return dumped
243
252
 
@@ -308,16 +317,6 @@ class AsyncAGWCheckpointSaver(BaseCheckpointSaver):
308
317
  except Exception:
309
318
  return obj
310
319
 
311
- # def _safe_load(self, obj: Any) -> Any:
312
- # """Обратная операция к _safe_dump."""
313
- # if isinstance(obj, str):
314
- # try:
315
- # return self.serde.load(base64.b64decode(obj))
316
- # except Exception:
317
- # # не base64 — обычная строка
318
- # return self.serde.load(obj)
319
- # return self.serde.load(obj)
320
-
321
320
  # ----------------------- config <-> api --------------------------
322
321
  def _to_api_config(self, cfg: RunnableConfig | None) -> Dict[str, Any]:
323
322
  if not cfg:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-lab-sdk
3
- Version: 0.1.40
3
+ Version: 0.1.41
4
4
  Summary: SDK для работы с Agent Lab
5
5
  Author-email: Andrew Ohurtsov <andermirik@yandex.com>
6
6
  License: Proprietary and Confidential — All Rights Reserved
@@ -1,6 +1,6 @@
1
1
  agent_lab_sdk/__init__.py,sha256=1Dlmv-wuz1QuciymKtYtX7jXzr_fkeGTe7aENfEDl3E,108
2
2
  agent_lab_sdk/langgraph/checkpoint/__init__.py,sha256=DnKwR1LwbaQ3qhb124lE-tnojrUIVcCdNzHEHwgpL5M,86
3
- agent_lab_sdk/langgraph/checkpoint/agw_saver.py,sha256=Srf8RYcW34_u2s54ABl0Jqm-_Z1gBH97gKqVY7QrKOQ,25631
3
+ agent_lab_sdk/langgraph/checkpoint/agw_saver.py,sha256=NFoRDTo-keZ0IGOJCWs2nuhPAPEfPOBFdhhNtv4Z0gQ,25874
4
4
  agent_lab_sdk/langgraph/checkpoint/serde.py,sha256=UTSYbTbhBeL1CAr-XMbaH3SSIx9TeiC7ak22duXvqkw,5175
5
5
  agent_lab_sdk/llm/__init__.py,sha256=Yo9MbYdHS1iX05A9XiJGwWN1Hm4IARGav9mNFPrtDeA,376
6
6
  agent_lab_sdk/llm/agw_token_manager.py,sha256=_bPPI8muaEa6H01P8hHQOJHiiivaLd8N_d3OT9UT_80,4787
@@ -15,8 +15,8 @@ agent_lab_sdk/schema/log_message.py,sha256=nadi6lZGRuDSPmfbYs9QPpRJUT9Pfy8Y7pGCv
15
15
  agent_lab_sdk/storage/__init__.py,sha256=HAtUoqg3k0irqPMewayadVA9aXJOmYSxRr6a5J1scT0,174
16
16
  agent_lab_sdk/storage/storage.py,sha256=ELpt7GRwFD-aWa6ctinfA_QwcvzWLvKS0Wz8FlxVqAs,2075
17
17
  agent_lab_sdk/storage/storage_v2.py,sha256=ONseynX59xzWK17dfzxZvnii2rpz3Oo2Zo9Ck-lcGnw,1997
18
- agent_lab_sdk-0.1.40.dist-info/licenses/LICENSE,sha256=_TRXHkF3S9ilWBPdZcHLI_S-PRjK0L_SeOb2pcPAdV4,417
19
- agent_lab_sdk-0.1.40.dist-info/METADATA,sha256=CnbGjkYor6CXT0xxc4PBCd1n14yNLmGeyGYaw_IAYVQ,19099
20
- agent_lab_sdk-0.1.40.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
- agent_lab_sdk-0.1.40.dist-info/top_level.txt,sha256=E1efqkJ89KNmPBWdLzdMHeVtH0dYyCo4fhnSb81_15I,14
22
- agent_lab_sdk-0.1.40.dist-info/RECORD,,
18
+ agent_lab_sdk-0.1.41.dist-info/licenses/LICENSE,sha256=_TRXHkF3S9ilWBPdZcHLI_S-PRjK0L_SeOb2pcPAdV4,417
19
+ agent_lab_sdk-0.1.41.dist-info/METADATA,sha256=ksFSStSOlPIsT5Xg-ATauthhOfeXWFsVCkfsPfoSOoc,19099
20
+ agent_lab_sdk-0.1.41.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
+ agent_lab_sdk-0.1.41.dist-info/top_level.txt,sha256=E1efqkJ89KNmPBWdLzdMHeVtH0dYyCo4fhnSb81_15I,14
22
+ agent_lab_sdk-0.1.41.dist-info/RECORD,,