evolve-sdk 0.0.52.dev711__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.
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/PKG-INFO +1 -1
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/__init__.py +5 -1
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/hosted.py +92 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/PKG-INFO +1 -1
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/pyproject.toml +1 -1
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/LICENSE +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/MANIFEST.in +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/README.md +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/bridge/__init__.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/bridge/dist/bridge.bundle.cjs +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/_http.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/agent.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/bridge.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/browser_credentials.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/browser_profiles.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/config.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/integrations.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/managed_secrets.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/pipeline/__init__.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/pipeline/pipeline.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/pipeline/types.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/prompts/__init__.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/prompts/agent_md/judge.md +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/prompts/agent_md/reduce.md +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/prompts/agent_md/verify.md +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/prompts/user/judge.md +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/prompts/user/retry_feedback.md +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/prompts/user/verify.md +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/results.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/retry.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/schema.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/sessions_client.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/storage_client.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/swarm/__init__.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/swarm/results.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/swarm/swarm.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/swarm/types.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve/utils.py +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/SOURCES.txt +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/dependency_links.txt +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/requires.txt +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/top_level.txt +0 -0
- {evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/setup.cfg +0 -0
|
@@ -59,6 +59,8 @@ from .hosted import (
|
|
|
59
59
|
DatasetRef,
|
|
60
60
|
DatasetSelector,
|
|
61
61
|
DatasetVersion,
|
|
62
|
+
DatasetVersionGate,
|
|
63
|
+
DatasetVersionGateFailedTask,
|
|
62
64
|
DatasetsClient,
|
|
63
65
|
EvalSandboxProvider,
|
|
64
66
|
EvolveAPIError,
|
|
@@ -361,7 +363,7 @@ async def list_checkpoints(
|
|
|
361
363
|
await store.close()
|
|
362
364
|
|
|
363
365
|
|
|
364
|
-
__version__ = '0.0.52.
|
|
366
|
+
__version__ = '0.0.52.dev714'
|
|
365
367
|
|
|
366
368
|
__all__ = [
|
|
367
369
|
# Main classes
|
|
@@ -442,6 +444,8 @@ __all__ = [
|
|
|
442
444
|
'Dataset',
|
|
443
445
|
'ActiveDataset',
|
|
444
446
|
'DatasetVersion',
|
|
447
|
+
'DatasetVersionGate',
|
|
448
|
+
'DatasetVersionGateFailedTask',
|
|
445
449
|
'DatasetRef',
|
|
446
450
|
'DatasetSelector',
|
|
447
451
|
'DatasetImport',
|
|
@@ -301,6 +301,40 @@ 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
|
+
|
|
318
|
+
@dataclass
|
|
319
|
+
class DatasetVersionGate:
|
|
320
|
+
"""The activation gate's progress for one dataset version.
|
|
321
|
+
|
|
322
|
+
``status`` is the gate's own lifecycle (``PENDING`` → ``RUNNING`` →
|
|
323
|
+
``PASSED``/``FAILED`` as wire values). ``code`` and ``message`` are set on
|
|
324
|
+
failure — one machine word and one human sentence — and are ``None`` while
|
|
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.
|
|
330
|
+
"""
|
|
331
|
+
status: str
|
|
332
|
+
attempts: int
|
|
333
|
+
code: Optional[str] = None
|
|
334
|
+
message: Optional[str] = None
|
|
335
|
+
failed_tasks: List[DatasetVersionGateFailedTask] = field(default_factory=list)
|
|
336
|
+
|
|
337
|
+
|
|
304
338
|
@dataclass
|
|
305
339
|
class DatasetVersion:
|
|
306
340
|
"""One immutable version of a dataset — one shape on every surface."""
|
|
@@ -308,6 +342,10 @@ class DatasetVersion:
|
|
|
308
342
|
state: str
|
|
309
343
|
created_at: str
|
|
310
344
|
task_count: int
|
|
345
|
+
#: Activation-gate progress. ``None`` when no gate was scheduled for this
|
|
346
|
+
#: version, and also ``None`` when the server predates the gate field — a
|
|
347
|
+
#: missing gate never means "passed", only "nothing to report".
|
|
348
|
+
gate: Optional[DatasetVersionGate] = None
|
|
311
349
|
|
|
312
350
|
|
|
313
351
|
@dataclass
|
|
@@ -1160,12 +1198,66 @@ def _map_capability_document(raw: Dict[str, Any]) -> CapabilityDocument:
|
|
|
1160
1198
|
)
|
|
1161
1199
|
|
|
1162
1200
|
|
|
1201
|
+
def _map_version_gate(data: Any) -> Optional[DatasetVersionGate]:
|
|
1202
|
+
"""Map a version's activation-gate field, tolerating every server generation.
|
|
1203
|
+
|
|
1204
|
+
An older server has no ``gate`` field at all; the current server sends the
|
|
1205
|
+
nested form (``{status, attempts, failure: {code, message}}``); the flat
|
|
1206
|
+
form carries ``code``/``message`` directly. Anything unreadable becomes
|
|
1207
|
+
``None`` — a missing gate is "nothing to report", never a crash and never
|
|
1208
|
+
"passed".
|
|
1209
|
+
"""
|
|
1210
|
+
if not isinstance(data, dict) or not isinstance(data.get('status'), str):
|
|
1211
|
+
return None
|
|
1212
|
+
failure = data.get('failure')
|
|
1213
|
+
failure = failure if isinstance(failure, dict) else {}
|
|
1214
|
+
code = data.get('code') if isinstance(data.get('code'), str) else failure.get('code')
|
|
1215
|
+
message = (
|
|
1216
|
+
data.get('message') if isinstance(data.get('message'), str) else failure.get('message')
|
|
1217
|
+
)
|
|
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')
|
|
1222
|
+
return DatasetVersionGate(
|
|
1223
|
+
status=data['status'],
|
|
1224
|
+
attempts=attempts if isinstance(attempts, int) and not isinstance(attempts, bool) else 0,
|
|
1225
|
+
code=code if isinstance(code, str) else None,
|
|
1226
|
+
message=message if isinstance(message, str) else None,
|
|
1227
|
+
failed_tasks=_map_gate_failed_tasks(raw_failed),
|
|
1228
|
+
)
|
|
1229
|
+
|
|
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
|
+
|
|
1163
1254
|
def _map_dataset_version(data: Dict[str, Any]) -> DatasetVersion:
|
|
1164
1255
|
return DatasetVersion(
|
|
1165
1256
|
version=data['version'],
|
|
1166
1257
|
state=data.get('state', ''),
|
|
1167
1258
|
created_at=data.get('created_at', ''),
|
|
1168
1259
|
task_count=int(data.get('task_count', 0)),
|
|
1260
|
+
gate=_map_version_gate(data.get('gate')),
|
|
1169
1261
|
)
|
|
1170
1262
|
|
|
1171
1263
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{evolve_sdk-0.0.52.dev711 → evolve_sdk-0.0.52.dev714}/evolve_sdk.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|