python-agent-harness 1.5.0__tar.gz → 1.5.3__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 (88) hide show
  1. {python_agent_harness-1.5.0/python_agent_harness.egg-info → python_agent_harness-1.5.3}/PKG-INFO +25 -6
  2. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/README.md +23 -4
  3. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/pyproject.toml +2 -2
  4. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/__init__.py +1 -1
  5. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3/python_agent_harness.egg-info}/PKG-INFO +25 -6
  6. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/LICENSE +0 -0
  7. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/__main__.py +0 -0
  8. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/agent.py +0 -0
  9. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/cli.py +0 -0
  10. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/client.py +0 -0
  11. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/commands.py +0 -0
  12. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/config.py +0 -0
  13. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/context_manager.py +0 -0
  14. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/diffrender.py +0 -0
  15. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/mcp/__init__.py +0 -0
  16. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/mcp/client.py +0 -0
  17. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/mcp/config.py +0 -0
  18. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/mcp/manager.py +0 -0
  19. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/models.py +0 -0
  20. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/persistence.py +0 -0
  21. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/planmode.py +0 -0
  22. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/agent.md +0 -0
  23. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/build-switch.md +0 -0
  24. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/commands/explain.md +0 -0
  25. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/compact.md +0 -0
  26. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/initialize.md +0 -0
  27. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/plan-mode.md +0 -0
  28. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/plan.md +0 -0
  29. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/review.md +0 -0
  30. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/subagent.md +0 -0
  31. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/summary.md +0 -0
  32. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/task-completion-rules.md +0 -0
  33. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts/title.md +0 -0
  34. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/prompts.py +0 -0
  35. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/session.py +0 -0
  36. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/subagent.py +0 -0
  37. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/token_estimator.py +0 -0
  38. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tool_runner.py +0 -0
  39. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/__init__.py +0 -0
  40. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/agent_tool.py +0 -0
  41. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/base.py +0 -0
  42. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/bash.py +0 -0
  43. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/edit.py +0 -0
  44. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/filesystem.py +0 -0
  45. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/glob.py +0 -0
  46. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/grep.py +0 -0
  47. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/insert.py +0 -0
  48. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/mcp.py +0 -0
  49. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/mkdir.py +0 -0
  50. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/planexit.py +0 -0
  51. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/question.py +0 -0
  52. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/read.py +0 -0
  53. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/skill.py +0 -0
  54. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/todo.py +0 -0
  55. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tools/write.py +0 -0
  56. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tui/__init__.py +0 -0
  57. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tui/commands.py +0 -0
  58. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tui/core.py +0 -0
  59. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tui/input.py +0 -0
  60. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness/tui/render.py +0 -0
  61. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness.egg-info/SOURCES.txt +0 -0
  62. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness.egg-info/dependency_links.txt +0 -0
  63. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness.egg-info/entry_points.txt +0 -0
  64. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness.egg-info/requires.txt +0 -0
  65. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/python_agent_harness.egg-info/top_level.txt +0 -0
  66. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/setup.cfg +0 -0
  67. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_agents_md.py +0 -0
  68. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_cli.py +0 -0
  69. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_client.py +0 -0
  70. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_commands.py +0 -0
  71. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_concurrent_subagents.py +0 -0
  72. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_config.py +0 -0
  73. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_context_rules.py +0 -0
  74. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_diffrender.py +0 -0
  75. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_filesystem.py +0 -0
  76. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_invariants.py +0 -0
  77. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_mcp.py +0 -0
  78. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_models.py +0 -0
  79. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_persistence.py +0 -0
  80. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_planmode.py +0 -0
  81. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_prompts.py +0 -0
  82. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_scenarios.py +0 -0
  83. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_session.py +0 -0
  84. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_subagent.py +0 -0
  85. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_subagent_isolation.py +0 -0
  86. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_todos_scope.py +0 -0
  87. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_token_estimator.py +0 -0
  88. {python_agent_harness-1.5.0 → python_agent_harness-1.5.3}/tests/test_tools_misc.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-agent-harness
3
- Version: 1.5.0
4
- Summary: Python agent execution harness: agent loop, tools, plan/build modes, sessions
3
+ Version: 1.5.3
4
+ Summary: A lightweight, hackable mini-OpenCode written in Python.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
7
7
  License-File: LICENSE
@@ -23,10 +23,11 @@ Dynamic: license-file
23
23
 
24
24
  # python-agent-harness
25
25
 
26
- **A lightweight Python coding-agent harness for reliable autonomous coding.**
26
+ **A lightweight, hackable mini-OpenCode written in Python.**
27
27
  FSM-driven execution · OpenAI-compatible · built for daily use and easy customization
28
28
 
29
29
  [![CI](https://github.com/beacoder/python-agent-harness/actions/workflows/ci.yml/badge.svg)](https://github.com/beacoder/python-agent-harness/actions/workflows/ci.yml)
30
+ [![PyPI](https://img.shields.io/pypi/v/python-agent-harness.svg)](https://pypi.org/project/python-agent-harness/)
30
31
  [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
31
32
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
32
33
 
@@ -44,10 +45,28 @@ It works with any **OpenAI-compatible API** and is designed to be easy to inspec
44
45
 
45
46
  ## Demo
46
47
 
47
- ![python-agent-harness demo](demo.png)
48
+ ![python-agent-harness demo](https://raw.githubusercontent.com/beacoder/python-agent-harness/main/demo.png)
48
49
 
49
50
  ## Quick start
50
51
 
52
+ ### Install from PyPI
53
+
54
+ ```sh
55
+ pip install python-agent-harness
56
+
57
+ python-agent-harness config --init
58
+ python-agent-harness run
59
+ ```
60
+
61
+ Optional extras:
62
+
63
+ ```sh
64
+ pip install "python-agent-harness[mcp]" # MCP server integration
65
+ pip install "python-agent-harness[dev]" # development tools
66
+ ```
67
+
68
+ ### Install from source (GitHub)
69
+
51
70
  ```sh
52
71
  git clone git@github.com:beacoder/python-agent-harness.git
53
72
  cd python-agent-harness
@@ -59,8 +78,6 @@ python-agent-harness config --init
59
78
  python-agent-harness run
60
79
  ```
61
80
 
62
- Edit `~/.config/python-agent-harness/config.json` and set your `base_url`, `api_key`, and `model`.
63
-
64
81
  Optional extras:
65
82
 
66
83
  ```sh
@@ -68,6 +85,8 @@ pip install -e ".[mcp]" # MCP server integration
68
85
  pip install -e ".[dev]" # development tools
69
86
  ```
70
87
 
88
+ Edit `~/.config/python-agent-harness/config.json` and set your `base_url`, `api_key`, and `model`.
89
+
71
90
  ## Features
72
91
 
73
92
  - **FSM-driven execution** — explicit `WAIT` / `TOOL` / `TRET` / `SUPERVISE` / `DONE` / `ERRS` / `ABRT` states. Completion supervision nudges the model when it stops early, while failed tool calls are sanitized so they never strand the agent. Transient API failures (`429` / `5xx`) retry with exponential backoff and jitter.
@@ -2,10 +2,11 @@
2
2
 
3
3
  # python-agent-harness
4
4
 
5
- **A lightweight Python coding-agent harness for reliable autonomous coding.**
5
+ **A lightweight, hackable mini-OpenCode written in Python.**
6
6
  FSM-driven execution · OpenAI-compatible · built for daily use and easy customization
7
7
 
8
8
  [![CI](https://github.com/beacoder/python-agent-harness/actions/workflows/ci.yml/badge.svg)](https://github.com/beacoder/python-agent-harness/actions/workflows/ci.yml)
9
+ [![PyPI](https://img.shields.io/pypi/v/python-agent-harness.svg)](https://pypi.org/project/python-agent-harness/)
9
10
  [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
10
11
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
11
12
 
@@ -23,10 +24,28 @@ It works with any **OpenAI-compatible API** and is designed to be easy to inspec
23
24
 
24
25
  ## Demo
25
26
 
26
- ![python-agent-harness demo](demo.png)
27
+ ![python-agent-harness demo](https://raw.githubusercontent.com/beacoder/python-agent-harness/main/demo.png)
27
28
 
28
29
  ## Quick start
29
30
 
31
+ ### Install from PyPI
32
+
33
+ ```sh
34
+ pip install python-agent-harness
35
+
36
+ python-agent-harness config --init
37
+ python-agent-harness run
38
+ ```
39
+
40
+ Optional extras:
41
+
42
+ ```sh
43
+ pip install "python-agent-harness[mcp]" # MCP server integration
44
+ pip install "python-agent-harness[dev]" # development tools
45
+ ```
46
+
47
+ ### Install from source (GitHub)
48
+
30
49
  ```sh
31
50
  git clone git@github.com:beacoder/python-agent-harness.git
32
51
  cd python-agent-harness
@@ -38,8 +57,6 @@ python-agent-harness config --init
38
57
  python-agent-harness run
39
58
  ```
40
59
 
41
- Edit `~/.config/python-agent-harness/config.json` and set your `base_url`, `api_key`, and `model`.
42
-
43
60
  Optional extras:
44
61
 
45
62
  ```sh
@@ -47,6 +64,8 @@ pip install -e ".[mcp]" # MCP server integration
47
64
  pip install -e ".[dev]" # development tools
48
65
  ```
49
66
 
67
+ Edit `~/.config/python-agent-harness/config.json` and set your `base_url`, `api_key`, and `model`.
68
+
50
69
  ## Features
51
70
 
52
71
  - **FSM-driven execution** — explicit `WAIT` / `TOOL` / `TRET` / `SUPERVISE` / `DONE` / `ERRS` / `ABRT` states. Completion supervision nudges the model when it stops early, while failed tool calls are sanitized so they never strand the agent. Transient API failures (`429` / `5xx`) retry with exponential backoff and jitter.
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-agent-harness"
7
- version = "1.5.0"
8
- description = "Python agent execution harness: agent loop, tools, plan/build modes, sessions"
7
+ version = "1.5.3"
8
+ description = "A lightweight, hackable mini-OpenCode written in Python."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
11
  dependencies = [
@@ -5,7 +5,7 @@ from .mcp.manager import MCPManager
5
5
  from .models import AgentMode, Message, ToolCall, ToolSpec
6
6
  from .session import Session
7
7
 
8
- __version__ = "1.5.0"
8
+ __version__ = "1.5.3"
9
9
 
10
10
  __all__ = [
11
11
  "Session",
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-agent-harness
3
- Version: 1.5.0
4
- Summary: Python agent execution harness: agent loop, tools, plan/build modes, sessions
3
+ Version: 1.5.3
4
+ Summary: A lightweight, hackable mini-OpenCode written in Python.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
7
7
  License-File: LICENSE
@@ -23,10 +23,11 @@ Dynamic: license-file
23
23
 
24
24
  # python-agent-harness
25
25
 
26
- **A lightweight Python coding-agent harness for reliable autonomous coding.**
26
+ **A lightweight, hackable mini-OpenCode written in Python.**
27
27
  FSM-driven execution · OpenAI-compatible · built for daily use and easy customization
28
28
 
29
29
  [![CI](https://github.com/beacoder/python-agent-harness/actions/workflows/ci.yml/badge.svg)](https://github.com/beacoder/python-agent-harness/actions/workflows/ci.yml)
30
+ [![PyPI](https://img.shields.io/pypi/v/python-agent-harness.svg)](https://pypi.org/project/python-agent-harness/)
30
31
  [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
31
32
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
32
33
 
@@ -44,10 +45,28 @@ It works with any **OpenAI-compatible API** and is designed to be easy to inspec
44
45
 
45
46
  ## Demo
46
47
 
47
- ![python-agent-harness demo](demo.png)
48
+ ![python-agent-harness demo](https://raw.githubusercontent.com/beacoder/python-agent-harness/main/demo.png)
48
49
 
49
50
  ## Quick start
50
51
 
52
+ ### Install from PyPI
53
+
54
+ ```sh
55
+ pip install python-agent-harness
56
+
57
+ python-agent-harness config --init
58
+ python-agent-harness run
59
+ ```
60
+
61
+ Optional extras:
62
+
63
+ ```sh
64
+ pip install "python-agent-harness[mcp]" # MCP server integration
65
+ pip install "python-agent-harness[dev]" # development tools
66
+ ```
67
+
68
+ ### Install from source (GitHub)
69
+
51
70
  ```sh
52
71
  git clone git@github.com:beacoder/python-agent-harness.git
53
72
  cd python-agent-harness
@@ -59,8 +78,6 @@ python-agent-harness config --init
59
78
  python-agent-harness run
60
79
  ```
61
80
 
62
- Edit `~/.config/python-agent-harness/config.json` and set your `base_url`, `api_key`, and `model`.
63
-
64
81
  Optional extras:
65
82
 
66
83
  ```sh
@@ -68,6 +85,8 @@ pip install -e ".[mcp]" # MCP server integration
68
85
  pip install -e ".[dev]" # development tools
69
86
  ```
70
87
 
88
+ Edit `~/.config/python-agent-harness/config.json` and set your `base_url`, `api_key`, and `model`.
89
+
71
90
  ## Features
72
91
 
73
92
  - **FSM-driven execution** — explicit `WAIT` / `TOOL` / `TRET` / `SUPERVISE` / `DONE` / `ERRS` / `ABRT` states. Completion supervision nudges the model when it stops early, while failed tool calls are sanitized so they never strand the agent. Transient API failures (`429` / `5xx`) retry with exponential backoff and jitter.