python-agent-harness 1.5.4.8__tar.gz → 1.5.4.9__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.
- {python_agent_harness-1.5.4.8/python_agent_harness.egg-info → python_agent_harness-1.5.4.9}/PKG-INFO +1 -1
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/pyproject.toml +1 -1
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/__init__.py +1 -1
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/client.py +67 -15
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9/python_agent_harness.egg-info}/PKG-INFO +1 -1
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_client.py +1 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/LICENSE +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/README.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/__main__.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/agent.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/cli.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/commands.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/config.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/context_manager.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/diffrender.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/mcp/__init__.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/mcp/client.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/mcp/config.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/mcp/manager.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/models.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/persistence.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/planmode.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/agent.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/build-switch.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/commands/explain.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/compact.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/initialize.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/plan-mode.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/plan.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/review.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/subagent.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/summary.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/task-completion-rules.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/title.md +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/session.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/subagent.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/token_estimator.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tool_runner.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/__init__.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/agent_tool.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/base.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/bash.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/diffapply.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/edit.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/edit_mac.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/filesystem.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/glob.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/glob_mac.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/grep.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/grep_mac.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/insert.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/mcp.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/mkdir.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/planexit.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/question.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/read.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/skill.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/todo.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/write.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/__init__.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/commands.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/core.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/input.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/render.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness.egg-info/SOURCES.txt +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness.egg-info/dependency_links.txt +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness.egg-info/entry_points.txt +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness.egg-info/requires.txt +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness.egg-info/top_level.txt +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/setup.cfg +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_agents_md.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_cli.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_commands.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_concurrent_subagents.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_config.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_context_rules.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_diffrender.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_filesystem.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_invariants.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_mcp.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_models.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_persistence.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_planmode.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_prompts.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_scenarios.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_session.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_subagent.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_subagent_isolation.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_todos_scope.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_token_estimator.py +0 -0
- {python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_tools_misc.py +0 -0
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/client.py
RENAMED
|
@@ -12,6 +12,7 @@ import json
|
|
|
12
12
|
import os
|
|
13
13
|
import random
|
|
14
14
|
import socket as _socket
|
|
15
|
+
import sys
|
|
15
16
|
import threading
|
|
16
17
|
import time
|
|
17
18
|
import uuid
|
|
@@ -822,6 +823,47 @@ def _default_api_key() -> str | None:
|
|
|
822
823
|
return os.environ.get("OPENAI_API_KEY") or os.environ.get("DEEPSEEK_API_KEY") or None
|
|
823
824
|
|
|
824
825
|
|
|
826
|
+
def _extract_socket(conn: object) -> _socket.socket | None:
|
|
827
|
+
"""Best-effort extraction of the raw socket from an httpcore connection.
|
|
828
|
+
|
|
829
|
+
For direct (non-proxy) connections the socket lives at
|
|
830
|
+
``conn._connection._network_stream``. Proxy connections are wrapped
|
|
831
|
+
(ForwardHTTPConnection/TunnelHTTPConnection -> HTTPConnection ->
|
|
832
|
+
HTTP11Connection), so we unwrap up to 4 levels looking for the
|
|
833
|
+
``_network_stream`` attribute that owns the raw socket.
|
|
834
|
+
"""
|
|
835
|
+
try:
|
|
836
|
+
obj: object = conn
|
|
837
|
+
stream = None
|
|
838
|
+
for _ in range(4):
|
|
839
|
+
stream = getattr(obj, "_network_stream", None)
|
|
840
|
+
if stream is not None:
|
|
841
|
+
break
|
|
842
|
+
obj = getattr(obj, "_connection", None)
|
|
843
|
+
if obj is None:
|
|
844
|
+
break
|
|
845
|
+
return stream.get_extra_info("socket") if stream is not None else None
|
|
846
|
+
except Exception: # noqa: BLE001 - best effort
|
|
847
|
+
return None
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
def _shutdown_and_close(sock: _socket.socket) -> None:
|
|
851
|
+
"""Shutdown then close a socket to wake blocked reads.
|
|
852
|
+
|
|
853
|
+
On macOS the socket is in non-blocking mode (httpcore calls
|
|
854
|
+
settimeout for the read timeout), so a blocked recv parks in
|
|
855
|
+
select(); closing the fd before that select has processed the
|
|
856
|
+
shutdown wakeup can lose the wakeup and leave the read parked
|
|
857
|
+
forever. Give the woken thread a moment to observe the EOF first.
|
|
858
|
+
"""
|
|
859
|
+
with contextlib.suppress(OSError):
|
|
860
|
+
sock.shutdown(_socket.SHUT_RDWR)
|
|
861
|
+
if sys.platform == "darwin":
|
|
862
|
+
time.sleep(0.05)
|
|
863
|
+
with contextlib.suppress(OSError):
|
|
864
|
+
sock.close()
|
|
865
|
+
|
|
866
|
+
|
|
825
867
|
def _abort_inflight_sockets(client: httpx.Client) -> None:
|
|
826
868
|
"""Wake any blocked stream reads on every live pool socket.
|
|
827
869
|
|
|
@@ -849,21 +891,31 @@ def _abort_inflight_sockets(client: httpx.Client) -> None:
|
|
|
849
891
|
``contextlib.suppress`` right after this call, so a double-close is
|
|
850
892
|
harmless. Every step is best-effort; any failure is ignored.
|
|
851
893
|
"""
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
894
|
+
pools: list[object] = []
|
|
895
|
+
base_pool = getattr(getattr(client, "_transport", None), "_pool", None)
|
|
896
|
+
if base_pool is not None:
|
|
897
|
+
pools.append(base_pool)
|
|
898
|
+
|
|
899
|
+
if sys.platform == "darwin":
|
|
900
|
+
# macOS only: with proxy env vars (HTTP_PROXY/HTTPS_PROXY) set,
|
|
901
|
+
# httpx routes requests through proxy transports registered in
|
|
902
|
+
# client._mounts (pools are httpcore.HTTPProxy), leaving the
|
|
903
|
+
# base transport pool above empty. On Linux this never happens
|
|
904
|
+
# in CI and the code path above is sufficient, so this extra
|
|
905
|
+
# walk is deliberately restricted to macOS.
|
|
906
|
+
mounts = getattr(client, "_mounts", None)
|
|
907
|
+
if isinstance(mounts, dict):
|
|
908
|
+
for transport in mounts.values():
|
|
909
|
+
if transport is not None:
|
|
910
|
+
pool = getattr(transport, "_pool", None)
|
|
911
|
+
if pool is not None:
|
|
912
|
+
pools.append(pool)
|
|
913
|
+
|
|
914
|
+
for pool in pools:
|
|
915
|
+
for conn in getattr(pool, "_connections", None) or ():
|
|
916
|
+
sock = _extract_socket(conn)
|
|
917
|
+
if sock is not None:
|
|
918
|
+
_shutdown_and_close(sock)
|
|
867
919
|
|
|
868
920
|
|
|
869
921
|
def _iter_sse(lines: Iterator[str]) -> Iterator[str]:
|
|
@@ -816,6 +816,7 @@ class TestAbortInflightSockets(unittest.TestCase):
|
|
|
816
816
|
|
|
817
817
|
def _fake_client_with_stream(self, stream):
|
|
818
818
|
conn = mock.Mock()
|
|
819
|
+
conn._network_stream = None
|
|
819
820
|
conn._connection._network_stream = stream
|
|
820
821
|
client = mock.Mock()
|
|
821
822
|
client._transport._pool._connections = [conn]
|
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/commands.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/diffrender.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/mcp/__init__.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/mcp/client.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/mcp/config.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/mcp/manager.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/models.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/persistence.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/planmode.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/agent.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/plan.md
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/review.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts/title.md
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/prompts.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/session.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/subagent.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tool_runner.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/base.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/bash.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/edit.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/edit_mac.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/glob.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/glob_mac.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/grep.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/grep_mac.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/insert.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/mcp.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/mkdir.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/planexit.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/question.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/read.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/skill.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/todo.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tools/write.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/__init__.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/commands.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/core.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/input.py
RENAMED
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/python_agent_harness/tui/render.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
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_concurrent_subagents.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
|
|
File without changes
|
|
File without changes
|
{python_agent_harness-1.5.4.8 → python_agent_harness-1.5.4.9}/tests/test_subagent_isolation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|