agentic-runner 3.4.1__tar.gz → 3.4.2__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 (68) hide show
  1. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/PKG-INFO +1 -1
  2. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/__init__.py +1 -1
  3. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/contract_isolation.py +15 -3
  4. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/.gitignore +0 -0
  5. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/LICENSE +0 -0
  6. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/README.md +0 -0
  7. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/pyproject.toml +0 -0
  8. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/activities.py +0 -0
  9. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/attempts.py +0 -0
  10. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/auth_mode.py +0 -0
  11. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/build.py +0 -0
  12. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/callback.py +0 -0
  13. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/child_watcher.py +0 -0
  14. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/cli.py +0 -0
  15. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/cli_floor.py +0 -0
  16. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/config.py +0 -0
  17. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/credentials.py +0 -0
  18. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/device_login_activities.py +0 -0
  19. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/egress.py +0 -0
  20. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/harness_self_test.py +0 -0
  21. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/heartbeat_link.py +0 -0
  22. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/hooks.py +0 -0
  23. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/host_store.py +0 -0
  24. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/__init__.py +0 -0
  25. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/git/__init__.py +0 -0
  26. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/git/contracts.py +0 -0
  27. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/git/evidence.py +0 -0
  28. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/git/fake_workspace.py +0 -0
  29. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/git/workspace.py +0 -0
  30. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/github/__init__.py +0 -0
  31. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/github/auth.py +0 -0
  32. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/github/fake_client.py +0 -0
  33. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/integrations/github/gh_client.py +0 -0
  34. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/lifecycle.py +0 -0
  35. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/llm_proxy.py +0 -0
  36. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/mcp.py +0 -0
  37. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/message_store.py +0 -0
  38. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/private_state.py +0 -0
  39. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/py.typed +0 -0
  40. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/recipient_key_secret.py +0 -0
  41. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/registration.py +0 -0
  42. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/runtime/__init__.py +0 -0
  43. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/runtime/verifier_command.py +0 -0
  44. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/sealed_box.py +0 -0
  45. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/service.py +0 -0
  46. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/testing/__init__.py +0 -0
  47. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/testing/__main__.py +0 -0
  48. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/testing/control_plane.py +0 -0
  49. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/testing/plugin.py +0 -0
  50. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/testing/test_conformance.py +0 -0
  51. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/testing/workflow.py +0 -0
  52. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/tiny_http.py +0 -0
  53. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/triage_activities.py +0 -0
  54. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/user_sources.py +0 -0
  55. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/__init__.py +0 -0
  56. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/_runtime_support.py +0 -0
  57. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/agent_runtime.py +0 -0
  58. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/claude_runtime.py +0 -0
  59. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/codex_runtime.py +0 -0
  60. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/command_policy.py +0 -0
  61. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/contract_device_login.py +0 -0
  62. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/fastapi_client.py +0 -0
  63. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/harness_outcome.py +0 -0
  64. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/harness_usage.py +0 -0
  65. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/mcp_config.py +0 -0
  66. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/settings.py +0 -0
  67. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workers/skills.py +0 -0
  68. {agentic_runner-3.4.1 → agentic_runner-3.4.2}/src/agentic_runner/workstation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentic-runner
3
- Version: 3.4.1
3
+ Version: 3.4.2
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,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.4.1"
10
+ __version__ = "3.4.2"
11
11
 
12
12
  __all__ = ["__version__"]
@@ -133,11 +133,15 @@ class DirectiveSandbox:
133
133
 
134
134
  ``max_memory_bytes`` is None where the kernel cannot hold a memory ceiling (macOS, see
135
135
  ``ContractIsolation``): the spawn runs without one rather than not at all.
136
+
137
+ ``max_processes`` is None whenever ``uid`` is: ``RLIMIT_NPROC`` counts every process
138
+ the real uid owns, not the spawn's descendants, so on the Runner's own user it is a
139
+ ceiling on the whole login session and the CLI's first fork fails (QTS-1321).
136
140
  """
137
141
 
138
142
  home_dir: Path
139
143
  harness_config_dir: Path
140
- max_processes: int
144
+ max_processes: int | None
141
145
  max_memory_bytes: int | None
142
146
  uid: int | None = None
143
147
  gid: int | None = None
@@ -191,7 +195,8 @@ class DirectiveSandbox:
191
195
  max_memory_bytes = self.max_memory_bytes
192
196
 
193
197
  def apply_floor() -> None:
194
- resource.setrlimit(resource.RLIMIT_NPROC, (max_processes, max_processes))
198
+ if max_processes is not None:
199
+ resource.setrlimit(resource.RLIMIT_NPROC, (max_processes, max_processes))
195
200
  if max_memory_bytes is not None:
196
201
  resource.setrlimit(resource.RLIMIT_DATA, (max_memory_bytes, max_memory_bytes))
197
202
 
@@ -250,6 +255,13 @@ class ContractIsolation:
250
255
  self._can_limit_memory = (
251
256
  sys.platform != "darwin" if can_limit_memory is None else can_limit_memory
252
257
  )
258
+ if not self._can_separate_uids:
259
+ _logger.warning(
260
+ "this host cannot separate Contract uids: Directive spawns run without the "
261
+ "%d-process RLIMIT_NPROC ceiling, which would count every process this "
262
+ "Runner's user owns",
263
+ max_processes,
264
+ )
253
265
  if not self._can_limit_memory:
254
266
  _logger.warning(
255
267
  "this host refuses RLIMIT_DATA: Directive spawns run without the %d-byte "
@@ -332,7 +344,7 @@ class ContractIsolation:
332
344
  return DirectiveSandbox(
333
345
  home_dir=home,
334
346
  harness_config_dir=harness,
335
- max_processes=self._max_processes,
347
+ max_processes=self._max_processes if uid is not None else None,
336
348
  max_memory_bytes=(
337
349
  (memory_limit_bytes or self._memory_limit_bytes) if self._can_limit_memory else None
338
350
  ),
File without changes
File without changes