vamp-cli 0.1.4__tar.gz → 0.1.6__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.
Files changed (77) hide show
  1. {vamp_cli-0.1.4/src/vamp_cli.egg-info → vamp_cli-0.1.6}/PKG-INFO +31 -4
  2. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/README.md +30 -3
  3. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/pyproject.toml +1 -1
  4. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/nodes.py +48 -52
  5. vamp_cli-0.1.6/src/vamp_cli/main.py +901 -0
  6. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/persistence/__init__.py +2 -2
  7. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/persistence/loader.py +6 -0
  8. vamp_cli-0.1.6/src/vamp_cli/persistence/transcript.py +117 -0
  9. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/tools/registry.py +18 -8
  10. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/tools/tools_classes.py +40 -8
  11. vamp_cli-0.1.6/src/vamp_cli/utils/auto_complete.py +93 -0
  12. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/utils/ignore.py +12 -0
  13. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/utils/token_tracker.py +7 -5
  14. {vamp_cli-0.1.4 → vamp_cli-0.1.6/src/vamp_cli.egg-info}/PKG-INFO +31 -4
  15. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli.egg-info/SOURCES.txt +1 -1
  16. vamp_cli-0.1.4/src/vamp_cli/main.py +0 -1031
  17. vamp_cli-0.1.4/src/vamp_cli/persistence/transcript.py +0 -160
  18. vamp_cli-0.1.4/src/vamp_cli/utils/sha_256.py +0 -32
  19. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/LICENSE +0 -0
  20. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/MANIFEST.in +0 -0
  21. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/setup.cfg +0 -0
  22. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/__init__.py +0 -0
  23. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/__init__.py +0 -0
  24. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/context_sync.py +0 -0
  25. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/graph.py +0 -0
  26. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/instructions.py +0 -0
  27. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/roles.py +0 -0
  28. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/runtime/__init__.py +0 -0
  29. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/runtime/runtime.py +0 -0
  30. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/state.py +0 -0
  31. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/agent/status.py +0 -0
  32. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/config/__init__.py +0 -0
  33. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/config/default_config.yaml +0 -0
  34. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/config/loader.py +0 -0
  35. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/config/schema.py +0 -0
  36. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/llm/__init__.py +0 -0
  37. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/llm/adapter.py +0 -0
  38. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/llm/adapter_registry.py +0 -0
  39. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/llm/debug_callbacks.py +0 -0
  40. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/llm/router.py +0 -0
  41. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/llm/usage.py +0 -0
  42. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/logging_setup/logging_setup.py +0 -0
  43. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/persistence/compaction.py +0 -0
  44. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/persistence/emitter.py +0 -0
  45. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/persistence/event_log.py +0 -0
  46. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/persistence/fork.py +0 -0
  47. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/prompts/agent.md +0 -0
  48. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/prompts/coder.md +0 -0
  49. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/prompts/planner.md +0 -0
  50. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/prompts/prompts.py +0 -0
  51. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/sandbox/__init__.py +0 -0
  52. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/sandbox/base.py +0 -0
  53. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/sandbox/config.py +0 -0
  54. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/sandbox/docker.py +0 -0
  55. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/sandbox/manager.py +0 -0
  56. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/sandbox/result.py +0 -0
  57. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/sandbox/terminal.py +0 -0
  58. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/tools/__init__.py +0 -0
  59. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/tools/base.py +0 -0
  60. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/tools/diagnostic.py +0 -0
  61. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/tools/execute_cmd.py +0 -0
  62. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/tools/files.py +0 -0
  63. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/utils/__init__.py +0 -0
  64. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/utils/error_codes.py +0 -0
  65. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/workspace/__init__.py +0 -0
  66. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli/workspace/workspace.py +0 -0
  67. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli.egg-info/dependency_links.txt +0 -0
  68. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli.egg-info/entry_points.txt +0 -0
  69. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli.egg-info/requires.txt +0 -0
  70. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/src/vamp_cli.egg-info/top_level.txt +0 -0
  71. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/tests/test_list_dir.py +0 -0
  72. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/tests/test_loader.py +0 -0
  73. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/tests/test_model_fallbacks.py +0 -0
  74. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/tests/test_persistence.py +0 -0
  75. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/tests/test_registry_async.py +0 -0
  76. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/tests/test_sandbox_roundtrip.py +0 -0
  77. {vamp_cli-0.1.4 → vamp_cli-0.1.6}/tests/test_system_verification.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vamp-cli
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: VAMP-CLI is an interactive coding agent for working in a local repository. It combines a planner, a coder, model fallbacks, workspace-aware file tools, and a Docker-backed command sandbox in one terminal application. The agent can inspect and edit files, search a codebase, run commands, maintain a task list, and ask for confirmation before executing potentially dangerous operations.
5
5
  Author-email: Satyam Kumar <satkr2208@gmail.com>
6
6
  License: MIT License
@@ -63,7 +63,7 @@ The agent can inspect and edit files, search a codebase, run commands, maintain
63
63
 
64
64
  ## Highlights
65
65
 
66
- - Interactive terminal UI launched with the `vamp` command.
66
+ - Interactive terminal UI launched with the `vamp` command, powered by **[Rich](https://github.com/Textualize/rich)** for beautiful formatting, colors, and progress indicators.
67
67
  - Two operating modes:
68
68
  - **Normal mode**: work directly with the coding agent.
69
69
  - **Plan mode**: have the planner produce a plan and approve it before implementation.
@@ -79,11 +79,23 @@ The agent can inspect and edit files, search a codebase, run commands, maintain
79
79
  - **Branch switching**: view and switch between conversation branches within a session.
80
80
  - **Conversation compaction**: automatically or manually summarize early turns to stay within model context limits.
81
81
 
82
+ ## Demo
83
+
84
+ ### Interactive Terminal Experience
85
+
86
+ Below is a demonstration of the VAMP-CLI interface in action. The UI utilizes the **Rich** library to provide syntax highlighting, styled tables, and clear visual feedback during agent operations.
87
+
88
+ ![VAMP-CLI Demo GIF](./assets/demo.gif)
89
+
90
+ ### Interface Screenshot
91
+
92
+ ![VAMP-CLI Interface Screenshot](./assets/screenshot.png)
93
+
82
94
  ## Requirements
83
95
 
84
96
  - Python 3.11 or newer
85
97
  - Docker Engine or Docker Desktop, running and accessible to the current user
86
- - An API key for each model configured in `src/vamp_cli/config/config.yaml`
98
+ - An API key env var for each model configured in `~/.vamp/config.yaml` (it gets created in first run).
87
99
 
88
100
  The first run automatically builds the `vamp-sandbox:latest` image from [`src/vamp_cli/sandbox/Dockerfile`](src/vamp_cli/sandbox/Dockerfile) when it is not already available locally. The image includes Python, Node.js, Git, `ripgrep`, `fd`, and common build tools.
89
101
 
@@ -91,13 +103,26 @@ The first run automatically builds the `vamp-sandbox:latest` image from [`src/va
91
103
 
92
104
  Create and activate a virtual environment, then install the project (all dependencies will be installed itself):
93
105
 
106
+ Virtual Env:
107
+
94
108
  ```bash
95
109
  python3.12 -m venv .venv
96
110
  source .venv/bin/activate
97
111
  python -m pip install --upgrade pip
112
+ ```
113
+
114
+ Package:
115
+
116
+ ```bash
98
117
  python -m pip install vamp-cli
99
118
  ```
100
119
 
120
+ For development:
121
+
122
+ ```bash
123
+ python -m pip install -e .
124
+ ```
125
+
101
126
  Confirm that Docker is available before starting the agent:
102
127
 
103
128
  ```bash
@@ -106,7 +131,7 @@ docker info
106
131
 
107
132
  ## Configuration
108
133
 
109
- Model and profile configuration lives in [`src/vamp_cli/config/config.yaml`](src/vamp_cli/config/config.yaml). API keys are read from environment variables named by each model's `api_key_env` field; keys are not read from YAML values directly.
134
+ Model and profile configuration lives in [`/src/vamp_cli/config/default_config.yaml`](/src/vamp_cli/config/default_config.yaml)(this is used to create `config.yaml` for first run). After first run `~/.vamp/config.yaml` is created and vamp-cli reads from this always. API keys are read from environment variables named by each model's `api_key_env` field; keys are not read from YAML values directly.
110
135
 
111
136
  The checked-in default configuration defines `qwen` and `openai`, so both variables must be present unless you edit the configuration to remove or replace one of those models:
112
137
 
@@ -136,6 +161,7 @@ You:
136
161
  | Argument | Action |
137
162
  | --- | --- |
138
163
  | `--resume <id>` or `-r <id>` | Resume a previous session by its ID |
164
+ | `--previous` or `-p` | Resume last session |
139
165
  | `--list` or `-l` | List all past sessions |
140
166
 
141
167
  Examples:
@@ -161,6 +187,7 @@ vamp --resume 01a145b4-5103-7014-97da-d5ca9c871d68
161
187
  | `/compact` | Summarize early conversation turns to reduce context usage |
162
188
  | `/compact <N>` | Compact keeping the last N turns intact (default: 4) |
163
189
  | `/config` | Change configurations of models, coder or planner profiles, and tool access. |
190
+ | `@<file-path>` | Use `@` to select a file and ask agent about that file. |
164
191
 
165
192
  When the agent requests approval, answer `yes` to continue or `no` and provide a reason to deny the action. Approvals are used for plan implementation and security-sensitive tool calls such as destructive commands, package installation, or network access.
166
193
 
@@ -8,7 +8,7 @@ The agent can inspect and edit files, search a codebase, run commands, maintain
8
8
 
9
9
  ## Highlights
10
10
 
11
- - Interactive terminal UI launched with the `vamp` command.
11
+ - Interactive terminal UI launched with the `vamp` command, powered by **[Rich](https://github.com/Textualize/rich)** for beautiful formatting, colors, and progress indicators.
12
12
  - Two operating modes:
13
13
  - **Normal mode**: work directly with the coding agent.
14
14
  - **Plan mode**: have the planner produce a plan and approve it before implementation.
@@ -24,11 +24,23 @@ The agent can inspect and edit files, search a codebase, run commands, maintain
24
24
  - **Branch switching**: view and switch between conversation branches within a session.
25
25
  - **Conversation compaction**: automatically or manually summarize early turns to stay within model context limits.
26
26
 
27
+ ## Demo
28
+
29
+ ### Interactive Terminal Experience
30
+
31
+ Below is a demonstration of the VAMP-CLI interface in action. The UI utilizes the **Rich** library to provide syntax highlighting, styled tables, and clear visual feedback during agent operations.
32
+
33
+ ![VAMP-CLI Demo GIF](./assets/demo.gif)
34
+
35
+ ### Interface Screenshot
36
+
37
+ ![VAMP-CLI Interface Screenshot](./assets/screenshot.png)
38
+
27
39
  ## Requirements
28
40
 
29
41
  - Python 3.11 or newer
30
42
  - Docker Engine or Docker Desktop, running and accessible to the current user
31
- - An API key for each model configured in `src/vamp_cli/config/config.yaml`
43
+ - An API key env var for each model configured in `~/.vamp/config.yaml` (it gets created in first run).
32
44
 
33
45
  The first run automatically builds the `vamp-sandbox:latest` image from [`src/vamp_cli/sandbox/Dockerfile`](src/vamp_cli/sandbox/Dockerfile) when it is not already available locally. The image includes Python, Node.js, Git, `ripgrep`, `fd`, and common build tools.
34
46
 
@@ -36,13 +48,26 @@ The first run automatically builds the `vamp-sandbox:latest` image from [`src/va
36
48
 
37
49
  Create and activate a virtual environment, then install the project (all dependencies will be installed itself):
38
50
 
51
+ Virtual Env:
52
+
39
53
  ```bash
40
54
  python3.12 -m venv .venv
41
55
  source .venv/bin/activate
42
56
  python -m pip install --upgrade pip
57
+ ```
58
+
59
+ Package:
60
+
61
+ ```bash
43
62
  python -m pip install vamp-cli
44
63
  ```
45
64
 
65
+ For development:
66
+
67
+ ```bash
68
+ python -m pip install -e .
69
+ ```
70
+
46
71
  Confirm that Docker is available before starting the agent:
47
72
 
48
73
  ```bash
@@ -51,7 +76,7 @@ docker info
51
76
 
52
77
  ## Configuration
53
78
 
54
- Model and profile configuration lives in [`src/vamp_cli/config/config.yaml`](src/vamp_cli/config/config.yaml). API keys are read from environment variables named by each model's `api_key_env` field; keys are not read from YAML values directly.
79
+ Model and profile configuration lives in [`/src/vamp_cli/config/default_config.yaml`](/src/vamp_cli/config/default_config.yaml)(this is used to create `config.yaml` for first run). After first run `~/.vamp/config.yaml` is created and vamp-cli reads from this always. API keys are read from environment variables named by each model's `api_key_env` field; keys are not read from YAML values directly.
55
80
 
56
81
  The checked-in default configuration defines `qwen` and `openai`, so both variables must be present unless you edit the configuration to remove or replace one of those models:
57
82
 
@@ -81,6 +106,7 @@ You:
81
106
  | Argument | Action |
82
107
  | --- | --- |
83
108
  | `--resume <id>` or `-r <id>` | Resume a previous session by its ID |
109
+ | `--previous` or `-p` | Resume last session |
84
110
  | `--list` or `-l` | List all past sessions |
85
111
 
86
112
  Examples:
@@ -106,6 +132,7 @@ vamp --resume 01a145b4-5103-7014-97da-d5ca9c871d68
106
132
  | `/compact` | Summarize early conversation turns to reduce context usage |
107
133
  | `/compact <N>` | Compact keeping the last N turns intact (default: 4) |
108
134
  | `/config` | Change configurations of models, coder or planner profiles, and tool access. |
135
+ | `@<file-path>` | Use `@` to select a file and ask agent about that file. |
109
136
 
110
137
  When the agent requests approval, answer `yes` to continue or `no` and provide a reason to deny the action. Approvals are used for plan implementation and security-sensitive tool calls such as destructive commands, package installation, or network access.
111
138
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vamp-cli"
7
- version = "0.1.4"
7
+ version = "0.1.6"
8
8
  authors = [
9
9
  { name = "Satyam Kumar", email = "satkr2208@gmail.com" }
10
10
  ]
@@ -9,7 +9,7 @@ from prompt_toolkit.styles import Style
9
9
  from langgraph.graph import END
10
10
  from langgraph.types import interrupt, Command
11
11
  from langchain_core.runnables import Runnable, RunnableConfig
12
- from langchain_core.messages import ToolMessage, SystemMessage, AIMessage, BaseMessage
12
+ from langchain_core.messages import ToolMessage, SystemMessage, AIMessage, BaseMessage, HumanMessage
13
13
 
14
14
  from vamp_cli.tools.registry import ToolRegistry
15
15
  from vamp_cli.agent.state import AgentState, TodoItem
@@ -36,24 +36,24 @@ def create_planner_node(model: Runnable):
36
36
  None
37
37
  )
38
38
 
39
- if response.tool_calls:
40
- print_formatted_text(
41
- FormattedText([(
42
- "class:dimmed",
43
- "\n\n[planner] calling:"
44
- )]),
45
- style=_dim_style,
46
- end="\n"
47
- )
48
- for tc in response.tool_calls:
49
- print_formatted_text(
50
- FormattedText([(
51
- "class:dimmed",
52
- f">> {str(tc['name'])}({str(tc['args'])})"
53
- )]),
54
- style=_dim_style,
55
- end="\n"
56
- )
39
+ # if response.tool_calls:
40
+ # print_formatted_text(
41
+ # FormattedText([(
42
+ # "class:dimmed",
43
+ # "\n\n[planner] calling:"
44
+ # )]),
45
+ # style=_dim_style,
46
+ # end="\n"
47
+ # )
48
+ # for tc in response.tool_calls:
49
+ # print_formatted_text(
50
+ # FormattedText([(
51
+ # "class:dimmed",
52
+ # f">> {str(tc['name'])}({str(tc['args'])})"
53
+ # )]),
54
+ # style=_dim_style,
55
+ # end="\n"
56
+ # )
57
57
  # print("Tool: ", tc['name'])
58
58
  # print("Arguments: ", tc['args'])
59
59
 
@@ -103,39 +103,40 @@ def create_agent_node(model: Runnable):
103
103
  message_to_send += [plan_message] + [plan_instruction]
104
104
 
105
105
 
106
-
107
- # if not state.get("todo"):
108
- # message_to_send.append(SystemMessage(content=TODO_INSTRUCTIONS))
109
-
110
- # if state.get("todo"):
111
- # turns_since_update = _turns_since_todo_update(state["coder_messages"])
112
- # if turns_since_update >= 10:
113
- # message_to_send.append(
114
- # SystemMessage(content=_format_todo_reminder(state["todo"]))
115
- # )
106
+ # print(f"\n\n\n------ CONTEXT START------\n\n")
107
+ # for mess in message_to_send:
108
+ # if isinstance(mess, SystemMessage):
109
+ # print("SystemMessage: ", end="")
110
+ # if isinstance(mess, HumanMessage):
111
+ # print("HumanMessage: ", end="")
112
+ # if isinstance(mess, ToolMessage):
113
+ # print("ToolMessage: ", end="")
114
+ # print(mess)
115
+ # print()
116
+ # print("\n\n------ CONTEXT END ------\n\n\n")
116
117
 
117
118
  response: AIMessage = await model.with_config(config).ainvoke(message_to_send)
118
119
 
119
120
  # print("\n\nCODER------AI-RESPONSE:\n.\n.\n", response, "\n\n")
120
121
 
121
- if response.tool_calls:
122
- print_formatted_text(
123
- FormattedText([(
124
- "class:dimmed",
125
- "\n\n[coder] calling:"
126
- )]),
127
- style=_dim_style,
128
- end="\n"
129
- )
130
- for tc in response.tool_calls:
131
- print_formatted_text(
132
- FormattedText([(
133
- "class:dimmed",
134
- f">> {str(tc['name'])}({str(tc['args'])})"
135
- )]),
136
- style=_dim_style,
137
- end="\n"
138
- )
122
+ # if response.tool_calls:
123
+ # print_formatted_text(
124
+ # FormattedText([(
125
+ # "class:dimmed",
126
+ # "\n\n[coder] calling:"
127
+ # )]),
128
+ # style=_dim_style,
129
+ # end="\n"
130
+ # )
131
+ # for tc in response.tool_calls:
132
+ # print_formatted_text(
133
+ # FormattedText([(
134
+ # "class:dimmed",
135
+ # f">> {str(tc['name'])}({str(tc['args'])})"
136
+ # )]),
137
+ # style=_dim_style,
138
+ # end="\n"
139
+ # )
139
140
 
140
141
  return {
141
142
  "coder_messages": [response],
@@ -341,11 +342,6 @@ def create_tool_execute_node(tool_registry: ToolRegistry):
341
342
  }
342
343
  if todo_update is not None:
343
344
  update["todo"] = todo_update
344
-
345
- # if interrupted:
346
- # # Save the state update, then END the graph invocation.
347
- # # Control returns to main(); the prompt shows again.
348
- # return Command(update=update, goto=END)
349
345
 
350
346
  return update
351
347