wcgw 2.6.1__tar.gz → 2.6.2__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 (129) hide show
  1. {wcgw-2.6.1 → wcgw-2.6.2}/PKG-INFO +2 -1
  2. {wcgw-2.6.1 → wcgw-2.6.2}/README.md +1 -0
  3. {wcgw-2.6.1 → wcgw-2.6.2}/gpt_action_json_schema.json +6 -18
  4. {wcgw-2.6.1 → wcgw-2.6.2}/pyproject.toml +1 -1
  5. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/tools.py +2 -2
  6. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/types_.py +9 -8
  7. {wcgw-2.6.1 → wcgw-2.6.2}/tests/client/test_tools_extended.py +176 -215
  8. {wcgw-2.6.1 → wcgw-2.6.2}/uv.lock +1 -1
  9. {wcgw-2.6.1 → wcgw-2.6.2}/.github/workflows/python-publish.yml +0 -0
  10. {wcgw-2.6.1 → wcgw-2.6.2}/.github/workflows/python-tests.yml +0 -0
  11. {wcgw-2.6.1 → wcgw-2.6.2}/.github/workflows/python-types.yml +0 -0
  12. {wcgw-2.6.1 → wcgw-2.6.2}/.gitignore +0 -0
  13. {wcgw-2.6.1 → wcgw-2.6.2}/.gitmodules +0 -0
  14. {wcgw-2.6.1 → wcgw-2.6.2}/.python-version +0 -0
  15. {wcgw-2.6.1 → wcgw-2.6.2}/.vscode/settings.json +0 -0
  16. {wcgw-2.6.1 → wcgw-2.6.2}/LICENSE +0 -0
  17. {wcgw-2.6.1 → wcgw-2.6.2}/gpt_instructions.txt +0 -0
  18. {wcgw-2.6.1 → wcgw-2.6.2}/openai.md +0 -0
  19. {wcgw-2.6.1 → wcgw-2.6.2}/src/__init__.py +0 -0
  20. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/.git +0 -0
  21. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  22. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  23. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/.github/workflows/main-checks.yml +0 -0
  24. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/.github/workflows/publish-pypi.yml +0 -0
  25. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/.github/workflows/pull-request-checks.yml +0 -0
  26. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/.github/workflows/shared.yml +0 -0
  27. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/.gitignore +0 -0
  28. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/.python-version +0 -0
  29. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/CODE_OF_CONDUCT.md +0 -0
  30. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/CONTRIBUTING.md +0 -0
  31. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/LICENSE +0 -0
  32. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/README.md +0 -0
  33. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/RELEASE.md +0 -0
  34. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/SECURITY.md +0 -0
  35. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/README.md +0 -0
  36. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-prompt/.python-version +0 -0
  37. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-prompt/README.md +0 -0
  38. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-prompt/mcp_simple_prompt/__init__.py +0 -0
  39. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-prompt/mcp_simple_prompt/__main__.py +0 -0
  40. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-prompt/mcp_simple_prompt/server.py +0 -0
  41. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-prompt/pyproject.toml +0 -0
  42. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-resource/.python-version +0 -0
  43. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-resource/README.md +0 -0
  44. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-resource/mcp_simple_resource/__init__.py +0 -0
  45. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-resource/mcp_simple_resource/__main__.py +0 -0
  46. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-resource/mcp_simple_resource/server.py +0 -0
  47. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-resource/pyproject.toml +0 -0
  48. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-tool/.python-version +0 -0
  49. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-tool/README.md +0 -0
  50. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-tool/mcp_simple_tool/__init__.py +0 -0
  51. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-tool/mcp_simple_tool/__main__.py +0 -0
  52. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-tool/mcp_simple_tool/server.py +0 -0
  53. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/examples/servers/simple-tool/pyproject.toml +0 -0
  54. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/pyproject.toml +0 -0
  55. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/__init__.py +0 -0
  56. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/client/__init__.py +0 -0
  57. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/client/__main__.py +0 -0
  58. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/client/session.py +0 -0
  59. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/client/sse.py +0 -0
  60. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/client/stdio.py +0 -0
  61. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/py.typed +0 -0
  62. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/server/__init__.py +0 -0
  63. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/server/__main__.py +0 -0
  64. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/server/models.py +0 -0
  65. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/server/session.py +0 -0
  66. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/server/sse.py +0 -0
  67. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/server/stdio.py +0 -0
  68. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/server/websocket.py +0 -0
  69. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/shared/__init__.py +0 -0
  70. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/shared/context.py +0 -0
  71. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/shared/exceptions.py +0 -0
  72. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/shared/memory.py +0 -0
  73. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/shared/progress.py +0 -0
  74. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/shared/session.py +0 -0
  75. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/shared/version.py +0 -0
  76. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/src/mcp_wcgw/types.py +0 -0
  77. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/__init__.py +0 -0
  78. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/client/__init__.py +0 -0
  79. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/client/test_session.py +0 -0
  80. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/client/test_stdio.py +0 -0
  81. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/conftest.py +0 -0
  82. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/server/__init__.py +0 -0
  83. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/server/test_session.py +0 -0
  84. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/server/test_stdio.py +0 -0
  85. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/shared/test_memory.py +0 -0
  86. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/tests/test_types.py +0 -0
  87. {wcgw-2.6.1 → wcgw-2.6.2}/src/mcp_wcgw/uv.lock +0 -0
  88. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/__init__.py +0 -0
  89. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/__init__.py +0 -0
  90. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/__main__.py +0 -0
  91. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/anthropic_client.py +0 -0
  92. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/cli.py +0 -0
  93. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/common.py +0 -0
  94. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/computer_use.py +0 -0
  95. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/diff-instructions.txt +0 -0
  96. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/mcp_server/Readme.md +0 -0
  97. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/mcp_server/__init__.py +0 -0
  98. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/mcp_server/server.py +0 -0
  99. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/openai_client.py +0 -0
  100. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/openai_utils.py +0 -0
  101. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/repo_ops/display_tree.py +0 -0
  102. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/repo_ops/path_prob.py +0 -0
  103. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/repo_ops/paths_model.vocab +0 -0
  104. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/repo_ops/paths_tokens.model +0 -0
  105. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/repo_ops/repo_context.py +0 -0
  106. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/client/sys_utils.py +0 -0
  107. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/relay/serve.py +0 -0
  108. {wcgw-2.6.1 → wcgw-2.6.2}/src/wcgw/relay/static/privacy.txt +0 -0
  109. {wcgw-2.6.1 → wcgw-2.6.2}/static/claude-ss.jpg +0 -0
  110. {wcgw-2.6.1 → wcgw-2.6.2}/static/computer-use.jpg +0 -0
  111. {wcgw-2.6.1 → wcgw-2.6.2}/static/example.jpg +0 -0
  112. {wcgw-2.6.1 → wcgw-2.6.2}/static/rocket-icon.png +0 -0
  113. {wcgw-2.6.1 → wcgw-2.6.2}/static/ss1.png +0 -0
  114. {wcgw-2.6.1 → wcgw-2.6.2}/tests/client/repo_ops/__init__.py +0 -0
  115. {wcgw-2.6.1 → wcgw-2.6.2}/tests/client/repo_ops/test_display_tree.py +0 -0
  116. {wcgw-2.6.1 → wcgw-2.6.2}/tests/client/repo_ops/test_display_tree_simple.py +0 -0
  117. {wcgw-2.6.1 → wcgw-2.6.2}/tests/client/repo_ops/test_path_prob.py +0 -0
  118. {wcgw-2.6.1 → wcgw-2.6.2}/tests/client/repo_ops/test_repo_context.py +0 -0
  119. {wcgw-2.6.1 → wcgw-2.6.2}/tests/client/test_anthropic_client_utils.py +0 -0
  120. {wcgw-2.6.1 → wcgw-2.6.2}/tests/client/test_openai_utils.py +0 -0
  121. {wcgw-2.6.1 → wcgw-2.6.2}/tests/client/test_tools_basic.py +0 -0
  122. {wcgw-2.6.1 → wcgw-2.6.2}/tests/test_anthropic_client.py +0 -0
  123. {wcgw-2.6.1 → wcgw-2.6.2}/tests/test_basic.py +0 -0
  124. {wcgw-2.6.1 → wcgw-2.6.2}/tests/test_common.py +0 -0
  125. {wcgw-2.6.1 → wcgw-2.6.2}/tests/test_computer_use.py +0 -0
  126. {wcgw-2.6.1 → wcgw-2.6.2}/tests/test_computer_use_base.py +0 -0
  127. {wcgw-2.6.1 → wcgw-2.6.2}/tests/test_computer_use_shell.py +0 -0
  128. {wcgw-2.6.1 → wcgw-2.6.2}/tests/test_sys_utils.py +0 -0
  129. {wcgw-2.6.1 → wcgw-2.6.2}/tests/test_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wcgw
3
- Version: 2.6.1
3
+ Version: 2.6.2
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>
@@ -41,6 +41,7 @@ Description-Content-Type: text/markdown
41
41
  [![codecov](https://codecov.io/gh/rusiaaman/wcgw/graph/badge.svg)](https://codecov.io/gh/rusiaaman/wcgw)
42
42
 
43
43
  ## Updates
44
+ - [29 Dec 2024] Syntax checking on file writing and edits is now stable. Made `initialize` tool call useful; sending smart repo structure to claude if any repo is referenced. Large file handling is also now improved.
44
45
 
45
46
  - [9 Dec 2024] [Vscode extension to paste context on Claude app](https://marketplace.visualstudio.com/items?itemName=AmanRusia.wcgw)
46
47
 
@@ -12,6 +12,7 @@
12
12
  [![codecov](https://codecov.io/gh/rusiaaman/wcgw/graph/badge.svg)](https://codecov.io/gh/rusiaaman/wcgw)
13
13
 
14
14
  ## Updates
15
+ - [29 Dec 2024] Syntax checking on file writing and edits is now stable. Made `initialize` tool call useful; sending smart repo structure to claude if any repo is referenced. Large file handling is also now improved.
15
16
 
16
17
  - [9 Dec 2024] [Vscode extension to paste context on Claude app](https://marketplace.visualstudio.com/items?itemName=AmanRusia.wcgw)
17
18
 
@@ -295,11 +295,6 @@
295
295
  "schemas": {
296
296
  "BashInteractionWithUUID": {
297
297
  "properties": {
298
- "type": {
299
- "type": "string",
300
- "const": "BashInteraction",
301
- "title": "Type"
302
- },
303
298
  "send_text": {
304
299
  "anyOf": [
305
300
  {
@@ -366,9 +361,9 @@
366
361
  "title": "User Id"
367
362
  }
368
363
  },
364
+ "additionalProperties": false,
369
365
  "type": "object",
370
366
  "required": [
371
- "type",
372
367
  "user_id"
373
368
  ],
374
369
  "title": "BashInteractionWithUUID"
@@ -408,6 +403,7 @@
408
403
  "title": "User Id"
409
404
  }
410
405
  },
406
+ "additionalProperties": false,
411
407
  "type": "object",
412
408
  "required": [
413
409
  "file_path",
@@ -431,11 +427,6 @@
431
427
  },
432
428
  "InitializeWithUUID": {
433
429
  "properties": {
434
- "type": {
435
- "type": "string",
436
- "const": "Initialize",
437
- "title": "Type"
438
- },
439
430
  "any_workspace_path": {
440
431
  "type": "string",
441
432
  "title": "Any Workspace Path"
@@ -453,9 +444,9 @@
453
444
  "title": "User Id"
454
445
  }
455
446
  },
447
+ "additionalProperties": false,
456
448
  "type": "object",
457
449
  "required": [
458
- "type",
459
450
  "any_workspace_path",
460
451
  "initial_files_to_read",
461
452
  "user_id"
@@ -471,21 +462,16 @@
471
462
  "type": "array",
472
463
  "title": "File Paths"
473
464
  },
474
- "type": {
475
- "type": "string",
476
- "const": "ReadFiles",
477
- "title": "Type"
478
- },
479
465
  "user_id": {
480
466
  "type": "string",
481
467
  "format": "uuid",
482
468
  "title": "User Id"
483
469
  }
484
470
  },
471
+ "additionalProperties": false,
485
472
  "type": "object",
486
473
  "required": [
487
474
  "file_paths",
488
- "type",
489
475
  "user_id"
490
476
  ],
491
477
  "title": "ReadFileWithUUID"
@@ -503,6 +489,7 @@
503
489
  "title": "User Id"
504
490
  }
505
491
  },
492
+ "additionalProperties": false,
506
493
  "type": "object",
507
494
  "required": [
508
495
  "should_reset",
@@ -559,6 +546,7 @@
559
546
  "title": "User Id"
560
547
  }
561
548
  },
549
+ "additionalProperties": false,
562
550
  "type": "object",
563
551
  "required": [
564
552
  "file_path",
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  authors = [{ name = "Aman Rusia", email = "gapypi@arcfu.com" }]
3
3
  name = "wcgw"
4
- version = "2.6.1"
4
+ version = "2.6.2"
5
5
  description = "Shell and coding agent on claude and chatgpt"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.11, <3.13"
@@ -1127,7 +1127,7 @@ TOOLS = (
1127
1127
 
1128
1128
 
1129
1129
  def which_tool(args: str) -> TOOLS:
1130
- adapter = TypeAdapter[TOOLS](TOOLS)
1130
+ adapter = TypeAdapter[TOOLS](TOOLS, config={"extra": "forbid"})
1131
1131
  return adapter.validate_python(json.loads(args))
1132
1132
 
1133
1133
 
@@ -1180,7 +1180,7 @@ def get_tool_output(
1180
1180
  ) -> tuple[list[str | ImageData | DoneFlag], float]:
1181
1181
  global IS_IN_DOCKER, TOOL_CALLS
1182
1182
  if isinstance(args, dict):
1183
- adapter = TypeAdapter[TOOLS](TOOLS)
1183
+ adapter = TypeAdapter[TOOLS](TOOLS, config={"extra": "forbid"})
1184
1184
  arg = adapter.validate_python(args)
1185
1185
  else:
1186
1186
  arg = args
@@ -1,6 +1,14 @@
1
1
  from typing import Literal, Optional, Sequence
2
2
 
3
- from pydantic import BaseModel
3
+ from pydantic import BaseModel as PydanticBaseModel
4
+
5
+
6
+ class NoExtraArgs(PydanticBaseModel):
7
+ class Config:
8
+ extra = "forbid"
9
+
10
+
11
+ BaseModel = NoExtraArgs
4
12
 
5
13
 
6
14
  class BashCommand(BaseModel):
@@ -14,7 +22,6 @@ Specials = Literal[
14
22
 
15
23
 
16
24
  class BashInteraction(BaseModel):
17
- type: Literal["BashInteraction"]
18
25
  send_text: Optional[str] = None
19
26
  send_specials: Optional[Sequence[Specials]] = None
20
27
  send_ascii: Optional[Sequence[int]] = None
@@ -23,7 +30,6 @@ class BashInteraction(BaseModel):
23
30
 
24
31
  class ReadImage(BaseModel):
25
32
  file_path: str
26
- type: Literal["ReadImage"]
27
33
 
28
34
 
29
35
  class WriteIfEmpty(BaseModel):
@@ -33,7 +39,6 @@ class WriteIfEmpty(BaseModel):
33
39
 
34
40
  class ReadFiles(BaseModel):
35
41
  file_paths: list[str]
36
- type: Literal["ReadFiles"]
37
42
 
38
43
 
39
44
  class FileEditFindReplace(BaseModel):
@@ -52,18 +57,15 @@ class FileEdit(BaseModel):
52
57
 
53
58
 
54
59
  class Initialize(BaseModel):
55
- type: Literal["Initialize"]
56
60
  any_workspace_path: str
57
61
  initial_files_to_read: list[str]
58
62
 
59
63
 
60
64
  class GetScreenInfo(BaseModel):
61
- type: Literal["GetScreenInfo"]
62
65
  docker_image_id: str
63
66
 
64
67
 
65
68
  class ScreenShot(BaseModel):
66
- type: Literal["ScreenShot"]
67
69
  take_after_delay_seconds: int
68
70
 
69
71
 
@@ -71,7 +73,6 @@ class MouseMove(BaseModel):
71
73
  x: int
72
74
  y: int
73
75
  do_left_click_on_move: bool
74
- type: Literal["MouseMove"]
75
76
 
76
77
 
77
78
  class LeftClickDrag(BaseModel):