wcgw 2.4.2__tar.gz → 2.4.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of wcgw might be problematic. Click here for more details.

Files changed (108) hide show
  1. {wcgw-2.4.2 → wcgw-2.4.3}/PKG-INFO +1 -1
  2. {wcgw-2.4.2 → wcgw-2.4.3}/pyproject.toml +1 -1
  3. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/tools.py +15 -4
  4. {wcgw-2.4.2 → wcgw-2.4.3}/uv.lock +1 -1
  5. {wcgw-2.4.2 → wcgw-2.4.3}/.github/workflows/python-publish.yml +0 -0
  6. {wcgw-2.4.2 → wcgw-2.4.3}/.github/workflows/python-tests.yml +0 -0
  7. {wcgw-2.4.2 → wcgw-2.4.3}/.github/workflows/python-types.yml +0 -0
  8. {wcgw-2.4.2 → wcgw-2.4.3}/.gitignore +0 -0
  9. {wcgw-2.4.2 → wcgw-2.4.3}/.gitmodules +0 -0
  10. {wcgw-2.4.2 → wcgw-2.4.3}/.python-version +0 -0
  11. {wcgw-2.4.2 → wcgw-2.4.3}/.vscode/settings.json +0 -0
  12. {wcgw-2.4.2 → wcgw-2.4.3}/README.md +0 -0
  13. {wcgw-2.4.2 → wcgw-2.4.3}/gpt_action_json_schema.json +0 -0
  14. {wcgw-2.4.2 → wcgw-2.4.3}/gpt_instructions.txt +0 -0
  15. {wcgw-2.4.2 → wcgw-2.4.3}/openai.md +0 -0
  16. {wcgw-2.4.2 → wcgw-2.4.3}/src/__init__.py +0 -0
  17. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/.git +0 -0
  18. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  20. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/.github/workflows/main-checks.yml +0 -0
  21. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/.github/workflows/publish-pypi.yml +0 -0
  22. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/.github/workflows/pull-request-checks.yml +0 -0
  23. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/.github/workflows/shared.yml +0 -0
  24. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/.gitignore +0 -0
  25. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/.python-version +0 -0
  26. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/CODE_OF_CONDUCT.md +0 -0
  27. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/CONTRIBUTING.md +0 -0
  28. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/LICENSE +0 -0
  29. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/README.md +0 -0
  30. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/RELEASE.md +0 -0
  31. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/SECURITY.md +0 -0
  32. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/README.md +0 -0
  33. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-prompt/.python-version +0 -0
  34. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-prompt/README.md +0 -0
  35. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-prompt/mcp_simple_prompt/__init__.py +0 -0
  36. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-prompt/mcp_simple_prompt/__main__.py +0 -0
  37. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-prompt/mcp_simple_prompt/server.py +0 -0
  38. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-prompt/pyproject.toml +0 -0
  39. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-resource/.python-version +0 -0
  40. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-resource/README.md +0 -0
  41. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-resource/mcp_simple_resource/__init__.py +0 -0
  42. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-resource/mcp_simple_resource/__main__.py +0 -0
  43. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-resource/mcp_simple_resource/server.py +0 -0
  44. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-resource/pyproject.toml +0 -0
  45. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-tool/.python-version +0 -0
  46. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-tool/README.md +0 -0
  47. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-tool/mcp_simple_tool/__init__.py +0 -0
  48. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-tool/mcp_simple_tool/__main__.py +0 -0
  49. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-tool/mcp_simple_tool/server.py +0 -0
  50. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/examples/servers/simple-tool/pyproject.toml +0 -0
  51. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/pyproject.toml +0 -0
  52. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/__init__.py +0 -0
  53. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/client/__init__.py +0 -0
  54. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/client/__main__.py +0 -0
  55. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/client/session.py +0 -0
  56. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/client/sse.py +0 -0
  57. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/client/stdio.py +0 -0
  58. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/py.typed +0 -0
  59. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/server/__init__.py +0 -0
  60. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/server/__main__.py +0 -0
  61. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/server/models.py +0 -0
  62. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/server/session.py +0 -0
  63. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/server/sse.py +0 -0
  64. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/server/stdio.py +0 -0
  65. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/server/websocket.py +0 -0
  66. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/shared/__init__.py +0 -0
  67. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/shared/context.py +0 -0
  68. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/shared/exceptions.py +0 -0
  69. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/shared/memory.py +0 -0
  70. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/shared/progress.py +0 -0
  71. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/shared/session.py +0 -0
  72. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/shared/version.py +0 -0
  73. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/src/mcp_wcgw/types.py +0 -0
  74. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/__init__.py +0 -0
  75. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/client/__init__.py +0 -0
  76. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/client/test_session.py +0 -0
  77. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/client/test_stdio.py +0 -0
  78. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/conftest.py +0 -0
  79. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/server/__init__.py +0 -0
  80. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/server/test_session.py +0 -0
  81. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/server/test_stdio.py +0 -0
  82. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/shared/test_memory.py +0 -0
  83. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/tests/test_types.py +0 -0
  84. {wcgw-2.4.2 → wcgw-2.4.3}/src/mcp_wcgw/uv.lock +0 -0
  85. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/__init__.py +0 -0
  86. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/__init__.py +0 -0
  87. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/__main__.py +0 -0
  88. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/anthropic_client.py +0 -0
  89. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/cli.py +0 -0
  90. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/common.py +0 -0
  91. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/computer_use.py +0 -0
  92. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/diff-instructions.txt +0 -0
  93. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/mcp_server/Readme.md +0 -0
  94. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/mcp_server/__init__.py +0 -0
  95. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/mcp_server/server.py +0 -0
  96. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/openai_client.py +0 -0
  97. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/openai_utils.py +0 -0
  98. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/client/sys_utils.py +0 -0
  99. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/relay/serve.py +0 -0
  100. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/relay/static/privacy.txt +0 -0
  101. {wcgw-2.4.2 → wcgw-2.4.3}/src/wcgw/types_.py +0 -0
  102. {wcgw-2.4.2 → wcgw-2.4.3}/static/claude-ss.jpg +0 -0
  103. {wcgw-2.4.2 → wcgw-2.4.3}/static/computer-use.jpg +0 -0
  104. {wcgw-2.4.2 → wcgw-2.4.3}/static/example.jpg +0 -0
  105. {wcgw-2.4.2 → wcgw-2.4.3}/static/rocket-icon.png +0 -0
  106. {wcgw-2.4.2 → wcgw-2.4.3}/static/ss1.png +0 -0
  107. {wcgw-2.4.2 → wcgw-2.4.3}/tests/test_basic.py +0 -0
  108. {wcgw-2.4.2 → wcgw-2.4.3}/tests/test_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wcgw
3
- Version: 2.4.2
3
+ Version: 2.4.3
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>
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  authors = [{ name = "Aman Rusia", email = "gapypi@arcfu.com" }]
3
3
  name = "wcgw"
4
- version = "2.4.2"
4
+ version = "2.4.3"
5
5
  description = "Shell and coding agent on claude and chatgpt"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.11, <3.13"
@@ -397,6 +397,12 @@ def _incremental_text(text: str, last_pending_output: str) -> str:
397
397
  return rstrip(rendered)
398
398
 
399
399
 
400
+ def is_status_check(arg: BashInteraction | BashCommand) -> bool:
401
+ return isinstance(arg, BashInteraction) and (
402
+ arg.send_specials == ["Enter"] or arg.send_ascii == [10]
403
+ )
404
+
405
+
400
406
  def execute_bash(
401
407
  enc: tiktoken.Encoding,
402
408
  bash_arg: BashCommand | BashInteraction,
@@ -428,7 +434,9 @@ def execute_bash(
428
434
  "Command should not contain newline character in middle. Run only one command at a time."
429
435
  )
430
436
 
431
- BASH_STATE.shell.sendline(command)
437
+ for i in range(0, len(command), 128):
438
+ BASH_STATE.shell.send(command[i : i + 128])
439
+ BASH_STATE.shell.send(BASH_STATE.shell.linesep)
432
440
 
433
441
  else:
434
442
  if (
@@ -491,7 +499,9 @@ def execute_bash(
491
499
  0,
492
500
  )
493
501
  console.print(f"Interact text: {bash_arg.send_text}")
494
- BASH_STATE.shell.sendline(bash_arg.send_text)
502
+ for i in range(0, len(bash_arg.send_text), 128):
503
+ BASH_STATE.shell.send(bash_arg.send_text[i : i + 128])
504
+ BASH_STATE.shell.send(BASH_STATE.shell.linesep)
495
505
 
496
506
  except KeyboardInterrupt:
497
507
  BASH_STATE.shell.sendintr()
@@ -505,13 +515,14 @@ def execute_bash(
505
515
  incremental_text = _incremental_text(text, BASH_STATE.pending_output)
506
516
 
507
517
  second_wait_success = False
508
- if incremental_text and isinstance(bash_arg, BashInteraction):
518
+ if is_status_check(bash_arg):
509
519
  # There's some text in BashInteraction mode wait for TIMEOUT_WHILE_OUTPUT
510
520
  remaining = TIMEOUT_WHILE_OUTPUT - wait
511
521
  patience = OUTPUT_WAIT_PATIENCE
522
+ if not incremental_text:
523
+ patience -= 1
512
524
  itext = incremental_text
513
525
  while remaining > 0 and patience > 0:
514
- print(remaining, TIMEOUT_WHILE_OUTPUT)
515
526
  index = BASH_STATE.shell.expect([PROMPT, pexpect.TIMEOUT], timeout=wait)
516
527
  if index == 0:
517
528
  second_wait_success = True
@@ -830,7 +830,7 @@ wheels = [
830
830
 
831
831
  [[package]]
832
832
  name = "wcgw"
833
- version = "2.4.2"
833
+ version = "2.4.3"
834
834
  source = { editable = "." }
835
835
  dependencies = [
836
836
  { name = "anthropic" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes