wcgw 2.8.2__tar.gz → 2.8.4__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 (157) hide show
  1. {wcgw-2.8.2 → wcgw-2.8.4}/PKG-INFO +2 -2
  2. {wcgw-2.8.2 → wcgw-2.8.4}/pyproject.toml +2 -2
  3. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/modes.py +1 -1
  4. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/tools.py +4 -1
  5. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/test_tools_extended.py +1 -1
  6. {wcgw-2.8.2 → wcgw-2.8.4}/uv.lock +168 -170
  7. {wcgw-2.8.2 → wcgw-2.8.4}/.github/workflows/python-publish.yml +0 -0
  8. {wcgw-2.8.2 → wcgw-2.8.4}/.github/workflows/python-tests.yml +0 -0
  9. {wcgw-2.8.2 → wcgw-2.8.4}/.github/workflows/python-types.yml +0 -0
  10. {wcgw-2.8.2 → wcgw-2.8.4}/.gitignore +0 -0
  11. {wcgw-2.8.2 → wcgw-2.8.4}/.gitmodules +0 -0
  12. {wcgw-2.8.2 → wcgw-2.8.4}/.python-version +0 -0
  13. {wcgw-2.8.2 → wcgw-2.8.4}/.vscode/settings.json +0 -0
  14. {wcgw-2.8.2 → wcgw-2.8.4}/LICENSE +0 -0
  15. {wcgw-2.8.2 → wcgw-2.8.4}/README.md +0 -0
  16. {wcgw-2.8.2 → wcgw-2.8.4}/gpt_action_json_schema.json +0 -0
  17. {wcgw-2.8.2 → wcgw-2.8.4}/gpt_instructions.txt +0 -0
  18. {wcgw-2.8.2 → wcgw-2.8.4}/openai.md +0 -0
  19. {wcgw-2.8.2 → wcgw-2.8.4}/src/__init__.py +0 -0
  20. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/.git +0 -0
  21. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  22. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  23. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/.github/workflows/main-checks.yml +0 -0
  24. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/.github/workflows/publish-pypi.yml +0 -0
  25. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/.github/workflows/pull-request-checks.yml +0 -0
  26. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/.github/workflows/shared.yml +0 -0
  27. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/.gitignore +0 -0
  28. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/.python-version +0 -0
  29. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/CODE_OF_CONDUCT.md +0 -0
  30. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/CONTRIBUTING.md +0 -0
  31. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/LICENSE +0 -0
  32. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/README.md +0 -0
  33. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/RELEASE.md +0 -0
  34. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/SECURITY.md +0 -0
  35. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/README.md +0 -0
  36. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-prompt/.python-version +0 -0
  37. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-prompt/README.md +0 -0
  38. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-prompt/mcp_simple_prompt/__init__.py +0 -0
  39. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-prompt/mcp_simple_prompt/__main__.py +0 -0
  40. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-prompt/mcp_simple_prompt/server.py +0 -0
  41. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-prompt/pyproject.toml +0 -0
  42. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-resource/.python-version +0 -0
  43. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-resource/README.md +0 -0
  44. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-resource/mcp_simple_resource/__init__.py +0 -0
  45. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-resource/mcp_simple_resource/__main__.py +0 -0
  46. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-resource/mcp_simple_resource/server.py +0 -0
  47. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-resource/pyproject.toml +0 -0
  48. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-tool/.python-version +0 -0
  49. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-tool/README.md +0 -0
  50. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-tool/mcp_simple_tool/__init__.py +0 -0
  51. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-tool/mcp_simple_tool/__main__.py +0 -0
  52. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-tool/mcp_simple_tool/server.py +0 -0
  53. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/examples/servers/simple-tool/pyproject.toml +0 -0
  54. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/pyproject.toml +0 -0
  55. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/__init__.py +0 -0
  56. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/client/__init__.py +0 -0
  57. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/client/__main__.py +0 -0
  58. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/client/session.py +0 -0
  59. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/client/sse.py +0 -0
  60. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/client/stdio.py +0 -0
  61. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/py.typed +0 -0
  62. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/server/__init__.py +0 -0
  63. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/server/__main__.py +0 -0
  64. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/server/models.py +0 -0
  65. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/server/session.py +0 -0
  66. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/server/sse.py +0 -0
  67. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/server/stdio.py +0 -0
  68. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/server/websocket.py +0 -0
  69. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/__init__.py +0 -0
  70. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/context.py +0 -0
  71. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/exceptions.py +0 -0
  72. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/memory.py +0 -0
  73. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/progress.py +0 -0
  74. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/session.py +0 -0
  75. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/shared/version.py +0 -0
  76. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/src/mcp_wcgw/types.py +0 -0
  77. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/__init__.py +0 -0
  78. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/client/__init__.py +0 -0
  79. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/client/test_session.py +0 -0
  80. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/client/test_stdio.py +0 -0
  81. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/conftest.py +0 -0
  82. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/server/__init__.py +0 -0
  83. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/server/test_session.py +0 -0
  84. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/server/test_stdio.py +0 -0
  85. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/shared/test_memory.py +0 -0
  86. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/tests/test_types.py +0 -0
  87. {wcgw-2.8.2 → wcgw-2.8.4}/src/mcp_wcgw_fork/uv.lock +0 -0
  88. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/__init__.py +0 -0
  89. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/__init__.py +0 -0
  90. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/__main__.py +0 -0
  91. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/anthropic_client.py +0 -0
  92. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/cli.py +0 -0
  93. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/common.py +0 -0
  94. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/computer_use.py +0 -0
  95. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/diff-instructions.txt +0 -0
  96. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/file_ops/diff_edit.py +0 -0
  97. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/file_ops/search_replace.py +0 -0
  98. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/mcp_server/Readme.md +0 -0
  99. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/mcp_server/__init__.py +0 -0
  100. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/mcp_server/server.py +0 -0
  101. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/memory.py +0 -0
  102. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/openai_client.py +0 -0
  103. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/openai_utils.py +0 -0
  104. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/repo_ops/display_tree.py +0 -0
  105. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/repo_ops/path_prob.py +0 -0
  106. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/repo_ops/paths_model.vocab +0 -0
  107. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/repo_ops/paths_tokens.model +0 -0
  108. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/repo_ops/repo_context.py +0 -0
  109. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/client/sys_utils.py +0 -0
  110. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/relay/serve.py +0 -0
  111. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/relay/static/privacy.txt +0 -0
  112. {wcgw-2.8.2 → wcgw-2.8.4}/src/wcgw/types_.py +0 -0
  113. {wcgw-2.8.2 → wcgw-2.8.4}/static/claude-ss.jpg +0 -0
  114. {wcgw-2.8.2 → wcgw-2.8.4}/static/computer-use.jpg +0 -0
  115. {wcgw-2.8.2 → wcgw-2.8.4}/static/example.jpg +0 -0
  116. {wcgw-2.8.2 → wcgw-2.8.4}/static/rocket-icon.png +0 -0
  117. {wcgw-2.8.2 → wcgw-2.8.4}/static/ss1.png +0 -0
  118. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/file_ops/test_diff_edit.py +0 -0
  119. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/file_ops/test_search_replace.py +0 -0
  120. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/repo_ops/__init__.py +0 -0
  121. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/repo_ops/test_display_tree.py +0 -0
  122. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/repo_ops/test_display_tree_simple.py +0 -0
  123. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/repo_ops/test_path_prob.py +0 -0
  124. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/repo_ops/test_repo_context.py +0 -0
  125. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/test_anthropic_client_utils.py +0 -0
  126. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/test_memory.py +0 -0
  127. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/test_openai_utils.py +0 -0
  128. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/test_tools_basic.py +0 -0
  129. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/test_tools_file_ops.py +0 -0
  130. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/test_tools_files.py +0 -0
  131. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/test_tools_shell.py +0 -0
  132. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/test_tools_validation.py +0 -0
  133. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/__init__.py +0 -0
  134. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_command_validation.py +0 -0
  135. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_docker_operations.py +0 -0
  136. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_error_handling.py +0 -0
  137. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_execute_bash.py +0 -0
  138. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_file_operations.py +0 -0
  139. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_files/test1.py +0 -0
  140. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_files/test2.py +0 -0
  141. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_files/test_file.py +0 -0
  142. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_is_int.py +0 -0
  143. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_knowledge_transfer.py +0 -0
  144. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_large_blocks.py +0 -0
  145. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_render_terminal.py +0 -0
  146. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_terminal_output.py +0 -0
  147. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_user_interaction.py +0 -0
  148. {wcgw-2.8.2 → wcgw-2.8.4}/tests/client/tools/test_write_file.py +0 -0
  149. {wcgw-2.8.2 → wcgw-2.8.4}/tests/conftest.py +0 -0
  150. {wcgw-2.8.2 → wcgw-2.8.4}/tests/test_anthropic_client.py +0 -0
  151. {wcgw-2.8.2 → wcgw-2.8.4}/tests/test_basic.py +0 -0
  152. {wcgw-2.8.2 → wcgw-2.8.4}/tests/test_common.py +0 -0
  153. {wcgw-2.8.2 → wcgw-2.8.4}/tests/test_computer_use.py +0 -0
  154. {wcgw-2.8.2 → wcgw-2.8.4}/tests/test_computer_use_base.py +0 -0
  155. {wcgw-2.8.2 → wcgw-2.8.4}/tests/test_computer_use_shell.py +0 -0
  156. {wcgw-2.8.2 → wcgw-2.8.4}/tests/test_sys_utils.py +0 -0
  157. {wcgw-2.8.2 → wcgw-2.8.4}/tests/test_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wcgw
3
- Version: 2.8.2
3
+ Version: 2.8.4
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>
@@ -18,7 +18,7 @@ Requires-Dist: python-dotenv>=1.0.1
18
18
  Requires-Dist: rich>=13.8.1
19
19
  Requires-Dist: semantic-version>=2.10.0
20
20
  Requires-Dist: shell>=1.0.1
21
- Requires-Dist: syntax-checker==0.2.10
21
+ 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
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  authors = [{ name = "Aman Rusia", email = "gapypi@arcfu.com" }]
3
3
  name = "wcgw"
4
- version = "2.8.2"
4
+ version = "2.8.4"
5
5
  description = "Shell and coding agent on claude and chatgpt"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.11, <3.13"
@@ -22,9 +22,9 @@ dependencies = [
22
22
  "pydantic>=2.9.2",
23
23
  "semantic-version>=2.10.0",
24
24
  "anthropic>=0.39.0",
25
- "syntax-checker==0.2.10",
26
25
  "tokenizers>=0.21.0",
27
26
  "pygit2>=1.16.0",
27
+ "syntax-checker>=0.3.0",
28
28
  ]
29
29
 
30
30
  [project.urls]
@@ -203,7 +203,7 @@ Format the `description` field using Markdown with the following sections.
203
203
  - "# Objective" section containing project and task objective.
204
204
  - "# All user instructions" section should be provided containing all instructions user shared in the conversation.
205
205
  - "# Current status of the task" should be provided containing only what is already achieved, not what's remaining.
206
- - "# All issues with snippets" section containing snippets of error, traceback, file snippets, commands, etc. But no comments or solutions.
206
+ - "# Pending issues with snippets" section containing snippets of pending errors, traceback, file snippets, commands, etc. But no comments or solutions.
207
207
  - Be very verbose in the all issues with snippets section providing as much error context as possible.
208
208
  - "# Build and development instructions" section containing instructions to build or run project or run tests, or envrionment related information. Only include what's known. Leave empty if unknown.
209
209
  - Any other relevant sections following the above.
@@ -151,7 +151,9 @@ def start_shell(is_restricted_mode: bool, initial_dir: str) -> pexpect.spawn: #
151
151
  timeout=TIMEOUT,
152
152
  cwd=initial_dir,
153
153
  )
154
- shell.sendline(f"export PROMPT_COMMAND= PS1={PROMPT}") # Unset prompt command to avoid interfering
154
+ shell.sendline(
155
+ f"export PROMPT_COMMAND= PS1={PROMPT}"
156
+ ) # Unset prompt command to avoid interfering
155
157
  shell.expect(PROMPT, timeout=TIMEOUT)
156
158
  except Exception as e:
157
159
  console.print(traceback.format_exc())
@@ -440,6 +442,7 @@ def initialize(
440
442
  if os.path.abspath(any_workspace_path):
441
443
  os.makedirs(any_workspace_path, exist_ok=True)
442
444
  repo_context = f"\nInfo: Workspace path {any_workspace_path} did not exist. I've created it for you.\n"
445
+ folder_to_start = Path(any_workspace_path)
443
446
  else:
444
447
  repo_context = (
445
448
  f"\nInfo: Workspace path {any_workspace_path} does not exist."
@@ -229,7 +229,7 @@ class TestToolsExtended(unittest.TestCase):
229
229
 
230
230
  # Verify shell initialization
231
231
  self.assertEqual(mock_shell.expect.call_count, 4) # 4 setup commands
232
- mock_shell.sendline.assert_any_call(f"export PS1={PROMPT}")
232
+ mock_shell.sendline.assert_any_call(f"export PROMPT_COMMAND= PS1={PROMPT}")
233
233
  mock_shell.sendline.assert_any_call("stty -icanon -echo")
234
234
  mock_shell.sendline.assert_any_call("set +o pipefail")
235
235
  mock_shell.sendline.assert_any_call("export GIT_PAGER=cat PAGER=cat")