vamp-cli 0.1.3__tar.gz → 0.1.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.
Files changed (74) hide show
  1. {vamp_cli-0.1.3/src/vamp_cli.egg-info → vamp_cli-0.1.4}/PKG-INFO +2 -1
  2. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/pyproject.toml +2 -1
  3. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/nodes.py +22 -15
  4. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/main.py +16 -8
  5. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/persistence/transcript.py +1 -1
  6. {vamp_cli-0.1.3 → vamp_cli-0.1.4/src/vamp_cli.egg-info}/PKG-INFO +2 -1
  7. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli.egg-info/requires.txt +1 -0
  8. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/LICENSE +0 -0
  9. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/MANIFEST.in +0 -0
  10. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/README.md +0 -0
  11. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/setup.cfg +0 -0
  12. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/__init__.py +0 -0
  13. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/__init__.py +0 -0
  14. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/context_sync.py +0 -0
  15. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/graph.py +0 -0
  16. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/instructions.py +0 -0
  17. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/roles.py +0 -0
  18. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/runtime/__init__.py +0 -0
  19. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/runtime/runtime.py +0 -0
  20. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/state.py +0 -0
  21. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/agent/status.py +0 -0
  22. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/config/__init__.py +0 -0
  23. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/config/default_config.yaml +0 -0
  24. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/config/loader.py +0 -0
  25. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/config/schema.py +0 -0
  26. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/llm/__init__.py +0 -0
  27. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/llm/adapter.py +0 -0
  28. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/llm/adapter_registry.py +0 -0
  29. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/llm/debug_callbacks.py +0 -0
  30. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/llm/router.py +0 -0
  31. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/llm/usage.py +0 -0
  32. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/logging_setup/logging_setup.py +0 -0
  33. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/persistence/__init__.py +0 -0
  34. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/persistence/compaction.py +0 -0
  35. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/persistence/emitter.py +0 -0
  36. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/persistence/event_log.py +0 -0
  37. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/persistence/fork.py +0 -0
  38. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/persistence/loader.py +0 -0
  39. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/prompts/agent.md +0 -0
  40. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/prompts/coder.md +0 -0
  41. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/prompts/planner.md +0 -0
  42. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/prompts/prompts.py +0 -0
  43. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/sandbox/__init__.py +0 -0
  44. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/sandbox/base.py +0 -0
  45. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/sandbox/config.py +0 -0
  46. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/sandbox/docker.py +0 -0
  47. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/sandbox/manager.py +0 -0
  48. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/sandbox/result.py +0 -0
  49. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/sandbox/terminal.py +0 -0
  50. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/tools/__init__.py +0 -0
  51. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/tools/base.py +0 -0
  52. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/tools/diagnostic.py +0 -0
  53. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/tools/execute_cmd.py +0 -0
  54. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/tools/files.py +0 -0
  55. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/tools/registry.py +0 -0
  56. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/tools/tools_classes.py +0 -0
  57. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/utils/__init__.py +0 -0
  58. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/utils/error_codes.py +0 -0
  59. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/utils/ignore.py +0 -0
  60. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/utils/sha_256.py +0 -0
  61. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/utils/token_tracker.py +0 -0
  62. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/workspace/__init__.py +0 -0
  63. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli/workspace/workspace.py +0 -0
  64. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli.egg-info/SOURCES.txt +0 -0
  65. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli.egg-info/dependency_links.txt +0 -0
  66. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli.egg-info/entry_points.txt +0 -0
  67. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/src/vamp_cli.egg-info/top_level.txt +0 -0
  68. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/tests/test_list_dir.py +0 -0
  69. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/tests/test_loader.py +0 -0
  70. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/tests/test_model_fallbacks.py +0 -0
  71. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/tests/test_persistence.py +0 -0
  72. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/tests/test_registry_async.py +0 -0
  73. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/tests/test_sandbox_roundtrip.py +0 -0
  74. {vamp_cli-0.1.3 → vamp_cli-0.1.4}/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.3
3
+ Version: 0.1.4
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
@@ -50,6 +50,7 @@ Requires-Dist: langgraph
50
50
  Requires-Dist: langchain-litellm
51
51
  Requires-Dist: langgraph-checkpoint-sqlite
52
52
  Requires-Dist: aiosqlite
53
+ Requires-Dist: mcp
53
54
  Dynamic: license-file
54
55
 
55
56
  # VAMP-CLI
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vamp-cli"
7
- version = "0.1.3"
7
+ version = "0.1.4"
8
8
  authors = [
9
9
  { name = "Satyam Kumar", email = "satkr2208@gmail.com" }
10
10
  ]
@@ -36,6 +36,7 @@ dependencies = [
36
36
  "langchain-litellm",
37
37
  "langgraph-checkpoint-sqlite",
38
38
  "aiosqlite",
39
+ "mcp",
39
40
  ]
40
41
 
41
42
 
@@ -4,6 +4,7 @@ import asyncio
4
4
  from typing import Any
5
5
  from prompt_toolkit import print_formatted_text
6
6
  from prompt_toolkit.formatted_text import FormattedText, HTML
7
+ from prompt_toolkit.styles import Style
7
8
 
8
9
  from langgraph.graph import END
9
10
  from langgraph.types import interrupt, Command
@@ -16,7 +17,9 @@ from vamp_cli.agent.state import AgentState
16
17
  from vamp_cli.agent.status import FeedbackResponse
17
18
  from vamp_cli.agent.instructions import TODO_INSTRUCTIONS, PLAN_INSTRUCTIONS
18
19
 
19
-
20
+ _dim_style = Style.from_dict({
21
+ 'dimmed': '#767B7D',
22
+ })
20
23
 
21
24
  def create_planner_node(model: Runnable):
22
25
 
@@ -36,17 +39,19 @@ def create_planner_node(model: Runnable):
36
39
  if response.tool_calls:
37
40
  print_formatted_text(
38
41
  FormattedText([(
39
- "dim",
42
+ "class:dimmed",
40
43
  "\n\n[planner] calling:"
41
44
  )]),
45
+ style=_dim_style,
42
46
  end="\n"
43
47
  )
44
48
  for tc in response.tool_calls:
45
49
  print_formatted_text(
46
50
  FormattedText([(
47
- "dim",
48
- f">> {tc['name']}({tc['args']})"
51
+ "class:dimmed",
52
+ f">> {str(tc['name'])}({str(tc['args'])})"
49
53
  )]),
54
+ style=_dim_style,
50
55
  end="\n"
51
56
  )
52
57
  # print("Tool: ", tc['name'])
@@ -99,15 +104,15 @@ def create_agent_node(model: Runnable):
99
104
 
100
105
 
101
106
 
102
- if not state.get("todo"):
103
- message_to_send.append(SystemMessage(content=TODO_INSTRUCTIONS))
107
+ # if not state.get("todo"):
108
+ # message_to_send.append(SystemMessage(content=TODO_INSTRUCTIONS))
104
109
 
105
- if state.get("todo"):
106
- turns_since_update = _turns_since_todo_update(state["coder_messages"])
107
- if turns_since_update >= 10:
108
- message_to_send.append(
109
- SystemMessage(content=_format_todo_reminder(state["todo"]))
110
- )
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
+ # )
111
116
 
112
117
  response: AIMessage = await model.with_config(config).ainvoke(message_to_send)
113
118
 
@@ -116,17 +121,19 @@ def create_agent_node(model: Runnable):
116
121
  if response.tool_calls:
117
122
  print_formatted_text(
118
123
  FormattedText([(
119
- "dim",
124
+ "class:dimmed",
120
125
  "\n\n[coder] calling:"
121
126
  )]),
127
+ style=_dim_style,
122
128
  end="\n"
123
129
  )
124
130
  for tc in response.tool_calls:
125
131
  print_formatted_text(
126
132
  FormattedText([(
127
- "dim",
128
- f">> {tc['name']}({tc['args']})"
133
+ "class:dimmed",
134
+ f">> {str(tc['name'])}({str(tc['args'])})"
129
135
  )]),
136
+ style=_dim_style,
130
137
  end="\n"
131
138
  )
132
139
 
@@ -1,3 +1,4 @@
1
+ import os
1
2
  import sys
2
3
  import asyncio
3
4
  from pathlib import Path
@@ -5,6 +6,7 @@ from typing import Any
5
6
  import click
6
7
  import yaml
7
8
  from prompt_toolkit import PromptSession, print_formatted_text
9
+ from prompt_toolkit.styles import Style
8
10
  from prompt_toolkit.formatted_text import HTML, FormattedText
9
11
  from prompt_toolkit.patch_stdout import patch_stdout
10
12
 
@@ -30,6 +32,7 @@ from vamp_cli.agent.graph import create_graph
30
32
  from vamp_cli.agent.roles import AgentRole
31
33
  from vamp_cli.agent.status import FeedbackResponse
32
34
  from vamp_cli.agent.context_sync import mode_switch_sync
35
+ from vamp_cli.agent.instructions import TODO_INSTRUCTIONS
33
36
 
34
37
  from vamp_cli.persistence.emitter import EventEmitter
35
38
  from vamp_cli.persistence.event_log import EventLog, uuid7
@@ -64,6 +67,9 @@ __VERSION__ = "0.1.0"
64
67
 
65
68
  PROJECT_DIR = str(Path.cwd())
66
69
 
70
+ _dim_style = Style.from_dict({
71
+ 'dimmed': "#767B7D",
72
+ })
67
73
 
68
74
  def create(event_type: str, data: dict[str, Any]) -> str:
69
75
  """Serializes events into structured strings"""
@@ -163,9 +169,10 @@ async def streaming(
163
169
  if isinstance(payload, dict):
164
170
  print_formatted_text(
165
171
  FormattedText([(
166
- "dim",
172
+ "class:dimmed",
167
173
  f"\nMode: {payload['mode']}"
168
174
  )]),
175
+ style=_dim_style,
169
176
  end="\n"
170
177
  )
171
178
 
@@ -199,24 +206,24 @@ async def streaming(
199
206
 
200
207
  if reasoning_chunk:
201
208
  if not thinking_open:
202
- # print("Thinking:\n", end="", flush=True)
203
209
  print_formatted_text(
204
210
  FormattedText([(
205
- "dim",
211
+ "class:dimmed",
206
212
  f"\nThinking:\n"
207
213
  )]),
214
+ style=_dim_style,
208
215
  end=""
209
216
  )
210
217
  thinking_open = True
211
- # print(reasoning_chunk, end="", flush=True)
218
+
212
219
  print_formatted_text(
213
220
  FormattedText([(
214
- "dim",
215
- reasoning_chunk
221
+ "class:dimmed",
222
+ str(reasoning_chunk)
216
223
  )]),
224
+ style=_dim_style,
217
225
  end=""
218
226
  )
219
-
220
227
  # 2. capture final human text
221
228
  elif chunk.content:
222
229
  if thinking_open:
@@ -236,7 +243,7 @@ async def streaming(
236
243
  print("\n[aborted by user]")
237
244
  return call_usage
238
245
  except Exception as e:
239
- print("\n[Some error happened]: ", e)
246
+ print("\n[Some error happened]: ")
240
247
  return call_usage
241
248
 
242
249
  print("\n")
@@ -821,6 +828,7 @@ async def main(resume_id: str | None = None):
821
828
  content=coder_profile.system_prompt,
822
829
  id="coder_system_prompt"
823
830
  ),
831
+ SystemMessage(content=TODO_INSTRUCTIONS),
824
832
  HumanMessage(content=user_input),
825
833
  ],
826
834
  "task": user_input,
@@ -33,7 +33,7 @@ def render_transcript(
33
33
  shadowed, compaction_by_uuid = build_shadow_map(chain)
34
34
 
35
35
  # prompt_toolkit style names.
36
- DIM = "dim"
36
+ DIM = "gray"
37
37
  BOLD_CYAN = "bold cyan"
38
38
  BOLD_GREEN = "bold green"
39
39
  GREEN = "green"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vamp-cli
3
- Version: 0.1.3
3
+ Version: 0.1.4
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
@@ -50,6 +50,7 @@ Requires-Dist: langgraph
50
50
  Requires-Dist: langchain-litellm
51
51
  Requires-Dist: langgraph-checkpoint-sqlite
52
52
  Requires-Dist: aiosqlite
53
+ Requires-Dist: mcp
53
54
  Dynamic: license-file
54
55
 
55
56
  # VAMP-CLI
@@ -12,3 +12,4 @@ langgraph
12
12
  langchain-litellm
13
13
  langgraph-checkpoint-sqlite
14
14
  aiosqlite
15
+ mcp
File without changes
File without changes
File without changes
File without changes
File without changes