evolve-sdk 0.0.55.dev1156__tar.gz → 0.0.55.dev1164__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 (44) hide show
  1. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/PKG-INFO +1 -1
  2. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/__init__.py +1 -1
  3. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/hosted.py +93 -18
  4. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve_sdk.egg-info/PKG-INFO +1 -1
  5. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/pyproject.toml +1 -1
  6. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/LICENSE +0 -0
  7. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/MANIFEST.in +0 -0
  8. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/README.md +0 -0
  9. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/bridge/__init__.py +0 -0
  10. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/bridge/dist/bridge.bundle.cjs +0 -0
  11. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/_http.py +0 -0
  12. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/agent.py +0 -0
  13. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/bridge.py +0 -0
  14. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/browser_credentials.py +0 -0
  15. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/browser_profiles.py +0 -0
  16. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/config.py +0 -0
  17. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/integrations.py +0 -0
  18. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/managed_secrets.py +0 -0
  19. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/pipeline/__init__.py +0 -0
  20. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/pipeline/pipeline.py +0 -0
  21. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/pipeline/types.py +0 -0
  22. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/prompts/__init__.py +0 -0
  23. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/prompts/agent_md/judge.md +0 -0
  24. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/prompts/agent_md/reduce.md +0 -0
  25. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/prompts/agent_md/verify.md +0 -0
  26. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/prompts/user/judge.md +0 -0
  27. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/prompts/user/retry_feedback.md +0 -0
  28. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/prompts/user/verify.md +0 -0
  29. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/py.typed +0 -0
  30. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/results.py +0 -0
  31. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/retry.py +0 -0
  32. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/schema.py +0 -0
  33. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/sessions_client.py +0 -0
  34. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/storage_client.py +0 -0
  35. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/swarm/__init__.py +0 -0
  36. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/swarm/results.py +0 -0
  37. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/swarm/swarm.py +0 -0
  38. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/swarm/types.py +0 -0
  39. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve/utils.py +0 -0
  40. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve_sdk.egg-info/SOURCES.txt +0 -0
  41. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve_sdk.egg-info/dependency_links.txt +0 -0
  42. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve_sdk.egg-info/requires.txt +0 -0
  43. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/evolve_sdk.egg-info/top_level.txt +0 -0
  44. {evolve_sdk-0.0.55.dev1156 → evolve_sdk-0.0.55.dev1164}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolve-sdk
3
- Version: 0.0.55.dev1156
3
+ Version: 0.0.55.dev1164
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
@@ -472,7 +472,7 @@ async def list_checkpoints(
472
472
  await store.close()
473
473
 
474
474
 
475
- __version__ = '0.0.55.dev1156'
475
+ __version__ = '0.0.55.dev1164'
476
476
 
477
477
  __all__ = [
478
478
  # Main classes
@@ -1520,13 +1520,15 @@ class Rubric(TypedDict):
1520
1520
  class AnalyzeConfigInput(TypedDict, total=False):
1521
1521
  """Trace-analysis configuration INPUT — Harbor's ``harbor analyze``
1522
1522
  vocabulary (their cli/analyze.py: ``--model``, ``--rubric``,
1523
- ``--prompt``), the spec's ``AnalyzeConfigInput`` schema.
1523
+ ``--prompt``, and the selection and width options ``-n/--n-concurrent``,
1524
+ ``--passing`` / ``--failing``, ``-l/--n-trials``), the spec's
1525
+ ``AnalyzeConfigInput`` schema.
1524
1526
 
1525
1527
  PRESENCE of this object is the switch: on ``jobs().start(analyze=...)``
1526
1528
  it arms the embedded trigger (each trial is analyzed server-side right
1527
1529
  after it settles; CANCELLED trials are skipped); ``{}`` is legal and
1528
- means "all defaults" — deepseek-v4-flash-vision at its per-model
1529
- effort (high) over Harbor's default rubric (reward_hacking,
1530
+ means "all defaults" — glm-5.3-flash-fireworks at its per-model
1531
+ effort (max) over Harbor's default rubric (reward_hacking,
1530
1532
  task_specification). The analyzer always runs the
1531
1533
  claude-code harness in its own sealed sandbox — on the provider
1532
1534
  ``sandbox_provider`` names, or the platform's analysis default when it
@@ -1534,11 +1536,14 @@ class AnalyzeConfigInput(TypedDict, total=False):
1534
1536
  line, never blended into the trial's own bill.
1535
1537
  """
1536
1538
  #: Model the analyzer agent runs — Harbor's ``--model``; the default is
1537
- #: deepseek-v4-flash-vision on this platform's claude roster (DeepSeek
1538
- #: V4 Flash Vision served by Fireworks; a recorded deviation from
1539
- #: Harbor's claude-haiku-4-5 default analysis is input-dominated, and
1540
- #: this is the roster's intelligence-per-input-dollar frontier;
1541
- #: glm-5.3-flash and haiku stay as alternatives, glm-5.3 to escalate).
1539
+ #: glm-5.3-flash-fireworks on this platform's claude roster (GLM-5.3-Flash
1540
+ #: served by Fireworks through the gateway route of that name; the
1541
+ #: platform's ruling 2026-09-08: GLM-5.3-Flash on Fireworks at max, the
1542
+ #: effort its published scores use; a recorded deviation from Harbor's
1543
+ #: claude-haiku-4-5 default analysis is input-dominated, and this is
1544
+ #: the roster's intelligence-per-input-dollar pick at its published
1545
+ #: effort; deepseek-v4-flash-vision, glm-5.3-flash and haiku stay as
1546
+ #: alternatives, glm-5.3 to escalate).
1542
1547
  #: Same vocabulary as ``agents[].model_name``: either advertised
1543
1548
  #: spelling is accepted and stored as given (the default is the roster
1544
1549
  #: alias); stored analyses serve the spelling they were created under.
@@ -1569,9 +1574,11 @@ class AnalyzeConfigInput(TypedDict, total=False):
1569
1574
  #: ``analyze['reasoning_efforts']``, an unknown value is refused
1570
1575
  #: ``invalid_input`` exactly as an arm's is. Omitted, the PER-MODEL
1571
1576
  #: default applies (``analyze['models'][i]['default_reasoning_effort']``:
1572
- #: high on deepseek-v4-flash-vision, low on glm-5.3-flash — the
1573
- #: platform's ruling for a model whose thinking Z.ai documents as
1574
- #: forced, with no levels — the claude harness default elsewhere). Always passed to the analyzer explicitly and
1577
+ #: max on glm-5.3-flash-fireworks, the default model — the platform's
1578
+ #: ruling 2026-09-08, the effort its published scores use; high on
1579
+ #: deepseek-v4-flash-vision; low on glm-5.3-flash — the platform's
1580
+ #: ruling for a model whose thinking Z.ai documents as forced, with no
1581
+ #: levels — the claude harness default elsewhere). Always passed to the analyzer explicitly and
1575
1582
  #: recorded on the analysis (``TrialAnalysis['reasoning_effort']``). A
1576
1583
  #: hosted extension: Harbor's analyze has no effort option.
1577
1584
  reasoning_effort: str
@@ -1583,6 +1590,36 @@ class AnalyzeConfigInput(TypedDict, total=False):
1583
1590
  #: enqueue (daytona unless the operator retuned the fleet) — the value
1584
1591
  #: the resolved ``AnalyzeConfig['sandbox_provider']`` echo reports.
1585
1592
  sandbox_provider: EvalSandboxProvider
1593
+ #: How many of this wave's analyses run at once — Harbor's
1594
+ #: ``-n/--n-concurrent`` ("Max concurrent trial analyses", their
1595
+ #: cli/analyze.py:278-280). Bounded by the organization's
1596
+ #: ``max_concurrent_analyses`` at every claim: the job never holds more
1597
+ #: than the smaller of the two RUNNING fleet-wide. Omitted, the
1598
+ #: organization's ceiling alone bounds the wave (its fleet default is 16,
1599
+ #: four times Harbor's own default of 4) and the resolved echo reads ``None``. An
1600
+ #: integer in ``[1, 150]``; anything else is refused ``invalid_input``
1601
+ #: naming ``analyze.n_concurrent``.
1602
+ n_concurrent: int
1603
+ #: Analyze only the passing trials — Harbor's ``--passing`` ("Only
1604
+ #: analyze passing trials (reward=1.0)", their cli/analyze.py:282-284):
1605
+ #: a trial passes when it is SCORED with a primary reward of exactly 1.
1606
+ #: Mutually exclusive with ``failing``: both true is refused
1607
+ #: ``invalid_input`` — Harbor's own "Cannot use both --passing and
1608
+ #: --failing".
1609
+ passing: bool
1610
+ #: Analyze only the failing trials — Harbor's ``--failing`` ("Only
1611
+ #: analyze failing trials (reward<1.0 or exception)", their
1612
+ #: cli/analyze.py:285-287): every analyzable trial that is not passing —
1613
+ #: a reward below 1 or none, and every error status. CANCELLED trials
1614
+ #: are never analyzed under either filter.
1615
+ failing: bool
1616
+ #: At most this many trials get an analysis — Harbor's ``-l/--n-trials``
1617
+ #: ("Max trials to analyze", their cli/analyze.py:288-290), applied AFTER
1618
+ #: the reward filter: on the manual wave the first ``n_trials`` matching
1619
+ #: trials in the job's trial order; on the embedded trigger the first
1620
+ #: ``n_trials`` matching trials to settle. An integer of at least 1;
1621
+ #: anything else is refused ``invalid_input`` naming ``analyze.n_trials``.
1622
+ n_trials: int
1586
1623
 
1587
1624
 
1588
1625
  class AnalyzeConfig(TypedDict):
@@ -1613,6 +1650,18 @@ class AnalyzeConfig(TypedDict):
1613
1650
  #: resolved-at-accept law above, stated so the echo is never read as
1614
1651
  #: history).
1615
1652
  sandbox_provider: EvalSandboxProvider
1653
+ #: The per-job width this policy's analyses are claimed under
1654
+ #: (``AnalyzeConfigInput['n_concurrent']``, as stored); None = none
1655
+ #: named, the organization's ``max_concurrent_analyses`` alone bounds
1656
+ #: the wave.
1657
+ n_concurrent: Optional[int]
1658
+ #: The reward filter as stored; both ``passing`` and ``failing`` False =
1659
+ #: every analyzable trial.
1660
+ passing: bool
1661
+ failing: bool
1662
+ #: The trial cap as stored (``AnalyzeConfigInput['n_trials']``); None =
1663
+ #: no cap.
1664
+ n_trials: Optional[int]
1616
1665
 
1617
1666
 
1618
1667
  class AnalysisCheck(TypedDict):
@@ -6495,7 +6544,7 @@ class JobsClient:
6495
6544
  trigger (Harbor's ``harbor analyze`` vocabulary, the spec's
6496
6545
  AnalyzeConfigInput): PRESENCE is the switch — each trial is analyzed
6497
6546
  server-side right after it settles (CANCELLED trials are skipped),
6498
- ``{}`` means "all defaults" (deepseek-v4-flash-vision at its
6547
+ ``{}`` means "all defaults" (glm-5.3-flash-fireworks at its
6499
6548
  per-model effort, Harbor's default rubric), and the response
6500
6549
  echoes the RESOLVED policy as
6501
6550
  ``Job.analyze`` (:class:`AnalyzeConfig`); omitted, no embedded
@@ -7072,6 +7121,10 @@ class JobsClient:
7072
7121
  prompt: Optional[str] = None,
7073
7122
  sandbox_provider: Optional[EvalSandboxProvider] = None,
7074
7123
  reasoning_effort: Optional[str] = None,
7124
+ n_concurrent: Optional[int] = None,
7125
+ passing: Optional[bool] = None,
7126
+ failing: Optional[bool] = None,
7127
+ n_trials: Optional[int] = None,
7075
7128
  ) -> Job:
7076
7129
  """Analyze a terminal job's trial traces (rubric-driven, Harbor's
7077
7130
  ``harbor analyze``), server-side.
@@ -7095,13 +7148,26 @@ class JobsClient:
7095
7148
  applies (daytona unless the operator retuned the fleet).
7096
7149
  ``reasoning_effort`` is the arms' effort vocabulary applied to the
7097
7150
  analyzer (``meta().analyze['reasoning_efforts']``); omitted, the
7098
- per-model default applies (high on deepseek-v4-flash-vision, low
7099
- on glm-5.3-flash, the claude harness default elsewhere) — the
7100
- effort is always passed explicitly and recorded on each analysis.
7101
- Every argument omitted means the defaults: deepseek-v4-flash-vision
7102
- at high over Harbor's default rubric (reward_hacking,
7151
+ per-model default applies (max on glm-5.3-flash-fireworks, high on
7152
+ deepseek-v4-flash-vision, low on glm-5.3-flash, the claude harness
7153
+ default elsewhere) — the effort is always passed explicitly and
7154
+ recorded on each analysis.
7155
+ Every argument omitted means the defaults: glm-5.3-flash-fireworks
7156
+ at max over Harbor's default rubric (reward_hacking,
7103
7157
  task_specification), on the platform's analysis default provider.
7104
7158
  CANCELLED trials are never analyzed.
7159
+ Which trials, and how wide, are Harbor's own analyze options with
7160
+ their exact names (their cli/analyze.py:278-290): ``passing`` /
7161
+ ``failing`` analyze only the trials on that side of the reward
7162
+ line (passing = SCORED with reward exactly 1; failing = everything
7163
+ else analyzable — reward below 1 or none, and every error status);
7164
+ ``n_trials`` caps the wave at the first N matching trials in the
7165
+ job's trial order, after the filter (Harbor's ``-l/--n-trials``);
7166
+ ``n_concurrent`` is how many of the wave's analyses run at once,
7167
+ beneath the organization's ``max_concurrent_analyses`` (Harbor's
7168
+ ``-n/--n-concurrent``; omitted = the ceiling alone). ``passing`` and
7169
+ ``failing`` together are refused ``invalid_input`` — Harbor's own
7170
+ "Cannot use both --passing and --failing".
7105
7171
 
7106
7172
  The server owns every acceptance refusal, surfaced typed:
7107
7173
  ``job_not_terminal``, ``invalid_rubric`` (unknown keys named, empty
@@ -7110,7 +7176,8 @@ class JobsClient:
7110
7176
  provider outside the lineup — the message names the roster, the
7111
7177
  bound or the legal values),
7112
7178
  ``analysis_already_running`` (one wave at a time),
7113
- ``no_analyzable_trials`` (every trial CANCELLED).
7179
+ ``no_analyzable_trials`` (every trial CANCELLED, or no trial on the
7180
+ side of the reward filter).
7114
7181
  """
7115
7182
  body: Dict[str, Any] = {}
7116
7183
  if model_name is not None:
@@ -7123,6 +7190,14 @@ class JobsClient:
7123
7190
  body['sandbox_provider'] = sandbox_provider
7124
7191
  if reasoning_effort is not None:
7125
7192
  body['reasoning_effort'] = reasoning_effort
7193
+ if n_concurrent is not None:
7194
+ body['n_concurrent'] = n_concurrent
7195
+ if passing is not None:
7196
+ body['passing'] = passing
7197
+ if failing is not None:
7198
+ body['failing'] = failing
7199
+ if n_trials is not None:
7200
+ body['n_trials'] = n_trials
7126
7201
  raw = await self._http.request_json(
7127
7202
  f'/api/jobs/{urllib.parse.quote(id)}/analyze', method='POST', body=body
7128
7203
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: evolve-sdk
3
- Version: 0.0.55.dev1156
3
+ Version: 0.0.55.dev1164
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.55.dev1156"
7
+ version = "0.0.55.dev1164"
8
8
  description = "Pythonic SDK for multi-agent orchestration in E2B sandboxes"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"