wcgw 2.8.10__tar.gz → 3.0.1rc1__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.
Potentially problematic release.
This version of wcgw might be problematic. Click here for more details.
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/.github/workflows/python-tests.yml +2 -2
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/.github/workflows/python-types.yml +1 -1
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/PKG-INFO +2 -3
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/gpt_action_json_schema.json +157 -125
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/gpt_instructions.txt +8 -13
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/pyproject.toml +5 -4
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/__init__.py +1 -1
- wcgw-3.0.1rc1/src/wcgw/client/bash_state/bash_state.py +768 -0
- wcgw-3.0.1rc1/src/wcgw/client/encoder/__init__.py +47 -0
- wcgw-3.0.1rc1/src/wcgw/client/mcp_server/Readme.md +3 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/mcp_server/__init__.py +2 -2
- wcgw-3.0.1rc1/src/wcgw/client/mcp_server/server.py +185 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/modes.py +3 -9
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/display_tree.py +1 -12
- wcgw-3.0.1rc1/src/wcgw/client/tool_prompts.py +105 -0
- wcgw-3.0.1rc1/src/wcgw/client/tools.py +707 -0
- wcgw-3.0.1rc1/src/wcgw/relay/client.py +95 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/relay/serve.py +11 -45
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/types_.py +51 -61
- wcgw-3.0.1rc1/src/wcgw_cli/anthropic_client.py +478 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw_cli/cli.py +0 -2
- wcgw-3.0.1rc1/src/wcgw_cli/openai_client.py +410 -0
- wcgw-3.0.1rc1/tests/test_edit.py +269 -0
- wcgw-3.0.1rc1/tests/test_mcp_server.py +271 -0
- wcgw-3.0.1rc1/tests/test_tools.py +733 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/uv.lock +153 -5
- wcgw-2.8.10/src/wcgw/client/computer_use.py +0 -435
- wcgw-2.8.10/src/wcgw/client/mcp_server/Readme.md +0 -89
- wcgw-2.8.10/src/wcgw/client/mcp_server/server.py +0 -337
- wcgw-2.8.10/src/wcgw/client/sys_utils.py +0 -41
- wcgw-2.8.10/src/wcgw/client/tools.py +0 -1561
- wcgw-2.8.10/src/wcgw_cli/anthropic_client.py +0 -590
- wcgw-2.8.10/src/wcgw_cli/openai_client.py +0 -467
- wcgw-2.8.10/tests/client/file_ops/test_diff_edit.py +0 -222
- wcgw-2.8.10/tests/client/file_ops/test_search_replace.py +0 -190
- wcgw-2.8.10/tests/client/repo_ops/__init__.py +0 -0
- wcgw-2.8.10/tests/client/repo_ops/test_display_tree.py +0 -152
- wcgw-2.8.10/tests/client/repo_ops/test_display_tree_simple.py +0 -62
- wcgw-2.8.10/tests/client/repo_ops/test_path_prob.py +0 -115
- wcgw-2.8.10/tests/client/repo_ops/test_repo_context.py +0 -150
- wcgw-2.8.10/tests/client/test_anthropic_client_utils.py +0 -107
- wcgw-2.8.10/tests/client/test_memory.py +0 -162
- wcgw-2.8.10/tests/client/test_openai_utils.py +0 -101
- wcgw-2.8.10/tests/client/test_tools_basic.py +0 -22
- wcgw-2.8.10/tests/client/test_tools_extended.py +0 -553
- wcgw-2.8.10/tests/client/test_tools_file_ops.py +0 -132
- wcgw-2.8.10/tests/client/test_tools_files.py +0 -121
- wcgw-2.8.10/tests/client/test_tools_shell.py +0 -505
- wcgw-2.8.10/tests/client/test_tools_validation.py +0 -251
- wcgw-2.8.10/tests/client/tools/__init__.py +0 -1
- wcgw-2.8.10/tests/client/tools/test_command_validation.py +0 -127
- wcgw-2.8.10/tests/client/tools/test_docker_operations.py +0 -39
- wcgw-2.8.10/tests/client/tools/test_error_handling.py +0 -22
- wcgw-2.8.10/tests/client/tools/test_error_handling_full.py +0 -152
- wcgw-2.8.10/tests/client/tools/test_execute_bash.py +0 -110
- wcgw-2.8.10/tests/client/tools/test_file_errors.py +0 -22
- wcgw-2.8.10/tests/client/tools/test_file_operations.py +0 -156
- wcgw-2.8.10/tests/client/tools/test_files/test1.py +0 -4
- wcgw-2.8.10/tests/client/tools/test_files/test2.py +0 -4
- wcgw-2.8.10/tests/client/tools/test_files/test_file.py +0 -1
- wcgw-2.8.10/tests/client/tools/test_full_coverage.py +0 -66
- wcgw-2.8.10/tests/client/tools/test_is_int.py +0 -25
- wcgw-2.8.10/tests/client/tools/test_knowledge_transfer.py +0 -155
- wcgw-2.8.10/tests/client/tools/test_large_blocks.py +0 -37
- wcgw-2.8.10/tests/client/tools/test_prompt_update.py +0 -48
- wcgw-2.8.10/tests/client/tools/test_render_terminal.py +0 -25
- wcgw-2.8.10/tests/client/tools/test_terminal_output.py +0 -187
- wcgw-2.8.10/tests/client/tools/test_terminal_output_full.py +0 -114
- wcgw-2.8.10/tests/client/tools/test_terminal_output_incremental.py +0 -46
- wcgw-2.8.10/tests/client/tools/test_terminal_output_raw.py +0 -57
- wcgw-2.8.10/tests/client/tools/test_terminal_sequence.py +0 -50
- wcgw-2.8.10/tests/client/tools/test_timeout_handling.py +0 -100
- wcgw-2.8.10/tests/client/tools/test_timeout_state.py +0 -30
- wcgw-2.8.10/tests/client/tools/test_user_interaction.py +0 -132
- wcgw-2.8.10/tests/client/tools/test_write_file.py +0 -118
- wcgw-2.8.10/tests/conftest.py +0 -12
- wcgw-2.8.10/tests/test_anthropic_client.py +0 -84
- wcgw-2.8.10/tests/test_basic.py +0 -69
- wcgw-2.8.10/tests/test_common.py +0 -111
- wcgw-2.8.10/tests/test_computer_use.py +0 -142
- wcgw-2.8.10/tests/test_computer_use_base.py +0 -123
- wcgw-2.8.10/tests/test_computer_use_shell.py +0 -120
- wcgw-2.8.10/tests/test_initialize.py +0 -325
- wcgw-2.8.10/tests/test_sys_utils.py +0 -102
- wcgw-2.8.10/tests/test_tools.py +0 -39
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/.github/workflows/python-publish.yml +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/.gitignore +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/.gitmodules +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/.python-version +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/.vscode/settings.json +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/Dockerfile +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/LICENSE +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/README.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/openai.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.git +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/workflows/main-checks.yml +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/workflows/publish-pypi.yml +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/workflows/pull-request-checks.yml +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/workflows/shared.yml +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.gitignore +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.python-version +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/CODE_OF_CONDUCT.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/CONTRIBUTING.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/LICENSE +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/README.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/RELEASE.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/SECURITY.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/README.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/.python-version +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/README.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/mcp_simple_prompt/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/mcp_simple_prompt/__main__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/mcp_simple_prompt/server.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/pyproject.toml +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/.python-version +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/README.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/mcp_simple_resource/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/mcp_simple_resource/__main__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/mcp_simple_resource/server.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/pyproject.toml +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/.python-version +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/README.md +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/mcp_simple_tool/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/mcp_simple_tool/__main__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/mcp_simple_tool/server.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/pyproject.toml +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/pyproject.toml +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/__init__.py +0 -0
- {wcgw-2.8.10/src → wcgw-3.0.1rc1/src/mcp_wcgw_fork/src/mcp_wcgw/client}/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/client/__main__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/client/session.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/client/sse.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/client/stdio.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/py.typed +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/__main__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/models.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/session.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/sse.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/stdio.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/websocket.py +0 -0
- {wcgw-2.8.10/src/mcp_wcgw_fork/src/mcp_wcgw/client → wcgw-3.0.1rc1/src/mcp_wcgw_fork/src/mcp_wcgw/shared}/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/context.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/exceptions.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/memory.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/progress.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/session.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/version.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/types.py +0 -0
- {wcgw-2.8.10/src/mcp_wcgw_fork/src/mcp_wcgw/shared → wcgw-3.0.1rc1/src/mcp_wcgw_fork/tests}/__init__.py +0 -0
- {wcgw-2.8.10/src/mcp_wcgw_fork/tests → wcgw-3.0.1rc1/src/mcp_wcgw_fork/tests/client}/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/client/test_session.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/client/test_stdio.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/conftest.py +0 -0
- {wcgw-2.8.10/src/mcp_wcgw_fork/tests/client → wcgw-3.0.1rc1/src/mcp_wcgw_fork/tests/server}/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/server/test_session.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/server/test_stdio.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/shared/test_memory.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/test_types.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/uv.lock +0 -0
- {wcgw-2.8.10/src/mcp_wcgw_fork/tests/server → wcgw-3.0.1rc1/src/wcgw/client}/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/common.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/diff-instructions.txt +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/file_ops/diff_edit.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/file_ops/search_replace.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/memory.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/path_prob.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/paths_model.vocab +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/paths_tokens.model +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/repo_context.py +0 -0
- /wcgw-2.8.10/src/wcgw/client/__init__.py → /wcgw-3.0.1rc1/src/wcgw/py.typed +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/relay/static/privacy.txt +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw_cli/__init__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw_cli/__main__.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw_cli/openai_utils.py +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/static/claude-ss.jpg +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/static/computer-use.jpg +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/static/example.jpg +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/static/rocket-icon.png +0 -0
- {wcgw-2.8.10 → wcgw-3.0.1rc1}/static/ss1.png +0 -0
|
@@ -13,7 +13,7 @@ jobs:
|
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
strategy:
|
|
15
15
|
matrix:
|
|
16
|
-
python-version: ["3.11", "3.12"]
|
|
16
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
17
17
|
steps:
|
|
18
18
|
- uses: actions/checkout@v4
|
|
19
19
|
with:
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
- name: Run tests with coverage
|
|
30
30
|
run: |
|
|
31
31
|
uv pip install pytest pytest-cov
|
|
32
|
-
uv run pytest --cov=wcgw --cov-report=xml --cov-report=term-missing
|
|
32
|
+
uv run pytest --cov=wcgw --cov-report=xml --cov-report=term-missing
|
|
33
33
|
- name: Upload coverage reports to Codecov
|
|
34
34
|
uses: codecov/codecov-action@v4
|
|
35
35
|
if: success()
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wcgw
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.1rc1
|
|
4
4
|
Summary: Shell and coding agent on claude and chatgpt
|
|
5
5
|
Project-URL: Homepage, https://github.com/rusiaaman/wcgw
|
|
6
6
|
Author-email: Aman Rusia <gapypi@arcfu.com>
|
|
7
7
|
License-File: LICENSE
|
|
8
|
-
Requires-Python:
|
|
8
|
+
Requires-Python: >=3.11
|
|
9
9
|
Requires-Dist: anthropic>=0.39.0
|
|
10
10
|
Requires-Dist: fastapi>=0.115.0
|
|
11
11
|
Requires-Dist: openai>=1.46.0
|
|
@@ -22,7 +22,6 @@ Requires-Dist: syntax-checker>=0.3.0
|
|
|
22
22
|
Requires-Dist: tokenizers>=0.21.0
|
|
23
23
|
Requires-Dist: toml>=0.10.2
|
|
24
24
|
Requires-Dist: typer>=0.12.5
|
|
25
|
-
Requires-Dist: types-pexpect>=4.9.0.20240806
|
|
26
25
|
Requires-Dist: uvicorn>=0.31.0
|
|
27
26
|
Requires-Dist: websockets>=13.1
|
|
28
27
|
Description-Content-Type: text/markdown
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"servers": [
|
|
8
8
|
{
|
|
9
|
-
"url": "https://
|
|
9
|
+
"url": "https://7781-2401-4900-1c2d-12ae-c55d-45dc-459-c089.ngrok-free.app"
|
|
10
10
|
}
|
|
11
11
|
],
|
|
12
12
|
"paths": {
|
|
@@ -90,16 +90,16 @@
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
|
-
"/v1/
|
|
93
|
+
"/v1/reset_wcgw": {
|
|
94
94
|
"post": {
|
|
95
95
|
"x-openai-isConsequential": false,
|
|
96
|
-
"summary": "Reset
|
|
97
|
-
"operationId": "
|
|
96
|
+
"summary": "Reset Wcgw",
|
|
97
|
+
"operationId": "reset_wcgw_v1_reset_wcgw_post",
|
|
98
98
|
"requestBody": {
|
|
99
99
|
"content": {
|
|
100
100
|
"application/json": {
|
|
101
101
|
"schema": {
|
|
102
|
-
"$ref": "#/components/schemas/
|
|
102
|
+
"$ref": "#/components/schemas/ResetWcgwWithUUID"
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
},
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"application/json": {
|
|
113
113
|
"schema": {
|
|
114
114
|
"type": "string",
|
|
115
|
-
"title": "Response Reset
|
|
115
|
+
"title": "Response Reset Wcgw V1 Reset Wcgw Post"
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
}
|
|
@@ -170,46 +170,6 @@
|
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
},
|
|
173
|
-
"/v1/bash_interaction": {
|
|
174
|
-
"post": {
|
|
175
|
-
"x-openai-isConsequential": false,
|
|
176
|
-
"summary": "Bash Interaction",
|
|
177
|
-
"operationId": "bash_interaction_v1_bash_interaction_post",
|
|
178
|
-
"requestBody": {
|
|
179
|
-
"content": {
|
|
180
|
-
"application/json": {
|
|
181
|
-
"schema": {
|
|
182
|
-
"$ref": "#/components/schemas/BashInteractionWithUUID"
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
},
|
|
186
|
-
"required": true
|
|
187
|
-
},
|
|
188
|
-
"responses": {
|
|
189
|
-
"200": {
|
|
190
|
-
"description": "Successful Response",
|
|
191
|
-
"content": {
|
|
192
|
-
"application/json": {
|
|
193
|
-
"schema": {
|
|
194
|
-
"type": "string",
|
|
195
|
-
"title": "Response Bash Interaction V1 Bash Interaction Post"
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
},
|
|
200
|
-
"422": {
|
|
201
|
-
"description": "Validation Error",
|
|
202
|
-
"content": {
|
|
203
|
-
"application/json": {
|
|
204
|
-
"schema": {
|
|
205
|
-
"$ref": "#/components/schemas/HTTPValidationError"
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
},
|
|
213
173
|
"/v1/read_file": {
|
|
214
174
|
"post": {
|
|
215
175
|
"x-openai-isConsequential": false,
|
|
@@ -333,81 +293,6 @@
|
|
|
333
293
|
},
|
|
334
294
|
"components": {
|
|
335
295
|
"schemas": {
|
|
336
|
-
"BashInteractionWithUUID": {
|
|
337
|
-
"properties": {
|
|
338
|
-
"send_text": {
|
|
339
|
-
"anyOf": [
|
|
340
|
-
{
|
|
341
|
-
"type": "string"
|
|
342
|
-
},
|
|
343
|
-
{
|
|
344
|
-
"type": "null"
|
|
345
|
-
}
|
|
346
|
-
],
|
|
347
|
-
"title": "Send Text"
|
|
348
|
-
},
|
|
349
|
-
"send_specials": {
|
|
350
|
-
"anyOf": [
|
|
351
|
-
{
|
|
352
|
-
"items": {
|
|
353
|
-
"type": "string",
|
|
354
|
-
"enum": [
|
|
355
|
-
"Key-up",
|
|
356
|
-
"Key-down",
|
|
357
|
-
"Key-left",
|
|
358
|
-
"Key-right",
|
|
359
|
-
"Enter",
|
|
360
|
-
"Ctrl-c",
|
|
361
|
-
"Ctrl-d",
|
|
362
|
-
"Ctrl-z"
|
|
363
|
-
]
|
|
364
|
-
},
|
|
365
|
-
"type": "array"
|
|
366
|
-
},
|
|
367
|
-
{
|
|
368
|
-
"type": "null"
|
|
369
|
-
}
|
|
370
|
-
],
|
|
371
|
-
"title": "Send Specials"
|
|
372
|
-
},
|
|
373
|
-
"send_ascii": {
|
|
374
|
-
"anyOf": [
|
|
375
|
-
{
|
|
376
|
-
"items": {
|
|
377
|
-
"type": "integer"
|
|
378
|
-
},
|
|
379
|
-
"type": "array"
|
|
380
|
-
},
|
|
381
|
-
{
|
|
382
|
-
"type": "null"
|
|
383
|
-
}
|
|
384
|
-
],
|
|
385
|
-
"title": "Send Ascii"
|
|
386
|
-
},
|
|
387
|
-
"wait_for_seconds": {
|
|
388
|
-
"anyOf": [
|
|
389
|
-
{
|
|
390
|
-
"type": "integer"
|
|
391
|
-
},
|
|
392
|
-
{
|
|
393
|
-
"type": "null"
|
|
394
|
-
}
|
|
395
|
-
],
|
|
396
|
-
"title": "Wait For Seconds"
|
|
397
|
-
},
|
|
398
|
-
"user_id": {
|
|
399
|
-
"type": "string",
|
|
400
|
-
"format": "uuid",
|
|
401
|
-
"title": "User Id"
|
|
402
|
-
}
|
|
403
|
-
},
|
|
404
|
-
"additionalProperties": false,
|
|
405
|
-
"type": "object",
|
|
406
|
-
"required": [
|
|
407
|
-
"user_id"
|
|
408
|
-
],
|
|
409
|
-
"title": "BashInteractionWithUUID"
|
|
410
|
-
},
|
|
411
296
|
"CodeWriterMode": {
|
|
412
297
|
"properties": {
|
|
413
298
|
"allowed_globs": {
|
|
@@ -449,11 +334,52 @@
|
|
|
449
334
|
],
|
|
450
335
|
"title": "CodeWriterMode"
|
|
451
336
|
},
|
|
452
|
-
"
|
|
337
|
+
"Command": {
|
|
453
338
|
"properties": {
|
|
454
339
|
"command": {
|
|
455
340
|
"type": "string",
|
|
456
341
|
"title": "Command"
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
"additionalProperties": false,
|
|
345
|
+
"type": "object",
|
|
346
|
+
"required": [
|
|
347
|
+
"command"
|
|
348
|
+
],
|
|
349
|
+
"title": "Command"
|
|
350
|
+
},
|
|
351
|
+
"CommandWithUUID": {
|
|
352
|
+
"properties": {
|
|
353
|
+
"action": {
|
|
354
|
+
"anyOf": [
|
|
355
|
+
{
|
|
356
|
+
"$ref": "#/components/schemas/Command"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"$ref": "#/components/schemas/StatusCheck"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"$ref": "#/components/schemas/SendText"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"$ref": "#/components/schemas/SendSpecials"
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"$ref": "#/components/schemas/SendAscii"
|
|
369
|
+
}
|
|
370
|
+
],
|
|
371
|
+
"title": "Action"
|
|
372
|
+
},
|
|
373
|
+
"wait_for_seconds": {
|
|
374
|
+
"anyOf": [
|
|
375
|
+
{
|
|
376
|
+
"type": "number"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"type": "null"
|
|
380
|
+
}
|
|
381
|
+
],
|
|
382
|
+
"title": "Wait For Seconds"
|
|
457
383
|
},
|
|
458
384
|
"user_id": {
|
|
459
385
|
"type": "string",
|
|
@@ -461,9 +387,10 @@
|
|
|
461
387
|
"title": "User Id"
|
|
462
388
|
}
|
|
463
389
|
},
|
|
390
|
+
"additionalProperties": false,
|
|
464
391
|
"type": "object",
|
|
465
392
|
"required": [
|
|
466
|
-
"
|
|
393
|
+
"action",
|
|
467
394
|
"user_id"
|
|
468
395
|
],
|
|
469
396
|
"title": "CommandWithUUID"
|
|
@@ -620,13 +547,43 @@
|
|
|
620
547
|
],
|
|
621
548
|
"title": "ReadFileWithUUID"
|
|
622
549
|
},
|
|
623
|
-
"
|
|
550
|
+
"ResetWcgwWithUUID": {
|
|
624
551
|
"properties": {
|
|
625
552
|
"should_reset": {
|
|
626
553
|
"type": "boolean",
|
|
627
554
|
"const": true,
|
|
628
555
|
"title": "Should Reset"
|
|
629
556
|
},
|
|
557
|
+
"change_mode": {
|
|
558
|
+
"anyOf": [
|
|
559
|
+
{
|
|
560
|
+
"type": "string",
|
|
561
|
+
"enum": [
|
|
562
|
+
"wcgw",
|
|
563
|
+
"architect",
|
|
564
|
+
"code_writer"
|
|
565
|
+
]
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
"type": "null"
|
|
569
|
+
}
|
|
570
|
+
],
|
|
571
|
+
"title": "Change Mode"
|
|
572
|
+
},
|
|
573
|
+
"code_writer_config": {
|
|
574
|
+
"anyOf": [
|
|
575
|
+
{
|
|
576
|
+
"$ref": "#/components/schemas/CodeWriterMode"
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"type": "null"
|
|
580
|
+
}
|
|
581
|
+
]
|
|
582
|
+
},
|
|
583
|
+
"starting_directory": {
|
|
584
|
+
"type": "string",
|
|
585
|
+
"title": "Starting Directory"
|
|
586
|
+
},
|
|
630
587
|
"user_id": {
|
|
631
588
|
"type": "string",
|
|
632
589
|
"format": "uuid",
|
|
@@ -637,9 +594,84 @@
|
|
|
637
594
|
"type": "object",
|
|
638
595
|
"required": [
|
|
639
596
|
"should_reset",
|
|
597
|
+
"change_mode",
|
|
598
|
+
"starting_directory",
|
|
640
599
|
"user_id"
|
|
641
600
|
],
|
|
642
|
-
"title": "
|
|
601
|
+
"title": "ResetWcgwWithUUID"
|
|
602
|
+
},
|
|
603
|
+
"SendAscii": {
|
|
604
|
+
"properties": {
|
|
605
|
+
"send_ascii": {
|
|
606
|
+
"items": {
|
|
607
|
+
"type": "integer"
|
|
608
|
+
},
|
|
609
|
+
"type": "array",
|
|
610
|
+
"title": "Send Ascii"
|
|
611
|
+
}
|
|
612
|
+
},
|
|
613
|
+
"additionalProperties": false,
|
|
614
|
+
"type": "object",
|
|
615
|
+
"required": [
|
|
616
|
+
"send_ascii"
|
|
617
|
+
],
|
|
618
|
+
"title": "SendAscii"
|
|
619
|
+
},
|
|
620
|
+
"SendSpecials": {
|
|
621
|
+
"properties": {
|
|
622
|
+
"send_specials": {
|
|
623
|
+
"items": {
|
|
624
|
+
"type": "string",
|
|
625
|
+
"enum": [
|
|
626
|
+
"Enter",
|
|
627
|
+
"Key-up",
|
|
628
|
+
"Key-down",
|
|
629
|
+
"Key-left",
|
|
630
|
+
"Key-right",
|
|
631
|
+
"Ctrl-c",
|
|
632
|
+
"Ctrl-d",
|
|
633
|
+
"Ctrl-z"
|
|
634
|
+
]
|
|
635
|
+
},
|
|
636
|
+
"type": "array",
|
|
637
|
+
"title": "Send Specials"
|
|
638
|
+
}
|
|
639
|
+
},
|
|
640
|
+
"additionalProperties": false,
|
|
641
|
+
"type": "object",
|
|
642
|
+
"required": [
|
|
643
|
+
"send_specials"
|
|
644
|
+
],
|
|
645
|
+
"title": "SendSpecials"
|
|
646
|
+
},
|
|
647
|
+
"SendText": {
|
|
648
|
+
"properties": {
|
|
649
|
+
"send_text": {
|
|
650
|
+
"type": "string",
|
|
651
|
+
"title": "Send Text"
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
"additionalProperties": false,
|
|
655
|
+
"type": "object",
|
|
656
|
+
"required": [
|
|
657
|
+
"send_text"
|
|
658
|
+
],
|
|
659
|
+
"title": "SendText"
|
|
660
|
+
},
|
|
661
|
+
"StatusCheck": {
|
|
662
|
+
"properties": {
|
|
663
|
+
"status_check": {
|
|
664
|
+
"type": "boolean",
|
|
665
|
+
"const": true,
|
|
666
|
+
"title": "Status Check"
|
|
667
|
+
}
|
|
668
|
+
},
|
|
669
|
+
"additionalProperties": false,
|
|
670
|
+
"type": "object",
|
|
671
|
+
"required": [
|
|
672
|
+
"status_check"
|
|
673
|
+
],
|
|
674
|
+
"title": "StatusCheck"
|
|
643
675
|
},
|
|
644
676
|
"ValidationError": {
|
|
645
677
|
"properties": {
|
|
@@ -18,16 +18,18 @@ Instructions for `Initialize`:
|
|
|
18
18
|
- Leave `any_workspace_path` as empty if no file or folder is mentioned.
|
|
19
19
|
- By default use mode `wcgw`
|
|
20
20
|
- In code-writer mode, set the commands and globs which user asked to set, otherwise use 'all'.
|
|
21
|
-
-
|
|
21
|
+
- Call `ResetWcgw` if you want to change the mode later.
|
|
22
22
|
|
|
23
23
|
Instructions for `BashCommand`:
|
|
24
24
|
- Execute a bash command. This is stateful (beware with subsequent calls).
|
|
25
|
-
- Do not use interactive commands like nano. Prefer writing simpler commands.
|
|
26
25
|
- Status of the command and the current working directory will always be returned at the end.
|
|
27
|
-
- Optionally `exit shell has restarted` is the output, in which case environment resets, you can run fresh commands.
|
|
28
26
|
- The first or the last line might be `(...truncated)` if the output is too long.
|
|
29
|
-
- The control will return to you in 5 seconds regardless of the status. For heavy commands, keep checking status using BashInteraction till they are finished.
|
|
30
27
|
- Run long running commands in background using screen instead of "&".
|
|
28
|
+
- Only one command allowed at a time, you need to wait for the first command to finish before running the next one.
|
|
29
|
+
- In order to check status of previous command, use `status_check` with empty command argument.
|
|
30
|
+
- Programs don't hang easily, so most likely explanation for no output is usually that the program is still running, and you need to check status again.
|
|
31
|
+
- Do not send Ctrl-c before checking for status till 10 minutes or whatever is appropriate for the program to finish.
|
|
32
|
+
- Use SendText or SendSpecials or SendAscii to interact with running command.
|
|
31
33
|
|
|
32
34
|
Instructions for `Read Files`
|
|
33
35
|
- Read full file content of one or more files.
|
|
@@ -38,15 +40,8 @@ Instructions for `Write if Empty`
|
|
|
38
40
|
- Provide absolute file path only.
|
|
39
41
|
- For editing existing files, use FileEdit.
|
|
40
42
|
|
|
41
|
-
Instructions for `
|
|
42
|
-
-
|
|
43
|
-
- Special keys like arrows, interrupts, enter, etc.
|
|
44
|
-
- Send text input to the running program.
|
|
45
|
-
- Send send_specials=["Enter"] to recheck status of a running program.
|
|
46
|
-
- Only one of send_text, send_specials, send_ascii should be provided.
|
|
47
|
-
|
|
48
|
-
Instructions for `ResetShell`
|
|
49
|
-
- Resets the shell. Use only if all interrupts and prompt reset attempts have failed repeatedly.
|
|
43
|
+
Instructions for `ResetWcgw`
|
|
44
|
+
- Resets the shell. Use either when changing mode, or when all interrupts and prompt reset attempts have failed repeatedly.
|
|
50
45
|
|
|
51
46
|
Instructions for `ContextSave`
|
|
52
47
|
- Saves provided description and file contents of all the relevant file paths or globs in a single text file.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
authors = [{ name = "Aman Rusia", email = "gapypi@arcfu.com" }]
|
|
3
3
|
name = "wcgw"
|
|
4
|
-
version = "
|
|
4
|
+
version = "3.0.1rc1"
|
|
5
5
|
description = "Shell and coding agent on claude and chatgpt"
|
|
6
6
|
readme = "README.md"
|
|
7
|
-
requires-python = ">=3.11
|
|
7
|
+
requires-python = ">=3.11"
|
|
8
8
|
dependencies = [
|
|
9
9
|
"openai>=1.46.0",
|
|
10
10
|
"typer>=0.12.5",
|
|
@@ -12,7 +12,6 @@ dependencies = [
|
|
|
12
12
|
"python-dotenv>=1.0.1",
|
|
13
13
|
"pexpect>=4.9.0",
|
|
14
14
|
"shell>=1.0.1",
|
|
15
|
-
"types-pexpect>=4.9.0.20240806",
|
|
16
15
|
"toml>=0.10.2",
|
|
17
16
|
"petname>=2.6",
|
|
18
17
|
"pyte>=0.8.2",
|
|
@@ -58,8 +57,10 @@ dev-dependencies = [
|
|
|
58
57
|
"pytest>=8.0.0",
|
|
59
58
|
"pytest-cov>=4.1.0",
|
|
60
59
|
"line-profiler>=4.2.0",
|
|
60
|
+
"pytest-asyncio>=0.25.3",
|
|
61
|
+
"types-pexpect>=4.9.0.20241208",
|
|
61
62
|
]
|
|
62
63
|
|
|
63
64
|
[tool.pytest.ini_options]
|
|
64
|
-
addopts = "--cov=wcgw --cov-report=term-missing
|
|
65
|
+
addopts = "--cov=wcgw --cov-report=term-missing --cov-report=html"
|
|
65
66
|
testpaths = ["tests"]
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
from .client.mcp_server import main as mcp_server
|
|
2
|
-
from .client
|
|
2
|
+
from .relay.client import run as listen
|