outerloop-science 0.1.0.dev1__py3-none-any.whl → 0.1.0.dev3__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.
Files changed (48) hide show
  1. outerloop/__init__.py +8 -8
  2. outerloop/appauth.py +3 -3
  3. outerloop/appmanifest.py +1 -1
  4. outerloop/attempt.py +350 -127
  5. outerloop/brief.py +38 -25
  6. outerloop/cli.py +189 -78
  7. outerloop/climbboard.py +3 -0
  8. outerloop/compute.py +178 -33
  9. outerloop/contract.py +11 -2
  10. outerloop/dispatch.py +63 -18
  11. outerloop/evalcache.py +147 -0
  12. outerloop/followup.py +52 -33
  13. outerloop/github.py +42 -17
  14. outerloop/harness.py +19 -25
  15. outerloop/housekeeping.py +1 -17
  16. outerloop/image.py +368 -0
  17. outerloop/init.py +248 -15
  18. outerloop/intake.py +4 -7
  19. outerloop/launchlog.py +239 -0
  20. outerloop/limits.py +1 -1
  21. outerloop/maintain.py +325 -0
  22. outerloop/maintain_agent_cli.py +81 -0
  23. outerloop/maintain_post_cli.py +140 -0
  24. outerloop/measure.py +8 -2
  25. outerloop/orchestrator.py +142 -32
  26. outerloop/panel.py +3 -3
  27. outerloop/paths.py +2 -1
  28. outerloop/review.py +5 -1
  29. outerloop/review_agent.py +7 -7
  30. outerloop/review_agent_cli.py +2 -2
  31. outerloop/review_post_cli.py +2 -2
  32. outerloop/review_summarize_cli.py +7 -5
  33. outerloop/roles.py +27 -0
  34. outerloop/rolespec.py +3 -1
  35. outerloop/steward.py +8 -8
  36. outerloop/syscall.py +262 -47
  37. outerloop/syscall_cli.py +243 -12
  38. outerloop/tick.py +240 -103
  39. outerloop/verify_agent.py +8 -6
  40. outerloop/verify_post_cli.py +2 -2
  41. outerloop/watcher.py +203 -0
  42. {outerloop_science-0.1.0.dev1.dist-info → outerloop_science-0.1.0.dev3.dist-info}/METADATA +5 -2
  43. outerloop_science-0.1.0.dev3.dist-info/RECORD +59 -0
  44. outerloop_science-0.1.0.dev1.dist-info/RECORD +0 -52
  45. {outerloop_science-0.1.0.dev1.dist-info → outerloop_science-0.1.0.dev3.dist-info}/WHEEL +0 -0
  46. {outerloop_science-0.1.0.dev1.dist-info → outerloop_science-0.1.0.dev3.dist-info}/entry_points.txt +0 -0
  47. {outerloop_science-0.1.0.dev1.dist-info → outerloop_science-0.1.0.dev3.dist-info}/licenses/LICENSE +0 -0
  48. {outerloop_science-0.1.0.dev1.dist-info → outerloop_science-0.1.0.dev3.dist-info}/licenses/NOTICE +0 -0
outerloop/__init__.py CHANGED
@@ -1,18 +1,18 @@
1
- """Autonomous research agent that co-develops the lab's benchmark-bearing repos."""
1
+ """Outerloop: autonomous research agents that improve a benchmark on your own code."""
2
2
 
3
3
  import os
4
4
 
5
- __version__ = "0.1.0.dev1"
5
+ __version__ = "0.1.0.dev3"
6
6
 
7
7
 
8
8
  def _bridge_legacy_env() -> None:
9
- """Accept the new `OUTERLOOP_*` names at the process boundary: copy each into
10
- its `AUTORESEARCH_*` twin when the twin is unset, so the kernel's internals —
11
- which still read `AUTORESEARCH_*` during the rename — see one name. The chain
12
- scripts do the same in shell. Removed with the final internal flip."""
9
+ """Accept the pre-rename `AUTORESEARCH_*` names at the process boundary for
10
+ one release: copy each into its `OUTERLOOP_*` twin when the twin is unset,
11
+ so the kernel reads one name. The chain scripts do the same in shell.
12
+ Removed in the release after 0.1."""
13
13
  for key, value in list(os.environ.items()):
14
- if key.startswith("OUTERLOOP_"):
15
- os.environ.setdefault("AUTORESEARCH_" + key[len("OUTERLOOP_") :], value)
14
+ if key.startswith("AUTORESEARCH_"):
15
+ os.environ.setdefault("OUTERLOOP_" + key[len("AUTORESEARCH_") :], value)
16
16
 
17
17
 
18
18
  _bridge_legacy_env()
outerloop/appauth.py CHANGED
@@ -3,7 +3,7 @@
3
3
  `AppInstallationTokenProvider` satisfies the `TokenProvider` protocol used
4
4
  throughout `github.py`. Role CLIs construct bot auth through
5
5
  `resolve_bot_auth`, which selects this provider when an App config file is
6
- given (`--github-app-file` / `AUTORESEARCH_GITHUB_APP_FILE`) and falls back
6
+ given (`--github-app-file` / `OUTERLOOP_GITHUB_APP_FILE`) and falls back
7
7
  to the PAT file otherwise — the cutover flag, revertible by unsetting the
8
8
  env. Each `token()` mints a short-lived JWT (RS256, signed by the App
9
9
  private key), exchanges it for a ~1h installation token scoped to the
@@ -172,8 +172,8 @@ def signer_from_private_key(pem_path: Path) -> Signer:
172
172
  from cryptography.hazmat.primitives.asymmetric import padding, rsa
173
173
  except ImportError as exc: # pragma: no cover - exercised only without the extra
174
174
  raise ImportError(
175
- "GitHub App auth needs the 'app-auth' extra (cryptography); "
176
- "install it before selecting the App token provider"
175
+ "GitHub App auth needs the cryptography package "
176
+ "(pip install cryptography), a base dependency since 0.1.0.dev2"
177
177
  ) from exc
178
178
 
179
179
  key = serialization.load_pem_private_key(pem_path.read_bytes(), password=None)
outerloop/appmanifest.py CHANGED
@@ -14,7 +14,7 @@ and GitHub redirects back to that page with a one-time code the page displays.
14
14
  The adopter pastes the code here; we exchange it for the app id + key, write
15
15
  `github_app.<slug>.json` + the PEM (both 0600), help install the App, and capture
16
16
  the installation id. The written files are what `resolve_bot_auth` reads via
17
- `AUTORESEARCH_GITHUB_APP_FILE`, the same path `outerloop start` uses.
17
+ `OUTERLOOP_GITHUB_APP_FILE`, the same path `outerloop start` uses.
18
18
  """
19
19
 
20
20
  from __future__ import annotations