agentic-runner 3.12.1__tar.gz → 3.12.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.
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/PKG-INFO +1 -1
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/__init__.py +1 -1
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/cli.py +21 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workstation.py +28 -1
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/.gitignore +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/LICENSE +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/README.md +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/pyproject.toml +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/activities.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/attempts.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/auth_mode.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/build.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/callback.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/child_watcher.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/cli_floor.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/config.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/credentials.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/device_login_activities.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/egress.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/harness_self_test.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/heartbeat_link.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/hooks.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/host_store.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/__init__.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/git/__init__.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/git/contracts.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/git/evidence.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/git/fake_workspace.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/git/workspace.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/github/__init__.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/github/auth.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/github/fake_client.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/github/gh_client.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/oauth/__init__.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/oauth/fake_provider.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/lifecycle.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/llm_proxy.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/mcp.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/message_store.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/oauth_connectors.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/private_state.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/py.typed +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/recipient_key_secret.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/registration.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/runtime/__init__.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/runtime/verifier_command.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/sealed_box.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/service.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/testing/__init__.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/testing/__main__.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/testing/control_plane.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/testing/plugin.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/testing/test_conformance.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/testing/workflow.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/tiny_http.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/triage_activities.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/usage_windows.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/user_sources.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/__init__.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/_runtime_support.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/acp_runtime.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/agent_runtime.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/claude_runtime.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/claude_sign_in.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/codex_runtime.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/command_policy.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/contract_device_login.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/contract_isolation.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/fastapi_client.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/harness_outcome.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/harness_usage.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/mcp_config.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/settings.py +0 -0
- {agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/skills.py +0 -0
|
@@ -158,6 +158,12 @@ def main(argv: Sequence[str] | None = None) -> int:
|
|
|
158
158
|
action="store_true",
|
|
159
159
|
help="no TLS to Temporal -- a local development server only",
|
|
160
160
|
)
|
|
161
|
+
install.add_argument(
|
|
162
|
+
"--acp-cli-kinds",
|
|
163
|
+
default=None,
|
|
164
|
+
help="comma-separated cli_kinds served through the pinned ACP bridge (codex_cli, "
|
|
165
|
+
"claude_code); omitted keeps the previous install's, '' turns ACP off",
|
|
166
|
+
)
|
|
161
167
|
install.add_argument("--no-start", action="store_true", help="write the agent, do not start")
|
|
162
168
|
install.add_argument("--root", default=None, type=Path, help="state root (default per OS)")
|
|
163
169
|
for service_verb in ("start", "stop"):
|
|
@@ -342,6 +348,11 @@ def _install(arguments: argparse.Namespace, paths: workstation.OrgPaths) -> int:
|
|
|
342
348
|
if not arguments.control_plane:
|
|
343
349
|
print(f"--control-plane (or {CONTROL_PLANE_ENV}) is required", file=sys.stderr)
|
|
344
350
|
return 2
|
|
351
|
+
try:
|
|
352
|
+
acp_cli_kinds = _acp_cli_kinds(arguments.acp_cli_kinds, paths)
|
|
353
|
+
except ValueError as error:
|
|
354
|
+
print(str(error), file=sys.stderr)
|
|
355
|
+
return 2
|
|
345
356
|
# Pasted, never a flag: a flag is in the process table for every uid on the box.
|
|
346
357
|
token = os.environ.get(AGENT_TOKEN_ENV, "").strip() or getpass.getpass(
|
|
347
358
|
"Agent Token (yours from /me/runners, or the Organisation Admin's for an "
|
|
@@ -354,6 +365,7 @@ def _install(arguments: argparse.Namespace, paths: workstation.OrgPaths) -> int:
|
|
|
354
365
|
temporal_tls=not arguments.temporal_plaintext,
|
|
355
366
|
path=os.environ.get("PATH", ""),
|
|
356
367
|
install_channel=workstation.install_channel(),
|
|
368
|
+
acp_cli_kinds=acp_cli_kinds,
|
|
357
369
|
)
|
|
358
370
|
try:
|
|
359
371
|
lines = asyncio.run(
|
|
@@ -369,6 +381,15 @@ def _install(arguments: argparse.Namespace, paths: workstation.OrgPaths) -> int:
|
|
|
369
381
|
return 0
|
|
370
382
|
|
|
371
383
|
|
|
384
|
+
def _acp_cli_kinds(flag: str | None, paths: workstation.OrgPaths) -> str:
|
|
385
|
+
# A reinstall to pick up a new PATH or retry a token must not turn ACP off (QTS-1355).
|
|
386
|
+
if flag is not None:
|
|
387
|
+
return workstation.parse_acp_cli_kinds(flag)
|
|
388
|
+
if not paths.settings_file.is_file():
|
|
389
|
+
return ""
|
|
390
|
+
return workstation.WorkstationSettings.load(paths).acp_cli_kinds
|
|
391
|
+
|
|
392
|
+
|
|
372
393
|
def _callback(arguments: argparse.Namespace) -> int:
|
|
373
394
|
socket_path = os.environ.get(CALLBACK_SOCKET_ENV, "")
|
|
374
395
|
token = os.environ.get(CALLBACK_TOKEN_ENV, "")
|
|
@@ -50,6 +50,7 @@ from agentic_runner.host_store import open_workstation_store
|
|
|
50
50
|
from agentic_runner.lifecycle import LifecycleOutbox
|
|
51
51
|
from agentic_runner.registration import load_state
|
|
52
52
|
from agentic_runner.service import HEARTBEAT_STAMP_NAME, PIDFILE_NAME
|
|
53
|
+
from agentic_runner.workers.acp_runtime import ACP_BRIDGES
|
|
53
54
|
from agentic_runner_contracts.runner_registration import (
|
|
54
55
|
CliVersion,
|
|
55
56
|
EgressPosture,
|
|
@@ -75,6 +76,7 @@ __all__ = [
|
|
|
75
76
|
"install",
|
|
76
77
|
"install_channel",
|
|
77
78
|
"locate_clis",
|
|
79
|
+
"parse_acp_cli_kinds",
|
|
78
80
|
"require_any_cli",
|
|
79
81
|
"run_environment",
|
|
80
82
|
"run_process",
|
|
@@ -204,6 +206,9 @@ class WorkstationSettings(BaseModel):
|
|
|
204
206
|
# would not find a Homebrew or `~/.local/bin` CLI without it.
|
|
205
207
|
path: str
|
|
206
208
|
install_channel: InstallChannel
|
|
209
|
+
# The Runner's `ACP_CLI_KINDS`, kept here rather than hand-added to the login agent,
|
|
210
|
+
# which every `install` rewrites (QTS-1355).
|
|
211
|
+
acp_cli_kinds: str = ""
|
|
207
212
|
|
|
208
213
|
def save(self, paths: OrgPaths) -> None:
|
|
209
214
|
paths.settings_file.write_text(self.model_dump_json(indent=2), encoding="utf-8")
|
|
@@ -218,6 +223,23 @@ class WorkstationSettings(BaseModel):
|
|
|
218
223
|
return cls.model_validate_json(paths.settings_file.read_text(encoding="utf-8"))
|
|
219
224
|
|
|
220
225
|
|
|
226
|
+
def parse_acp_cli_kinds(value: str) -> str:
|
|
227
|
+
"""``--acp-cli-kinds``, refused if it names a kind with no pinned bridge.
|
|
228
|
+
|
|
229
|
+
The Runner itself drops such a kind without a word, so a typo here would turn ACP off
|
|
230
|
+
as quietly as the rewritten login agent did (QTS-1355).
|
|
231
|
+
"""
|
|
232
|
+
|
|
233
|
+
kinds = [kind.strip() for kind in value.split(",") if kind.strip()]
|
|
234
|
+
unknown = sorted(set(kinds) - ACP_BRIDGES.keys())
|
|
235
|
+
if unknown:
|
|
236
|
+
raise ValueError(
|
|
237
|
+
f"--acp-cli-kinds names {', '.join(unknown)}; a pinned ACP bridge exists only for "
|
|
238
|
+
f"{', '.join(sorted(ACP_BRIDGES))}"
|
|
239
|
+
)
|
|
240
|
+
return ",".join(dict.fromkeys(kinds))
|
|
241
|
+
|
|
242
|
+
|
|
221
243
|
def install_channel(
|
|
222
244
|
platform: str = sys.platform, *, executable: str = sys.executable
|
|
223
245
|
) -> InstallChannel:
|
|
@@ -235,7 +257,7 @@ def run_environment(paths: OrgPaths, settings: WorkstationSettings) -> dict[str,
|
|
|
235
257
|
a unit, a task -- stays a one-liner, and the three OSes cannot drift apart.
|
|
236
258
|
"""
|
|
237
259
|
|
|
238
|
-
|
|
260
|
+
environment = {
|
|
239
261
|
"PATH": settings.path,
|
|
240
262
|
"AGENTIC_RUNNER_STATE_DIR": str(paths.state_dir),
|
|
241
263
|
"AGENTIC_RUNNER_WORKSPACE_ROOT": str(paths.workspaces),
|
|
@@ -254,6 +276,11 @@ def run_environment(paths: OrgPaths, settings: WorkstationSettings) -> dict[str,
|
|
|
254
276
|
# port inherited from a pod-style environment would collide on the second one.
|
|
255
277
|
service.READINESS_PORT_ENV: "0",
|
|
256
278
|
}
|
|
279
|
+
# Only when set: a login agent hand-edited with `ACP_CLI_KINDS` before QTS-1355 keeps
|
|
280
|
+
# ACP on across an upgrade until its next `install`.
|
|
281
|
+
if settings.acp_cli_kinds:
|
|
282
|
+
environment["ACP_CLI_KINDS"] = settings.acp_cli_kinds
|
|
283
|
+
return environment
|
|
257
284
|
|
|
258
285
|
|
|
259
286
|
# ------------------------------------------------------------------ the CLIs
|
|
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
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/device_login_activities.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/git/__init__.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/git/contracts.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/git/evidence.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/git/workspace.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/github/__init__.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/github/auth.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/github/gh_client.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/integrations/oauth/__init__.py
RENAMED
|
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
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/runtime/verifier_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/testing/test_conformance.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/_runtime_support.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/claude_runtime.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/claude_sign_in.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/command_policy.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/contract_device_login.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/contract_isolation.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/fastapi_client.py
RENAMED
|
File without changes
|
{agentic_runner-3.12.1 → agentic_runner-3.12.2}/src/agentic_runner/workers/harness_outcome.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|