evolve-sdk 0.0.52.dev713__tar.gz → 0.0.52.dev714__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 (43) hide show
  1. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/PKG-INFO +1 -1
  2. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/__init__.py +3 -1
  3. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/hosted.py +46 -0
  4. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/PKG-INFO +1 -1
  5. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/pyproject.toml +1 -1
  6. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/LICENSE +0 -0
  7. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/MANIFEST.in +0 -0
  8. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/README.md +0 -0
  9. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/bridge/__init__.py +0 -0
  10. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/bridge/dist/bridge.bundle.cjs +0 -0
  11. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/_http.py +0 -0
  12. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/agent.py +0 -0
  13. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/bridge.py +0 -0
  14. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/browser_credentials.py +0 -0
  15. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/browser_profiles.py +0 -0
  16. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/config.py +0 -0
  17. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/integrations.py +0 -0
  18. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/managed_secrets.py +0 -0
  19. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/pipeline/__init__.py +0 -0
  20. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/pipeline/pipeline.py +0 -0
  21. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/pipeline/types.py +0 -0
  22. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/prompts/__init__.py +0 -0
  23. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/prompts/agent_md/judge.md +0 -0
  24. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/prompts/agent_md/reduce.md +0 -0
  25. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/prompts/agent_md/verify.md +0 -0
  26. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/prompts/user/judge.md +0 -0
  27. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/prompts/user/retry_feedback.md +0 -0
  28. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/prompts/user/verify.md +0 -0
  29. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/results.py +0 -0
  30. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/retry.py +0 -0
  31. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/schema.py +0 -0
  32. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/sessions_client.py +0 -0
  33. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/storage_client.py +0 -0
  34. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/swarm/__init__.py +0 -0
  35. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/swarm/results.py +0 -0
  36. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/swarm/swarm.py +0 -0
  37. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/swarm/types.py +0 -0
  38. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve/utils.py +0 -0
  39. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/SOURCES.txt +0 -0
  40. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/dependency_links.txt +0 -0
  41. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/requires.txt +0 -0
  42. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/top_level.txt +0 -0
  43. {evolve_sdk-0.0.52.dev713 → evolve_sdk-0.0.52.dev714}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolve-sdk
3
- Version: 0.0.52.dev713
3
+ Version: 0.0.52.dev714
4
4
  Summary: Pythonic SDK for multi-agent orchestration in E2B sandboxes
5
5
  Author-email: "Swarmlink, Inc." <brandomagnani@evolvingmachines.ai>
6
6
  License: Apache-2.0
@@ -60,6 +60,7 @@ from .hosted import (
60
60
  DatasetSelector,
61
61
  DatasetVersion,
62
62
  DatasetVersionGate,
63
+ DatasetVersionGateFailedTask,
63
64
  DatasetsClient,
64
65
  EvalSandboxProvider,
65
66
  EvolveAPIError,
@@ -362,7 +363,7 @@ async def list_checkpoints(
362
363
  await store.close()
363
364
 
364
365
 
365
- __version__ = '0.0.52.dev713'
366
+ __version__ = '0.0.52.dev714'
366
367
 
367
368
  __all__ = [
368
369
  # Main classes
@@ -444,6 +445,7 @@ __all__ = [
444
445
  'ActiveDataset',
445
446
  'DatasetVersion',
446
447
  'DatasetVersionGate',
448
+ 'DatasetVersionGateFailedTask',
447
449
  'DatasetRef',
448
450
  'DatasetSelector',
449
451
  'DatasetImport',
@@ -301,6 +301,20 @@ AttemptPhase = Literal[
301
301
  ]
302
302
 
303
303
 
304
+ @dataclass
305
+ class DatasetVersionGateFailedTask:
306
+ """One task the activation gate found ineligible.
307
+
308
+ ``outcome`` is the gate's verdict word (``FAIL``, or ``ERROR`` when the
309
+ run produced no usable score; ``None`` when the server omits it) and
310
+ ``reasons`` are the gate's own sentences for this task — empty when the
311
+ server names none.
312
+ """
313
+ task_name: str
314
+ outcome: Optional[str] = None
315
+ reasons: List[str] = field(default_factory=list)
316
+
317
+
304
318
  @dataclass
305
319
  class DatasetVersionGate:
306
320
  """The activation gate's progress for one dataset version.
@@ -309,11 +323,16 @@ class DatasetVersionGate:
309
323
  ``PASSED``/``FAILED`` as wire values). ``code`` and ``message`` are set on
310
324
  failure — one machine word and one human sentence — and are ``None`` while
311
325
  the gate is healthy. ``attempts`` counts gate runs so far.
326
+ ``failed_tasks`` names each ineligible task with the gate's own reasons
327
+ (the server sends the first 25); it is empty while the gate is healthy and
328
+ empty on servers that predate the field — absence is "nothing to report",
329
+ never a crash.
312
330
  """
313
331
  status: str
314
332
  attempts: int
315
333
  code: Optional[str] = None
316
334
  message: Optional[str] = None
335
+ failed_tasks: List[DatasetVersionGateFailedTask] = field(default_factory=list)
317
336
 
318
337
 
319
338
  @dataclass
@@ -1197,14 +1216,41 @@ def _map_version_gate(data: Any) -> Optional[DatasetVersionGate]:
1197
1216
  data.get('message') if isinstance(data.get('message'), str) else failure.get('message')
1198
1217
  )
1199
1218
  attempts = data.get('attempts')
1219
+ raw_failed = data.get('failed_tasks')
1220
+ if not isinstance(raw_failed, list):
1221
+ raw_failed = failure.get('failed_tasks')
1200
1222
  return DatasetVersionGate(
1201
1223
  status=data['status'],
1202
1224
  attempts=attempts if isinstance(attempts, int) and not isinstance(attempts, bool) else 0,
1203
1225
  code=code if isinstance(code, str) else None,
1204
1226
  message=message if isinstance(message, str) else None,
1227
+ failed_tasks=_map_gate_failed_tasks(raw_failed),
1205
1228
  )
1206
1229
 
1207
1230
 
1231
+ def _map_gate_failed_tasks(data: Any) -> List[DatasetVersionGateFailedTask]:
1232
+ """The per-task cause list behind a FAILED gate, with the gate's tolerance.
1233
+
1234
+ Absent or unreadable input is an empty list, an entry without a task name
1235
+ is dropped, and non-string reasons are filtered — an older or misbehaving
1236
+ server must never crash the client here.
1237
+ """
1238
+ if not isinstance(data, list):
1239
+ return []
1240
+ tasks: List[DatasetVersionGateFailedTask] = []
1241
+ for item in data:
1242
+ if not isinstance(item, dict) or not isinstance(item.get('task_name'), str):
1243
+ continue
1244
+ outcome = item.get('outcome')
1245
+ reasons = item.get('reasons')
1246
+ tasks.append(DatasetVersionGateFailedTask(
1247
+ task_name=item['task_name'],
1248
+ outcome=outcome if isinstance(outcome, str) else None,
1249
+ reasons=[r for r in reasons if isinstance(r, str)] if isinstance(reasons, list) else [],
1250
+ ))
1251
+ return tasks
1252
+
1253
+
1208
1254
  def _map_dataset_version(data: Dict[str, Any]) -> DatasetVersion:
1209
1255
  return DatasetVersion(
1210
1256
  version=data['version'],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolve-sdk
3
- Version: 0.0.52.dev713
3
+ Version: 0.0.52.dev714
4
4
  Summary: Pythonic SDK for multi-agent orchestration in E2B sandboxes
5
5
  Author-email: "Swarmlink, Inc." <brandomagnani@evolvingmachines.ai>
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "evolve-sdk"
7
- version = "0.0.52.dev713"
7
+ version = "0.0.52.dev714"
8
8
  description = "Pythonic SDK for multi-agent orchestration in E2B sandboxes"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"