agentic-python-coder 2.3.0__tar.gz → 3.1.0__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_python_coder-2.3.0 → agentic_python_coder-3.1.0}/.gitignore +2 -3
  2. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/PKG-INFO +19 -22
  3. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/README.md +12 -10
  4. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/prompts/system.md +12 -6
  5. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/prompts/system_todo.md +12 -6
  6. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/__init__.py +17 -2
  7. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/agent.py +172 -151
  8. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/cpmpy/cpmpy.md +12 -3
  9. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/llm.py +53 -42
  10. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/mcp_server.py +7 -2
  11. agentic_python_coder-3.1.0/coder/src/agentic_python_coder/models/gemini3flash.json +5 -0
  12. agentic_python_coder-3.1.0/coder/src/agentic_python_coder/models/gemini3pro.json +8 -0
  13. agentic_python_coder-2.3.0/coder/src/agentic_python_coder/models/gpt5.json → agentic_python_coder-3.1.0/coder/src/agentic_python_coder/models/gpt52.json +2 -2
  14. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/runner.py +82 -5
  15. agentic_python_coder-3.1.0/coder/src/agentic_python_coder/tools.py +350 -0
  16. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/pyproject.toml +8 -15
  17. agentic_python_coder-2.3.0/coder/src/agentic_python_coder/tools.py +0 -231
  18. agentic_python_coder-2.3.0/coder/tests/test_kernel.py +0 -193
  19. agentic_python_coder-2.3.0/coder/tests/test_library_api.py +0 -159
  20. agentic_python_coder-2.3.0/coder/tests/test_mcp_server.py +0 -416
  21. agentic_python_coder-2.3.0/coder/tests/test_todo_flag_integration.py +0 -128
  22. agentic_python_coder-2.3.0/coder/tests/test_todo_tool_availability.py +0 -51
  23. agentic_python_coder-2.3.0/examples/clingo/README.md +0 -81
  24. agentic_python_coder-2.3.0/examples/clingo/clingo.md +0 -1220
  25. agentic_python_coder-2.3.0/examples/clingo/sample_tasks/bird_reasoning.md +0 -49
  26. agentic_python_coder-2.3.0/examples/clingo/sample_tasks/diagnosis.md +0 -57
  27. agentic_python_coder-2.3.0/examples/clingo/sample_tasks/simple_coloring.md +0 -26
  28. agentic_python_coder-2.3.0/examples/clingo/sample_tasks/stable_marriage.md +0 -26
  29. agentic_python_coder-2.3.0/examples/clingo/sample_tasks/sudoku_mini.md +0 -28
  30. agentic_python_coder-2.3.0/examples/cpmpy/README.md +0 -69
  31. agentic_python_coder-2.3.0/examples/cpmpy/cpmpy.md +0 -46
  32. agentic_python_coder-2.3.0/examples/cpmpy/sample_problems/magic_square.md +0 -46
  33. agentic_python_coder-2.3.0/examples/cpmpy/sample_problems/n_queens.md +0 -36
  34. agentic_python_coder-2.3.0/examples/regex/README.md +0 -66
  35. agentic_python_coder-2.3.0/examples/regex/regex.md +0 -114
  36. agentic_python_coder-2.3.0/examples/regex/sample_tasks/email_extraction.md +0 -31
  37. agentic_python_coder-2.3.0/examples/regex/sample_tasks/phone_validation.md +0 -34
  38. agentic_python_coder-2.3.0/examples/regex/sample_tasks/test_email/email_extractor.py +0 -77
  39. agentic_python_coder-2.3.0/examples/regex/sample_tasks/test_email/extracted_emails.txt +0 -7
  40. agentic_python_coder-2.3.0/examples/regex/sample_tasks/test_email/text.txt +0 -1
  41. agentic_python_coder-2.3.0/examples/regex/sample_tasks/url_parsing.md +0 -62
  42. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/LICENSE +0 -0
  43. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/.gitignore +0 -0
  44. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/cli.py +0 -0
  45. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/__init__.py +0 -0
  46. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/clingo/README.md +0 -0
  47. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/clingo/clingo.md +0 -0
  48. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/clingo/sample_tasks/bird_reasoning.md +0 -0
  49. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/clingo/sample_tasks/diagnosis.md +0 -0
  50. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/clingo/sample_tasks/simple_coloring.md +0 -0
  51. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/clingo/sample_tasks/stable_marriage.md +0 -0
  52. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/clingo/sample_tasks/sudoku_mini.md +0 -0
  53. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/cpmpy/README.md +0 -0
  54. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/cpmpy/sample_tasks/magic_square.md +0 -0
  55. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/cpmpy/sample_tasks/n_queens.md +0 -0
  56. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/regex/README.md +0 -0
  57. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/regex/regex.md +0 -0
  58. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/regex/sample_tasks/email_extraction.md +0 -0
  59. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/regex/sample_tasks/phone_validation.md +0 -0
  60. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/examples/regex/sample_tasks/url_parsing.md +0 -0
  61. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/kernel.py +0 -0
  62. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/models/deepseek31.json +0 -0
  63. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/models/gemini25.json +0 -0
  64. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/models/grok41.json +0 -0
  65. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/models/opus45.json +0 -0
  66. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/models/qwen3.json +0 -0
  67. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/models/sonnet45.json +0 -0
  68. {agentic_python_coder-2.3.0 → agentic_python_coder-3.1.0}/coder/src/agentic_python_coder/project_md.py +0 -0
@@ -152,8 +152,10 @@ cython_debug/
152
152
  uv.lock
153
153
 
154
154
  # Project specific
155
+ tests/
155
156
  coder-examples/
156
157
  CLAUDE-archive.md
158
+ EXPERTISE/
157
159
  PROCESS_NOTES.md
158
160
  conversation_log.json
159
161
  coder_output.log
@@ -171,9 +173,6 @@ PAPER/
171
173
  PAPER-ASP/
172
174
  ZEBRA/
173
175
  .mcp.json
174
- examples/cpmpy/cpmpy_v*.md
175
- examples/cpmpy/cpmpy.md.backup-*
176
- examples/clingo/clingo_v*.md
177
176
 
178
177
  # Test files and folders (root level only)
179
178
  /test-*/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentic-python-coder
3
- Version: 2.3.0
3
+ Version: 3.1.0
4
4
  Summary: A lightweight Python coding agent that writes, executes, and iterates on code through natural language instructions
5
5
  Author: Stefan Szeider
6
6
  License: Apache-2.0
@@ -14,21 +14,16 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
15
15
  Classifier: Topic :: Software Development :: Code Generators
16
16
  Requires-Python: <3.14,>=3.13
17
- Requires-Dist: ipykernel>=7.0.0
18
- Requires-Dist: jupyter-client>=8.7.0
19
- Requires-Dist: langchain-anthropic>=1.3.0
20
- Requires-Dist: langchain-core>=1.2.0
21
- Requires-Dist: langchain-experimental>=0.4.1
22
- Requires-Dist: langchain-openai>=1.1.6
23
- Requires-Dist: langchain>=1.2.0
24
- Requires-Dist: langgraph>=1.0.5
25
- Requires-Dist: mcp>=1.0.0
17
+ Requires-Dist: ipykernel>=7.2.0
18
+ Requires-Dist: jupyter-client>=8.8.0
19
+ Requires-Dist: mcp>=1.26.0
20
+ Requires-Dist: openai>=2.21.0
26
21
  Requires-Dist: python-dotenv>=1.2.1
27
22
  Requires-Dist: pyyaml>=6.0.3
28
- Requires-Dist: rich>=14.2.0
23
+ Requires-Dist: rich>=14.3.2
29
24
  Provides-Extra: dev
30
25
  Requires-Dist: mypy>=1.19.1; extra == 'dev'
31
- Requires-Dist: ruff>=0.14.10; extra == 'dev'
26
+ Requires-Dist: ruff>=0.14.14; extra == 'dev'
32
27
  Provides-Extra: test
33
28
  Requires-Dist: pytest-asyncio>=1.3.0; extra == 'test'
34
29
  Requires-Dist: pytest-cov>=7.0.0; extra == 'test'
@@ -42,11 +37,10 @@ Description-Content-Type: text/markdown
42
37
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
43
38
  [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/)
44
39
  [![UV](https://img.shields.io/badge/Packaged%20with-UV-purple)](https://github.com/astral-sh/uv)
45
- [![LangGraph](https://img.shields.io/badge/Built%20with-LangGraph-green)](https://github.com/langchain-ai/langgraph)
46
40
 
47
41
  This package provides two utilities for Python code execution:
48
42
 
49
- 1. **coder** — An autonomous coding agent using the ReAct framework (CLI + Python library)
43
+ 1. **coder** — An autonomous coding agent using the ReAct pattern (CLI + Python library)
50
44
  2. **ipython_mcp** — An MCP server that gives any MCP-compatible client (Claude Desktop, etc.) Python execution capability
51
45
 
52
46
  Both share a persistent IPython kernel for stateful code execution.
@@ -157,8 +151,10 @@ coder --model opus45 "task" # Claude Opus 4.5
157
151
  coder --model deepseek31 "task" # DeepSeek v3.1
158
152
  coder --model grok41 "task" # X.AI Grok 4.1
159
153
  coder --model qwen3 "task" # Qwen3 Coder
160
- coder --model gemini25 "task" # Gemini Pro 2.5
161
- coder --model gpt5 "task" # GPT-5
154
+ coder --model gemini25 "task" # Gemini Pro 2.5
155
+ coder --model gemini3pro "task" # Gemini 3 Pro Preview
156
+ coder --model gemini3flash "task" # Gemini 3 Flash Preview (fast, low-cost)
157
+ coder --model gpt52 "task" # GPT-5.2
162
158
 
163
159
  # Custom model (JSON file)
164
160
  coder --model ./mymodel.json "task"
@@ -166,16 +162,17 @@ coder --model ./mymodel.json "task"
166
162
 
167
163
  ### Project Templates
168
164
 
169
- Domain-specific templates improve results:
165
+ Domain-specific templates improve results. Bundled examples are available on GitHub at [`coder/src/agentic_python_coder/examples/`](coder/src/agentic_python_coder/examples/). Use `--init` to copy them locally:
170
166
 
171
167
  ```bash
172
- # Initialize example templates (creates coder-examples/ directory)
168
+ # Copy all bundled examples to coder-examples/
173
169
  coder --init
174
170
 
175
- # Constraint programming with CPMpy
176
- coder --with cpmpy --project coder-examples/cpmpy/cpmpy.md "Solve 8-queens"
171
+ # Or copy a specific template
172
+ coder --init cpmpy
177
173
 
178
- # Answer Set Programming with Clingo
174
+ # Then use with your task
175
+ coder --with cpmpy --project coder-examples/cpmpy/cpmpy.md "Solve 8-queens"
179
176
  coder --with clingo --project coder-examples/clingo/clingo.md "Model bird flight"
180
177
  ```
181
178
 
@@ -263,7 +260,7 @@ from agentic_python_coder import get_openrouter_llm, list_available_models
263
260
 
264
261
  llm = get_openrouter_llm(model="sonnet45")
265
262
  print(list_available_models())
266
- # ['deepseek31', 'gemini25', 'gpt5', 'grok41', 'opus45', 'qwen3', 'sonnet45']
263
+ # ['deepseek31', 'gemini25', 'gemini3flash', 'gemini3pro', 'gpt52', 'grok41', 'opus45', 'qwen3', 'sonnet45']
267
264
  ```
268
265
 
269
266
  ---
@@ -4,11 +4,10 @@
4
4
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
5
5
  [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/)
6
6
  [![UV](https://img.shields.io/badge/Packaged%20with-UV-purple)](https://github.com/astral-sh/uv)
7
- [![LangGraph](https://img.shields.io/badge/Built%20with-LangGraph-green)](https://github.com/langchain-ai/langgraph)
8
7
 
9
8
  This package provides two utilities for Python code execution:
10
9
 
11
- 1. **coder** — An autonomous coding agent using the ReAct framework (CLI + Python library)
10
+ 1. **coder** — An autonomous coding agent using the ReAct pattern (CLI + Python library)
12
11
  2. **ipython_mcp** — An MCP server that gives any MCP-compatible client (Claude Desktop, etc.) Python execution capability
13
12
 
14
13
  Both share a persistent IPython kernel for stateful code execution.
@@ -119,8 +118,10 @@ coder --model opus45 "task" # Claude Opus 4.5
119
118
  coder --model deepseek31 "task" # DeepSeek v3.1
120
119
  coder --model grok41 "task" # X.AI Grok 4.1
121
120
  coder --model qwen3 "task" # Qwen3 Coder
122
- coder --model gemini25 "task" # Gemini Pro 2.5
123
- coder --model gpt5 "task" # GPT-5
121
+ coder --model gemini25 "task" # Gemini Pro 2.5
122
+ coder --model gemini3pro "task" # Gemini 3 Pro Preview
123
+ coder --model gemini3flash "task" # Gemini 3 Flash Preview (fast, low-cost)
124
+ coder --model gpt52 "task" # GPT-5.2
124
125
 
125
126
  # Custom model (JSON file)
126
127
  coder --model ./mymodel.json "task"
@@ -128,16 +129,17 @@ coder --model ./mymodel.json "task"
128
129
 
129
130
  ### Project Templates
130
131
 
131
- Domain-specific templates improve results:
132
+ Domain-specific templates improve results. Bundled examples are available on GitHub at [`coder/src/agentic_python_coder/examples/`](coder/src/agentic_python_coder/examples/). Use `--init` to copy them locally:
132
133
 
133
134
  ```bash
134
- # Initialize example templates (creates coder-examples/ directory)
135
+ # Copy all bundled examples to coder-examples/
135
136
  coder --init
136
137
 
137
- # Constraint programming with CPMpy
138
- coder --with cpmpy --project coder-examples/cpmpy/cpmpy.md "Solve 8-queens"
138
+ # Or copy a specific template
139
+ coder --init cpmpy
139
140
 
140
- # Answer Set Programming with Clingo
141
+ # Then use with your task
142
+ coder --with cpmpy --project coder-examples/cpmpy/cpmpy.md "Solve 8-queens"
141
143
  coder --with clingo --project coder-examples/clingo/clingo.md "Model bird flight"
142
144
  ```
143
145
 
@@ -225,7 +227,7 @@ from agentic_python_coder import get_openrouter_llm, list_available_models
225
227
 
226
228
  llm = get_openrouter_llm(model="sonnet45")
227
229
  print(list_available_models())
228
- # ['deepseek31', 'gemini25', 'gpt5', 'grok41', 'opus45', 'qwen3', 'sonnet45']
230
+ # ['deepseek31', 'gemini25', 'gemini3flash', 'gemini3pro', 'gpt52', 'grok41', 'opus45', 'qwen3', 'sonnet45']
229
231
  ```
230
232
 
231
233
  ---
@@ -59,8 +59,13 @@ Build solutions incrementally:
59
59
  ## Important Guidelines
60
60
 
61
61
  1. **Focus on the Task**: Complete what's requested, nothing more
62
- 2. **Test Efficiently**: One or two test cases are usually sufficient
63
- 3. **Save Once**: Call save_code only when you have the final code
62
+ 2. **Verify Before Saving**: Before calling save_code, you MUST verify your solution:
63
+ - Execute the full script via python_exec and confirm it produces correct output
64
+ - For constraint/logic problems: write a verification function that checks the output against EVERY constraint in the problem statement using plain Python asserts, independent of your solver model
65
+ - For problems with a specific output format: assert that JSON keys, array shapes, and value ranges match the spec exactly
66
+ - For optimization: confirm optimality (e.g., re-solve with a stricter bound and confirm infeasibility)
67
+ - Do NOT trust that solver.solve()==True means your model is correct — your constraints may be wrong
68
+ 3. **Save Once**: Call save_code only after verification passes
64
69
  4. **Stop When Done**: Don't add features not requested
65
70
 
66
71
  ## Error Recovery
@@ -83,9 +88,10 @@ Before saving any code with save_code, your script MUST pass this checklist:
83
88
  ## Task Completion
84
89
 
85
90
  When finishing:
86
- 1. Verify the solution works correctly
87
- 2. Clean the code according to the **Code Cleaning Requirements** above
88
- 3. Call save_code with the complete, cleaned code
89
- 4. STOP - do not continue unless asked
91
+ 1. Execute the full solution and verify it produces correct, complete output
92
+ 2. For logic/constraint problems: run an independent verification that checks every constraint
93
+ 3. Clean the code according to the **Code Cleaning Requirements** above
94
+ 4. Call save_code with the complete, cleaned code
95
+ 5. STOP - do not continue unless asked
90
96
 
91
97
  Your goal is efficient, focused problem-solving.
@@ -76,8 +76,13 @@ Build solutions incrementally:
76
76
 
77
77
  1. **Todo List is Mandatory**: ALWAYS use todo_write after understanding the problem
78
78
  2. **Focus on the Task**: Complete what's requested, nothing more
79
- 3. **Test Efficiently**: One or two test cases are usually sufficient
80
- 4. **Save Once**: Call save_code only when you have the final code
79
+ 3. **Verify Before Saving**: Before calling save_code, you MUST verify your solution:
80
+ - Execute the full script via python_exec and confirm it produces correct output
81
+ - For constraint/logic problems: write a verification function that checks the output against EVERY constraint in the problem statement using plain Python asserts, independent of your solver model
82
+ - For problems with a specific output format: assert that JSON keys, array shapes, and value ranges match the spec exactly
83
+ - For optimization: confirm optimality (e.g., re-solve with a stricter bound and confirm infeasibility)
84
+ - Do NOT trust that solver.solve()==True means your model is correct — your constraints may be wrong
85
+ 4. **Save Once**: Call save_code only after verification passes
81
86
  5. **Stop When Done**: Don't add features not requested
82
87
 
83
88
  ## Error Recovery
@@ -101,10 +106,11 @@ Before saving any code with save_code, your script MUST pass this checklist:
101
106
 
102
107
  When finishing (these should be your final todo items):
103
108
  1. Ensure all todo items are marked as completed
104
- 2. Verify the solution works correctly
105
- 3. Clean the code according to the **Code Cleaning Requirements** above
106
- 4. Call save_code with the complete, cleaned code (final todo item)
107
- 5. STOP - do not continue unless asked
109
+ 2. Execute the full solution and verify it produces correct, complete output
110
+ 3. For logic/constraint problems: run an independent verification that checks every constraint
111
+ 4. Clean the code according to the **Code Cleaning Requirements** above
112
+ 5. Call save_code with the complete, cleaned code (final todo item)
113
+ 6. STOP - do not continue unless asked
108
114
 
109
115
  Note: Your todo list should show a clear progression from planning through completion.
110
116
 
@@ -1,12 +1,13 @@
1
- """Python Coding Agent - A minimal coding assistant using LangGraph and OpenRouter."""
1
+ """Python Coding Agent - A minimal coding assistant using direct OpenAI API and OpenRouter."""
2
2
 
3
- __version__ = "2.3.0"
3
+ __version__ = "3.0.0"
4
4
 
5
5
  # High-level API (recommended for most users)
6
6
  from agentic_python_coder.runner import solve_task
7
7
 
8
8
  # Lower-level API (for custom workflows)
9
9
  from agentic_python_coder.agent import (
10
+ CodingAgent,
10
11
  create_coding_agent,
11
12
  run_agent,
12
13
  get_final_response,
@@ -15,12 +16,20 @@ from agentic_python_coder.agent import (
15
16
 
16
17
  # LLM utilities
17
18
  from agentic_python_coder.llm import (
19
+ LLMConfig,
18
20
  get_openrouter_llm,
19
21
  load_model_config,
20
22
  list_available_models,
21
23
  DEFAULT_MODEL,
22
24
  )
23
25
 
26
+ # Tool system
27
+ from agentic_python_coder.tools import (
28
+ Tool,
29
+ ToolRegistry,
30
+ create_tool_registry,
31
+ )
32
+
24
33
  # Kernel management (multi-kernel API)
25
34
  from agentic_python_coder.kernel import (
26
35
  # Core functions
@@ -48,15 +57,21 @@ __all__ = [
48
57
  # High-level
49
58
  "solve_task",
50
59
  # Low-level agent
60
+ "CodingAgent",
51
61
  "create_coding_agent",
52
62
  "run_agent",
53
63
  "get_final_response",
54
64
  "DEFAULT_STEP_LIMIT",
55
65
  # LLM
66
+ "LLMConfig",
56
67
  "get_openrouter_llm",
57
68
  "load_model_config",
58
69
  "list_available_models",
59
70
  "DEFAULT_MODEL",
71
+ # Tool system
72
+ "Tool",
73
+ "ToolRegistry",
74
+ "create_tool_registry",
60
75
  # Kernel management
61
76
  "create_kernel",
62
77
  "execute_in_kernel",