agent-lab-sdk 0.1.40__tar.gz → 0.1.41__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.
Files changed (27) hide show
  1. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/PKG-INFO +1 -1
  2. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/langgraph/checkpoint/agw_saver.py +21 -22
  3. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk.egg-info/PKG-INFO +1 -1
  4. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/pyproject.toml +1 -1
  5. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/LICENSE +0 -0
  6. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/README.md +0 -0
  7. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/__init__.py +0 -0
  8. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/langgraph/checkpoint/__init__.py +0 -0
  9. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/langgraph/checkpoint/serde.py +0 -0
  10. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/llm/__init__.py +0 -0
  11. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/llm/agw_token_manager.py +0 -0
  12. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/llm/gigachat_token_manager.py +0 -0
  13. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/llm/llm.py +0 -0
  14. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/llm/throttled.py +0 -0
  15. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/metrics/__init__.py +0 -0
  16. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/metrics/metrics.py +0 -0
  17. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/schema/__init__.py +0 -0
  18. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/schema/input_types.py +0 -0
  19. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/schema/log_message.py +0 -0
  20. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/storage/__init__.py +0 -0
  21. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/storage/storage.py +0 -0
  22. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk/storage/storage_v2.py +0 -0
  23. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk.egg-info/SOURCES.txt +0 -0
  24. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk.egg-info/dependency_links.txt +0 -0
  25. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk.egg-info/requires.txt +0 -0
  26. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/agent_lab_sdk.egg-info/top_level.txt +0 -0
  27. {agent_lab_sdk-0.1.40 → agent_lab_sdk-0.1.41}/setup.cfg +0 -0
@@ -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
@@ -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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-lab-sdk"
7
- version = "0.1.40"
7
+ version = "0.1.41"
8
8
  description = "SDK для работы с Agent Lab"
9
9
  readme = "README.md"
10
10
  license = { text = "Proprietary and Confidential — All Rights Reserved" }
File without changes
File without changes
File without changes