agentic-runner 3.28.0__tar.gz → 3.28.1__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 (80) hide show
  1. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/PKG-INFO +2 -2
  2. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/pyproject.toml +1 -1
  3. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/__init__.py +1 -1
  4. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workstation.py +18 -1
  5. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/.gitignore +0 -0
  6. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/LICENSE +0 -0
  7. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/README.md +0 -0
  8. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/activities.py +0 -0
  9. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/attempts.py +0 -0
  10. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/auth_mode.py +0 -0
  11. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/build.py +0 -0
  12. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/callback.py +0 -0
  13. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/child_watcher.py +0 -0
  14. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/cli.py +0 -0
  15. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/cli_floor.py +0 -0
  16. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/config.py +0 -0
  17. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/credentials.py +0 -0
  18. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/egress.py +0 -0
  19. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/harness_self_test.py +0 -0
  20. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/heartbeat_link.py +0 -0
  21. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/hooks.py +0 -0
  22. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/host_store.py +0 -0
  23. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/__init__.py +0 -0
  24. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/git/__init__.py +0 -0
  25. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/git/contracts.py +0 -0
  26. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/git/evidence.py +0 -0
  27. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/git/fake_workspace.py +0 -0
  28. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/git/workspace.py +0 -0
  29. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/github/__init__.py +0 -0
  30. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/github/auth.py +0 -0
  31. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/github/fake_client.py +0 -0
  32. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/github/gh_client.py +0 -0
  33. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/oauth/__init__.py +0 -0
  34. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/integrations/oauth/fake_provider.py +0 -0
  35. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/launch.py +0 -0
  36. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/lifecycle.py +0 -0
  37. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/llm_contracts.py +0 -0
  38. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/llm_proxy.py +0 -0
  39. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/mcp.py +0 -0
  40. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/message_store.py +0 -0
  41. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/oauth_connectors.py +0 -0
  42. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/pool_key.py +0 -0
  43. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/private_state.py +0 -0
  44. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/py.typed +0 -0
  45. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/recipient_key_secret.py +0 -0
  46. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/registration.py +0 -0
  47. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/runner_limit.py +0 -0
  48. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/runtime/__init__.py +0 -0
  49. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/runtime/verifier_command.py +0 -0
  50. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/sealed_box.py +0 -0
  51. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/service.py +0 -0
  52. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/sign_in.py +0 -0
  53. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/skill.py +0 -0
  54. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/skills/agentic-runner-setup/SKILL.md +0 -0
  55. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/testing/__init__.py +0 -0
  56. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/testing/__main__.py +0 -0
  57. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/testing/control_plane.py +0 -0
  58. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/testing/plugin.py +0 -0
  59. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/testing/test_conformance.py +0 -0
  60. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/testing/workflow.py +0 -0
  61. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/tiny_http.py +0 -0
  62. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/triage_activities.py +0 -0
  63. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/usage_windows.py +0 -0
  64. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/user_sources.py +0 -0
  65. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/__init__.py +0 -0
  66. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/_runtime_support.py +0 -0
  67. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/acp_runtime.py +0 -0
  68. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/agent_runtime.py +0 -0
  69. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/claude_runtime.py +0 -0
  70. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/claude_sign_in.py +0 -0
  71. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/codex_runtime.py +0 -0
  72. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/command_policy.py +0 -0
  73. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/contract_isolation.py +0 -0
  74. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/fastapi_client.py +0 -0
  75. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/harness_logins.py +0 -0
  76. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/harness_outcome.py +0 -0
  77. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/harness_usage.py +0 -0
  78. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/mcp_config.py +0 -0
  79. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/settings.py +0 -0
  80. {agentic_runner-3.28.0 → agentic_runner-3.28.1}/src/agentic_runner/workers/skills.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentic-runner
3
- Version: 3.28.0
3
+ Version: 3.28.1
4
4
  Summary: The Agentic OS Runner: an activity-only Temporal executor for workspaces, Agent Runtimes and verb seams
5
5
  License-Expression: AGPL-3.0-only
6
6
  License-File: LICENSE
7
7
  Requires-Python: >=3.12
8
- Requires-Dist: agentic-runner-contracts==3.28.0
8
+ Requires-Dist: agentic-runner-contracts==3.28.1
9
9
  Requires-Dist: cryptography<51,>=50
10
10
  Requires-Dist: httpx<1.0,>=0.27
11
11
  Requires-Dist: pydantic-settings<3.0,>=2.0
@@ -10,7 +10,7 @@ dependencies = [
10
10
  # Exactly this release's contracts: the two ship as one version, and an unpinned
11
11
  # requirement let `uv tool upgrade` keep an older contracts wheel the Runner cannot
12
12
  # import from (QTS-1473). `scripts/set-version.py` moves it with the version.
13
- "agentic-runner-contracts==3.28.0",
13
+ "agentic-runner-contracts==3.28.1",
14
14
  # Imported directly by `registration.py` (the Ed25519 identity that signs every
15
15
  # heartbeat); already present transitively through pyjwt[crypto], declared because
16
16
  # we import it.
@@ -7,6 +7,6 @@ stay on the platform; this package imports none of them, and a CI partition test
7
7
  (``tests/test_package_partition.py``) fails the build if that changes.
8
8
  """
9
9
 
10
- __version__ = "3.28.0"
10
+ __version__ = "3.28.1"
11
11
 
12
12
  __all__ = ["__version__"]
@@ -56,6 +56,7 @@ from agentic_runner.host_store import open_workstation_store
56
56
  from agentic_runner.lifecycle import LifecycleOutbox
57
57
  from agentic_runner.llm_contracts import load_llm_contracts
58
58
  from agentic_runner.pool_key import parse_pool_key, save_pool_key
59
+ from agentic_runner.private_state import UnsafeStateError
59
60
  from agentic_runner.registration import load_state
60
61
  from agentic_runner.service import HEARTBEAT_STAMP_NAME, PIDFILE_NAME
61
62
  from agentic_runner.workers.acp_runtime import ACP_BRIDGES
@@ -677,7 +678,10 @@ def list_lines(root: Path) -> list[str]:
677
678
  names = installed_names(root)
678
679
  if not names:
679
680
  return [f"no workstation Runner is installed under {root}"]
680
- rows = [_LIST_HEADER, *(_list_row(RunnerPaths(root=root, name=name)) for name in names)]
681
+ rows = [
682
+ _LIST_HEADER,
683
+ *(_list_row_or_reason(RunnerPaths(root=root, name=name)) for name in names),
684
+ ]
681
685
  widths = [max(len(row[column]) for row in rows) for column in range(len(_LIST_HEADER) - 1)]
682
686
  return [
683
687
  " ".join([*(cell.ljust(width) for cell, width in zip(row, widths, strict=False)), row[-1]])
@@ -685,6 +689,19 @@ def list_lines(root: Path) -> list[str]:
685
689
  ]
686
690
 
687
691
 
692
+ def _list_row_or_reason(paths: RunnerPaths) -> tuple[str, str, str, str, str, str]:
693
+ """One install that cannot be read must not hide the others' rows (QTS-1910).
694
+
695
+ The first line only: a pydantic error runs to one line per field, and the row is one.
696
+ """
697
+
698
+ try:
699
+ return _list_row(paths)
700
+ except (OSError, ValueError, UnsafeStateError) as error:
701
+ reason = str(error).splitlines()[0] if str(error) else type(error).__name__
702
+ return (paths.name, "-", "-", "-", "-", f"unreadable: {reason}")
703
+
704
+
688
705
  def _list_row(paths: RunnerPaths) -> tuple[str, str, str, str, str, str]:
689
706
  state = load_state(paths.state_dir)
690
707
  contracts = load_llm_contracts(paths.state_dir)
File without changes