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.

Files changed (182) hide show
  1. {wcgw-2.8.10 → wcgw-3.0.1rc1}/.github/workflows/python-tests.yml +2 -2
  2. {wcgw-2.8.10 → wcgw-3.0.1rc1}/.github/workflows/python-types.yml +1 -1
  3. {wcgw-2.8.10 → wcgw-3.0.1rc1}/PKG-INFO +2 -3
  4. {wcgw-2.8.10 → wcgw-3.0.1rc1}/gpt_action_json_schema.json +157 -125
  5. {wcgw-2.8.10 → wcgw-3.0.1rc1}/gpt_instructions.txt +8 -13
  6. {wcgw-2.8.10 → wcgw-3.0.1rc1}/pyproject.toml +5 -4
  7. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/__init__.py +1 -1
  8. wcgw-3.0.1rc1/src/wcgw/client/bash_state/bash_state.py +768 -0
  9. wcgw-3.0.1rc1/src/wcgw/client/encoder/__init__.py +47 -0
  10. wcgw-3.0.1rc1/src/wcgw/client/mcp_server/Readme.md +3 -0
  11. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/mcp_server/__init__.py +2 -2
  12. wcgw-3.0.1rc1/src/wcgw/client/mcp_server/server.py +185 -0
  13. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/modes.py +3 -9
  14. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/display_tree.py +1 -12
  15. wcgw-3.0.1rc1/src/wcgw/client/tool_prompts.py +105 -0
  16. wcgw-3.0.1rc1/src/wcgw/client/tools.py +707 -0
  17. wcgw-3.0.1rc1/src/wcgw/relay/client.py +95 -0
  18. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/relay/serve.py +11 -45
  19. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/types_.py +51 -61
  20. wcgw-3.0.1rc1/src/wcgw_cli/anthropic_client.py +478 -0
  21. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw_cli/cli.py +0 -2
  22. wcgw-3.0.1rc1/src/wcgw_cli/openai_client.py +410 -0
  23. wcgw-3.0.1rc1/tests/test_edit.py +269 -0
  24. wcgw-3.0.1rc1/tests/test_mcp_server.py +271 -0
  25. wcgw-3.0.1rc1/tests/test_tools.py +733 -0
  26. {wcgw-2.8.10 → wcgw-3.0.1rc1}/uv.lock +153 -5
  27. wcgw-2.8.10/src/wcgw/client/computer_use.py +0 -435
  28. wcgw-2.8.10/src/wcgw/client/mcp_server/Readme.md +0 -89
  29. wcgw-2.8.10/src/wcgw/client/mcp_server/server.py +0 -337
  30. wcgw-2.8.10/src/wcgw/client/sys_utils.py +0 -41
  31. wcgw-2.8.10/src/wcgw/client/tools.py +0 -1561
  32. wcgw-2.8.10/src/wcgw_cli/anthropic_client.py +0 -590
  33. wcgw-2.8.10/src/wcgw_cli/openai_client.py +0 -467
  34. wcgw-2.8.10/tests/client/file_ops/test_diff_edit.py +0 -222
  35. wcgw-2.8.10/tests/client/file_ops/test_search_replace.py +0 -190
  36. wcgw-2.8.10/tests/client/repo_ops/__init__.py +0 -0
  37. wcgw-2.8.10/tests/client/repo_ops/test_display_tree.py +0 -152
  38. wcgw-2.8.10/tests/client/repo_ops/test_display_tree_simple.py +0 -62
  39. wcgw-2.8.10/tests/client/repo_ops/test_path_prob.py +0 -115
  40. wcgw-2.8.10/tests/client/repo_ops/test_repo_context.py +0 -150
  41. wcgw-2.8.10/tests/client/test_anthropic_client_utils.py +0 -107
  42. wcgw-2.8.10/tests/client/test_memory.py +0 -162
  43. wcgw-2.8.10/tests/client/test_openai_utils.py +0 -101
  44. wcgw-2.8.10/tests/client/test_tools_basic.py +0 -22
  45. wcgw-2.8.10/tests/client/test_tools_extended.py +0 -553
  46. wcgw-2.8.10/tests/client/test_tools_file_ops.py +0 -132
  47. wcgw-2.8.10/tests/client/test_tools_files.py +0 -121
  48. wcgw-2.8.10/tests/client/test_tools_shell.py +0 -505
  49. wcgw-2.8.10/tests/client/test_tools_validation.py +0 -251
  50. wcgw-2.8.10/tests/client/tools/__init__.py +0 -1
  51. wcgw-2.8.10/tests/client/tools/test_command_validation.py +0 -127
  52. wcgw-2.8.10/tests/client/tools/test_docker_operations.py +0 -39
  53. wcgw-2.8.10/tests/client/tools/test_error_handling.py +0 -22
  54. wcgw-2.8.10/tests/client/tools/test_error_handling_full.py +0 -152
  55. wcgw-2.8.10/tests/client/tools/test_execute_bash.py +0 -110
  56. wcgw-2.8.10/tests/client/tools/test_file_errors.py +0 -22
  57. wcgw-2.8.10/tests/client/tools/test_file_operations.py +0 -156
  58. wcgw-2.8.10/tests/client/tools/test_files/test1.py +0 -4
  59. wcgw-2.8.10/tests/client/tools/test_files/test2.py +0 -4
  60. wcgw-2.8.10/tests/client/tools/test_files/test_file.py +0 -1
  61. wcgw-2.8.10/tests/client/tools/test_full_coverage.py +0 -66
  62. wcgw-2.8.10/tests/client/tools/test_is_int.py +0 -25
  63. wcgw-2.8.10/tests/client/tools/test_knowledge_transfer.py +0 -155
  64. wcgw-2.8.10/tests/client/tools/test_large_blocks.py +0 -37
  65. wcgw-2.8.10/tests/client/tools/test_prompt_update.py +0 -48
  66. wcgw-2.8.10/tests/client/tools/test_render_terminal.py +0 -25
  67. wcgw-2.8.10/tests/client/tools/test_terminal_output.py +0 -187
  68. wcgw-2.8.10/tests/client/tools/test_terminal_output_full.py +0 -114
  69. wcgw-2.8.10/tests/client/tools/test_terminal_output_incremental.py +0 -46
  70. wcgw-2.8.10/tests/client/tools/test_terminal_output_raw.py +0 -57
  71. wcgw-2.8.10/tests/client/tools/test_terminal_sequence.py +0 -50
  72. wcgw-2.8.10/tests/client/tools/test_timeout_handling.py +0 -100
  73. wcgw-2.8.10/tests/client/tools/test_timeout_state.py +0 -30
  74. wcgw-2.8.10/tests/client/tools/test_user_interaction.py +0 -132
  75. wcgw-2.8.10/tests/client/tools/test_write_file.py +0 -118
  76. wcgw-2.8.10/tests/conftest.py +0 -12
  77. wcgw-2.8.10/tests/test_anthropic_client.py +0 -84
  78. wcgw-2.8.10/tests/test_basic.py +0 -69
  79. wcgw-2.8.10/tests/test_common.py +0 -111
  80. wcgw-2.8.10/tests/test_computer_use.py +0 -142
  81. wcgw-2.8.10/tests/test_computer_use_base.py +0 -123
  82. wcgw-2.8.10/tests/test_computer_use_shell.py +0 -120
  83. wcgw-2.8.10/tests/test_initialize.py +0 -325
  84. wcgw-2.8.10/tests/test_sys_utils.py +0 -102
  85. wcgw-2.8.10/tests/test_tools.py +0 -39
  86. {wcgw-2.8.10 → wcgw-3.0.1rc1}/.github/workflows/python-publish.yml +0 -0
  87. {wcgw-2.8.10 → wcgw-3.0.1rc1}/.gitignore +0 -0
  88. {wcgw-2.8.10 → wcgw-3.0.1rc1}/.gitmodules +0 -0
  89. {wcgw-2.8.10 → wcgw-3.0.1rc1}/.python-version +0 -0
  90. {wcgw-2.8.10 → wcgw-3.0.1rc1}/.vscode/settings.json +0 -0
  91. {wcgw-2.8.10 → wcgw-3.0.1rc1}/Dockerfile +0 -0
  92. {wcgw-2.8.10 → wcgw-3.0.1rc1}/LICENSE +0 -0
  93. {wcgw-2.8.10 → wcgw-3.0.1rc1}/README.md +0 -0
  94. {wcgw-2.8.10 → wcgw-3.0.1rc1}/openai.md +0 -0
  95. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.git +0 -0
  96. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  97. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  98. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/workflows/main-checks.yml +0 -0
  99. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/workflows/publish-pypi.yml +0 -0
  100. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/workflows/pull-request-checks.yml +0 -0
  101. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.github/workflows/shared.yml +0 -0
  102. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.gitignore +0 -0
  103. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/.python-version +0 -0
  104. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/CODE_OF_CONDUCT.md +0 -0
  105. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/CONTRIBUTING.md +0 -0
  106. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/LICENSE +0 -0
  107. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/README.md +0 -0
  108. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/RELEASE.md +0 -0
  109. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/SECURITY.md +0 -0
  110. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/README.md +0 -0
  111. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/.python-version +0 -0
  112. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/README.md +0 -0
  113. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/mcp_simple_prompt/__init__.py +0 -0
  114. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/mcp_simple_prompt/__main__.py +0 -0
  115. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/mcp_simple_prompt/server.py +0 -0
  116. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-prompt/pyproject.toml +0 -0
  117. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/.python-version +0 -0
  118. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/README.md +0 -0
  119. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/mcp_simple_resource/__init__.py +0 -0
  120. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/mcp_simple_resource/__main__.py +0 -0
  121. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/mcp_simple_resource/server.py +0 -0
  122. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-resource/pyproject.toml +0 -0
  123. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/.python-version +0 -0
  124. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/README.md +0 -0
  125. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/mcp_simple_tool/__init__.py +0 -0
  126. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/mcp_simple_tool/__main__.py +0 -0
  127. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/mcp_simple_tool/server.py +0 -0
  128. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/examples/servers/simple-tool/pyproject.toml +0 -0
  129. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/pyproject.toml +0 -0
  130. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/__init__.py +0 -0
  131. {wcgw-2.8.10/src → wcgw-3.0.1rc1/src/mcp_wcgw_fork/src/mcp_wcgw/client}/__init__.py +0 -0
  132. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/client/__main__.py +0 -0
  133. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/client/session.py +0 -0
  134. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/client/sse.py +0 -0
  135. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/client/stdio.py +0 -0
  136. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/py.typed +0 -0
  137. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/__init__.py +0 -0
  138. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/__main__.py +0 -0
  139. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/models.py +0 -0
  140. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/session.py +0 -0
  141. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/sse.py +0 -0
  142. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/stdio.py +0 -0
  143. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/server/websocket.py +0 -0
  144. {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
  145. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/context.py +0 -0
  146. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/exceptions.py +0 -0
  147. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/memory.py +0 -0
  148. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/progress.py +0 -0
  149. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/session.py +0 -0
  150. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/version.py +0 -0
  151. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/src/mcp_wcgw/types.py +0 -0
  152. {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
  153. {wcgw-2.8.10/src/mcp_wcgw_fork/tests → wcgw-3.0.1rc1/src/mcp_wcgw_fork/tests/client}/__init__.py +0 -0
  154. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/client/test_session.py +0 -0
  155. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/client/test_stdio.py +0 -0
  156. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/conftest.py +0 -0
  157. {wcgw-2.8.10/src/mcp_wcgw_fork/tests/client → wcgw-3.0.1rc1/src/mcp_wcgw_fork/tests/server}/__init__.py +0 -0
  158. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/server/test_session.py +0 -0
  159. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/server/test_stdio.py +0 -0
  160. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/shared/test_memory.py +0 -0
  161. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/tests/test_types.py +0 -0
  162. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/mcp_wcgw_fork/uv.lock +0 -0
  163. {wcgw-2.8.10/src/mcp_wcgw_fork/tests/server → wcgw-3.0.1rc1/src/wcgw/client}/__init__.py +0 -0
  164. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/common.py +0 -0
  165. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/diff-instructions.txt +0 -0
  166. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/file_ops/diff_edit.py +0 -0
  167. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/file_ops/search_replace.py +0 -0
  168. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/memory.py +0 -0
  169. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/path_prob.py +0 -0
  170. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/paths_model.vocab +0 -0
  171. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/paths_tokens.model +0 -0
  172. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/client/repo_ops/repo_context.py +0 -0
  173. /wcgw-2.8.10/src/wcgw/client/__init__.py → /wcgw-3.0.1rc1/src/wcgw/py.typed +0 -0
  174. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw/relay/static/privacy.txt +0 -0
  175. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw_cli/__init__.py +0 -0
  176. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw_cli/__main__.py +0 -0
  177. {wcgw-2.8.10 → wcgw-3.0.1rc1}/src/wcgw_cli/openai_utils.py +0 -0
  178. {wcgw-2.8.10 → wcgw-3.0.1rc1}/static/claude-ss.jpg +0 -0
  179. {wcgw-2.8.10 → wcgw-3.0.1rc1}/static/computer-use.jpg +0 -0
  180. {wcgw-2.8.10 → wcgw-3.0.1rc1}/static/example.jpg +0 -0
  181. {wcgw-2.8.10 → wcgw-3.0.1rc1}/static/rocket-icon.png +0 -0
  182. {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:skip-covered
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()
@@ -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:
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wcgw
3
- Version: 2.8.10
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: <3.13,>=3.11
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://04df-103-212-152-58.ngrok-free.app"
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/reset_shell": {
93
+ "/v1/reset_wcgw": {
94
94
  "post": {
95
95
  "x-openai-isConsequential": false,
96
- "summary": "Reset Shell",
97
- "operationId": "reset_shell_v1_reset_shell_post",
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/ResetShellWithUUID"
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 Shell V1 Reset Shell Post"
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
- "CommandWithUUID": {
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
- "command",
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
- "ResetShellWithUUID": {
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": "ResetShellWithUUID"
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
- - In order to change the mode later, call this tool again but be sure to not provide any other argument like task_id_to_resume unnecessarily.
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 `BashInteraction`
42
- - Interact with running program using this tool
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 = "2.8.10"
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, <3.13"
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:skip-covered --cov-report=html"
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.tools import run as listen
2
+ from .relay.client import run as listen